[PATCH 1/2] intel-firmware-update: add support for Intel Firmware Update service

Aleksander Morgado aleksander at aleksander.es
Wed Jan 10 21:06:04 UTC 2018


On 10/01/18 21:46, Ben Chan wrote:
> ---
>  data/Makefile.am                                       |  3 ++-
>  data/mbim-service-intel-firmware-update.json           | 11 +++++++++++
>  docs/reference/libmbim-glib/Makefile.am                |  3 ++-
>  .../libmbim-glib/libmbim-glib-common.sections          |  2 ++
>  src/libmbim-glib/generated/Makefile.am                 | 18 +++++++++++++++---
>  src/libmbim-glib/libmbim-glib.h                        |  1 +
>  src/libmbim-glib/mbim-cid.c                            | 12 ++++++++++++
>  src/libmbim-glib/mbim-cid.h                            | 12 ++++++++++++
>  src/libmbim-glib/mbim-uuid.c                           | 13 +++++++++++++
>  src/libmbim-glib/mbim-uuid.h                           | 11 +++++++++++
>  src/libmbim-glib/test/test-uuid.c                      |  8 ++++++++
>  11 files changed, 89 insertions(+), 5 deletions(-)
>  create mode 100644 data/mbim-service-intel-firmware-update.json
> 

Pushed to git master, plus a follow up commit adding some additional doc related fixes.
Thanks!

