r1156 - in trunk/src/target/gsm: include/libgsmd src/libgsmd src/util

tony_guan at sita.openmoko.org tony_guan at sita.openmoko.org
Wed Feb 28 08:04:38 CET 2007


Author: tony_guan
Date: 2007-02-28 08:04:28 +0100 (Wed, 28 Feb 2007)
New Revision: 1156

Modified:
   trunk/src/target/gsm/include/libgsmd/misc.h
   trunk/src/target/gsm/src/libgsmd/Makefile.am
   trunk/src/target/gsm/src/util/libgsmd-tool.c
   trunk/src/target/gsm/src/util/shell.c
Log:
resolved bug 108, please varify it. thks.


Modified: trunk/src/target/gsm/include/libgsmd/misc.h
===================================================================
--- trunk/src/target/gsm/include/libgsmd/misc.h	2007-02-28 02:53:26 UTC (rev 1155)
+++ trunk/src/target/gsm/include/libgsmd/misc.h	2007-02-28 07:04:28 UTC (rev 1156)
@@ -1,5 +1,5 @@
-#ifndef _LIBGSMD_H
-#define _LIBGSMD_H
+#ifndef _MISC_LIBGSMD_H
+#define _MISC_LIBGSMD_H
 
 /* libgsmd.h - Library API for gsmd, the GSM Daemon
  * (C) 2006 by Harald Welte <hwelte at hmw-consulting.de>
@@ -25,19 +25,19 @@
 
 extern int lgsm_netreg_register(struct lgsm_handle *lh, int oper);
 
-enum lgsm_info_type {
+typedef enum _lgsm_info_type {
 	LGSM_INFO_TYPE_NONE		= 0,
 	LGSM_INFO_TYPE_MANUF		= 1,
 	LGSM_INFO_TYPE_MODEL		= 2,
 	LGSM_INFO_TYPE_REVISION		= 3,
 	LGSM_INFO_TYPE_SERIAL		= 4,
 	LGSM_INFO_TYPE_IMSI		= 5,
-};
+}lgsm_info_type;
 
 /* Get some information about the handset */
 extern int lgsm_get_info(struct lgsm_handle *lh,
-			 enum lgsm_info_type type,
-			 char *ret_string, u_int16_t len);
+			 lgsm_info_type type,
+			 char *ret_string, unsigned int* len);
 
 /* Authenticate to SIM Card using specified null-terminated pin */
 extern int lgsm_pin_auth(struct lgsm_handle *lh, const char *pin);

Modified: trunk/src/target/gsm/src/libgsmd/Makefile.am
===================================================================
--- trunk/src/target/gsm/src/libgsmd/Makefile.am	2007-02-28 02:53:26 UTC (rev 1155)
+++ trunk/src/target/gsm/src/libgsmd/Makefile.am	2007-02-28 07:04:28 UTC (rev 1156)
@@ -5,6 +5,6 @@
 lib_LTLIBRARIES = libgsmd.la
 
 libgsmd_la_LDFLAGS = -Wc,-nostartfiles -version-info $(LIBVERSION)
-libgsmd_la_SOURCES = libgsmd.c libgsmd_input.c libgsmd_voicecall.c libgsmd_passthrough.c libgsmd_event.c libgsmd_phone.c libgsmd_network.c
+libgsmd_la_SOURCES = libgsmd.c libgsmd_input.c libgsmd_voicecall.c libgsmd_passthrough.c libgsmd_event.c libgsmd_phone.c libgsmd_network.c libgsmd_device.c
 
 noinst_HEADERS = lgsm_internals.h

Modified: trunk/src/target/gsm/src/util/libgsmd-tool.c
===================================================================
--- trunk/src/target/gsm/src/util/libgsmd-tool.c	2007-02-28 02:53:26 UTC (rev 1155)
+++ trunk/src/target/gsm/src/util/libgsmd-tool.c	2007-02-28 07:04:28 UTC (rev 1156)
@@ -95,11 +95,14 @@
 	printf("libgsm-tool - (C) 2006 by Harald Welte\n"
 		"This program is Free Software and has ABSOLUTELY NO WARRANTY\n\n");
 
+
 	while (1) {
 		int c, option_index = 0;
 		c = getopt_long(argc, argv, "vVhm:p:", opts, &option_index);
 		if (c == -1)
+			{
 			break;
+			}
 
 		switch (c) {
 		case 'v':

Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c	2007-02-28 02:53:26 UTC (rev 1155)
+++ trunk/src/target/gsm/src/util/shell.c	2007-02-28 07:04:28 UTC (rev 1156)
@@ -48,6 +48,7 @@
 		"\to\tPower Off\n"
 		"\tR\tRegister Netowrk\n"
 		"\tT\tSend DTMF Tone\n"
+		"\tI\tDevice Infor\n"
 		"\tq\tQuit\n"
 		);
 }
@@ -58,6 +59,7 @@
 	char buf[STDIN_BUF_SIZE+1];
 	char rbuf[STDIN_BUF_SIZE+1];
 	int rlen = sizeof(rbuf);
+
 	fd_set readset;
 
 	lgsm_register_handler(lgsmh, GSMD_MSG_PASSTHROUGH, &pt_msghandler);
@@ -136,9 +138,68 @@
 					continue;
 				printf("DTMF: %c\n", buf[1]);
 				lgsm_voice_dtmf(lgsmh, buf[1]);
-			} else {
+			} else if (buf[0] == 'I') {
+			//FIXME: sometimes, lgsm_get_info returns directly, and sometimes the result just gets lost.
+				static int infoindex=LGSM_INFO_TYPE_NONE;//information
+				infoindex=infoindex%LGSM_INFO_TYPE_IMSI+1;
+				rlen = sizeof(rbuf);
+				switch(infoindex){
+				case LGSM_INFO_TYPE_MANUF:
+				
+				if(lgsm_get_info(lgsmh,LGSM_INFO_TYPE_MANUF,rbuf,&rlen))
+					{
+					printf("manufacturer:%s\n",rbuf);
+					}
+				else
+					printf("manufacturer information error!\n");
+				break;
+
+				case LGSM_INFO_TYPE_MODEL:
+				if(lgsm_get_info(lgsmh,LGSM_INFO_TYPE_MODEL,rbuf,&rlen))
+					{
+					printf("model:%s\n",rbuf);
+					}
+				else
+					printf("model error!\n");
+				break;
+
+                            case LGSM_INFO_TYPE_REVISION:
+                    		if(lgsm_get_info(lgsmh,LGSM_INFO_TYPE_REVISION,rbuf,&rlen))
+					{
+					printf("revision:%s\n",rbuf);
+					}
+				else
+					printf("revision information error!\n");
+                            break;
+
+                            case LGSM_INFO_TYPE_IMSI:
+				if(lgsm_get_info(lgsmh,LGSM_INFO_TYPE_IMSI,rbuf,&rlen))
+					{
+					printf("imei:%s\n",rbuf);
+					}
+				else
+					printf("imei information error!\n");
+				break;
+                            case LGSM_INFO_TYPE_SERIAL:
+				if(lgsm_get_info(lgsmh,LGSM_INFO_TYPE_SERIAL,rbuf,&rlen))
+					{
+					printf("sn:%s\n",rbuf);
+					}
+				else
+					printf("sn information error!\n");
+				break;
+				default:
+					printf("something is wrong!\n");
+				}
+
+
+			
+			} 
+			else {
 				printf("Unknown command `%s'\n", buf);
 			}
 		}
 	}
 }
+
+





More information about the commitlog mailing list