diff options
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/shell.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/util/shell.c b/src/util/shell.c index e9aae1c..0507be5 100644 --- a/src/util/shell.c +++ b/src/util/shell.c @@ -291,6 +291,7 @@ static int net_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh) ((void *) gmh + sizeof(*gmh)); const struct gsmd_voicemail *vmail = (struct gsmd_voicemail *) ((void *) gmh + sizeof(*gmh)); + enum gsmd_netreg_state state = *(enum gsmd_netreg_state *) gmh->data; int result = *(int *) gmh->data; static const char *oper_stat[] = { [GSMD_OPER_UNKNOWN] = "of unknown status", @@ -361,6 +362,28 @@ static int net_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh) printf ("voicemail number is %s \n",vmail->addr.number); pending_responses --; break; + case GSMD_NETWORK_QUERY_REG: + switch (state) { + case GSMD_NETREG_UNREG: + printf("not searching for network \n"); + break; + case GSMD_NETREG_REG_HOME: + printf("registered (home network) \n"); + break; + case GSMD_NETREG_UNREG_BUSY: + printf("searching for network \n"); + break; + case GSMD_NETREG_DENIED: + printf("registration denied \n"); + break; + case GSMD_NETREG_REG_ROAMING: + printf("registered (roaming) \n"); + break; + default: + break; + } + pending_responses --; + break; default: return -EINVAL; } @@ -648,6 +671,10 @@ int shell_main(struct lgsm_handle *lgsmh, int sync) printf("Signal strength\n"); lgsm_signal_quality(lgsmh); pending_responses ++; + } else if (!strcmp(buf, "nr")) { + printf("Query network registration\n"); + lgsm_netreg_query(lgsmh); + pending_responses ++; } else if (!strcmp(buf, "q")) { exit(0); } else if (buf[0] == 'S' ) { |