Send commitlog mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
[EMAIL PROTECTED]
You can reach the person managing the list at
[EMAIL PROTECTED]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:
1. r2727 - trunk/src/target/gsm/src/gsmd ([EMAIL PROTECTED])
2. r2728 - in trunk/src/target/gsm: include/gsmd src/gsmd
([EMAIL PROTECTED])
3. r2729 - trunk/src/target/gsm/src/gsmd ([EMAIL PROTECTED])
4. r2730 - trunk/src/target/gsm/src/gsmd ([EMAIL PROTECTED])
5. r2731 - trunk/src/target/gsm/src/gsmd ([EMAIL PROTECTED])
6. r2732 - in trunk/src/target/gsm: include/gsmd src/gsmd
([EMAIL PROTECTED])
7. r2733 - in trunk/src/target/gsm: include/gsmd include/libgsmd
src/gsmd src/libgsmd src/util ([EMAIL PROTECTED])
--- Begin Message ---
Author: laforge
Date: 2007-08-17 10:33:56 +0200 (Fri, 17 Aug 2007)
New Revision: 2727
Modified:
trunk/src/target/gsm/src/gsmd/Makefile.am
trunk/src/target/gsm/src/gsmd/gsmd.c
Log:
Implement GSMD version printout (Matt Mets <[EMAIL PROTECTED]>)
Modified: trunk/src/target/gsm/src/gsmd/Makefile.am
===================================================================
--- trunk/src/target/gsm/src/gsmd/Makefile.am 2007-08-17 08:32:50 UTC (rev
2726)
+++ trunk/src/target/gsm/src/gsmd/Makefile.am 2007-08-17 08:33:56 UTC (rev
2727)
@@ -2,6 +2,12 @@
AM_CFLAGS = -std=gnu99
plugindir = $(libdir)/gsmd
+gsmd-version.h:
+ echo -e '#ifndef GSMD_VERSION' \
+ '\n#define GSMD_VERSION "'`svnversion`'"' \
+ '\n#endif' > gsmd-version.h
+
+BUILT_SOURCES = gsmd-version.h
sbin_PROGRAMS = gsmd
gsmd_CFLAGS = -D PLUGINDIR=\"$(plugindir)\"
Modified: trunk/src/target/gsm/src/gsmd/gsmd.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/gsmd.c 2007-08-17 08:32:50 UTC (rev
2726)
+++ trunk/src/target/gsm/src/gsmd/gsmd.c 2007-08-17 08:33:56 UTC (rev
2727)
@@ -36,6 +36,7 @@
#include <sys/stat.h>
#include "gsmd.h"
+#include "gsmd-version.h"
#include <gsmd/gsmd.h>
#include <gsmd/atcmd.h>
@@ -325,6 +326,11 @@
"This program is FREE SOFTWARE under the terms of GNU GPL\n\n");
}
+static void print_version(void)
+{
+ printf("gsmd, version %s\n",GSMD_VERSION);
+}
+
static void print_usage(void)
{
printf("Usage:\n"
@@ -382,7 +388,8 @@
while ((argch = getopt_long(argc, argv, "FVLdhp:s:l:v:m:", opts, NULL))
!= -1) {
switch (argch) {
case 'V':
- /* FIXME */
+ print_version();
+ exit(0);
break;
case 'L':
talloc_enable_leak_report_full();
--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-08-17 10:34:29 +0200 (Fri, 17 Aug 2007)
New Revision: 2728
Modified:
trunk/src/target/gsm/include/gsmd/vendorplugin.h
trunk/src/target/gsm/src/gsmd/atcmd.c
trunk/src/target/gsm/src/gsmd/vendor_qc.c
trunk/src/target/gsm/src/gsmd/vendor_ti.c
trunk/src/target/gsm/src/gsmd/vendor_tihtc.c
Log:
Use vendor specific ext_chars.
Modified: trunk/src/target/gsm/include/gsmd/vendorplugin.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/vendorplugin.h 2007-08-17 08:33:56 UTC
(rev 2727)
+++ trunk/src/target/gsm/include/gsmd/vendorplugin.h 2007-08-17 08:34:29 UTC
(rev 2728)
@@ -12,6 +12,7 @@
struct gsmd_vendor_plugin {
struct llist_head list;
unsigned char *name;
+ unsigned char *ext_chars;
unsigned int num_unsolicit;
const struct gsmd_unsolicit *unsolicit;
int (*detect)(struct gsmd *g);
Modified: trunk/src/target/gsm/src/gsmd/atcmd.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/atcmd.c 2007-08-17 08:33:56 UTC (rev
2727)
+++ trunk/src/target/gsm/src/gsmd/atcmd.c 2007-08-17 08:34:29 UTC (rev
2728)
@@ -237,7 +237,7 @@
* TBD
*/
- if (buf[0] == '+' || buf[0] == '%') {
+ if (buf[0] == '+' || strchr(g->vendorpl->ext_chars, buf[0])) {
/* an extended response */
const char *colon = strchr(buf, ':');
if (!colon) {
@@ -293,7 +293,7 @@
}
if (cmd) {
- if (cmd->buf[2] != '+' && cmd->buf[2] != '%') {
+ if (cmd->buf[2] != '+' &&
strchr(g->vendorpl->ext_chars, cmd->buf[2]) == NULL) {
gsmd_log(GSMD_ERROR, "extd reply to non-extd
command?\n");
return -EINVAL;
}
Modified: trunk/src/target/gsm/src/gsmd/vendor_qc.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/vendor_qc.c 2007-08-17 08:33:56 UTC (rev
2727)
+++ trunk/src/target/gsm/src/gsmd/vendor_qc.c 2007-08-17 08:34:29 UTC (rev
2728)
@@ -100,6 +100,7 @@
struct gsmd_vendor_plugin gsmd_vendor_plugin = {
.name = "Qualcomm msm6250",
+ .ext_chars = "@",
.num_unsolicit = ARRAY_SIZE(qc_unsolicit),
.unsolicit = qc_unsolicit,
.detect = &qc_detect,
Modified: trunk/src/target/gsm/src/gsmd/vendor_ti.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/vendor_ti.c 2007-08-17 08:33:56 UTC (rev
2727)
+++ trunk/src/target/gsm/src/gsmd/vendor_ti.c 2007-08-17 08:34:29 UTC (rev
2728)
@@ -303,6 +303,7 @@
struct gsmd_vendor_plugin gsmd_vendor_plugin = {
.name = "TI Calypso",
+ .ext_chars = "%@",
.num_unsolicit = ARRAY_SIZE(ticalypso_unsolicit),
.unsolicit = ticalypso_unsolicit,
.detect = &ticalypso_detect,
Modified: trunk/src/target/gsm/src/gsmd/vendor_tihtc.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/vendor_tihtc.c 2007-08-17 08:33:56 UTC
(rev 2727)
+++ trunk/src/target/gsm/src/gsmd/vendor_tihtc.c 2007-08-17 08:34:29 UTC
(rev 2728)
@@ -298,6 +298,7 @@
struct gsmd_vendor_plugin gsmd_vendor_plugin = {
.name = "TI Calypso / HTC firmware",
+ .ext_chars = "%",
.num_unsolicit = ARRAY_SIZE(tihtc_unsolicit),
.unsolicit = tihtc_unsolicit,
.detect = &tihtc_detect,
--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-08-17 10:34:52 +0200 (Fri, 17 Aug 2007)
New Revision: 2729
Modified:
trunk/src/target/gsm/src/gsmd/gsmd.c
Log:
Wait for the AT Interpreter Ready message.
Modified: trunk/src/target/gsm/src/gsmd/gsmd.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/gsmd.c 2007-08-17 08:34:29 UTC (rev
2728)
+++ trunk/src/target/gsm/src/gsmd/gsmd.c 2007-08-17 08:34:52 UTC (rev
2729)
@@ -317,6 +317,7 @@
{ "leak-report", 0, NULL, 'L' },
{ "vendor", 1, NULL, 'v' },
{ "machine", 1, NULL, 'm' },
+ { "wait", 1, NULL, 'w' },
{ 0, 0, 0, 0 }
};
@@ -344,6 +345,7 @@
"\t-l file\t--logfile file\tSpecify a logfile to log to\n"
"\t-v\t--vendor v\tSpecify GSM modem vendor plugin\n"
"\t-m\t--machine m\tSpecify GSM modem machine plugin\n"
+ "\t-w\t--wait m\tWait for the AT Interpreter Ready message\n"
);
}
@@ -373,6 +375,7 @@
char *logfile = "syslog";
char *vendor_name = NULL;
char *machine_name = NULL;
+ int wait = -1;
signal(SIGTERM, sig_handler);
signal(SIGINT, sig_handler);
@@ -385,7 +388,7 @@
print_header();
/*FIXME: parse commandline, set daemonize, device, ... */
- while ((argch = getopt_long(argc, argv, "FVLdhp:s:l:v:m:", opts, NULL))
!= -1) {
+ while ((argch = getopt_long(argc, argv, "FVLdhp:s:l:v:m:w:", opts,
NULL)) != -1) {
switch (argch) {
case 'V':
print_version();
@@ -423,6 +426,9 @@
case 'm':
machine_name = optarg;
break;
+ case 'w':
+ wait = atoi(optarg);
+ break;
}
}
@@ -467,6 +473,9 @@
exit(1);
}
+ if (wait >= 0)
+ g.interpreter_ready = !wait;
+
if (atcmd_init(&g, fd) < 0) {
fprintf(stderr, "can't initialize UART device\n");
exit(1);
--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-08-17 10:35:10 +0200 (Fri, 17 Aug 2007)
New Revision: 2730
Modified:
trunk/src/target/gsm/src/gsmd/vendor_tihtc.c
Log:
HTC TI modem sequence fixlet.
Modified: trunk/src/target/gsm/src/gsmd/vendor_tihtc.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/vendor_tihtc.c 2007-08-17 08:34:52 UTC
(rev 2729)
+++ trunk/src/target/gsm/src/gsmd/vendor_tihtc.c 2007-08-17 08:35:10 UTC
(rev 2730)
@@ -90,6 +90,8 @@
struct gsmd_evt_auxdata *aux;
struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT,
GSMD_EVT_SIGNAL,
sizeof(*aux));
+ static int rssi_table[] = { 0,5,10,15,20,25,99 };
+ unsigned int i;
DEBUGP("entering htccsq_parse param=`%s'\n", param);
if (!ucmd)
@@ -98,9 +100,10 @@
aux = (struct gsmd_evt_auxdata *) ucmd->buf;
- /* FIXME: contains values 1-5, should be mapped to 0-31 somehow? */
- /* 2 --> 11 */
- aux->u.signal.sigq.rssi = atoi(buf);
+ i = atoi(buf);
+ if (i > 6)
+ i = 6;
+ aux->u.signal.sigq.rssi = rssi_table[atoi(buf)];
aux->u.signal.sigq.ber = 99;
DEBUGP("sending EVT_SIGNAL\n");
--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-08-17 10:35:29 +0200 (Fri, 17 Aug 2007)
New Revision: 2731
Modified:
trunk/src/target/gsm/src/gsmd/vendor_qc.c
Log:
Ignore [WCDMA] messages in HTC Universal.
Modified: trunk/src/target/gsm/src/gsmd/vendor_qc.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/vendor_qc.c 2007-08-17 08:35:10 UTC (rev
2730)
+++ trunk/src/target/gsm/src/gsmd/vendor_qc.c 2007-08-17 08:35:29 UTC (rev
2731)
@@ -69,8 +69,15 @@
return -EIO;
}
+static int wcdma_parse(char *buf, int len, const char *param,
+ struct gsmd *gsmd)
+{
+ return 0;
+}
+
static const struct gsmd_unsolicit qc_unsolicit[] = {
{ "@HTCCSQ", &htccsq_parse }, /* Signal Quality */
+ { "[WCDMA]", &wcdma_parse }, /* ignore [WCDMA] messages */
/* FIXME: parse the below and generate the respective events */
@@ -100,7 +107,7 @@
struct gsmd_vendor_plugin gsmd_vendor_plugin = {
.name = "Qualcomm msm6250",
- .ext_chars = "@",
+ .ext_chars = "@[",
.num_unsolicit = ARRAY_SIZE(qc_unsolicit),
.unsolicit = qc_unsolicit,
.detect = &qc_detect,
--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-08-17 10:36:11 +0200 (Fri, 17 Aug 2007)
New Revision: 2732
Modified:
trunk/src/target/gsm/include/gsmd/gsmd.h
trunk/src/target/gsm/src/gsmd/atcmd.c
Log:
mlbuf in gsmd struct (Andrzej Zaborowski)
Modified: trunk/src/target/gsm/include/gsmd/gsmd.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/gsmd.h 2007-08-17 08:35:29 UTC (rev
2731)
+++ trunk/src/target/gsm/include/gsmd/gsmd.h 2007-08-17 08:36:11 UTC (rev
2732)
@@ -79,6 +79,9 @@
struct gsmd_device_state dev_state;
struct llist_head operators; /* cached list of operator
names */
+ unsigned char *mlbuf; /* ml_parse buffer */
+ unsigned int mlbuf_len;
+ int mlunsolicited;
};
struct gsmd_user {
Modified: trunk/src/target/gsm/src/gsmd/atcmd.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/atcmd.c 2007-08-17 08:35:29 UTC (rev
2731)
+++ trunk/src/target/gsm/src/gsmd/atcmd.c 2007-08-17 08:36:11 UTC (rev
2732)
@@ -194,10 +194,7 @@
{
struct gsmd *g = ctx;
struct gsmd_atcmd *cmd = NULL;
- static char mlbuf[MLPARSE_BUF_SIZE];
int rc = 0;
- static int mlbuf_len;
- static int mlunsolicited = 0;
int cme_error = 0;
DEBUGP("buf=`%s'(%d)\n", buf, len);
@@ -278,9 +275,9 @@
* input. Wait for the next line, concatenate
* and resumbit to unsolicited_parse(). */
DEBUGP("Multiline unsolicited code\n");
- mlbuf_len = len;
- memcpy(mlbuf, buf, len);
- mlunsolicited = 1;
+ g->mlbuf_len = len;
+ memcpy(g->mlbuf, buf, len);
+ g->mlunsolicited = 1;
return 0;
}
/* if unsolicited parser didn't handle this 'reply',
then we
@@ -303,16 +300,16 @@
/* it might be a multiline response, so if there's a
previous
response, send out mlbuf and start afresh with an
empty buffer */
- if (mlbuf_len) {
+ if (g->mlbuf_len) {
if (!cmd->cb) {
gsmd_log(GSMD_NOTICE, "command without
cb!!!\n");
} else {
DEBUGP("Calling cmd->cb()\n");
- cmd->resp = mlbuf;
+ cmd->resp = g->mlbuf;
rc = cmd->cb(cmd, cmd->ctx, cmd->resp);
DEBUGP("Clearing mlbuf\n");
}
- mlbuf_len = 0;
+ g->mlbuf_len = 0;
}
/* the current buf will be appended to mlbuf below */
@@ -360,17 +357,17 @@
/* we reach here, if we are at an information response that needs to be
* passed on */
- if (mlbuf_len)
- mlbuf[mlbuf_len ++] = '\n';
+ if (g->mlbuf_len)
+ g->mlbuf[g->mlbuf_len ++] = '\n';
DEBUGP("Appending buf to mlbuf\n");
- if (len > sizeof(mlbuf) - mlbuf_len)
- len = sizeof(mlbuf) - mlbuf_len;
- memcpy(mlbuf + mlbuf_len, buf, len);
- mlbuf_len += len;
+ if (len > sizeof(g->mlbuf) - g->mlbuf_len)
+ len = sizeof(g->mlbuf) - g->mlbuf_len;
+ memcpy(g->mlbuf + g->mlbuf_len, buf, len);
+ g->mlbuf_len += len;
- if (mlunsolicited) {
- rc = unsolicited_parse(g, mlbuf, mlbuf_len,
- strchr(mlbuf, ':') + 1);
+ if (g->mlunsolicited) {
+ rc = unsolicited_parse(g, g->mlbuf, g->mlbuf_len,
+ strchr(g->mlbuf, ':') + 1);
if (rc == -EAGAIN) {
/* The parser wants one more line of
* input. Wait for the next line, concatenate
@@ -378,8 +375,8 @@
DEBUGP("Multiline unsolicited code\n");
return 0;
}
- mlunsolicited = 0;
- mlbuf_len = 0;
+ g->mlunsolicited = 0;
+ g->mlbuf_len = 0;
return rc;
}
return 0;
@@ -397,15 +394,16 @@
gsmd_log(GSMD_NOTICE, "command without cb!!!\n");
} else {
DEBUGP("Calling final cmd->cb()\n");
- /* send final result code if there is no information response
in mlbuf */
- if (mlbuf_len) {
- cmd->resp = mlbuf;
- mlbuf[mlbuf_len] = 0;
+ /* send final result code if there is no information
+ * response in mlbuf */
+ if (g->mlbuf_len) {
+ cmd->resp = g->mlbuf;
+ g->mlbuf[g->mlbuf_len] = 0;
} else
cmd->resp = buf;
rc = cmd->cb(cmd, cmd->ctx, cmd->resp);
DEBUGP("Clearing mlbuf\n");
- mlbuf_len = 0;
+ g->mlbuf_len = 0;
}
/* remove from list of currently executing cmds */
@@ -571,6 +569,9 @@
llparse_init (&g->llp);
+ g->mlbuf_len = 0;
+ g->mlunsolicited = 0;
+
g->llp.cur = g->llp.buf;
g->llp.len = sizeof(g->llp.buf);
g->llp.cb = &ml_parse;
--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-08-17 10:36:48 +0200 (Fri, 17 Aug 2007)
New Revision: 2733
Modified:
trunk/src/target/gsm/include/gsmd/usock.h
trunk/src/target/gsm/include/libgsmd/misc.h
trunk/src/target/gsm/src/gsmd/usock.c
trunk/src/target/gsm/src/libgsmd/libgsmd_network.c
trunk/src/target/gsm/src/util/event.c
trunk/src/target/gsm/src/util/shell.c
Log:
Add retrieving phone's own subscriber number. (Andrzej Zaborowski)
Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h 2007-08-17 08:36:11 UTC (rev
2732)
+++ trunk/src/target/gsm/include/gsmd/usock.h 2007-08-17 08:36:48 UTC (rev
2733)
@@ -478,6 +478,24 @@
char storage[3];
} __attribute__ ((packed));
+/* Subscriber number information from 3GPP TS 07.07, Clause 7.1 */
+enum gsmd_subscriber_service {
+ GSMD_SERVICE_UNKNOWN = -1,
+ GSMD_SERVICE_ASYNC_MODEM = 0,
+ GSMD_SERVICE_SYNC_MODEM,
+ GSMD_SERVICE_PAD_ACCESS,
+ GSMD_SERVICE_PACKET_ACCESS,
+ GSMD_SERVICE_VOICE,
+ GSMD_SERVICE_FAX,
+};
+
+struct gsmd_own_number {
+ int is_last;
+ enum gsmd_subscriber_service service;
+ struct gsmd_addr addr;
+ char name[0];
+};
+
struct gsmd_msg_hdr {
u_int8_t version;
u_int8_t msg_type;
Modified: trunk/src/target/gsm/include/libgsmd/misc.h
===================================================================
--- trunk/src/target/gsm/include/libgsmd/misc.h 2007-08-17 08:36:11 UTC (rev
2732)
+++ trunk/src/target/gsm/include/libgsmd/misc.h 2007-08-17 08:36:48 UTC (rev
2733)
@@ -68,6 +68,9 @@
extern int lgsm_prefoper_add(struct lgsm_handle *lh, gsmd_oper_numeric oper);
extern int lgsm_prefoper_get_space(struct lgsm_handle *lh);
+/* Get subscriber's own phone number */
+extern int lgsm_get_subscriber_num(struct lgsm_handle *lh);
+
/* CLIP, CLIR, COLP, Call Forwarding, Call Waiting, Call Deflecting */
/* TBD */
Modified: trunk/src/target/gsm/src/gsmd/usock.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/usock.c 2007-08-17 08:36:11 UTC (rev
2732)
+++ trunk/src/target/gsm/src/gsmd/usock.c 2007-08-17 08:36:48 UTC (rev
2733)
@@ -548,6 +548,51 @@
return 0;
}
+static int network_ownnumbers_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+{
+ struct gsmd_user *gu = (struct gsmd_user *) ctx;
+ struct gsmd_ucmd *ucmd;
+ struct gsmd_own_number *num;
+ int len, ret, type;
+ char dummy;
+
+ if (cmd->ret && cmd->ret != -255)
+ return 0;
+
+ if (sscanf(resp, "+CNUM: \"%*[^\"]\"%c%n", &dummy, &len) > 0)
+ len -= strlen("+CNUM: \"\",");
+ else
+ len = 0;
+
+ ucmd = gsmd_ucmd_fill(sizeof(*num) + len + 1,
+ GSMD_MSG_NETWORK, GSMD_NETWORK_GET_NUMBER, cmd->id);
+ if (!ucmd)
+ return -ENOMEM;
+
+ num = (struct gsmd_own_number *) ucmd->buf;
+ if (len)
+ ret = sscanf(resp, "+CNUM: \"%[^\"]\",\"%32[^\"]\",%i,%*i,%i,",
+ num->name, num->addr.number,
+ &type, &num->service) - 1;
+ else
+ ret = sscanf(resp, "+CNUM: ,\"%32[^\"]\",%i,%*i,%i,",
+ num->addr.number,
+ &type, &num->service);
+ if (ret < 2) {
+ talloc_free(ucmd);
+ return -EINVAL;
+ }
+ if (ret < 3)
+ num->service = GSMD_SERVICE_UNKNOWN;
+ num->name[len] = 0;
+ num->addr.type = type;
+ num->is_last = (cmd->ret == 0);
+
+ usock_cmd_enqueue(ucmd, gu);
+
+ return 0;
+}
+
static int usock_rcv_network(struct gsmd_user *gu, struct gsmd_msg_hdr *gph,
int len)
{
@@ -607,6 +652,10 @@
cmd = atcmd_fill("AT+CPOL=?", 9 + 1,
&network_pref_num_cb, gu, 0);
break;
+ case GSMD_NETWORK_GET_NUMBER:
+ cmd = atcmd_fill("AT+CNUM", 7 + 1,
+ &network_ownnumbers_cb, gu, 0);
+ break;
default:
return -EINVAL;
}
Modified: trunk/src/target/gsm/src/libgsmd/libgsmd_network.c
===================================================================
--- trunk/src/target/gsm/src/libgsmd/libgsmd_network.c 2007-08-17 08:36:11 UTC
(rev 2732)
+++ trunk/src/target/gsm/src/libgsmd/libgsmd_network.c 2007-08-17 08:36:48 UTC
(rev 2733)
@@ -128,3 +128,8 @@
{
return lgsm_send_simple(lh, GSMD_MSG_NETWORK, GSMD_NETWORK_PREF_SPACE);
}
+
+int lgsm_get_subscriber_num(struct lgsm_handle *lh)
+{
+ return lgsm_send_simple(lh, GSMD_MSG_NETWORK, GSMD_NETWORK_GET_NUMBER);
+}
Modified: trunk/src/target/gsm/src/util/event.c
===================================================================
--- trunk/src/target/gsm/src/util/event.c 2007-08-17 08:36:11 UTC (rev
2732)
+++ trunk/src/target/gsm/src/util/event.c 2007-08-17 08:36:48 UTC (rev
2733)
@@ -26,6 +26,7 @@
#include <common/linux_list.h>
#include <libgsmd/libgsmd.h>
#include <libgsmd/event.h>
+#include <libgsmd/sms.h>
static int incall_handler(struct lgsm_handle *lh, int evt, struct
gsmd_evt_auxdata *aux)
{
Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c 2007-08-17 08:36:11 UTC (rev
2732)
+++ trunk/src/target/gsm/src/util/shell.c 2007-08-17 08:36:48 UTC (rev
2733)
@@ -298,12 +298,22 @@
const char *oper = (char *) gmh + sizeof(*gmh);
const struct gsmd_msg_oper *opers = (struct gsmd_msg_oper *)
((void *) gmh + sizeof(*gmh));
+ const struct gsmd_own_number *num = (struct gsmd_own_number *)
+ ((void *) gmh + sizeof(*gmh));
static const char *oper_stat[] = {
[GSMD_OPER_UNKNOWN] = "of unknown status",
[GSMD_OPER_AVAILABLE] = "available",
[GSMD_OPER_CURRENT] = "our current operator",
[GSMD_OPER_FORBIDDEN] = "forbidden",
};
+ static const char *srvname[] = {
+ [GSMD_SERVICE_ASYNC_MODEM] = "asynchronous modem",
+ [GSMD_SERVICE_SYNC_MODEM] = "synchronous modem",
+ [GSMD_SERVICE_PAD_ACCESS] = "PAD Access (asynchronous)",
+ [GSMD_SERVICE_PACKET_ACCESS] = "Packet Access (synchronous)",
+ [GSMD_SERVICE_VOICE] = "voice",
+ [GSMD_SERVICE_FAX] = "fax",
+ };
switch (gmh->msg_subtype) {
case GSMD_NETWORK_SIGQ_GET:
@@ -333,6 +343,15 @@
opers->opname_shortalpha,
oper_stat[opers->stat]);
break;
+ case GSMD_NETWORK_GET_NUMBER:
+ printf("\t%s\t%10s%s%s%s\n", num->addr.number, num->name,
+ (num->service == GSMD_SERVICE_UNKNOWN) ?
+ "" : " related to ",
+ (num->service == GSMD_SERVICE_UNKNOWN) ?
+ "" : srvname[num->service],
+ (num->service == GSMD_SERVICE_UNKNOWN) ?
+ "" : " services");
+ break;
default:
return -EINVAL;
}
@@ -352,6 +371,7 @@
"\tL\tDetect available operators\n"
"\tQ\tRead signal quality\n"
"\tT\tSend DTMF Tone\n"
+ "\tn\tPrint subscriber numbers\n"
"\tpd\tPB Delete (pb=index)\n"
"\tpr\tPB Read (pr=index)\n"
"\tprr\tPB Read Range (prr=index1,index2)\n"
@@ -630,6 +650,8 @@
printf("No.\n");
else
lgsm_sms_set_smsc(lgsmh, ptr + 1);
+ } else if (!strcmp(buf, "n")) {
+ lgsm_get_subscriber_num(lgsmh);
} else {
printf("Unknown command `%s'\n", buf);
}
--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog