aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2012-01-03 00:30:59 -0600
committerDan Williams <dcbw@redhat.com>2012-01-03 00:30:59 -0600
commit30bb9e878fb3e5647fc3bcf8279e1de045325ae3 (patch)
treea63f383fc2a61d1bf001265aace994e8138e417b
parent7b14063f4676a51c3a0d8b9adc89a9490d6b5814 (diff)
cdma: fixes for libqcdm changes
-rw-r--r--plugins/mm-modem-novatel-cdma.c16
-rw-r--r--src/mm-generic-cdma.c58
-rw-r--r--src/mm-plugin-base.c22
-rw-r--r--src/mm-qcdm-serial-port.c14
-rw-r--r--src/tests/test-qcdm-serial-port.c20
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