summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAki Niemi <aki.niemi@nokia.com>2010-01-12 13:18:03 +0200
committerAki Niemi <aki.niemi@nokia.com>2010-01-14 10:33:48 +0200
commit65ce05d37ab5f32c5598167b3b56dc28228e1e73 (patch)
treef08939700d0bdd669eb3c62bfabaa62e9a9ba47d
parent5a1a5905d42a1cbe0367c6092a896f6cea202683 (diff)
downloadofono-65ce05d37ab5f32c5598167b3b56dc28228e1e73.tar.bz2
Refactor supplementary service drivers
-rw-r--r--drivers/isimodem/call-barring.c32
-rw-r--r--drivers/isimodem/call-forwarding.c41
-rw-r--r--drivers/isimodem/call-settings.c31
3 files changed, 65 insertions, 39 deletions
diff --git a/drivers/isimodem/call-barring.c b/drivers/isimodem/call-barring.c
index fbbed8bc..6487ae8b 100644
--- a/drivers/isimodem/call-barring.c
+++ b/drivers/isimodem/call-barring.c
@@ -42,6 +42,7 @@
#include "isimodem.h"
#include "isiutil.h"
#include "ss.h"
+#include "debug.h"
struct barr_data {
GIsiClient *client;
@@ -60,7 +61,7 @@ static bool set_resp_cb(GIsiClient *client, const void *restrict data,
}
if (len < 3 || msg[0] != SS_SERVICE_COMPLETED_RESP)
- goto error;
+ return false;
if (msg[1] != SS_ACTIVATION && msg[1] != SS_DEACTIVATION)
goto error;
@@ -203,7 +204,7 @@ static bool query_resp_cb(GIsiClient *client, const void *restrict data,
}
if (len < 7 || msg[0] != SS_SERVICE_COMPLETED_RESP)
- goto error;
+ return false;
if (msg[1] != SS_INTERROGATION)
goto error;
@@ -241,8 +242,8 @@ static bool query_resp_cb(GIsiClient *client, const void *restrict data,
break;
default:
- DBG("Skipping sub-block: 0x%04X (%zu bytes)",
- g_isi_sb_iter_get_id(&iter),
+ DBG("Skipping sub-block: %s (%zd bytes)",
+ ss_subblock_name(g_isi_sb_iter_get_id(&iter)),
g_isi_sb_iter_get_len(&iter));
break;
}
@@ -320,7 +321,7 @@ static bool set_passwd_resp_cb(GIsiClient *client, const void *restrict data,
}
if (len < 3 || msg[0] != SS_SERVICE_COMPLETED_RESP)
- goto error;
+ return false;
if (msg[1] != SS_GSM_PASSWORD_REGISTRATION)
goto error;
@@ -413,16 +414,23 @@ static void reachable_cb(GIsiClient *client, bool alive, uint16_t object,
void *opaque)
{
struct ofono_call_barring *barr = opaque;
+ const char *debug = NULL;
- if (alive == true) {
- DBG("Resource 0x%02X, with version %03d.%03d reachable",
- g_isi_client_resource(client),
- g_isi_version_major(client),
- g_isi_version_minor(client));
- g_idle_add(isi_call_barring_register, barr);
+ if (!alive) {
+ DBG("Unable to bootsrap call barring driver");
return;
}
- DBG("Unable to bootsrap call barring driver");
+
+ DBG("%s (v%03d.%03d) reachable",
+ pn_resource_name(g_isi_client_resource(client)),
+ g_isi_version_major(client),
+ g_isi_version_minor(client));
+
+ debug = getenv("OFONO_ISI_DEBUG");
+ if (debug && (strcmp(debug, "all") == 0 || strcmp(debug, "ss") == 0))
+ g_isi_client_set_debug(client, ss_debug, NULL);
+
+ g_idle_add(isi_call_barring_register, barr);
}
diff --git a/drivers/isimodem/call-forwarding.c b/drivers/isimodem/call-forwarding.c
index cdebc1d0..06248300 100644
--- a/drivers/isimodem/call-forwarding.c
+++ b/drivers/isimodem/call-forwarding.c
@@ -41,6 +41,7 @@
#include "isimodem.h"
#include "isiutil.h"
#include "ss.h"
+#include "debug.h"
struct forw_data {
GIsiClient *client;
@@ -118,8 +119,8 @@ static bool decode_gsm_forwarding_info(const void *restrict data, size_t len,
return true;
}
default:
- DBG("Skipping sub-sub-block: 0x%04X (%zu bytes)",
- g_isi_sb_iter_get_id(&iter),
+ DBG("Skipping sub-block: %s (%zd bytes)",
+ ss_subblock_name(g_isi_sb_iter_get_id(&iter)),
g_isi_sb_iter_get_len(&iter));
break;
}
@@ -141,7 +142,7 @@ static bool registration_resp_cb(GIsiClient *client, const void *restrict data,
}
if (len < 7 || msg[0] != SS_SERVICE_COMPLETED_RESP)
- goto error;
+ return false;
if (msg[1] != SS_REGISTRATION)
goto error;
@@ -177,8 +178,8 @@ static bool registration_resp_cb(GIsiClient *client, const void *restrict data,
break;
}
default:
- DBG("Skipping sub-block: 0x%04X (%zu bytes)",
- g_isi_sb_iter_get_id(&iter),
+ DBG("Skipping sub-block: %s (%zd bytes)",
+ ss_subblock_name(g_isi_sb_iter_get_id(&iter)),
g_isi_sb_iter_get_len(&iter));
break;
}
@@ -308,8 +309,8 @@ static bool erasure_resp_cb(GIsiClient *client, const void *restrict data,
break;
}
default:
- DBG("Skipping sub-block: 0x%04X (%zu bytes)",
- g_isi_sb_iter_get_id(&iter),
+ DBG("Skipping sub-block: %s (%zd bytes)",
+ ss_subblock_name(g_isi_sb_iter_get_id(&iter)),
g_isi_sb_iter_get_len(&iter));
break;
}
@@ -433,8 +434,8 @@ static bool query_resp_cb(GIsiClient *client, const void *restrict data,
break;
}
default:
- DBG("Skipping sub-block: 0x%04X (%zu bytes)",
- g_isi_sb_iter_get_id(&iter),
+ DBG("Skipping sub-block: %s (%zd bytes)",
+ ss_subblock_name(g_isi_sb_iter_get_id(&iter)),
g_isi_sb_iter_get_len(&iter));
break;
}
@@ -508,16 +509,23 @@ static void reachable_cb(GIsiClient *client, bool alive, uint16_t object,
void *opaque)
{
struct ofono_call_forwarding *cf = opaque;
+ const char *debug = NULL;
- if (alive == true) {
- DBG("Resource 0x%02X, with version %03d.%03d reachable",
- g_isi_client_resource(client),
- g_isi_version_major(client),
- g_isi_version_minor(client));
- g_idle_add(isi_call_forwarding_register, cf);
+ if (!alive) {
+ DBG("Unable to bootsrap call forwarding driver");
return;
}
- DBG("Unable to bootsrap call forwarding driver");
+
+ DBG("%s (v%03d.%03d) reachable",
+ pn_resource_name(g_isi_client_resource(client)),
+ g_isi_version_major(client),
+ g_isi_version_minor(client));
+
+ debug = getenv("OFONO_ISI_DEBUG");
+ if (debug && (strcmp(debug, "all") == 0 || strcmp(debug, "ss") == 0))
+ g_isi_client_set_debug(client, ss_debug, NULL);
+
+ g_idle_add(isi_call_forwarding_register, cf);
}
@@ -537,6 +545,7 @@ static int isi_call_forwarding_probe(struct ofono_call_forwarding *cf,
return -ENOMEM;
ofono_call_forwarding_set_data(cf, data);
+
if (!g_isi_verify(data->client, reachable_cb, cf))
DBG("Unable to verify reachability");
diff --git a/drivers/isimodem/call-settings.c b/drivers/isimodem/call-settings.c
index 85b7573f..e76c4069 100644
--- a/drivers/isimodem/call-settings.c
+++ b/drivers/isimodem/call-settings.c
@@ -41,6 +41,7 @@
#include "isimodem.h"
#include "isiutil.h"
#include "ss.h"
+#include "debug.h"
struct settings_data {
GIsiClient *client;
@@ -137,8 +138,8 @@ static bool query_resp_cb(GIsiClient *client, const void *restrict data,
break;
}
default:
- DBG("Skipping sub-block: 0x%04X (%zu bytes)",
- g_isi_sb_iter_get_id(&iter),
+ DBG("Skipping sub-block: %s (%zd bytes)",
+ ss_subblock_name(g_isi_sb_iter_get_id(&iter)),
g_isi_sb_iter_get_len(&iter));
break;
}
@@ -228,8 +229,8 @@ static bool set_resp_cb(GIsiClient *client, const void *restrict data,
break;
}
default:
- DBG("Skipping sub-block: 0x%04X (%zu bytes)",
- g_isi_sb_iter_get_id(&iter),
+ DBG("Skipping sub-block: %s (%zd bytes)",
+ ss_subblock_name(g_isi_sb_iter_get_id(&iter)),
g_isi_sb_iter_get_len(&iter));
break;
}
@@ -290,16 +291,23 @@ static void reachable_cb(GIsiClient *client, bool alive, uint16_t object,
void *opaque)
{
struct ofono_call_settings *cs = opaque;
+ const char *debug = NULL;
- if (alive == true) {
- DBG("Resource 0x%02X, with version %03d.%03d reachable",
- g_isi_client_resource(client),
- g_isi_version_major(client),
- g_isi_version_minor(client));
- g_idle_add(isi_call_settings_register, cs);
+ if (!alive) {
+ DBG("Unable to bootsrap call settings driver");
return;
}
- DBG("Unable to bootsrap call settings driver");
+
+ DBG("%s (v%03d.%03d) reachable",
+ pn_resource_name(g_isi_client_resource(client)),
+ g_isi_version_major(client),
+ g_isi_version_minor(client));
+
+ debug = getenv("OFONO_ISI_DEBUG");
+ if (debug && (strcmp(debug, "all") == 0 || strcmp(debug, "ss") == 0))
+ g_isi_client_set_debug(client, ss_debug, NULL);
+
+ g_idle_add(isi_call_settings_register, cs);
}
@@ -320,6 +328,7 @@ static int isi_call_settings_probe(struct ofono_call_settings *cs, unsigned int
return -ENOMEM;
ofono_call_settings_set_data(cs, data);
+
if (!g_isi_verify(data->client, reachable_cb, cs))
DBG("Unable to verify reachability");