diff options
author | Dan Williams <dcbw@redhat.com> | 2012-01-03 00:30:59 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2012-01-03 00:30:59 -0600 |
commit | 30bb9e878fb3e5647fc3bcf8279e1de045325ae3 (patch) | |
tree | a63f383fc2a61d1bf001265aace994e8138e417b | |
parent | 7b14063f4676a51c3a0d8b9adc89a9490d6b5814 (diff) |
cdma: fixes for libqcdm changes
-rw-r--r-- | plugins/mm-modem-novatel-cdma.c | 16 | ||||
-rw-r--r-- | src/mm-generic-cdma.c | 58 | ||||
-rw-r--r-- | src/mm-plugin-base.c | 22 | ||||
-rw-r--r-- | src/mm-qcdm-serial-port.c | 14 | ||||
-rw-r--r-- | src/tests/test-qcdm-serial-port.c | 20 |
5 files changed, 69 insertions, 61 deletions
diff --git a/plugins/mm-modem-novatel-cdma.c b/plugins/mm-modem-novatel-cdma.c index c1f4151a..77d6bee7 100644 --- a/plugins/mm-modem-novatel-cdma.c +++ b/plugins/mm-modem-novatel-cdma.c @@ -181,7 +181,7 @@ get_signal_quality (MMModemCdma *modem, /*****************************************************************************/ static void -parse_modem_snapshot (MMCallbackInfo *info, QCDMResult *result) +parse_modem_snapshot (MMCallbackInfo *info, QcdmResult *result) { MMModemCdmaRegistrationState evdo_state, cdma1x_state, new_state; guint8 eri = 0; @@ -193,7 +193,7 @@ parse_modem_snapshot (MMCallbackInfo *info, QCDMResult *result) cdma1x_state = mm_generic_cdma_query_reg_state_get_callback_1x_state (info); /* Roaming? */ - if (qcdm_result_get_uint8 (result, QCDM_CMD_NW_SUBSYS_MODEM_SNAPSHOT_CDMA_ITEM_ERI, &eri)) { + if (qcdm_result_get_u8 (result, QCDM_CMD_NW_SUBSYS_MODEM_SNAPSHOT_CDMA_ITEM_ERI, &eri)) { char *str; gboolean roaming = FALSE; @@ -216,7 +216,7 @@ reg_nwsnap_6500_cb (MMQcdmSerialPort *port, gpointer user_data) { MMCallbackInfo *info = user_data; - QCDMResult *result; + QcdmResult *result; if (!error) { result = qcdm_cmd_nw_subsys_modem_snapshot_cdma_result ((const char *) response->data, response->len, NULL); @@ -235,20 +235,18 @@ reg_nwsnap_6800_cb (MMQcdmSerialPort *port, gpointer user_data) { MMCallbackInfo *info = user_data; - QCDMResult *result; + QcdmResult *result; GByteArray *nwsnap; if (error) goto done; /* Parse the response */ - result = qcdm_cmd_nw_subsys_modem_snapshot_cdma_result ((const char *) response->data, response->len, &info->error); + result = qcdm_cmd_nw_subsys_modem_snapshot_cdma_result ((const char *) response->data, response->len, NULL); if (!result) { - g_clear_error (&info->error); - /* Try for MSM6500 */ nwsnap = g_byte_array_sized_new (25); - nwsnap->len = qcdm_cmd_nw_subsys_modem_snapshot_cdma_new ((char *) nwsnap->data, 25, QCDM_NW_CHIPSET_6500, NULL); + nwsnap->len = qcdm_cmd_nw_subsys_modem_snapshot_cdma_new ((char *) nwsnap->data, 25, QCDM_NW_CHIPSET_6500); g_assert (nwsnap->len); mm_qcdm_serial_port_queue_command (port, nwsnap, 3, reg_nwsnap_6500_cb, info); return; @@ -282,7 +280,7 @@ query_registration_state (MMGenericCdma *cdma, /* Try MSM6800 first since newer cards use that */ nwsnap = g_byte_array_sized_new (25); - nwsnap->len = qcdm_cmd_nw_subsys_modem_snapshot_cdma_new ((char *) nwsnap->data, 25, QCDM_NW_CHIPSET_6800, NULL); + nwsnap->len = qcdm_cmd_nw_subsys_modem_snapshot_cdma_new ((char *) nwsnap->data, 25, QCDM_NW_CHIPSET_6800); g_assert (nwsnap->len); mm_qcdm_serial_port_queue_command (port, nwsnap, 3, reg_nwsnap_6800_cb, info); } diff --git a/src/mm-generic-cdma.c b/src/mm-generic-cdma.c index 58ced39b..b2675ab0 100644 --- a/src/mm-generic-cdma.c +++ b/src/mm-generic-cdma.c @@ -30,6 +30,7 @@ #include "mm-serial-parsers.h" #include "mm-modem-helpers.h" #include "libqcdm/src/commands.h" +#include "libqcdm/src/errors.h" #include "mm-log.h" #define MM_GENERIC_CDMA_PREV_STATE_TAG "prev-state" @@ -1047,9 +1048,10 @@ qcdm_pilot_sets_cb (MMQcdmSerialPort *port, { MMCallbackInfo *info = user_data; MMGenericCdmaPrivate *priv; - QCDMResult *result; + QcdmResult *result; guint32 num = 0, quality = 0, i; float best_db = -28; + int err = QCDM_SUCCESS; if (error) { info->error = g_error_copy (error); @@ -1059,9 +1061,12 @@ qcdm_pilot_sets_cb (MMQcdmSerialPort *port, priv = MM_GENERIC_CDMA_GET_PRIVATE (info->modem); /* Parse the response */ - result = qcdm_cmd_pilot_sets_result ((const char *) response->data, response->len, &info->error); - if (!result) + result = qcdm_cmd_pilot_sets_result ((const char *) response->data, response->len, &err); + if (!result) { + g_set_error (&info->error, MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL, + "Failed to parse pilot sets command result: %d", err); goto done; + } qcdm_cmd_pilot_sets_result_get_num (result, QCDM_CMD_PILOT_SETS_TYPE_ACTIVE, &num); for (i = 0; i < num; i++) { @@ -1128,7 +1133,7 @@ get_signal_quality (MMModemCdma *modem, /* Use CDMA1x pilot EC/IO if we can */ pilot_sets = g_byte_array_sized_new (25); - pilot_sets->len = qcdm_cmd_pilot_sets_new ((char *) pilot_sets->data, 25, NULL); + pilot_sets->len = qcdm_cmd_pilot_sets_new ((char *) pilot_sets->data, 25); g_assert (pilot_sets->len); mm_qcdm_serial_port_queue_command (priv->qcdm, pilot_sets, 3, qcdm_pilot_sets_cb, info); } @@ -1400,19 +1405,23 @@ cdma_status_cb (MMQcdmSerialPort *port, gpointer user_data) { MMCallbackInfo *info = user_data; - QCDMResult *result; + QcdmResult *result; guint32 sid, rxstate; + int err = QCDM_SUCCESS; if (error) goto error; /* Parse the response */ - result = qcdm_cmd_cdma_status_result ((const char *) response->data, response->len, &info->error); - if (!result) + result = qcdm_cmd_cdma_status_result ((const char *) response->data, response->len, &err); + if (!result) { + g_set_error (&info->error, MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL, + "Failed to parse cdma status command result: %d", err); goto error; + } - qcdm_result_get_uint32 (result, QCDM_CMD_CDMA_STATUS_ITEM_RX_STATE, &rxstate); - qcdm_result_get_uint32 (result, QCDM_CMD_CDMA_STATUS_ITEM_SID, &sid); + qcdm_result_get_u32 (result, QCDM_CMD_CDMA_STATUS_ITEM_RX_STATE, &rxstate); + qcdm_result_get_u32 (result, QCDM_CMD_CDMA_STATUS_ITEM_SID, &sid); qcdm_result_unref (result); if (rxstate == QCDM_CMD_CDMA_STATUS_RX_STATE_ENTERING_CDMA) @@ -1449,7 +1458,7 @@ get_serving_system (MMModemCdma *modem, GByteArray *cdma_status; cdma_status = g_byte_array_sized_new (25); - cdma_status->len = qcdm_cmd_cdma_status_new ((char *) cdma_status->data, 25, NULL); + cdma_status->len = qcdm_cmd_cdma_status_new ((char *) cdma_status->data, 25); g_assert (cdma_status->len); mm_qcdm_serial_port_queue_command (priv->qcdm, cdma_status, 3, cdma_status_cb, info); } else @@ -1827,7 +1836,7 @@ reg_hdrstate_cb (MMQcdmSerialPort *port, gpointer user_data) { MMCallbackInfo *info = user_data; - QCDMResult *result = NULL; + QcdmResult *result = NULL; guint32 sysmode; MMModemCdmaRegistrationState cdma_state = MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN; MMModemCdmaRegistrationState evdo_state = MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN; @@ -1848,9 +1857,9 @@ reg_hdrstate_cb (MMQcdmSerialPort *port, guint8 almp_state = QCDM_CMD_HDR_SUBSYS_STATE_INFO_ALMP_STATE_INACTIVE; guint8 hybrid_mode = 0; - if ( qcdm_result_get_uint8 (result, QCDM_CMD_HDR_SUBSYS_STATE_INFO_ITEM_SESSION_STATE, &session_state) - && qcdm_result_get_uint8 (result, QCDM_CMD_HDR_SUBSYS_STATE_INFO_ITEM_ALMP_STATE, &almp_state) - && qcdm_result_get_uint8 (result, QCDM_CMD_HDR_SUBSYS_STATE_INFO_ITEM_HDR_HYBRID_MODE, &hybrid_mode)) { + if ( qcdm_result_get_u8 (result, QCDM_CMD_HDR_SUBSYS_STATE_INFO_ITEM_SESSION_STATE, &session_state) + && qcdm_result_get_u8 (result, QCDM_CMD_HDR_SUBSYS_STATE_INFO_ITEM_ALMP_STATE, &almp_state) + && qcdm_result_get_u8 (result, QCDM_CMD_HDR_SUBSYS_STATE_INFO_ITEM_HDR_HYBRID_MODE, &hybrid_mode)) { /* EVDO state is registered if the HDR subsystem is registered, and * we're in hybrid mode, and the Call Manager system mode is @@ -1919,31 +1928,32 @@ reg_cmstate_cb (MMQcdmSerialPort *port, { MMCallbackInfo *info = user_data; MMAtSerialPort *at_port = NULL; - QCDMResult *result = NULL; + QcdmResult *result = NULL; guint32 opmode = 0, sysmode = 0; - GError *qcdm_error = NULL; + int err = QCDM_SUCCESS; /* Parse the response */ if (!error) - result = qcdm_cmd_cm_subsys_state_info_result ((const char *) response->data, response->len, &qcdm_error); + result = qcdm_cmd_cm_subsys_state_info_result ((const char *) response->data, response->len, &err); if (!result) { /* If there was some error, fall back to use +CAD like we did before QCDM */ if (info->modem) at_port = mm_generic_cdma_get_best_at_port (MM_GENERIC_CDMA (info->modem), &info->error); - else - info->error = g_error_copy (qcdm_error); + else { + g_set_error (&info->error, MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL, + "Failed to parse CM subsys state info command result: %d", err); + } if (at_port) mm_at_serial_port_queue_command (at_port, "+CAD?", 3, get_analog_digital_done, info); else mm_callback_info_schedule (info); - g_clear_error (&qcdm_error); return; } - qcdm_result_get_uint32 (result, QCDM_CMD_CM_SUBSYS_STATE_INFO_ITEM_OPERATING_MODE, &opmode); - qcdm_result_get_uint32 (result, QCDM_CMD_CM_SUBSYS_STATE_INFO_ITEM_SYSTEM_MODE, &sysmode); + qcdm_result_get_u32 (result, QCDM_CMD_CM_SUBSYS_STATE_INFO_ITEM_OPERATING_MODE, &opmode); + qcdm_result_get_u32 (result, QCDM_CMD_CM_SUBSYS_STATE_INFO_ITEM_SYSTEM_MODE, &sysmode); qcdm_result_unref (result); if (opmode == QCDM_CMD_CM_SUBSYS_STATE_INFO_OPERATING_MODE_ONLINE) { @@ -1953,7 +1963,7 @@ reg_cmstate_cb (MMQcdmSerialPort *port, /* Get HDR subsystem state */ hdrstate = g_byte_array_sized_new (25); - hdrstate->len = qcdm_cmd_hdr_subsys_state_info_new ((char *) hdrstate->data, 25, NULL); + hdrstate->len = qcdm_cmd_hdr_subsys_state_info_new ((char *) hdrstate->data, 25); g_assert (hdrstate->len); mm_qcdm_serial_port_queue_command (port, hdrstate, 3, reg_hdrstate_cb, info); } else { @@ -1998,7 +2008,7 @@ get_registration_state (MMModemCdma *modem, GByteArray *cmstate; cmstate = g_byte_array_sized_new (25); - cmstate->len = qcdm_cmd_cm_subsys_state_info_new ((char *) cmstate->data, 25, NULL); + cmstate->len = qcdm_cmd_cm_subsys_state_info_new ((char *) cmstate->data, 25); g_assert (cmstate->len); mm_qcdm_serial_port_queue_command (priv->qcdm, cmstate, 3, reg_cmstate_cb, info); } else diff --git a/src/mm-plugin-base.c b/src/mm-plugin-base.c index e4ebed6f..e9591236 100644 --- a/src/mm-plugin-base.c +++ b/src/mm-plugin-base.c @@ -36,6 +36,7 @@ #include "mm-utils.h" #include "libqcdm/src/commands.h" #include "libqcdm/src/utils.h" +#include "libqcdm/src/errors.h" #include "mm-log.h" static void plugin_init (MMPlugin *plugin_class); @@ -629,8 +630,8 @@ qcdm_verinfo_cb (MMQcdmSerialPort *port, { MMPluginBaseSupportsTask *task; MMPluginBaseSupportsTaskPrivate *priv; - QCDMResult *result; - GError *dm_error = NULL; + QcdmResult *result; + int err = QCDM_SUCCESS; /* Just the initial poke; ignore it */ if (!user_data) @@ -645,13 +646,10 @@ qcdm_verinfo_cb (MMQcdmSerialPort *port, } /* Parse the response */ - result = qcdm_cmd_version_info_result ((const char *) response->data, response->len, &dm_error); + result = qcdm_cmd_version_info_result ((const char *) response->data, response->len, &err); if (!result) { - g_warning ("(%s) failed to parse QCDM version info command result: (%d) %s.", - g_udev_device_get_name (priv->port), - dm_error ? dm_error->code : -1, - dm_error && dm_error->message ? dm_error->message : "(unknown)"); - g_clear_error (&dm_error); + g_warning ("(%s) failed to parse QCDM version info command result: %d", + g_udev_device_get_name (priv->port), err); goto done; } @@ -700,14 +698,10 @@ try_qcdm_probe (MMPluginBaseSupportsTask *task) /* Build up the probe command */ verinfo = g_byte_array_sized_new (50); - len = qcdm_cmd_version_info_new ((char *) verinfo->data, 50, &error); + len = qcdm_cmd_version_info_new ((char *) verinfo->data, 50); if (len <= 0) { g_byte_array_free (verinfo, TRUE); - g_warning ("(%s) failed to create QCDM version info command: (%d) %s.", - name, - error ? error->code : -1, - error && error->message ? error->message : "(unknown)"); - g_clear_error (&error); + g_warning ("(%s) failed to create QCDM version info command", name); probe_complete (task); return; } diff --git a/src/mm-qcdm-serial-port.c b/src/mm-qcdm-serial-port.c index e467f2a2..0d763bf5 100644 --- a/src/mm-qcdm-serial-port.c +++ b/src/mm-qcdm-serial-port.c @@ -23,6 +23,7 @@ #include "mm-errors.h" #include "libqcdm/src/com.h" #include "libqcdm/src/utils.h" +#include "libqcdm/src/errors.h" #include "mm-log.h" G_DEFINE_TYPE (MMQcdmSerialPort, mm_qcdm_serial_port, MM_TYPE_SERIAL_PORT) @@ -81,7 +82,8 @@ handle_response (MMSerialPort *port, GError *dm_error = NULL; gsize used = 0; gsize start = 0; - gboolean success = FALSE, more = FALSE; + gboolean success = FALSE; + qcdmbool more = FALSE; gsize unescaped_len = 0; if (error) @@ -200,7 +202,15 @@ debug_log (MMSerialPort *port, const char *prefix, const char *buf, gsize len) static gboolean config_fd (MMSerialPort *port, int fd, GError **error) { - return qcdm_port_setup (fd, error); + int err; + + err = qcdm_port_setup (fd); + if (err != QCDM_SUCCESS) { + g_set_error (error, MM_SERIAL_ERROR, MM_SERIAL_ERROR_OPEN_FAILED, + "Failed to open QCDM port: %d", err); + return FALSE; + } + return TRUE; } /*****************************************************************************/ diff --git a/src/tests/test-qcdm-serial-port.c b/src/tests/test-qcdm-serial-port.c index 3aeed6ab..c31011b3 100644 --- a/src/tests/test-qcdm-serial-port.c +++ b/src/tests/test-qcdm-serial-port.c @@ -31,6 +31,7 @@ #include "libqcdm/src/commands.h" #include "libqcdm/src/utils.h" #include "libqcdm/src/com.h" +#include "libqcdm/src/errors.h" #include "mm-log.h" typedef struct { @@ -135,8 +136,9 @@ server_wait_request (int fd, char *buf, gsize len) retries++; continue; } else if (bytes_read == 1) { - gboolean more = FALSE, success; + gboolean success; gsize used = 0; + qcdmbool more = FALSE; total++; decap_len = 0; @@ -187,17 +189,14 @@ qcdm_verinfo_expect_success_cb (MMQcdmSerialPort *port, static void qcdm_request_verinfo (MMQcdmSerialPort *port, VerInfoCb cb, GMainLoop *loop) { - GError *error = NULL; GByteArray *verinfo; gint len; /* Build up the probe command */ verinfo = g_byte_array_sized_new (50); - len = qcdm_cmd_version_info_new ((char *) verinfo->data, 50, &error); - if (len <= 0) { + len = qcdm_cmd_version_info_new ((char *) verinfo->data, 50); + if (len <= 0) g_byte_array_free (verinfo, TRUE); - g_assert_no_error (error); - } verinfo->len = len; mm_qcdm_serial_port_queue_command (port, verinfo, 3, cb, loop); @@ -400,9 +399,7 @@ test_pty_create (gpointer user_data) { TestData *d = user_data; struct termios stbuf; - int ret; - GError *error = NULL; - gboolean success; + int ret, err; ret = openpty (&d->master, &d->slave, NULL, NULL, NULL); g_assert (ret == 0); @@ -417,9 +414,8 @@ test_pty_create (gpointer user_data) fcntl (d->slave, F_SETFL, O_NONBLOCK); fcntl (d->master, F_SETFL, O_NONBLOCK); - success = qcdm_port_setup (d->master, &error); - g_assert_no_error (error); - g_assert (success); + err = qcdm_port_setup (d->master); + g_assert_cmpint (err, ==, QCDM_SUCCESS); } static void |