diff options
author | Freedom Liu <tianyu28658@gmail.com> | 2022-02-14 16:35:39 +0800 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-02-28 21:01:02 +0000 |
commit | b7b0c4ca1acdc985b26894c028b43550f25f29d6 (patch) | |
tree | 19c3fbc226e322e3f27d361dfe6563538ab22774 | |
parent | 18555ad244a5a9093e7552ce1485eb02cf84bb17 (diff) | |
download | libqmi-b7b0c4ca1acdc985b26894c028b43550f25f29d6.tar.gz |
libqmi-glib,qmicli: new foxconn modem service
-rw-r--r-- | data/qmi-service-fox.json | 34 | ||||
-rw-r--r-- | docs/reference/libqmi-glib/libqmi-glib-common.sections | 14 | ||||
-rw-r--r-- | docs/reference/libqmi-glib/libqmi-glib-docs.xml | 11 | ||||
-rw-r--r-- | src/libqmi-glib/generated/meson.build | 3 | ||||
-rw-r--r-- | src/libqmi-glib/libqmi-glib.h | 3 | ||||
-rw-r--r-- | src/libqmi-glib/meson.build | 1 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-device.c | 6 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-enums-fox.h | 56 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-enums.h | 2 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-message.c | 7 | ||||
-rw-r--r-- | src/qmicli/meson.build | 1 | ||||
-rw-r--r-- | src/qmicli/qmicli-fox.c | 241 | ||||
-rw-r--r-- | src/qmicli/qmicli-helpers.h | 3 | ||||
-rw-r--r-- | src/qmicli/qmicli.c | 17 | ||||
-rw-r--r-- | src/qmicli/qmicli.h | 8 |
15 files changed, 405 insertions, 2 deletions
diff --git a/data/qmi-service-fox.json b/data/qmi-service-fox.json new file mode 100644 index 00000000..82c219ab --- /dev/null +++ b/data/qmi-service-fox.json @@ -0,0 +1,34 @@ +[ + // ********************************************************************************* + { "name" : "FOX", + "type" : "Service" }, + + // ********************************************************************************* + { "name" : "QMI Client FOX", + "type" : "Client", + "since" : "1.32" }, + + // ********************************************************************************* + { "name" : "QMI Message FOX", + "type" : "Message-ID-Enum" }, + + // ********************************************************************************* + { "name" : "Get Firmware Version", + "type" : "Message", + "service" : "FOX", + "id" : "0x555E", + "since" : "1.32", + "input" : [ { "name" : "Version Type", + "id" : "0x01", + "type" : "TLV", + "since" : "1.32", + "format" : "guint8", + "public-format" : "QmiFoxFirmwareVersionType" } ], + "output" : [ { "common-ref" : "Operation Result" }, + { "name" : "Version", + "id" : "0x01", + "type" : "TLV", + "since" : "1.32", + "format" : "string", + "prerequisites": [ { "common-ref" : "Success" } ] } ] } +] diff --git a/docs/reference/libqmi-glib/libqmi-glib-common.sections b/docs/reference/libqmi-glib/libqmi-glib-common.sections index c2f7f19f..cd0be449 100644 --- a/docs/reference/libqmi-glib/libqmi-glib-common.sections +++ b/docs/reference/libqmi-glib/libqmi-glib-common.sections @@ -29,6 +29,7 @@ HAVE_QMI_SERVICE_WDA HAVE_QMI_SERVICE_WDS HAVE_QMI_SERVICE_WMS HAVE_QMI_SERVICE_DPM +HAVE_QMI_SERVICE_FOX </SECTION> <SECTION> @@ -1567,6 +1568,19 @@ qmi_sar_rf_state_get_type </SECTION> <SECTION> +<FILE>qmi-enums-fox</FILE> +<TITLE>FOX enumerations and flags</TITLE> +QmiFoxFirmwareVersionType +<SUBSECTION Methods> +qmi_fox_firmware_version_type_get_string +<SUBSECTION Private> +qmi_fox_firmware_version_type_build_string_from_mask +<SUBSECTION Standard> +QMI_TYPE_FOX_FIRMWARE_VERSION_TYPE +qmi_fox_firmware_version_type_get_type +</SECTION> + +<SECTION> <FILE>qmi-errors</FILE> <TITLE>Errors</TITLE> QmiCoreError diff --git a/docs/reference/libqmi-glib/libqmi-glib-docs.xml b/docs/reference/libqmi-glib/libqmi-glib-docs.xml index 114a6494..c8c8d5ea 100644 --- a/docs/reference/libqmi-glib/libqmi-glib-docs.xml +++ b/docs/reference/libqmi-glib/libqmi-glib-docs.xml @@ -24,6 +24,7 @@ <year>2019</year> <year>2020</year> <year>2021</year> + <year>2022</year> <holder>The libqmi-glib authors</holder> </copyright> @@ -547,6 +548,16 @@ </chapter> <chapter> + <title>Foxconn Modem Service (FOX)</title> + <xi:include href="xml/qmi-client-fox.xml"/> + <xi:include href="xml/qmi-enums-fox.xml"/> + <section> + <title>FOX Requests</title> + <xi:include href="xml/qmi-message-fox-get-firmware-version.xml"/> + </section> + </chapter> + + <chapter> <title>Compatibility with older versions</title> <xi:include href="xml/qmi-compat.xml"/> </chapter> diff --git a/src/libqmi-glib/generated/meson.build b/src/libqmi-glib/generated/meson.build index e5650494..a41acc0e 100644 --- a/src/libqmi-glib/generated/meson.build +++ b/src/libqmi-glib/generated/meson.build @@ -67,7 +67,7 @@ gen_headers += custom_target( command: [ python, qmi_mkenums, - '--fhead', '#ifndef __LIBQMI_GLIB_ENUM_TYPES_H__\n#define __LIBQMI_GLIB_ENUM_TYPES_H__\n#include "qmi-enums.h"\n#include "qmi-enums-wds.h"\n#include "qmi-enums-dms.h"\n#include "qmi-enums-nas.h"\n#include "qmi-enums-wms.h"\n#include "qmi-enums-pds.h"\n#include "qmi-enums-pdc.h"\n#include "qmi-enums-pbm.h"\n#include "qmi-enums-uim.h"\n#include "qmi-enums-sar.h"\n#include "qmi-enums-oma.h"\n#include "qmi-enums-wda.h"\n#include "qmi-enums-voice.h"\n#include "qmi-enums-loc.h"\n#include "qmi-enums-qos.h"\n#include "qmi-enums-gas.h"\n#include "qmi-enums-dsd.h"\n#include "qmi-device.h"\n', + '--fhead', '#ifndef __LIBQMI_GLIB_ENUM_TYPES_H__\n#define __LIBQMI_GLIB_ENUM_TYPES_H__\n#include "qmi-enums.h"\n#include "qmi-enums-wds.h"\n#include "qmi-enums-dms.h"\n#include "qmi-enums-nas.h"\n#include "qmi-enums-wms.h"\n#include "qmi-enums-pds.h"\n#include "qmi-enums-pdc.h"\n#include "qmi-enums-pbm.h"\n#include "qmi-enums-uim.h"\n#include "qmi-enums-sar.h"\n#include "qmi-enums-oma.h"\n#include "qmi-enums-wda.h"\n#include "qmi-enums-voice.h"\n#include "qmi-enums-loc.h"\n#include "qmi-enums-qos.h"\n#include "qmi-enums-gas.h"\n#include "qmi-enums-dsd.h"\n#include "qmi-enums-fox.h"\n#include "qmi-device.h"\n', '--template', files(templates_dir / enum_types + '.h.template'), '--ftail', '#endif /* __LIBQMI_GLIB_ENUM_TYPES_H__ */\n', '@INPUT@'], @@ -169,6 +169,7 @@ services = [ 'dms', 'dpm', 'dsd', + 'fox', 'gas', 'gms', 'loc', diff --git a/src/libqmi-glib/libqmi-glib.h b/src/libqmi-glib/libqmi-glib.h index 07bf06bb..867429f7 100644 --- a/src/libqmi-glib/libqmi-glib.h +++ b/src/libqmi-glib/libqmi-glib.h @@ -96,6 +96,9 @@ #include "qmi-dpm.h" +#include "qmi-enums-fox.h" +#include "qmi-fox.h" + /* generated */ #include "qmi-error-types.h" #include "qmi-enum-types.h" diff --git a/src/libqmi-glib/meson.build b/src/libqmi-glib/meson.build index 0a8c0ccd..0102e2e6 100644 --- a/src/libqmi-glib/meson.build +++ b/src/libqmi-glib/meson.build @@ -10,6 +10,7 @@ qmi_enums_headers = files( 'qmi-enums.h', 'qmi-enums-dms.h', 'qmi-enums-dsd.h', + 'qmi-enums-fox.h', 'qmi-enums-gas.h', 'qmi-enums-loc.h', 'qmi-enums-nas.h', diff --git a/src/libqmi-glib/qmi-device.c b/src/libqmi-glib/qmi-device.c index ae9f6912..3c149154 100644 --- a/src/libqmi-glib/qmi-device.c +++ b/src/libqmi-glib/qmi-device.c @@ -55,6 +55,7 @@ #include "qmi-gms.h" #include "qmi-dsd.h" #include "qmi-dpm.h" +#include "qmi-fox.h" #include "qmi-utils.h" #include "qmi-helpers.h" #include "qmi-error-types.h" @@ -1277,6 +1278,11 @@ qmi_device_allocate_client (QmiDevice *self, ctx->client_type = QMI_TYPE_CLIENT_DPM; #endif break; + case QMI_SERVICE_FOX: +#if defined HAVE_QMI_SERVICE_FOX + ctx->client_type = QMI_TYPE_CLIENT_FOX; +#endif + break; case QMI_SERVICE_UNKNOWN: g_assert_not_reached (); diff --git a/src/libqmi-glib/qmi-enums-fox.h b/src/libqmi-glib/qmi-enums-fox.h new file mode 100644 index 00000000..8126b4eb --- /dev/null +++ b/src/libqmi-glib/qmi-enums-fox.h @@ -0,0 +1,56 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * libqmi-glib -- GLib/GIO based library to control QMI devices + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * Copyright (C) 2022 Freedom Liu <lk@linuxdev.top> + */ + +#ifndef _LIBQMI_GLIB_QMI_ENUMS_FOX_H_ +#define _LIBQMI_GLIB_QMI_ENUMS_FOX_H_ + +#if !defined (__LIBQMI_GLIB_H_INSIDE__) && !defined (LIBQMI_GLIB_COMPILATION) +#error "Only <libqmi-glib.h> can be included directly." +#endif + +/** + * SECTION: qmi-enums-fox + * @title: FOX enumerations and flags + * @short_description: Enumerations and flags in the FOX service. + * + * This section defines enumerations and flags used in the FOX service + * interface. + */ + +/** + * QmiFoxFirmwareVersionType: + * @QMI_FOX_FIRMWARE_VERSION_TYPE_FIRMWARE_MCFG: E.g. T99W265.F0.0.0.0.1.GC.004. + * @QMI_FOX_FIRMWARE_VERSION_TYPE_FIRMWARE_MCFG_APPS: E.g. T99W265.F0.0.0.0.1.GC.004.001. + * @QMI_FOX_FIRMWARE_VERSION_TYPE_APPS: E.g. 001. + * + * Foxconn specific firmware version types. + * + * Since: 1.32 + */ +typedef enum { /*< since=1.32 >*/ + QMI_FOX_FIRMWARE_VERSION_TYPE_FIRMWARE_MCFG = 0x00, + QMI_FOX_FIRMWARE_VERSION_TYPE_FIRMWARE_MCFG_APPS = 0x01, + QMI_FOX_FIRMWARE_VERSION_TYPE_APPS = 0x02, +} QmiFoxFirmwareVersionType; + +#endif /* _LIBQMI_GLIB_QMI_ENUMS_FOX_H_ */ + diff --git a/src/libqmi-glib/qmi-enums.h b/src/libqmi-glib/qmi-enums.h index 7708913a..b50841c2 100644 --- a/src/libqmi-glib/qmi-enums.h +++ b/src/libqmi-glib/qmi-enums.h @@ -85,6 +85,7 @@ * @QMI_SERVICE_CAT: Card Application Toolkit service (v1). * @QMI_SERVICE_RMS: Remote Management Service. * @QMI_SERVICE_OMA: Open Mobile Alliance device management service. + * @QMI_SERVICE_FOX: Foxconn General Modem Service. Since: 1.32. * @QMI_SERVICE_FOTA: Firmware Over The Air service. Since: 1.24. * @QMI_SERVICE_GMS: Telit General Modem Service. Since: 1.24. * @QMI_SERVICE_GAS: Telit General Application Service. Since: 1.24. @@ -143,6 +144,7 @@ typedef enum { /*< since=1.0 >*/ QMI_SERVICE_CAT = 0xE0, QMI_SERVICE_RMS = 0xE1, QMI_SERVICE_OMA = 0xE2, + QMI_SERVICE_FOX = 0xE3, QMI_SERVICE_FOTA = 0xE6, QMI_SERVICE_GMS = 0xE7, QMI_SERVICE_GAS = 0xE8, diff --git a/src/libqmi-glib/qmi-message.c b/src/libqmi-glib/qmi-message.c index 92895ea4..d92a14bc 100644 --- a/src/libqmi-glib/qmi-message.c +++ b/src/libqmi-glib/qmi-message.c @@ -59,6 +59,7 @@ #include "qmi-dsd.h" #include "qmi-sar.h" #include "qmi-dpm.h" +#include "qmi-fox.h" #define PACKED __attribute__((packed)) @@ -1721,6 +1722,11 @@ qmi_message_get_printable_full (QmiMessage *self, contents = __qmi_message_dpm_get_printable (self, context, line_prefix); #endif break; + case QMI_SERVICE_FOX: +#if defined HAVE_QMI_SERVICE_FOX + contents = __qmi_message_fox_get_printable (self, context, line_prefix); +#endif + break; case QMI_SERVICE_UNKNOWN: g_assert_not_reached (); @@ -1836,6 +1842,7 @@ __qmi_message_is_abortable (QmiMessage *self, case QMI_SERVICE_PDC: case QMI_SERVICE_DSD: case QMI_SERVICE_QOS: + case QMI_SERVICE_FOX: default: return FALSE; } diff --git a/src/qmicli/meson.build b/src/qmicli/meson.build index c7945242..7a68533c 100644 --- a/src/qmicli/meson.build +++ b/src/qmicli/meson.build @@ -18,6 +18,7 @@ sources = files( 'qmicli-dms.c', 'qmicli-dpm.c', 'qmicli-dsd.c', + 'qmicli-fox.c', 'qmicli-gas.c', 'qmicli-gms.c', 'qmicli-link-management.c', diff --git a/src/qmicli/qmicli-fox.c b/src/qmicli/qmicli-fox.c new file mode 100644 index 00000000..43d628e8 --- /dev/null +++ b/src/qmicli/qmicli-fox.c @@ -0,0 +1,241 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * qmicli -- Command line interface to control QMI devices + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Copyright (C) 2022 Freedom Liu <lk@linuxdev.top> + */ + +#include "config.h" + +#include <stdio.h> +#include <stdlib.h> +#include <locale.h> +#include <string.h> +#include <assert.h> + +#include <glib.h> +#include <gio/gio.h> + +#include <libqmi-glib.h> + +#include "qmicli.h" +#include "qmicli-helpers.h" + +#if defined HAVE_QMI_SERVICE_FOX + +#undef VALIDATE_UNKNOWN +#define VALIDATE_UNKNOWN(str) (str ? str : "unknown") + +/* Context */ +typedef struct { + QmiDevice *device; + QmiClientFox *client; + GCancellable *cancellable; +} Context; +static Context *ctx; + +/* Options */ +static gchar *get_firmware_version_str; +static gboolean noop_flag; + +static GOptionEntry entries[] = { +#if defined HAVE_QMI_MESSAGE_FOX_GET_FIRMWARE_VERSION + { "fox-get-firmware-version", 0, 0, G_OPTION_ARG_STRING, &get_firmware_version_str, + "Get firmware version", + "[firmware-mcfg-apps|firmware-mcfg|apps]" + }, +#endif + { "fox-noop", 0, 0, G_OPTION_ARG_NONE, &noop_flag, + "Just allocate or release a FOX client. Use with `--client-no-release-cid' and/or `--client-cid'", + NULL + }, + { NULL } +}; + +GOptionGroup * +qmicli_fox_get_option_group (void) +{ + GOptionGroup *group; + + group = g_option_group_new ("fox", + "FOX options:", + "Show Foxconn Modem Service options", + NULL, + NULL); + g_option_group_add_entries (group, entries); + + return group; +} + +gboolean +qmicli_fox_options_enabled (void) +{ + static guint n_actions = 0; + static gboolean checked = FALSE; + + if (checked) + return !!n_actions; + + n_actions = (!!get_firmware_version_str + + noop_flag); + + if (n_actions > 1) { + g_printerr ("error: too many FOX actions requested\n"); + exit (EXIT_FAILURE); + } + + checked = TRUE; + return !!n_actions; +} + +static void +context_free (Context *context) +{ + if (!context) + return; + + if (context->cancellable) + g_object_unref (context->cancellable); + if (context->device) + g_object_unref (context->device); + if (context->client) + g_object_unref (context->client); + g_slice_free (Context, context); +} + +static void +operation_shutdown (gboolean operation_status) +{ + /* Cleanup context and finish async operation */ + context_free (ctx); + qmicli_async_operation_done (operation_status, FALSE); +} + +#if defined HAVE_QMI_MESSAGE_FOX_GET_FIRMWARE_VERSION + +static QmiMessageFoxGetFirmwareVersionInput * +get_firmware_version_input_create (const gchar *str) +{ + QmiMessageFoxGetFirmwareVersionInput *input = NULL; + QmiFoxFirmwareVersionType type; + GError *error = NULL; + + if (!qmicli_read_fox_firmware_version_type_from_string (str, &type)) { + g_printerr ("error: couldn't parse input firmware version type : '%s'\n", str); + return NULL; + } + + input = qmi_message_fox_get_firmware_version_input_new (); + if (!qmi_message_fox_get_firmware_version_input_set_version_type (input, type, &error)) { + g_printerr ("error: couldn't create input data bundle: '%s'\n", + error->message); + g_error_free (error); + qmi_message_fox_get_firmware_version_input_unref (input); + return NULL; + } + + return input; +} + +static void +get_firmware_version_ready (QmiClientFox *client, + GAsyncResult *res) +{ + const gchar *str = NULL; + QmiMessageFoxGetFirmwareVersionOutput *output; + GError *error = NULL; + + output = qmi_client_fox_get_firmware_version_finish (client, res, &error); + if (!output) { + g_printerr ("error: operation failed: %s\n", error->message); + g_error_free (error); + operation_shutdown (FALSE); + return; + } + + if (!qmi_message_fox_get_firmware_version_output_get_result (output, &error)) { + g_printerr ("error: couldn't get firmware version: %s\n", error->message); + g_error_free (error); + qmi_message_fox_get_firmware_version_output_unref (output); + operation_shutdown (FALSE); + return; + } + + qmi_message_fox_get_firmware_version_output_get_version (output, &str, NULL); + + g_print ("[%s] Firmware version retrieved:\n" + "\tVersion: '%s'\n", + qmi_device_get_path_display (ctx->device), + VALIDATE_UNKNOWN (str)); + + qmi_message_fox_get_firmware_version_output_unref (output); + operation_shutdown (TRUE); +} + +#endif /* HAVE_QMI_MESSAGE_FOX_GET_FIRMWARE_VERSION */ + +static gboolean +noop_cb (gpointer unused) +{ + operation_shutdown (TRUE); + return FALSE; +} + +void +qmicli_fox_run (QmiDevice *device, + QmiClientFox *client, + GCancellable *cancellable) +{ + /* Initialize context */ + ctx = g_slice_new (Context); + ctx->device = g_object_ref (device); + ctx->client = g_object_ref (client); + ctx->cancellable = g_object_ref (cancellable); + +#if defined HAVE_QMI_MESSAGE_FOX_GET_FIRMWARE_VERSION + if (get_firmware_version_str) { + QmiMessageFoxGetFirmwareVersionInput *input; + + g_debug ("Asynchronously getting firmware version..."); + + input = get_firmware_version_input_create (get_firmware_version_str); + if (!input) { + operation_shutdown (FALSE); + return; + } + + qmi_client_fox_get_firmware_version (ctx->client, + input, + 10, + ctx->cancellable, + (GAsyncReadyCallback)get_firmware_version_ready, + NULL); + qmi_message_fox_get_firmware_version_input_unref (input); + return; + } +#endif + + /* Just client allocate/release? */ + if (noop_flag) { + g_idle_add (noop_cb, NULL); + return; + } + + g_warn_if_reached (); +} + +#endif /* HAVE_QMI_SERVICE_FOX */ + diff --git a/src/qmicli/qmicli-helpers.h b/src/qmicli/qmicli-helpers.h index 6d1edcb1..8c31031a 100644 --- a/src/qmicli/qmicli-helpers.h +++ b/src/qmicli/qmicli-helpers.h @@ -55,7 +55,8 @@ QMICLI_ENUM_LIST_ITEM (QmiWmsMessageType, wms_message_type, "message type" ) \ QMICLI_ENUM_LIST_ITEM (QmiWmsMessageClass, wms_message_class, "message class" ) \ QMICLI_ENUM_LIST_ITEM (QmiWmsStorageType, wms_storage_type, "storage type" ) \ - QMICLI_ENUM_LIST_ITEM (QmiWmsReceiptAction, wms_receipt_action, "receipt action" ) + QMICLI_ENUM_LIST_ITEM (QmiWmsReceiptAction, wms_receipt_action, "receipt action" ) \ + QMICLI_ENUM_LIST_ITEM (QmiFoxFirmwareVersionType, fox_firmware_version_type, "fox firmware version type") #define QMICLI_ENUM_LIST_ITEM(TYPE,TYPE_UNDERSCORE,DESCR) \ gboolean qmicli_read_## TYPE_UNDERSCORE ##_from_string (const gchar *str, TYPE *out); diff --git a/src/qmicli/qmicli.c b/src/qmicli/qmicli.c index 44d18f98..76d0565e 100644 --- a/src/qmicli/qmicli.c +++ b/src/qmicli/qmicli.c @@ -463,6 +463,13 @@ allocate_client_ready (QmiDevice *dev, #else break; #endif + case QMI_SERVICE_FOX: +#if defined HAVE_QMI_SERVICE_FOX + qmicli_fox_run (dev, QMI_CLIENT_FOX (client), cancellable); + return; +#else + break; +#endif case QMI_SERVICE_UNKNOWN: case QMI_SERVICE_CTL: case QMI_SERVICE_AUTH: @@ -913,6 +920,13 @@ parse_actions (void) } #endif +#if defined HAVE_QMI_SERVICE_FOX + if (qmicli_fox_options_enabled ()) { + service = QMI_SERVICE_FOX; + actions_enabled++; + } +#endif + /* Cannot mix actions from different services */ if (actions_enabled > 1) { g_printerr ("error: cannot execute multiple actions of different services\n"); @@ -986,6 +1000,9 @@ int main (int argc, char **argv) #if defined HAVE_QMI_SERVICE_DPM g_option_context_add_group (context, qmicli_dpm_get_option_group ()); #endif +#if defined HAVE_QMI_SERVICE_FOX + g_option_context_add_group (context, qmicli_fox_get_option_group ()); +#endif g_option_context_add_group (context, qmicli_link_management_get_option_group ()); g_option_context_add_group (context, qmicli_qmiwwan_get_option_group ()); g_option_context_add_main_entries (context, main_entries, NULL); diff --git a/src/qmicli/qmicli.h b/src/qmicli/qmicli.h index 7800c2cc..7bf1d419 100644 --- a/src/qmicli/qmicli.h +++ b/src/qmicli/qmicli.h @@ -169,4 +169,12 @@ void qmicli_dpm_run (QmiDevice *device, GCancellable *cancellable); #endif +#if defined HAVE_QMI_SERVICE_FOX +GOptionGroup *qmicli_fox_get_option_group (void); +gboolean qmicli_fox_options_enabled (void); +void qmicli_fox_run (QmiDevice *device, + QmiClientFox *client, + GCancellable *cancellable); +#endif + #endif /* __QMICLI_H__ */ |