api,libmm-glib,cli: handle firmware images of type `MM_FIRMWARE_IMAGE_TYPE_GOBI'
This commit is contained in:
@@ -134,6 +134,9 @@ list_process_reply (MMFirmwareProperties *selected,
|
||||
GList *result,
|
||||
const GError *error)
|
||||
{
|
||||
#undef VALIDATE_UNKNOWN
|
||||
#define VALIDATE_UNKNOWN(str) (str ? str : "unknown")
|
||||
|
||||
if (error) {
|
||||
g_printerr ("error: couldn't list firmware images: '%s'\n",
|
||||
error->message);
|
||||
@@ -152,7 +155,7 @@ list_process_reply (MMFirmwareProperties *selected,
|
||||
MMFirmwareProperties *props = MM_FIRMWARE_PROPERTIES (l->data);
|
||||
|
||||
g_print ("\t[%u] %s%s\n"
|
||||
"\t\t Type: '%s'\n",
|
||||
"\t\tType: '%s'\n",
|
||||
i,
|
||||
mm_firmware_properties_get_unique_id (props),
|
||||
((selected &&
|
||||
@@ -161,6 +164,20 @@ list_process_reply (MMFirmwareProperties *selected,
|
||||
" (CURRENT)" : ""),
|
||||
mm_firmware_image_type_get_string (
|
||||
mm_firmware_properties_get_image_type (props)));
|
||||
|
||||
if (mm_firmware_properties_get_image_type (props) == MM_FIRMWARE_IMAGE_TYPE_GOBI) {
|
||||
g_print ("\t\t[Gobi] PRI version: '%s'\n"
|
||||
"\t\t[Gobi] PRI info: '%s'\n"
|
||||
"\t\t[Gobi] Boot version: '%s'\n"
|
||||
"\t\t[Gobi] PRI Unique ID: '%s'\n"
|
||||
"\t\t[Gobi] Modem Unique ID: '%s'\n",
|
||||
VALIDATE_UNKNOWN (mm_firmware_properties_get_gobi_pri_version (props)),
|
||||
VALIDATE_UNKNOWN (mm_firmware_properties_get_gobi_pri_info (props)),
|
||||
VALIDATE_UNKNOWN (mm_firmware_properties_get_gobi_boot_version (props)),
|
||||
VALIDATE_UNKNOWN (mm_firmware_properties_get_gobi_pri_unique_id (props)),
|
||||
VALIDATE_UNKNOWN (mm_firmware_properties_get_gobi_modem_unique_id (props)));
|
||||
}
|
||||
|
||||
g_object_unref (props);
|
||||
}
|
||||
g_list_free (result);
|
||||
|
@@ -533,10 +533,20 @@ MMFirmwareProperties
|
||||
<SUBSECTION Getters>
|
||||
mm_firmware_properties_get_image_type
|
||||
mm_firmware_properties_get_unique_id
|
||||
mm_firmware_properties_get_gobi_pri_version
|
||||
mm_firmware_properties_get_gobi_pri_info
|
||||
mm_firmware_properties_get_gobi_boot_version
|
||||
mm_firmware_properties_get_gobi_pri_unique_id
|
||||
mm_firmware_properties_get_gobi_modem_unique_id
|
||||
<SUBSECTION Private>
|
||||
mm_firmware_properties_new
|
||||
mm_firmware_properties_new_from_dictionary
|
||||
mm_firmware_properties_get_dictionary
|
||||
mm_firmware_properties_set_gobi_pri_version
|
||||
mm_firmware_properties_set_gobi_pri_info
|
||||
mm_firmware_properties_set_gobi_boot_version
|
||||
mm_firmware_properties_set_gobi_pri_unique_id
|
||||
mm_firmware_properties_set_gobi_modem_unique_id
|
||||
<SUBSECTION Standard>
|
||||
MMFirmwarePropertiesClass
|
||||
MMFirmwarePropertiesPrivate
|
||||
|
@@ -688,12 +688,14 @@ typedef enum { /*< underscore_name=mm_modem_3gpp_ussd_session_state >*/
|
||||
* MMFirmwareImageType:
|
||||
* @MM_FIRMWARE_IMAGE_TYPE_UNKNOWN: Unknown firmware type.
|
||||
* @MM_FIRMWARE_IMAGE_TYPE_GENERIC: Generic firmware image.
|
||||
* @MM_FIRMWARE_IMAGE_TYPE_GOBI: Firmware image of Gobi devices.
|
||||
*
|
||||
* Type of firmware image.
|
||||
*/
|
||||
typedef enum { /*< underscore_name=mm_firmware_image_type >*/
|
||||
MM_FIRMWARE_IMAGE_TYPE_UNKNOWN = 0,
|
||||
MM_FIRMWARE_IMAGE_TYPE_GENERIC = 1
|
||||
MM_FIRMWARE_IMAGE_TYPE_GENERIC = 1,
|
||||
MM_FIRMWARE_IMAGE_TYPE_GOBI = 2,
|
||||
} MMFirmwareImageType;
|
||||
|
||||
#endif /* _MODEMMANAGER_ENUMS_H_ */
|
||||
|
@@ -40,13 +40,39 @@
|
||||
string value (signature <literal>"s"</literal>).
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term><literal>"version"</literal></term>
|
||||
<varlistentry><term><literal>"gobi-pri-version"</literal></term>
|
||||
<listitem>
|
||||
(Optional) The version of the firmware, given as a string value
|
||||
(signature <literal>"s"</literal>). The format is
|
||||
unspecified; tools attempting to upgrade firmware automatically must
|
||||
understand the versioning scheme used by the modem driver they are
|
||||
interacting with.
|
||||
(Optional) The version of the PRI firmware image, in images of type
|
||||
<link linkend="MM-FIRMWARE-IMAGE-TYPE-GOBI:CAPS">MM_FIRMWARE_IMAGE_TYPE_GOBI</link>,
|
||||
given as a string value (signature <literal>"s"</literal>).
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term><literal>"gobi-pri-info"</literal></term>
|
||||
<listitem>
|
||||
(Optional) Additional information of the PRI image, in images of type
|
||||
<link linkend="MM-FIRMWARE-IMAGE-TYPE-GOBI:CAPS">MM_FIRMWARE_IMAGE_TYPE_GOBI</link>,
|
||||
given as a string value (signature <literal>"s"</literal>).
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term><literal>"gobi-boot-version"</literal></term>
|
||||
<listitem>
|
||||
(Optional) The boot version of the PRI firmware image, in images of type
|
||||
<link linkend="MM-FIRMWARE-IMAGE-TYPE-GOBI:CAPS">MM_FIRMWARE_IMAGE_TYPE_GOBI</link>,
|
||||
given as a string value (signature <literal>"s"</literal>).
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term><literal>"gobi-pri-unique-id"</literal></term>
|
||||
<listitem>
|
||||
(Optional) The unique ID of the PRI firmware image, in images of type
|
||||
<link linkend="MM-FIRMWARE-IMAGE-TYPE-GOBI:CAPS">MM_FIRMWARE_IMAGE_TYPE_GOBI</link>,
|
||||
given as a string value (signature <literal>"s"</literal>).
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term><literal>"gobi-modem-unique-id"</literal></term>
|
||||
<listitem>
|
||||
(Optional) The unique ID of the Modem firmware image, in images of type
|
||||
<link linkend="MM-FIRMWARE-IMAGE-TYPE-GOBI:CAPS">MM_FIRMWARE_IMAGE_TYPE_GOBI</link>,
|
||||
given as a string value (signature <literal>"s"</literal>).
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
@@ -33,13 +33,25 @@
|
||||
|
||||
G_DEFINE_TYPE (MMFirmwareProperties, mm_firmware_properties, G_TYPE_OBJECT);
|
||||
|
||||
#define PROPERTY_UNIQUE_ID "unique-id"
|
||||
#define PROPERTY_IMAGE_TYPE "image-type"
|
||||
#define PROPERTY_UNIQUE_ID "unique-id"
|
||||
#define PROPERTY_IMAGE_TYPE "image-type"
|
||||
#define PROPERTY_GOBI_PRI_VERSION "gobi-pri-version"
|
||||
#define PROPERTY_GOBI_PRI_INFO "gobi-pri-info"
|
||||
#define PROPERTY_GOBI_BOOT_VERSION "gobi-boot-version"
|
||||
#define PROPERTY_GOBI_PRI_UNIQUE_ID "gobi-pri-unique-id"
|
||||
#define PROPERTY_GOBI_MODEM_UNIQUE_ID "gobi-modem-unique-id"
|
||||
|
||||
struct _MMFirmwarePropertiesPrivate {
|
||||
/* Mandatory parameters */
|
||||
MMFirmwareImageType image_type;
|
||||
gchar *unique_id;
|
||||
|
||||
/* Gobi specific */
|
||||
gchar *gobi_pri_version;
|
||||
gchar *gobi_pri_info;
|
||||
gchar *gobi_boot_version;
|
||||
gchar *gobi_pri_unique_id;
|
||||
gchar *gobi_modem_unique_id;
|
||||
};
|
||||
|
||||
static MMFirmwareProperties *firmware_properties_new_empty (void);
|
||||
@@ -82,6 +94,154 @@ mm_firmware_properties_get_image_type (MMFirmwareProperties *self)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* mm_firmware_properties_get_gobi_pri_version:
|
||||
* @self: a #MMFirmwareProperties.
|
||||
*
|
||||
* Gets the PRI version of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
|
||||
*
|
||||
* Returns: The PRI version, or %NULL if unknown. Do not free the returned value, it is owned by @self.
|
||||
*/
|
||||
const gchar *
|
||||
mm_firmware_properties_get_gobi_pri_version (MMFirmwareProperties *self)
|
||||
{
|
||||
g_return_val_if_fail (MM_IS_FIRMWARE_PROPERTIES (self), NULL);
|
||||
g_return_val_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI, NULL);
|
||||
|
||||
return self->priv->gobi_pri_version;
|
||||
}
|
||||
|
||||
void
|
||||
mm_firmware_properties_set_gobi_pri_version (MMFirmwareProperties *self,
|
||||
const gchar *version)
|
||||
{
|
||||
g_return_if_fail (MM_IS_FIRMWARE_PROPERTIES (self));
|
||||
g_return_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI);
|
||||
|
||||
g_free (self->priv->gobi_pri_version);
|
||||
self->priv->gobi_pri_version = g_strdup (version);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* mm_firmware_properties_get_gobi_pri_info:
|
||||
* @self: a #MMFirmwareProperties.
|
||||
*
|
||||
* Gets the PRI info of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
|
||||
*
|
||||
* Returns: The PRI info, or %NULL if unknown. Do not free the returned value, it is owned by @self.
|
||||
*/
|
||||
const gchar *
|
||||
mm_firmware_properties_get_gobi_pri_info (MMFirmwareProperties *self)
|
||||
{
|
||||
g_return_val_if_fail (MM_IS_FIRMWARE_PROPERTIES (self), NULL);
|
||||
g_return_val_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI, NULL);
|
||||
|
||||
return self->priv->gobi_pri_info;
|
||||
}
|
||||
|
||||
void
|
||||
mm_firmware_properties_set_gobi_pri_info (MMFirmwareProperties *self,
|
||||
const gchar *info)
|
||||
{
|
||||
g_return_if_fail (MM_IS_FIRMWARE_PROPERTIES (self));
|
||||
g_return_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI);
|
||||
|
||||
g_free (self->priv->gobi_pri_info);
|
||||
self->priv->gobi_pri_info = g_strdup (info);
|
||||
}
|
||||
|
||||
/**
|
||||
* mm_firmware_properties_get_gobi_boot_version:
|
||||
* @self: a #MMFirmwareProperties.
|
||||
*
|
||||
* Gets the boot version of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
|
||||
*
|
||||
* Returns: The boot version, or %NULL if unknown. Do not free the returned value, it is owned by @self.
|
||||
*/
|
||||
const gchar *
|
||||
mm_firmware_properties_get_gobi_boot_version (MMFirmwareProperties *self)
|
||||
{
|
||||
g_return_val_if_fail (MM_IS_FIRMWARE_PROPERTIES (self), NULL);
|
||||
g_return_val_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI, NULL);
|
||||
|
||||
return self->priv->gobi_boot_version;
|
||||
}
|
||||
|
||||
void
|
||||
mm_firmware_properties_set_gobi_boot_version (MMFirmwareProperties *self,
|
||||
const gchar *version)
|
||||
{
|
||||
g_return_if_fail (MM_IS_FIRMWARE_PROPERTIES (self));
|
||||
g_return_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI);
|
||||
|
||||
g_free (self->priv->gobi_boot_version);
|
||||
self->priv->gobi_boot_version = g_strdup (version);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* mm_firmware_properties_get_gobi_pri_unique_id:
|
||||
* @self: a #MMFirmwareProperties.
|
||||
*
|
||||
* Gets the PRI unique ID of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
|
||||
*
|
||||
* Returns: The PRI unique ID, or %NULL if unknown. Do not free the returned value, it is owned by @self.
|
||||
*/
|
||||
const gchar *
|
||||
mm_firmware_properties_get_gobi_pri_unique_id (MMFirmwareProperties *self)
|
||||
{
|
||||
g_return_val_if_fail (MM_IS_FIRMWARE_PROPERTIES (self), NULL);
|
||||
g_return_val_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI, NULL);
|
||||
|
||||
return self->priv->gobi_pri_unique_id;
|
||||
}
|
||||
|
||||
void
|
||||
mm_firmware_properties_set_gobi_pri_unique_id (MMFirmwareProperties *self,
|
||||
const gchar *unique_id)
|
||||
{
|
||||
g_return_if_fail (MM_IS_FIRMWARE_PROPERTIES (self));
|
||||
g_return_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI);
|
||||
|
||||
g_free (self->priv->gobi_pri_unique_id);
|
||||
self->priv->gobi_pri_unique_id = g_strdup (unique_id);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* mm_firmware_properties_get_gobi_modem_unique_id:
|
||||
* @self: a #MMFirmwareProperties.
|
||||
*
|
||||
* Gets the MODEM unique ID of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
|
||||
*
|
||||
* Returns: The PRI unique ID, or %NULL if unknown. Do not free the returned value, it is owned by @self.
|
||||
*/
|
||||
const gchar *
|
||||
mm_firmware_properties_get_gobi_modem_unique_id (MMFirmwareProperties *self)
|
||||
{
|
||||
g_return_val_if_fail (MM_IS_FIRMWARE_PROPERTIES (self), NULL);
|
||||
g_return_val_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI, NULL);
|
||||
|
||||
return self->priv->gobi_modem_unique_id;
|
||||
}
|
||||
|
||||
void
|
||||
mm_firmware_properties_set_gobi_modem_unique_id (MMFirmwareProperties *self,
|
||||
const gchar *unique_id)
|
||||
{
|
||||
g_return_if_fail (MM_IS_FIRMWARE_PROPERTIES (self));
|
||||
g_return_if_fail (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI);
|
||||
|
||||
g_free (self->priv->gobi_modem_unique_id);
|
||||
self->priv->gobi_modem_unique_id = g_strdup (unique_id);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* mm_firmware_properties_get_dictionary:
|
||||
* @self: A #MMFirmwareProperties.
|
||||
@@ -115,6 +275,34 @@ mm_firmware_properties_get_dictionary (MMFirmwareProperties *self)
|
||||
PROPERTY_IMAGE_TYPE,
|
||||
g_variant_new_uint32 (self->priv->image_type));
|
||||
|
||||
if (self->priv->image_type == MM_FIRMWARE_IMAGE_TYPE_GOBI) {
|
||||
if (self->priv->gobi_pri_version)
|
||||
g_variant_builder_add (&builder,
|
||||
"{sv}",
|
||||
PROPERTY_GOBI_PRI_VERSION,
|
||||
g_variant_new_string (self->priv->gobi_pri_version));
|
||||
if (self->priv->gobi_pri_info)
|
||||
g_variant_builder_add (&builder,
|
||||
"{sv}",
|
||||
PROPERTY_GOBI_PRI_INFO,
|
||||
g_variant_new_string (self->priv->gobi_pri_info));
|
||||
if (self->priv->gobi_boot_version)
|
||||
g_variant_builder_add (&builder,
|
||||
"{sv}",
|
||||
PROPERTY_GOBI_BOOT_VERSION,
|
||||
g_variant_new_string (self->priv->gobi_boot_version));
|
||||
if (self->priv->gobi_pri_unique_id)
|
||||
g_variant_builder_add (&builder,
|
||||
"{sv}",
|
||||
PROPERTY_GOBI_PRI_UNIQUE_ID,
|
||||
g_variant_new_string (self->priv->gobi_pri_unique_id));
|
||||
if (self->priv->gobi_modem_unique_id)
|
||||
g_variant_builder_add (&builder,
|
||||
"{sv}",
|
||||
PROPERTY_GOBI_MODEM_UNIQUE_ID,
|
||||
g_variant_new_string (self->priv->gobi_modem_unique_id));
|
||||
}
|
||||
|
||||
return g_variant_ref_sink (g_variant_builder_end (&builder));
|
||||
}
|
||||
|
||||
@@ -129,8 +317,24 @@ consume_variant (MMFirmwareProperties *self,
|
||||
if (g_str_equal (key, PROPERTY_UNIQUE_ID)) {
|
||||
g_free (self->priv->unique_id);
|
||||
self->priv->unique_id = g_variant_dup_string (value, NULL);
|
||||
} else if (g_str_equal (key, PROPERTY_IMAGE_TYPE))
|
||||
} else if (g_str_equal (key, PROPERTY_IMAGE_TYPE)) {
|
||||
self->priv->image_type = g_variant_get_uint32 (value);
|
||||
} else if (g_str_equal (key, PROPERTY_GOBI_PRI_VERSION)) {
|
||||
g_free (self->priv->gobi_pri_version);
|
||||
self->priv->gobi_pri_version = g_variant_dup_string (value, NULL);
|
||||
} else if (g_str_equal (key, PROPERTY_GOBI_PRI_INFO)) {
|
||||
g_free (self->priv->gobi_pri_info);
|
||||
self->priv->gobi_pri_info = g_variant_dup_string (value, NULL);
|
||||
} else if (g_str_equal (key, PROPERTY_GOBI_BOOT_VERSION)) {
|
||||
g_free (self->priv->gobi_boot_version);
|
||||
self->priv->gobi_boot_version = g_variant_dup_string (value, NULL);
|
||||
} else if (g_str_equal (key, PROPERTY_GOBI_PRI_UNIQUE_ID)) {
|
||||
g_free (self->priv->gobi_pri_unique_id);
|
||||
self->priv->gobi_pri_unique_id = g_variant_dup_string (value, NULL);
|
||||
} else if (g_str_equal (key, PROPERTY_GOBI_MODEM_UNIQUE_ID)) {
|
||||
g_free (self->priv->gobi_modem_unique_id);
|
||||
self->priv->gobi_modem_unique_id = g_variant_dup_string (value, NULL);
|
||||
}
|
||||
else {
|
||||
/* Set error */
|
||||
g_set_error (error,
|
||||
@@ -267,6 +471,11 @@ finalize (GObject *object)
|
||||
MMFirmwareProperties *self = MM_FIRMWARE_PROPERTIES (object);
|
||||
|
||||
g_free (self->priv->unique_id);
|
||||
g_free (self->priv->gobi_pri_version);
|
||||
g_free (self->priv->gobi_pri_info);
|
||||
g_free (self->priv->gobi_boot_version);
|
||||
g_free (self->priv->gobi_pri_unique_id);
|
||||
g_free (self->priv->gobi_modem_unique_id);
|
||||
|
||||
G_OBJECT_CLASS (mm_firmware_properties_parent_class)->finalize (object);
|
||||
}
|
||||
|
@@ -58,6 +58,13 @@ GType mm_firmware_properties_get_type (void);
|
||||
const gchar *mm_firmware_properties_get_unique_id (MMFirmwareProperties *self);
|
||||
MMFirmwareImageType mm_firmware_properties_get_image_type (MMFirmwareProperties *self);
|
||||
|
||||
/* Gobi specific */
|
||||
const gchar *mm_firmware_properties_get_gobi_pri_version (MMFirmwareProperties *self);
|
||||
const gchar *mm_firmware_properties_get_gobi_pri_info (MMFirmwareProperties *self);
|
||||
const gchar *mm_firmware_properties_get_gobi_boot_version (MMFirmwareProperties *self);
|
||||
const gchar *mm_firmware_properties_get_gobi_pri_unique_id (MMFirmwareProperties *self);
|
||||
const gchar *mm_firmware_properties_get_gobi_modem_unique_id (MMFirmwareProperties *self);
|
||||
|
||||
/*****************************************************************************/
|
||||
/* ModemManager/libmm-glib/mmcli specific methods */
|
||||
|
||||
@@ -70,6 +77,18 @@ MMFirmwareProperties *mm_firmware_properties_new (MMFirmwareImageType image_type
|
||||
MMFirmwareProperties *mm_firmware_properties_new_from_dictionary (GVariant *dictionary,
|
||||
GError **error);
|
||||
|
||||
/* Gobi specific */
|
||||
void mm_firmware_properties_set_gobi_pri_version (MMFirmwareProperties *self,
|
||||
const gchar *version);
|
||||
void mm_firmware_properties_set_gobi_pri_info (MMFirmwareProperties *self,
|
||||
const gchar *info);
|
||||
void mm_firmware_properties_set_gobi_boot_version (MMFirmwareProperties *self,
|
||||
const gchar *version);
|
||||
void mm_firmware_properties_set_gobi_pri_unique_id (MMFirmwareProperties *self,
|
||||
const gchar *id);
|
||||
void mm_firmware_properties_set_gobi_modem_unique_id (MMFirmwareProperties *self,
|
||||
const gchar *id);
|
||||
|
||||
GVariant *mm_firmware_properties_get_dictionary (MMFirmwareProperties *self);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user