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. r3203 - trunk/src/target/gsm/src/util ([EMAIL PROTECTED])
   2. r3204 - trunk/src/target/gsm/include/libgsmd
      ([EMAIL PROTECTED])
--- Begin Message ---
Author: jserv
Date: 2007-10-17 08:20:14 +0200 (Wed, 17 Oct 2007)
New Revision: 3203

Modified:
   trunk/src/target/gsm/src/util/shell.c
Log:
Improvement for finding / reading phonebook records in shell.

From: Sean Chiang <[EMAIL PROTECTED]>                                        
Subject: [PATCH] improvement for find and read phonebooks in shell

This patch improves the functions to find and read phonebooks in shell.
Besides prr and pf, I add two new commands pRr and pRf to retrieve the
phonebook.


Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c       2007-10-17 06:18:34 UTC (rev 
3202)
+++ trunk/src/target/gsm/src/util/shell.c       2007-10-17 06:20:14 UTC (rev 
3203)
@@ -34,8 +34,6 @@
 #include <gsmd/usock.h>
 #include <gsmd/ts0705.h>
 
-#include <common/linux_list.h>
-
 #ifndef __GSMD__
 #define __GSMD__
 #include <gsmd/talloc.h>
@@ -43,10 +41,9 @@
 #endif
 
 #define STDIN_BUF_SIZE 1024
+static int nFIND = 0;
+static int nREADRG = 0;
 
