summaryrefslogtreecommitdiff
path: root/src/libmbim-glib/mbim-proxy-helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmbim-glib/mbim-proxy-helpers.c')
-rw-r--r--src/libmbim-glib/mbim-proxy-helpers.c130
1 files changed, 128 insertions, 2 deletions
diff --git a/src/libmbim-glib/mbim-proxy-helpers.c b/src/libmbim-glib/mbim-proxy-helpers.c
index c53f6a5..59aa455 100644
--- a/src/libmbim-glib/mbim-proxy-helpers.c
+++ b/src/libmbim-glib/mbim-proxy-helpers.c
@@ -111,11 +111,11 @@ _mbim_proxy_helper_service_subscribe_list_debug (const MbimEventEntry * const *l
g_free (str);
if (entry->cids_count == 0)
- g_debug ("[service %u] all CIDs enabled", (guint)i);
+ g_debug ("[service %u] No CIDs explicitly enabled", (guint)i);
else {
guint j;
- g_debug ("[service %u] %u CIDs enabled", (guint)i, entry->cids_count);;
+ g_debug ("[service %u] %u CIDs enabled", (guint)i, entry->cids_count);
for (j = 0; j < entry->cids_count; j++) {
const gchar *cid_str;
@@ -263,3 +263,129 @@ _mbim_proxy_helper_service_subscribe_list_merge (MbimEventEntry **in,
return in;
}
+
+/*****************************************************************************/
+
+MbimEventEntry **
+_mbim_proxy_helper_service_subscribe_list_dup (MbimEventEntry **in,
+ gsize in_size,
+ gsize *out_size)
+{
+ MbimEventEntry **out;
+ guint i;
+
+ g_assert (out_size != NULL);
+
+ out = g_new0 (MbimEventEntry *, in_size + 1);
+ for (i = 0; i < in_size; i++) {
+ MbimEventEntry *entry_in;
+ MbimEventEntry *entry_out;
+
+ entry_in = in[i];
+ entry_out = g_new (MbimEventEntry, 1);
+ memcpy (&entry_out->device_service_id, &entry_in->device_service_id, sizeof (MbimUuid));
+ entry_out->cids_count = entry_in->cids_count;
+ entry_out->cids = g_new (guint32, entry_out->cids_count);
+ memcpy (entry_out->cids, entry_in->cids, sizeof (guint32) * entry_out->cids_count);
+ out[i] = entry_out;
+ }
+
+ *out_size = in_size;
+ return out;
+}
+
+/*****************************************************************************/
+
+MbimEventEntry **
+_mbim_proxy_helper_service_subscribe_list_new_standard (gsize *out_size)
+{
+ MbimEventEntry **out;
+ guint i = 0;
+ MbimEventEntry *entry;
+
+ g_assert (out_size != NULL);
+
+#define STANDARD_SERVICES_LIST_SIZE 5
+ out = g_new0 (MbimEventEntry *, STANDARD_SERVICES_LIST_SIZE + 1);
+
+ /* Basic connect service */
+ {
+ static const guint32 notify_cids[] = {
+ MBIM_CID_BASIC_CONNECT_SUBSCRIBER_READY_STATUS,
+ MBIM_CID_BASIC_CONNECT_RADIO_STATE,
+ MBIM_CID_BASIC_CONNECT_PREFERRED_PROVIDERS,
+ MBIM_CID_BASIC_CONNECT_REGISTER_STATE,
+ MBIM_CID_BASIC_CONNECT_PACKET_SERVICE,
+ MBIM_CID_BASIC_CONNECT_SIGNAL_STATE,
+ MBIM_CID_BASIC_CONNECT_CONNECT,
+ MBIM_CID_BASIC_CONNECT_PROVISIONED_CONTEXTS,
+ MBIM_CID_BASIC_CONNECT_IP_CONFIGURATION,
+ MBIM_CID_BASIC_CONNECT_EMERGENCY_MODE,
+ MBIM_CID_BASIC_CONNECT_MULTICARRIER_PROVIDERS,
+ };
+
+ entry = g_new (MbimEventEntry, 1);
+ memcpy (&entry->device_service_id, mbim_uuid_from_service (MBIM_SERVICE_BASIC_CONNECT), sizeof (MbimUuid));
+ entry->cids_count = G_N_ELEMENTS (notify_cids);
+ entry->cids = g_memdup (notify_cids, sizeof (guint32) * entry->cids_count);
+ out[i++] = entry;
+ }
+
+ /* SMS service */
+ {
+ static const guint32 notify_cids[] = {
+ MBIM_CID_SMS_CONFIGURATION,
+ MBIM_CID_SMS_READ,
+ MBIM_CID_SMS_MESSAGE_STORE_STATUS,
+ };
+
+ entry = g_new (MbimEventEntry, 1);
+ memcpy (&entry->device_service_id, mbim_uuid_from_service (MBIM_SERVICE_SMS), sizeof (MbimUuid));
+ entry->cids_count = G_N_ELEMENTS (notify_cids);
+ entry->cids = g_memdup (notify_cids, sizeof (guint32) * entry->cids_count);
+ out[i++] = entry;
+ }
+
+ /* USSD service */
+ {
+ static const guint32 notify_cids[] = {
+ MBIM_CID_USSD,
+ };
+
+ entry = g_new (MbimEventEntry, 1);
+ memcpy (&entry->device_service_id, mbim_uuid_from_service (MBIM_SERVICE_USSD), sizeof (MbimUuid));
+ entry->cids_count = G_N_ELEMENTS (notify_cids);
+ entry->cids = g_memdup (notify_cids, sizeof (guint32) * entry->cids_count);
+ out[i++] = entry;
+ }
+
+ /* Phonebook service */
+ {
+ static const guint32 notify_cids[] = {
+ MBIM_CID_PHONEBOOK_CONFIGURATION,
+ };
+
+ entry = g_new (MbimEventEntry, 1);
+ memcpy (&entry->device_service_id, mbim_uuid_from_service (MBIM_SERVICE_PHONEBOOK), sizeof (MbimUuid));
+ entry->cids_count = G_N_ELEMENTS (notify_cids);
+ entry->cids = g_memdup (notify_cids, sizeof (guint32) * entry->cids_count);
+ out[i++] = entry;
+ }
+
+ /* STK service */
+ {
+ static const guint32 notify_cids[] = {
+ MBIM_CID_STK_PAC,
+ };
+
+ entry = g_new (MbimEventEntry, 1);
+ memcpy (&entry->device_service_id, mbim_uuid_from_service (MBIM_SERVICE_STK), sizeof (MbimUuid));
+ entry->cids_count = G_N_ELEMENTS (notify_cids);
+ entry->cids = g_memdup (notify_cids, sizeof (guint32) * entry->cids_count);
+ out[i++] = entry;
+ }
+
+ g_assert_cmpuint (i, ==, STANDARD_SERVICES_LIST_SIZE);
+ *out_size = i;
+ return out;
+}