> diff --git a/data/Makefile.am b/data/Makefile.am
> index e70ec6e..357275e 100644
> --- a/data/Makefile.am
> +++ b/data/Makefile.am
> @@ -12,4 +12,5 @@ EXTRA_DIST = \
>  	mbim-service-ms-host-shutdown.json \
>  	mbim-service-proxy-control.json \
>  	mbim-service-qmi.json \
> -	mbim-service-atds.json
> +	mbim-service-atds.json \
> +	mbim-service-intel-firmware-update.json
> diff --git a/data/mbim-service-intel-firmware-update.json b/data/mbim-service-intel-firmware-update.json
> new file mode 100644
> index 0000000..cd55164
> --- /dev/null
> +++ b/data/mbim-service-intel-firmware-update.json
> @@ -0,0 +1,11 @@
> +[
> +  // *********************************************************************************
> +  { "type" : "Service",
> +    "name" : "Intel Firmware Update" },
> +
> +  // *********************************************************************************
> +  { "name"         : "Modem Reboot",
> +    "service"      : "Intel Firmware Update",
> +    "type"         : "Command",
> +    "set"          : [] }
> +]
> diff --git a/docs/reference/libmbim-glib/Makefile.am b/docs/reference/libmbim-glib/Makefile.am
> index 94d7c7b..d569d13 100644
> --- a/docs/reference/libmbim-glib/Makefile.am
> +++ b/docs/reference/libmbim-glib/Makefile.am
> @@ -18,7 +18,8 @@ ALL_SECTIONS = \
>  	$(top_builddir)/src/libmbim-glib/generated/mbim-ms-firmware-id.sections \
>  	$(top_builddir)/src/libmbim-glib/generated/mbim-ms-host-shutdown.sections \
>  	$(top_builddir)/src/libmbim-glib/generated/mbim-qmi.sections \
> -	$(top_builddir)/src/libmbim-glib/generated/mbim-atds.sections
> +	$(top_builddir)/src/libmbim-glib/generated/mbim-atds.sections \
> +	$(top_builddir)/src/libmbim-glib/generated/mbim-intel-firmware-update.sections
>  
>  $(DOC_MODULE)-sections.mstamp: $(ALL_SECTIONS)
>  	$(AM_V_GEN) \
> diff --git a/docs/reference/libmbim-glib/libmbim-glib-common.sections b/docs/reference/libmbim-glib/libmbim-glib-common.sections
> index 6367ab9..6aad149 100644
> --- a/docs/reference/libmbim-glib/libmbim-glib-common.sections
> +++ b/docs/reference/libmbim-glib/libmbim-glib-common.sections
> @@ -25,6 +25,7 @@ MBIM_UUID_MS_FIRMWARE_ID
>  MBIM_UUID_MS_HOST_SHUTDOWN
>  MBIM_UUID_PROXY_CONTROL
>  MBIM_UUID_QMI
> +MBIM_UUID_INTEL_FIRMWARE_UPDATE
>  <SUBSECTION Methods>
>  mbim_service_get_string
>  mbim_service_lookup_name
> @@ -102,6 +103,7 @@ MBIM_TYPE_CID_MS_FIRMWARE_ID
>  MBIM_TYPE_CID_MS_HOST_SHUTDOWN
>  MBIM_TYPE_CID_PROXY_CONTROL
>  MBIM_TYPE_CID_QMI
> +MBIM_TYPE_CID_INTEL_FIRMWARE_UPDATE
>  mbim_cid_atds_get_type
>  mbim_cid_auth_get_type
>  mbim_cid_basic_connect_get_type
> diff --git a/src/libmbim-glib/generated/Makefile.am b/src/libmbim-glib/generated/Makefile.am
> index b0722a0..ce69402 100644
> --- a/src/libmbim-glib/generated/Makefile.am
> +++ b/src/libmbim-glib/generated/Makefile.am
> @@ -14,7 +14,8 @@ GENERATED_H = \
>  	mbim-ms-host-shutdown.h \
>  	mbim-proxy-control.h \
>  	mbim-qmi.h \
> -	mbim-atds.h
> +	mbim-atds.h \
> +	mbim-intel-firmware-update.h
>  
>  GENERATED_C = \
>  	mbim-error-types.c \
> @@ -31,7 +32,8 @@ GENERATED_C = \
>  	mbim-ms-host-shutdown.c \
>  	mbim-proxy-control.c \
>  	mbim-qmi.c \
> -	mbim-atds.c
> +	mbim-atds.c \
> +	mbim-intel-firmware-update.c
>  
>  GENERATED_SECTIONS = \
>  	mbim-basic-connect.sections \
> @@ -45,7 +47,8 @@ GENERATED_SECTIONS = \
>  	mbim-ms-host-shutdown.sections \
>  	mbim-proxy-control.sections \
>  	mbim-qmi.sections \
> -	mbim-atds.sections
> +	mbim-atds.sections \
> +	mbim-intel-firmware-update.sections
>  
>  # Error types
>  mbim-error-types.h: $(top_srcdir)/src/libmbim-glib/mbim-errors.h $(top_srcdir)/build-aux/templates/mbim-error-types-template.h
> @@ -194,6 +197,15 @@ mbim-atds.h mbim-atds.c mbim-atds.sections: $(top_srcdir)/data/mbim-service-atds
>  			--input $(top_srcdir)/data/mbim-service-atds.json \
>  			--output mbim-atds
>  
> +# Intel Firmware Update Service
> +mbim-intel-firmware-update.h mbim-intel-firmware-update.c mbim-intel-firmware-update.sections: $(top_srcdir)/data/mbim-service-intel-firmware-update.json $(top_srcdir)/build-aux/mbim-codegen/*.py $(top_srcdir)/build-aux/mbim-codegen/mbim-codegen
> +	$(AM_V_GEN)  \
> +		rm -f mbim-intel-firmware-update.h && \
> +		rm -f mbim-intel-firmware-update.c && \
> +		$(top_srcdir)/build-aux/mbim-codegen/mbim-codegen \
> +			--input $(top_srcdir)/data/mbim-service-intel-firmware-update.json \
> +			--output mbim-intel-firmware-update
> +
>  BUILT_SOURCES = $(GENERATED_H) $(GENERATED_C)
>  
>  nodist_libmbim_glib_generated_la_SOURCES = \
> diff --git a/src/libmbim-glib/libmbim-glib.h b/src/libmbim-glib/libmbim-glib.h
> index 1b82de5..a7bf92c 100644
> --- a/src/libmbim-glib/libmbim-glib.h
> +++ b/src/libmbim-glib/libmbim-glib.h
> @@ -50,6 +50,7 @@
>  #include "mbim-ms-host-shutdown.h"
>  #include "mbim-qmi.h"
>  #include "mbim-atds.h"
> +#include "mbim-intel-firmware-update.h"
>  
>  /* backwards compatibility */
>  #include "mbim-compat.h"
> diff --git a/src/libmbim-glib/mbim-cid.c b/src/libmbim-glib/mbim-cid.c
> index 4f3cc7c..7f46466 100644
> --- a/src/libmbim-glib/mbim-cid.c
> +++ b/src/libmbim-glib/mbim-cid.c
> @@ -157,6 +157,12 @@ static const CidConfig cid_atds_config [MBIM_CID_ATDS_LAST] = {
>      { NO_SET, QUERY, NO_NOTIFY }, /* MBIM_CID_ATDS_REGISTER_STATE */
>  };
>  
> +/* Note: index of the array is CID-1 */
> +#define MBIM_CID_INTEL_FIRMWARE_UPDATE_LAST MBIM_CID_INTEL_FIRMWARE_UPDATE_MODEM_REBOOT
> +static const CidConfig cid_intel_firmware_update_config [MBIM_CID_INTEL_FIRMWARE_UPDATE_LAST] = {
> +    { SET, NO_QUERY, NO_NOTIFY }, /* MBIM_CID_INTEL_FIRMWARE_UPDATE_MODEM_REBOOT */
> +};
> +
>  /**
>   * mbim_cid_can_set:
>   * @service: a #MbimService.
> @@ -201,6 +207,8 @@ mbim_cid_can_set (MbimService service,
>          return cid_qmi_config[cid - 1].set;
>      case MBIM_SERVICE_ATDS:
>          return cid_atds_config[cid - 1].set;
> +    case MBIM_SERVICE_INTEL_FIRMWARE_UPDATE:
> +        return cid_intel_firmware_update_config[cid - 1].set;
>      default:
>          g_assert_not_reached ();
>          return FALSE;
> @@ -251,6 +259,8 @@ mbim_cid_can_query (MbimService service,
>          return cid_qmi_config[cid - 1].query;
>      case MBIM_SERVICE_ATDS:
>          return cid_atds_config[cid - 1].query;
> +    case MBIM_SERVICE_INTEL_FIRMWARE_UPDATE:
> +        return cid_intel_firmware_update_config[cid - 1].query;
>      default:
>          g_assert_not_reached ();
>          return FALSE;
> @@ -301,6 +311,8 @@ mbim_cid_can_notify (MbimService service,
>          return cid_qmi_config[cid - 1].notify;
>      case MBIM_SERVICE_ATDS:
>          return cid_atds_config[cid - 1].notify;
> +    case MBIM_SERVICE_INTEL_FIRMWARE_UPDATE:
> +        return cid_intel_firmware_update_config[cid - 1].notify;
>      default:
>          g_assert_not_reached ();
>          return FALSE;
> diff --git a/src/libmbim-glib/mbim-cid.h b/src/libmbim-glib/mbim-cid.h
> index d85d201..4be0dbf 100644
> --- a/src/libmbim-glib/mbim-cid.h
> +++ b/src/libmbim-glib/mbim-cid.h
> @@ -251,6 +251,18 @@ typedef enum {
>      MBIM_CID_ATDS_REGISTER_STATE = 9,
>  } MbimCidAtds;
>  
> +/**
> + * MbimCidIntelFirmwareUpdate:
> + * @MBIM_CID_INTEL_FIRMWARE_UPDATE_UNKNOWN: Unknown command.
> + * @MBIM_CID_INTEL_FIRMWARE_UPDATE_MODEM_REBOOT: Reboot modem for firmware update.
> + *
> + * MBIM commands in the %MBIM_SERVICE_INTEL_FIRMWARE_UPDATE service.
> + */
> +typedef enum {
> +    MBIM_CID_INTEL_FIRMWARE_UPDATE_UNKNOWN      = 0,
> +    MBIM_CID_INTEL_FIRMWARE_UPDATE_MODEM_REBOOT = 1,
> +} MbimCidIntelFirmwareUpdate;
> +
>  /* Command helpers */
>  
>  gboolean     mbim_cid_can_set       (MbimService service,
> diff --git a/src/libmbim-glib/mbim-uuid.c b/src/libmbim-glib/mbim-uuid.c
> index 4cb9a20..d77be39 100644
> --- a/src/libmbim-glib/mbim-uuid.c
> +++ b/src/libmbim-glib/mbim-uuid.c
> @@ -244,6 +244,14 @@ static const MbimUuid uuid_atds = {
>      .e = { 0xb2, 0xe7, 0x0e, 0x52, 0x7d, 0xb3 }
>  };
>  
> +static const MbimUuid uuid_intel_firmware_update = {
> +    .a = { 0x0e, 0xd3, 0x74, 0xcb },
> +    .b = { 0xf8, 0x35 },
> +    .c = { 0x44, 0x74 },
> +    .d = { 0xbc, 0x11 },
> +    .e = { 0x3b, 0x3f, 0xd7, 0x6f, 0x56, 0x41 }
> +};
> +
>  static GList *mbim_custom_service_list = NULL;
>  
>  typedef struct {
> @@ -413,6 +421,8 @@ mbim_uuid_from_service (MbimService service)
>          return &uuid_qmi;
>      case MBIM_SERVICE_ATDS:
>          return &uuid_atds;
> +    case MBIM_SERVICE_INTEL_FIRMWARE_UPDATE:
> +        return &uuid_intel_firmware_update;
>      default:
>          for (l = mbim_custom_service_list; l != NULL; l = l->next) {
>              if (service == ((MbimCustomService *)l->data)->service_id)
> @@ -471,6 +481,9 @@ mbim_uuid_to_service (const MbimUuid *uuid)
>      if (mbim_uuid_cmp (uuid, &uuid_atds))
>          return MBIM_SERVICE_ATDS;
>  
> +    if (mbim_uuid_cmp (uuid, &uuid_intel_firmware_update))
> +        return MBIM_SERVICE_INTEL_FIRMWARE_UPDATE;
> +
>      for (l = mbim_custom_service_list; l != NULL; l = l->next) {
>          if (mbim_uuid_cmp (&((MbimCustomService *)l->data)->uuid, uuid))
>              return ((MbimCustomService *)l->data)->service_id;
> diff --git a/src/libmbim-glib/mbim-uuid.h b/src/libmbim-glib/mbim-uuid.h
> index 14db47e..59b6338 100644
> --- a/src/libmbim-glib/mbim-uuid.h
> +++ b/src/libmbim-glib/mbim-uuid.h
> @@ -73,6 +73,7 @@ gboolean  mbim_uuid_from_printable (const gchar *str,
>   * @MBIM_SERVICE_PROXY_CONTROL: Proxy Control service.
>   * @MBIM_SERVICE_QMI: QMI-over-MBIM service.
>   * @MBIM_SERVICE_ATDS: ATT Device service.
> + * @MBIM_SERVICE_INTEL_FIRMWARE_UPDATE: Intel firmware update service.
>   * @MBIM_SERVICE_LAST: Internal value.
>   *
>   * Enumeration of the generic MBIM services.
> @@ -91,6 +92,7 @@ typedef enum {
>      MBIM_SERVICE_PROXY_CONTROL    = 10,
>      MBIM_SERVICE_QMI              = 11,
>      MBIM_SERVICE_ATDS             = 12,
> +    MBIM_SERVICE_INTEL_FIRMWARE_UPDATE = 13,
>  #if defined LIBMBIM_GLIB_COMPILATION
>      MBIM_SERVICE_LAST /*< skip >*/
>  #endif
> @@ -213,6 +215,15 @@ typedef enum {
>   */
>  #define MBIM_UUID_ATDS mbim_uuid_from_service (MBIM_SERVICE_ATDS)
>  
> +/**
> + * MBIM_UUID_INTEL_FIRMWARE_UPDATE:
> + *
> + * Get the UUID of the %MBIM_SERVICE_INTEL_FIRMWARE_UPDATE service.
> + *
> + * Returns: (transfer none): a #MbimUuid.
> + */
> +#define MBIM_UUID_INTEL_FIRMWARE_UPDATE mbim_uuid_from_service (MBIM_SERVICE_INTEL_FIRMWARE_UPDATE)
> +
>  const gchar *mbim_service_lookup_name (guint service);
>  
>  guint mbim_register_custom_service (const MbimUuid *uuid,
> diff --git a/src/libmbim-glib/test/test-uuid.c b/src/libmbim-glib/test/test-uuid.c
> index 7b0ec28..857507b 100644
> --- a/src/libmbim-glib/test/test-uuid.c
> +++ b/src/libmbim-glib/test/test-uuid.c
> @@ -91,6 +91,13 @@ test_uuid_ms_host_shutdown (void)
>                            "883b7c26-985f-43fa-9804-27d7fb80959c");
>  }
>  
> +static void
> +test_uuid_intel_firmware_update (void)
> +{
> +    compare_uuid_strings (MBIM_UUID_INTEL_FIRMWARE_UPDATE,
> +                          "0ed374cb-f835-4474-bc11-3b3fd76f5641");
> +}
> +
>  /*****************************************************************************/
>  
>  static void
> @@ -200,6 +207,7 @@ int main (int argc, char **argv)
>      g_test_add_func ("/libmbim-glib/uuid/dss",              test_uuid_dss);
>      g_test_add_func ("/libmbim-glib/uuid/ms-firmware-id",   test_uuid_ms_firmware_id);
>      g_test_add_func ("/libmbim-glib/uuid/ms-host-shutdown", test_uuid_ms_host_shutdown);
> +    g_test_add_func ("/libmbim-glib/uuid/intel-firmware-update", test_uuid_intel_firmware_update);
>  
>      g_test_add_func ("/libmbim-glib/uuid/valid",           test_uuid_valid);
>      g_test_add_func ("/libmbim-glib/uuid/valid/camelcase", test_uuid_valid_camelcase);
> 


-- 
Aleksander
https://aleksander.es


More information about the libmbim-devel mailing list