From 8e7f50056f413143228d5b3e66fde5a096ce8d6c Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Fri, 26 Aug 2016 17:56:04 +0100 Subject: [PATCH] Add dfu_firmware_format_from_string() --- libdfu/dfu-firmware.c | 26 ++++++++++++++++++++++++++ libdfu/dfu-firmware.h | 1 + 2 files changed, 27 insertions(+) diff --git a/libdfu/dfu-firmware.c b/libdfu/dfu-firmware.c index b7070ebef..a6081b978 100644 --- a/libdfu/dfu-firmware.c +++ b/libdfu/dfu-firmware.c @@ -738,6 +738,32 @@ dfu_firmware_format_to_string (DfuFirmwareFormat format) return NULL; } +/** + * dfu_firmware_format_from_string: + * @format: a format string, e.g. `dfuse` + * + * Returns an enumerated version of the format. + * + * Return value: a #DfuFirmwareFormat, e.g. %DFU_FIRMWARE_FORMAT_DFUSE + * + * Since: 0.7.3 + **/ +DfuFirmwareFormat +dfu_firmware_format_from_string (const gchar *format) +{ + if (g_strcmp0 (format, "raw") == 0) + return DFU_FIRMWARE_FORMAT_RAW; + if (g_strcmp0 (format, "dfu") == 0) + return DFU_FIRMWARE_FORMAT_DFU_1_0; + if (g_strcmp0 (format, "dfuse") == 0) + return DFU_FIRMWARE_FORMAT_DFUSE; + if (g_strcmp0 (format, "ihex") == 0) + return DFU_FIRMWARE_FORMAT_INTEL_HEX; + if (g_strcmp0 (format, "elf") == 0) + return DFU_FIRMWARE_FORMAT_ELF; + return DFU_FIRMWARE_FORMAT_UNKNOWN; +} + /** * dfu_firmware_get_cipher_kind: * @firmware: a #DfuFirmware diff --git a/libdfu/dfu-firmware.h b/libdfu/dfu-firmware.h index 82c70d2ea..6eb87a11e 100644 --- a/libdfu/dfu-firmware.h +++ b/libdfu/dfu-firmware.h @@ -92,6 +92,7 @@ typedef enum { DfuFirmware *dfu_firmware_new (void); const gchar *dfu_firmware_format_to_string (DfuFirmwareFormat format); +DfuFirmwareFormat dfu_firmware_format_from_string(const gchar *format); DfuImage *dfu_firmware_get_image (DfuFirmware *firmware, guint8 alt_setting);