-static LLIST_HEAD(storage_list);
-static LLIST_HEAD(phonebook_list);
-
 /* this is the handler for receiving passthrough responses */
 static int pt_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh)
 {
@@ -62,46 +59,23 @@
        struct gsmd_phonebook_storage *gpst;
        char *payload;
        char *fcomma, *lcomma, *ptr = NULL;
+       int *num;
        char buf[128];
+       int i;
 
        switch (gmh->msg_subtype) {
-#if 0
        case GSMD_PHONEBOOK_FIND:               
+               num = (int *) ((char *)gmh + sizeof(*gmh));
+               printf("Records:%d\n", *num);
+
+               nFIND = *num;
+               break;
        case GSMD_PHONEBOOK_READRG:
-               payload = (char *)gmh + sizeof(*gmh);
+               num = (int *) ((char *)gmh + sizeof(*gmh));
+               printf("Records:%d\n", *num);
 
-               if (!strncmp(payload, "+CPBR", 5) ||
-                               !strncmp(payload, "+CPBF", 5)) {
-                       gp = (struct gsmd_phonebook *) malloc(sizeof(struct 
gsmd_phonebook));
-                       ptr = strchr(payload, ' ');
-                       gp->index = atoi(ptr+1);
-
-                       fcomma = strchr(payload, '"');
-                       lcomma = strchr(fcomma+1, '"');
-                       strncpy(gp->numb, fcomma + 1, (lcomma-fcomma-1));
-                       gp->numb[(lcomma - fcomma) - 1] = '\0';
-
-                       gp->type = atoi(lcomma + 2);
-
-                       ptr = strrchr(payload, ',');
-                       fcomma = ptr + 1;
-                       lcomma = strchr(fcomma + 1, '"');
-                       strncpy(gp->text, fcomma + 1, (lcomma - fcomma - 1));
-                       gp->text[(lcomma - fcomma) - 1] = '\0';
-
-                       llist_add_tail(&gp->list, &phonebook_list);
-
-#if 0
-                       llist_for_each_entry(gp, &phonebook_list, list) {
-                               printf("%d, %s, %d, %s\n", gp->index, gp->numb, 
gp->type, gp->text);
-                       }
-#endif
-                       printf("%d, %s, %d, %s\n", gp->index, gp->numb, 
gp->type, gp->text);
-               }
-               else
-                       printf("%s\n", payload);
+               nREADRG = *num;
                break;
-#endif
        case GSMD_PHONEBOOK_READ:
                gp = (struct gsmd_phonebook *) ((char *)gmh + sizeof(*gmh));
                if (gp->index)
@@ -115,48 +89,18 @@
                gps = (struct gsmd_phonebook_support *) ((char *)gmh + 
sizeof(*gmh));
                printf("(1-%d), %d, %d\n", gps->index, gps->nlength, 
gps->tlength);
                break;
-#if 0
+
        case GSMD_PHONEBOOK_LIST_STORAGE:
-               payload = (char *)gmh + sizeof(*gmh);
+               gpst = (struct gsmd_phonebook_storage *)((char *)gmh + 
sizeof(*gmh));
 
-               if (!strncmp(payload, "+CPBS", 5)) {
-                       char* delim = "(,";
-                       struct gsmd_phonebook_storage *cur, *cur2;
+               for (i = 0; i < gpst->num; i++) {
+                       printf("%s, ", gpst->mem[i].type);
+               }
 
-                       /* Remove previous record */
-                       if (!llist_empty(&storage_list)) {
-                               llist_for_each_entry_safe(cur, cur2,
-                                               &storage_list, list) {
-                                       llist_del(&cur->list);
-                                       talloc_free(cur);
-                               }
-                       }
+               printf("\n");
 
-                       ptr = strpbrk(payload, delim);
-
-                       while ( ptr ) {
-                               gpst = (struct gsmd_phonebook_storage *) 
malloc(sizeof(struct gsmd_phonebook_storage));
-                               strncpy(gpst->storage, ptr+2, 2);
-                               gpst->storage[2] = '\0';
-
-                               ptr = strpbrk(ptr+2, delim);
-
-                               llist_add_tail(&gpst->list, &storage_list);
-                       }
-
-                       if (llist_empty(&storage_list))
-                               return 0;
-
-                       llist_for_each_entry(cur, &storage_list, list) {
-                               printf("\n%s",cur->storage);
-                       }
-
-                       printf("\n");
-               }
-               else
-                       printf("%s\n", payload);
                break;
-#endif
+
        case GSMD_PHONEBOOK_WRITE:
        case GSMD_PHONEBOOK_DELETE:
        case GSMD_PHONEBOOK_SET_STORAGE:
@@ -164,6 +108,26 @@
                payload = (char *)gmh + sizeof(*gmh);
                printf("%s\n", payload);
                break;
+       case GSMD_PHONEBOOK_RETRIEVE_READRG:
+               gp = (struct gsmd_phonebook *) ((char *)gmh + sizeof(*gmh));
+
+               for (i=0; i<nREADRG; i++) {
+                       printf("%d,%s,%d,%s\n", gp->index, gp->numb, gp->type, 
gp->text);
+                       gp++;
+               }
+
+               nREADRG = 0;
+               break;
+       case GSMD_PHONEBOOK_RETRIEVE_FIND:
+               gp = (struct gsmd_phonebook *) ((char *)gmh + sizeof(*gmh));
+
+               for (i = 0; i < nFIND; i++) {
+                       printf("%d,%s,%d,%s\n", gp->index, gp->numb, gp->type, 
gp->text);
+                       gp++;
+               }
+
+               nFIND = 0;
+               break;
        default:
                return -EINVAL;
        }       
@@ -381,11 +345,13 @@
                "\tpd\tPB Delete (pb=index)\n"
                "\tpr\tPB Read (pr=index)\n"
                "\tprr\tPB Read Range (prr=index1,index2)\n"
-               "\tpf\tPB Find (pff=indtext)\n"
+               "\tpf\tPB Find (pf=indtext)\n"
                "\tpw\tPB Write (pw=index,number,text)\n"
                "\tps\tPB Support\n"
                "\tpm\tPB Memory\n"
                "\tpp\tPB Set Memory (pp=storage)\n"
+               "\tpRr\tRetrieve Readrg Records\n"
+               "\tpRf\tRetrieve Find Records\n"
                "\tsd\tSMS Delete (sd=index,delflg)\n"
                "\tsl\tSMS List (sl=stat)\n"
                "\tsr\tSMS Read (sr=index)\n"
@@ -509,49 +475,22 @@
                                printf("Delete Phonebook Entry\n");             
                
                                ptr = strchr(buf, '=');
                                lgsm_pb_del_entry(lgsmh, atoi(ptr+1));
-#if 0
                        } else if ( !strncmp(buf, "prr", 3)) {  
                                printf("Read Phonebook Entries\n");
                                struct lgsm_phonebook_readrg pb_readrg;
-                               struct gsmd_phonebook *gp_cur, *gp_cur2;
 
-                               /* Remove records */
-                               if (!llist_empty(&phonebook_list)) {
-                                       llist_for_each_entry_safe(gp_cur,
-                                                       gp_cur2,
-                                                       &phonebook_list,
-                                                       list) {
-                                               llist_del(&gp_cur->list);
-                                               talloc_free(gp_cur);
-                                       }
-                               }
-
                                ptr = strchr(buf, '=');
                                pb_readrg.index1 = atoi(ptr+1);                 
        
                                ptr = strchr(buf, ',');
                                pb_readrg.index2 = atoi(ptr+1);
                                lgsm_pb_read_entries(lgsmh, &pb_readrg);
-#endif
                        } else if ( !strncmp(buf, "pr", 2)) {
                                ptr = strchr(buf, '=');
                                lgsm_pb_read_entry(lgsmh, atoi(ptr+1));
-#if 0
                        } else if ( !strncmp(buf, "pf", 2)) {
                                printf("Find Phonebook Entry\n");
                                struct lgsm_phonebook_find pb_find;
-                               struct gsmd_phonebook *gp_cur, *gp_cur2;
 
-                               /* Remove records */
-                               if (!llist_empty(&phonebook_list)) {
-                                       llist_for_each_entry_safe(gp_cur,
-                                                       gp_cur2,
-                                                       &phonebook_list,
-                                                       list) {
-                                               llist_del(&gp_cur->list);
-                                               talloc_free(gp_cur);
-                                       }
-                               }
-
                                ptr = strchr(buf, '=');
                                strncpy(pb_find.findtext,
                                                ptr + 1,
@@ -559,7 +498,6 @@
                                pb_find.findtext[strlen(ptr+1)] = '\0'; 
                        
                                lgsm_pb_find_entry(lgsmh, &pb_find);
-#endif
                        } else if ( !strncmp(buf, "pw", 2)) {
                                printf("Write Phonebook Entry\n");
                                struct lgsm_phonebook pb;
@@ -591,6 +529,16 @@
                        } else if ( !strncmp(buf, "ps", 2)) {   
                                printf("Get Phonebook Support\n");
                                lgsm_pb_get_support(lgsmh);
+                       } else if( !strncmp(buf, "pRr", 3) ) {
+                               printf("Retrieve Readrg Records\n");
+
+                               if ( nREADRG )
+                                       lgsm_pb_retrieve_readrg(lgsmh, nREADRG);
+                       } else if( !strncmp(buf, "pRf", 3) ) {
+                               printf("Retrieve Find Records\n");
+
+                               if ( nFIND )
+                                       lgsm_pb_retrieve_find(lgsmh, nFIND);
                        } else if ( !strncmp(buf, "sd", 2)) {           
                                printf("Delete SMS\n");                 
                                struct lgsm_sms_delete sms_del;




--- End Message ---
--- Begin Message ---
Author: jserv
Date: 2007-10-17 10:27:28 +0200 (Wed, 17 Oct 2007)
New Revision: 3204

Modified:
   trunk/src/target/gsm/include/libgsmd/misc.h
Log:
Expose lgsm_signal_quality in order to replace lgsm_get_signal_quality.


Modified: trunk/src/target/gsm/include/libgsmd/misc.h
===================================================================
--- trunk/src/target/gsm/include/libgsmd/misc.h 2007-10-17 06:20:14 UTC (rev 
3203)
+++ trunk/src/target/gsm/include/libgsmd/misc.h 2007-10-17 08:27:28 UTC (rev 
3204)
@@ -31,8 +31,7 @@
 /* General Commands */
 
 /* Get Signal Strehngth (Chapter 8.5) */
-extern int lgsm_get_signal_quality(struct lgsm_handle *h,
-                                  unsigned int *rssi);
+extern int lgsm_signal_quality(struct lgsm_handle *h);
 
 /* Set voice mail number */
 extern int lgsm_voicemail_set(struct lgsm_handle *lh,




--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to