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. r3264 - trunk/src/target/gsm/src/gsmd ([EMAIL PROTECTED])
   2. r3265 - in trunk/src/target/gsm: include/gsmd src/gsmd
      src/util ([EMAIL PROTECTED])
   3. r3266 - trunk/src/target/gsm/src/libgsmd ([EMAIL PROTECTED])
   4. r3267 - in trunk/src/target/gsm: include/gsmd src/gsmd
      src/util ([EMAIL PROTECTED])
   5. r3268 - trunk/src/target/gsm/src/gsmd ([EMAIL PROTECTED])
   6. r3269 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
   7. r3270 - in
      trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: .
      src ([EMAIL PROTECTED])
--- Begin Message ---
Author: tick
Date: 2007-10-25 12:25:43 +0200 (Thu, 25 Oct 2007)
New Revision: 3264

Modified:
   trunk/src/target/gsm/src/gsmd/sms_cb.c
Log:
Get a correct message index value on reading a SMS (Erin Yueh)


Modified: trunk/src/target/gsm/src/gsmd/sms_cb.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/sms_cb.c      2007-10-25 01:09:17 UTC (rev 
3263)
+++ trunk/src/target/gsm/src/gsmd/sms_cb.c      2007-10-25 10:25:43 UTC (rev 
3264)
@@ -116,6 +116,7 @@
        struct gsmd_sms_list msg;
        int i, stat, len, cr;
        u_int8_t pdu[SMS_MAX_PDU_SIZE];
+       const char *colon;
 
        if (cmd->ret)
                return 0;
@@ -131,6 +132,11 @@
                return -EINVAL;
 
        msg.index = 0;
+       colon = strchr(cmd->buf, '=');
+
+        /* get a correct message index value on reading a SMS */
+       if (!strncmp(cmd->buf, "AT+CMGR", 7) && colon) 
+               msg.index = atoi(colon+1);
        msg.stat = stat;
        msg.is_last = 1;
        for (i = 0; resp[cr] >= '0' && resp[cr + 1] >= '0' &&




--- End Message ---
--- Begin Message ---
Author: tick
Date: 2007-10-25 12:35:26 +0200 (Thu, 25 Oct 2007)
New Revision: 3265

Modified:
   trunk/src/target/gsm/include/gsmd/usock.h
   trunk/src/target/gsm/src/gsmd/sms_pdu.c
   trunk/src/target/gsm/src/util/event.c
   trunk/src/target/gsm/src/util/shell.c
Log:
Adding decoder TP-DCS, and it's based on 3GPP TS23.038 Clause 4. (Erin Yueh)


Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h   2007-10-25 10:25:43 UTC (rev 
3264)
+++ trunk/src/target/gsm/include/gsmd/usock.h   2007-10-25 10:35:26 UTC (rev 
3265)
@@ -121,6 +121,58 @@
        ALPHABET_RESERVED               = (0x11<<2),
 };
 
+/* bit 1 & bit0 */
+enum gsmd_sms_msg_class {
+       MSG_CLASS_CLASS0        = 0,
+       MSG_CLASS_CLASS1        = 1,
+       MSG_CLASS_CLASS2        = 2,
+       MSG_CLASS_CLASS3        = 3,
+       MSG_CLASS_NONE          = 4,
+};
+
+/* bit 3 & bit 2*/
+enum gsmd_sms_alphabet_type {
+       SMS_ALPHABET_7_BIT_DEFAULT      = 0,
+       SMS_ALPHABET_8_BIT              = 1,
+       SMS_ALPHABET_UCS2               = 2,
+       SMS_ALPHABET_RESESRVED          = 3,
+};
+
+enum gsmd_sms_msg_compressed {
+       NOT_COMPRESSED  = 0,
+       COMPRESSED      = 1,
+};
+
+/* message waiting indication */
+enum gsmd_sms_msg_waiting_group {
+       MESSAGE_WAITING_NONE            = 0,
+       MESSAGE_WAITING_DISCARD = 1,
+       MESSAGE_WAITING_STORE           = 2,
+       MESSAGE_WAITING_NONE_1111       = 3,
+};
+
+enum gsmd_sms_msg_waiting_type {
+       MESSAGE_WAITING_VOICEMAIL       = 0,
+       MESSAGE_WAITING_FAX             = 1,
+       MESSAGE_WAITING_EMAIL           = 2,
+       MESSAGE_WAITING_OTHER           = 3,
+};
+
+enum gsmd_sms_msg_waiting_active {
+       NOT_ACTIVE      = 0,
+       ACTIVE          = 1,
+};
+
+struct gsmd_sms_datacodingscheme {
+       enum gsmd_sms_msg_class                 msg_class;
+       enum gsmd_sms_alphabet_type             alphabet;
+       enum gsmd_sms_msg_compressed            is_compressed;
+       enum gsmd_sms_msg_waiting_group         mwi_group;
+       enum gsmd_sms_msg_waiting_active        mwi_active;
+       enum gsmd_sms_msg_waiting_type          mwi_kind;
+       u_int8_t                                raw_dcs_data;
+} __attribute__ ((packed));
+
 /* Refer to GSM 03.40 subclause 9.2.3.1 */
 enum gsmd_sms_tp_mti {
        GSMD_SMS_TP_MTI_DELIVER         = 0,
@@ -325,6 +377,8 @@
        u_int8_t length;        
        u_int8_t coding_scheme;
        int has_header;
+       int is_voicemail;
+       struct gsmd_sms_datacodingscheme dcs;
        char data[GSMD_SMS_DATA_MAXLEN+1];      
 } __attribute__ ((packed));
 

Modified: trunk/src/target/gsm/src/gsmd/sms_pdu.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/sms_pdu.c     2007-10-25 10:25:43 UTC (rev 
3264)
+++ trunk/src/target/gsm/src/gsmd/sms_pdu.c     2007-10-25 10:35:26 UTC (rev 
3265)
@@ -87,6 +87,9 @@
        if (len < 1 || len < 1 + src[0] + pdulen || pdulen < 1)
                return 1;
 
+       /* init voicemail is false */
+       dst->payload.is_voicemail = 0;
+       
        /* Skip SMSC number and its Type-of-address */
        len -= 1 + src[0];
        src += 1 + src[0];
@@ -111,7 +114,19 @@
 
                len -= 3 + i;
                src += 3 + i;
+               
+               /* check voicemail by TP-PID */
+               if(src[0] == 0x5f)  /* return call message */
+                       dst->payload.is_voicemail = 1;
 
+               /* decode TP-DCS */
+               if(sms_pdu_decode_dcs(&dst->payload.dcs,src+1))
+                       return 1;
+               /* check voicemail by MWI */
+               if(dst->payload.dcs.mwi_kind == MESSAGE_WAITING_VOICEMAIL &&
+                       (dst->payload.dcs.mwi_group == MESSAGE_WAITING_DISCARD 
|| 
+                       dst->payload.dcs.mwi_group == MESSAGE_WAITING_STORE))
+                       dst->payload.is_voicemail = 1;
                /* TP-DCS */
                switch (src[1] >> 4) {
                case 0x0 ... 3: /* General Data Coding indication */
@@ -315,3 +330,88 @@
        memcpy(dst->data, src + 6, len - 6);
        return 0;
 }
+
+/* Refer to GSM 03.38 Clause 4, for TP-DCS */  
+int sms_pdu_decode_dcs(struct gsmd_sms_datacodingscheme *dcs, 
+       const u_int8_t *data)
+{
+       int pos = 0, i;
+
+       /* init dcs value */
+       dcs->mwi_active         = NOT_ACTIVE;
+       dcs->mwi_kind           = MESSAGE_WAITING_OTHER;
+       
+       /* bits 7-6 */
+       i = ( data[pos] & 0xC0 ) >> 6;
+       switch( i )
+       {
+       case 0: /* pattern 00xx xxxx */
+               dcs->is_compressed = data[pos] & 0x20;
+               if( data[pos] & 0x10 )
+                       dcs->msg_class = data[pos] & 0x03;
+               else
+                       /* no class information */
+                       dcs->msg_class = MSG_CLASS_NONE;
+               dcs->alphabet  = ( data[pos] & 0x0C ) >> 2;     
+               dcs->mwi_group  = MESSAGE_WAITING_NONE;
+               break;
+       case 3: /* pattern 1111 xxxx */
+               /* bits 5-4 */
+               if( (data[pos] & 0x30) == 0x30 )
+               {
+                       /* bit 3 is reserved */
+                       /* bit 2 */
+                       dcs->alphabet = (data[pos] & 0x04 ) ? 
SMS_ALPHABET_8_BIT:
+                                          SMS_ALPHABET_7_BIT_DEFAULT;
+                       /* bits 1-0 */
+                       dcs->msg_class = data[pos] & 0x03;
+                       /* set remaining fields */
+                       dcs->is_compressed  = NOT_COMPRESSED;
+                       dcs->mwi_group    = MESSAGE_WAITING_NONE_1111;
+               }
+               else
+               {
+                       /* Message waiting groups */
+                       dcs->is_compressed  = NOT_COMPRESSED;
+                       dcs->msg_class      = MSG_CLASS_NONE;
+                       /* bits 5-4 */
+                       if( (data[pos] & 0x30) == 0x00 )
+                       {
+                               dcs->mwi_group  = MESSAGE_WAITING_DISCARD;
+                               dcs->alphabet   = SMS_ALPHABET_7_BIT_DEFAULT;
+                       }
+                       else if( (data[pos] & 0x30) == 0x10 )
+                       {
+                               dcs->mwi_group  = MESSAGE_WAITING_STORE;
+                               dcs->alphabet   = SMS_ALPHABET_7_BIT_DEFAULT;
+                       }
+                       else
+                       {
+                               dcs->mwi_group  = MESSAGE_WAITING_STORE;
+                               dcs->alphabet   = SMS_ALPHABET_UCS2;
+                       }
+                       /* bit 3 */
+                       dcs->mwi_active = ( data[pos] & 0x08 ) ? ACTIVE : 
+                               NOT_ACTIVE;
+                       /* bit 2 is reserved */
+                       /* bits 1-0 */
+                       dcs->mwi_kind = data[pos] & 0x03;
+               }
+               break;
+       default:
+               /* reserved values      */
+               dcs->msg_class          = MSG_CLASS_NONE;
+               dcs->alphabet           = SMS_ALPHABET_7_BIT_DEFAULT;
+               dcs->is_compressed      = NOT_COMPRESSED;
+               dcs->mwi_group          = MESSAGE_WAITING_NONE;
+               dcs->mwi_active         = NOT_ACTIVE;
+               dcs->mwi_kind           = MESSAGE_WAITING_OTHER;
+               break;
+       }
+
+       if ( dcs->alphabet > SMS_ALPHABET_UCS2 )
+               dcs->alphabet = SMS_ALPHABET_7_BIT_DEFAULT;
+       /* keep raw dcs data*/
+       dcs->raw_dcs_data = data[pos];
+       return 0;
+}

Modified: trunk/src/target/gsm/src/util/event.c
===================================================================
--- trunk/src/target/gsm/src/util/event.c       2007-10-25 10:25:43 UTC (rev 
3264)
+++ trunk/src/target/gsm/src/util/event.c       2007-10-25 10:35:26 UTC (rev 
3265)
@@ -42,6 +42,8 @@
        char payload[GSMD_SMS_DATA_MAXLEN];
        if (aux->u.sms.inlined) {
                sms = (struct gsmd_sms_list *) aux->data;
+               if(sms->payload.is_voicemail)
+                       printf("EVENT: You have a voice mail \n");
                printf("EVENT: Incoming SMS from/to %s%s, at %i%i-%i%i-%i%i "
                                "%i%i:%i%i:%i%i, GMT%c%i\n",
                                ((sms->addr.type & __GSMD_TOA_TON_MASK) ==

Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c       2007-10-25 10:25:43 UTC (rev 
3264)
+++ trunk/src/target/gsm/src/util/shell.c       2007-10-25 10:35:26 UTC (rev 
3265)
@@ -152,6 +152,8 @@
        case GSMD_SMS_LIST:
        case GSMD_SMS_READ:
                sms = (struct gsmd_sms_list *) ((void *) gmh + sizeof(*gmh));
+               if(sms->payload.is_voicemail)
+                       printf("it's a voicemail \n");
                printf("%s message %i from/to %s%s, at %i%i-%i%i-%i%i "
                                "%i%i:%i%i:%i%i, GMT%c%i\n",
                                msgtype[sms->stat], sms->index,




--- End Message ---
--- Begin Message ---
Author: tick
Date: 2007-10-25 13:48:53 +0200 (Thu, 25 Oct 2007)
New Revision: 3266

Modified:
   trunk/src/target/gsm/src/libgsmd/libgsmd.c
Log:
adding return rc to lgsm_send_simple (Andrzej Zaborowski)


Modified: trunk/src/target/gsm/src/libgsmd/libgsmd.c
===================================================================
--- trunk/src/target/gsm/src/libgsmd/libgsmd.c  2007-10-25 10:35:26 UTC (rev 
3265)
+++ trunk/src/target/gsm/src/libgsmd/libgsmd.c  2007-10-25 11:48:53 UTC (rev 
3266)
@@ -222,11 +222,7 @@
        if (!gmh)
                return -ENOMEM;
        rc = lgsm_send(lh, gmh);
-       if (rc < gmh->len + sizeof(*gmh)) {
-               lgsm_gmh_free(gmh);
-               return -EIO;
-       }
-       lgsm_gmh_free(gmh);
 
-       return 0;
+       lgsm_gmh_free(gmh);
+       return rc;
 }




--- End Message ---
--- Begin Message ---
Author: tick
Date: 2007-10-25 13:53:03 +0200 (Thu, 25 Oct 2007)
New Revision: 3267

Modified:
   trunk/src/target/gsm/include/gsmd/event.h
   trunk/src/target/gsm/include/gsmd/usock.h
   trunk/src/target/gsm/src/gsmd/atcmd.c
   trunk/src/target/gsm/src/gsmd/unsolicited.c
   trunk/src/target/gsm/src/util/event.c
Log:
handle CME and CMS errors (Erin Yueh)


Modified: trunk/src/target/gsm/include/gsmd/event.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/event.h   2007-10-25 11:48:53 UTC (rev 
3266)
+++ trunk/src/target/gsm/include/gsmd/event.h   2007-10-25 11:53:03 UTC (rev 
3267)
@@ -18,6 +18,7 @@
        GSMD_EVT_CIPHER         = 13,   /* Chiphering Information */
        GSMD_EVT_IN_CBM         = 14,   /* Incoming Cell Broadcat message */
        GSMD_EVT_IN_DS          = 15,   /* SMS Status Report */
+       GSMD_EVT_IN_ERROR       = 16,   /* CME/CMS error */
        __NUM_GSMD_EVT
 };
 

Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h   2007-10-25 11:48:53 UTC (rev 
3266)
+++ trunk/src/target/gsm/include/gsmd/usock.h   2007-10-25 11:53:03 UTC (rev 
3267)
@@ -2,7 +2,8 @@
 #define _GSMD_USOCK_H
 
 #include <gsmd/event.h>
-
+#include <gsmd/ts0707.h>
+#include <gsmd/ts0705.h>
 #define GSMD_UNIX_SOCKET "\0gsmd"
 //#define GSMD_UNIX_SOCKET_TYPE SOCK_SEQPACKET
 #define GSMD_UNIX_SOCKET_TYPE SOCK_STREAM
@@ -361,8 +362,14 @@
                        u_int16_t net_state_gsm;
                        u_int16_t net_state_gprs;
                } cipher;
+               struct {
+                       enum gsm0707_cme_error number;
+               } cme_err;
+               struct {
+                       enum gsm0705_cms_error number;
+               } cms_err;
        } u;
-       u_int8_t data[0];
+       u_int8_t data[0];        
 } __attribute__ ((packed));
 
 /* Refer to GSM 07.05 subclause 3.5.4 */

Modified: trunk/src/target/gsm/src/gsmd/atcmd.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/atcmd.c       2007-10-25 11:48:53 UTC (rev 
3266)
+++ trunk/src/target/gsm/src/gsmd/atcmd.c       2007-10-25 11:53:03 UTC (rev 
3267)
@@ -206,6 +206,7 @@
        struct gsmd_atcmd *cmd = NULL;
        int rc = 0;
        int cme_error = 0;
+       int cms_error = 0;
 
        DEBUGP("buf=`%s'(%d)\n", buf, len);
 
@@ -269,6 +270,7 @@
                        DEBUGP("error number %lu\n", err_nr);
                        if (cmd)
                                cmd->ret = err_nr;
+                       cms_error = 1;
                        goto final_cb;
                }
 
@@ -399,6 +401,9 @@
 
        if (cmd && cme_error)
                generate_event_from_cme(g, cmd->ret);
+       
+       if (cmd && cms_error)
+               generate_event_from_cms(g, cmd->ret);
 
        if (!cmd->cb) {
                gsmd_log(GSMD_NOTICE, "command without cb!!!\n");

Modified: trunk/src/target/gsm/src/gsmd/unsolicited.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/unsolicited.c 2007-10-25 11:48:53 UTC (rev 
3266)
+++ trunk/src/target/gsm/src/gsmd/unsolicited.c 2007-10-25 11:53:03 UTC (rev 
3267)
@@ -441,13 +441,13 @@
        GSM0707_CME_SIM_NOT_INSERTED,
        GSM0707_CME_SIM_PIN_REQUIRED,
        GSM0707_CME_SIM_PUK_REQUIRED,
-       GSM0707_CME_SIM_FAILURE,
+/*     GSM0707_CME_SIM_FAILURE,
        GSM0707_CME_SIM_BUSY,
-       GSM0707_CME_SIM_WRONG,
+       GSM0707_CME_SIM_WRONG,*/
        GSM0707_CME_SIM_PIN2_REQUIRED,
        GSM0707_CME_SIM_PUK2_REQUIRED,
-       GSM0707_CME_MEMORY_FULL,
-       GSM0707_CME_MEMORY_FAILURE,
+/*     GSM0707_CME_MEMORY_FULL,
+       GSM0707_CME_MEMORY_FAILURE,*/    
        GSM0707_CME_NETPERS_PIN_REQUIRED,
        GSM0707_CME_NETPERS_PUK_REQUIRED,
        GSM0707_CME_NETSUBSET_PIN_REQUIRED,
@@ -470,84 +470,106 @@
        return 0;
 }
 
-
 int generate_event_from_cme(struct gsmd *g, unsigned int cme_error)
 {
        struct gsmd_ucmd *gu;
        struct gsmd_evt_auxdata *eaux;
-       if (!is_in_array(cme_error, errors_creating_events,
-                        ARRAY_SIZE(errors_creating_events)))
-               return 0;
+
+       if (!is_in_array(cme_error, errors_creating_events,
+               ARRAY_SIZE(errors_creating_events))) {
+
+               gu = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_IN_ERROR, 
sizeof(*eaux));
+               if (!gu)
+                       return -1;
+               eaux = ((void *)gu) + sizeof(*gu);
+               eaux->u.cme_err.number = cme_error;
+               return usock_evt_send(g, gu, GSMD_EVT_IN_ERROR);
+       }
+       else {
+               gu = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_PIN, 
sizeof(*eaux));
+               if (!gu)
+                       return -1;
+               eaux = ((void *)gu) + sizeof(*gu);
        
-       gu = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_PIN, sizeof(*eaux));
+               switch (cme_error) {
+               case GSM0707_CME_PH_SIM_PIN_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_SIM_PIN;
+                       break;
+               case GSM0707_CME_PH_FSIM_PIN_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_FSIM_PIN;
+                       break;
+               case GSM0707_CME_PH_FSIM_PUK_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_FSIM_PUK;
+                       break;
+               case GSM0707_CME_SIM_PIN_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_SIM_PIN;
+                       break;
+               case GSM0707_CME_SIM_PUK_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_SIM_PUK;
+                       break;
+               case GSM0707_CME_SIM_PIN2_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_SIM_PIN2;
+                       break;
+               case GSM0707_CME_SIM_PUK2_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_SIM_PUK2;
+                       break;
+               case GSM0707_CME_NETPERS_PIN_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_NET_PIN;
+                       break;
+               case GSM0707_CME_NETPERS_PUK_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_NET_PUK;
+                       break;
+               case GSM0707_CME_NETSUBSET_PIN_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_NETSUB_PIN;
+                       break;
+               case GSM0707_CME_NETSUBSET_PUK_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_NETSUB_PUK;
+                       break;
+               case GSM0707_CME_PROVIDER_PIN_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_SP_PIN;
+                       break;
+               case GSM0707_CME_PROVIDER_PUK_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_SP_PUK;
+                       break;
+               case GSM0707_CME_CORPORATE_PIN_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_CORP_PIN;
+                       break;
+               case GSM0707_CME_CORPORATE_PUK_REQUIRED:
+                       eaux->u.pin.type = GSMD_PIN_PH_CORP_PUK;
+                       break;
+       
+               case GSM0707_CME_SIM_FAILURE:
+               case GSM0707_CME_SIM_BUSY:
+               case GSM0707_CME_SIM_WRONG:
+               case GSM0707_CME_MEMORY_FULL:
+               case GSM0707_CME_MEMORY_FAILURE:
+               case GSM0707_CME_PHONE_FAILURE:
+               case GSM0707_CME_PHONE_NOCONNECT:
+               case GSM0707_CME_PHONE_ADAPT_RESERVED:
+               case GSM0707_CME_SIM_NOT_INSERTED:
+                       /* FIXME */
+                       talloc_free(gu);
+                       return 0;
+                       break;
+               default:
+                       talloc_free(gu);
+                       return 0;
+                       break;
+               }
+               return usock_evt_send(g, gu, GSMD_EVT_PIN);
+       }
+}
+
+int generate_event_from_cms(struct gsmd *g, unsigned int cms_error)
+{
+       struct gsmd_ucmd *gu;
+       struct gsmd_evt_auxdata *eaux;
+       
+       gu = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_IN_ERROR, 
sizeof(*eaux));
        if (!gu)
                return -1;
        eaux = ((void *)gu) + sizeof(*gu);
+       eaux->u.cms_err.number = cms_error;
+       return usock_evt_send(g, gu, GSMD_EVT_IN_ERROR);
+}
 
-       switch (cme_error) {
-       case GSM0707_CME_PH_SIM_PIN_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_SIM_PIN;
-               break;
-       case GSM0707_CME_PH_FSIM_PIN_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_FSIM_PIN;
-               break;
-       case GSM0707_CME_PH_FSIM_PUK_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_FSIM_PUK;
-               break;
-       case GSM0707_CME_SIM_PIN_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_SIM_PIN;
-               break;
-       case GSM0707_CME_SIM_PUK_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_SIM_PUK;
-               break;
-       case GSM0707_CME_SIM_PIN2_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_SIM_PIN2;
-               break;
-       case GSM0707_CME_SIM_PUK2_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_SIM_PUK2;
-               break;
-       case GSM0707_CME_NETPERS_PIN_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_NET_PIN;
-               break;
-       case GSM0707_CME_NETPERS_PUK_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_NET_PUK;
-               break;
-       case GSM0707_CME_NETSUBSET_PIN_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_NETSUB_PIN;
-               break;
-       case GSM0707_CME_NETSUBSET_PUK_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_NETSUB_PUK;
-               break;
-       case GSM0707_CME_PROVIDER_PIN_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_SP_PIN;
-               break;
-       case GSM0707_CME_PROVIDER_PUK_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_SP_PUK;
-               break;
-       case GSM0707_CME_CORPORATE_PIN_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_CORP_PIN;
-               break;
-       case GSM0707_CME_CORPORATE_PUK_REQUIRED:
-               eaux->u.pin.type = GSMD_PIN_PH_CORP_PUK;
-               break;
-
-       case GSM0707_CME_SIM_FAILURE:
-       case GSM0707_CME_SIM_BUSY:
-       case GSM0707_CME_SIM_WRONG:
-       case GSM0707_CME_MEMORY_FULL:
-       case GSM0707_CME_MEMORY_FAILURE:
-       case GSM0707_CME_PHONE_FAILURE:
-       case GSM0707_CME_PHONE_NOCONNECT:
-       case GSM0707_CME_PHONE_ADAPT_RESERVED:
-       case GSM0707_CME_SIM_NOT_INSERTED:
-               /* FIXME */
-               talloc_free(gu);
-               return 0;
-               break;
-       default:
-               talloc_free(gu);
-               return 0;
-               break;
-       }
-       return usock_evt_send(g, gu, GSMD_EVT_PIN);
-}

Modified: trunk/src/target/gsm/src/util/event.c
===================================================================
--- trunk/src/target/gsm/src/util/event.c       2007-10-25 11:48:53 UTC (rev 
3266)
+++ trunk/src/target/gsm/src/util/event.c       2007-10-25 11:53:03 UTC (rev 
3267)
@@ -233,6 +233,16 @@
        return 0;
 }
 
+static int error_handler(struct lgsm_handle *lh, int evt, struct 
gsmd_evt_auxdata *aux)
+{
+       if(aux->u.cme_err.number)
+               printf("cme error: %u\n", aux->u.cme_err.number);
+       else if(aux->u.cms_err.number)
+               printf("cme error: %u\n", aux->u.cms_err.number);
+               
+       return 0;
+}
+
 int event_init(struct lgsm_handle *lh)
 {
        int rc;
@@ -246,7 +256,7 @@
        rc |= lgsm_evt_handler_register(lh, GSMD_EVT_NETREG, &netreg_handler);
        rc |= lgsm_evt_handler_register(lh, GSMD_EVT_SIGNAL, &sigq_handler);
        rc |= lgsm_evt_handler_register(lh, GSMD_EVT_OUT_STATUS, 
&cprog_handler);
-
+       rc |= lgsm_evt_handler_register(lh, GSMD_EVT_IN_ERROR, &error_handler);
        return rc;
 }
 




--- End Message ---
--- Begin Message ---
Author: tick
Date: 2007-10-25 13:56:22 +0200 (Thu, 25 Oct 2007)
New Revision: 3268

Modified:
   trunk/src/target/gsm/src/gsmd/vendor_ti.c
Log:
Patch to enable CPHS ( Common PCN Handset Specification),
and retrieve the voicemail number from SIM card for TI vendor.(Erin Yueh)


Modified: trunk/src/target/gsm/src/gsmd/vendor_ti.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/vendor_ti.c   2007-10-25 11:53:03 UTC (rev 
3267)
+++ trunk/src/target/gsm/src/gsmd/vendor_ti.c   2007-10-25 11:56:22 UTC (rev 
3268)
@@ -245,6 +245,38 @@
        /* %CGEV: reports GPRS network events */
 };
 
+static int cpmb_detect_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+{
+       struct gsmd *g = ctx;
+       struct gsm_extrsp *er;
+       int rc;
+       char atcmd_buf[20];
+
+       if (strncmp(resp, "%CPMB: ", 7))
+               return -EINVAL;
+       resp += 7;
+       
+       er = extrsp_parse(cmd, resp);
+       if (!er)
+               return -ENOMEM;
+
+       extrsp_dump(er);
+
+       if (er->num_tokens == 5 &&
+           er->tokens[2].type == GSMD_ECMD_RTT_STRING &&
+               er->tokens[3].type == GSMD_ECMD_RTT_NUMERIC &&
+               er->tokens[4].type == GSMD_ECMD_RTT_STRING)
+               rc = sprintf(atcmd_buf, "AT+CSVM=1,\"%s\",%d", 
+                       er->tokens[2].u.string, er->tokens[3].u.numeric);
+
+       if(rc)
+               return gsmd_simplecmd(g, atcmd_buf);
+
+       talloc_free(er);
+
+       return rc;
+}
+
 static int cpi_detect_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
 {
        struct gsmd *g = ctx;
@@ -257,7 +289,12 @@
        er = extrsp_parse(cmd, resp);
        if (!er)
                return -EINVAL;
-
+       
+       /* retrieve voicemail number */
+       cmd = atcmd_fill("AT%CPMB=1", 10, &cpmb_detect_cb, g, 0);
+       if (cmd)
+               atcmd_submit(g, cmd);
+       
        if (extrsp_supports(er, 0, 3))
                return gsmd_simplecmd(g, "AT%CPI=3");
        else if (extrsp_supports(er, 0, 2))
@@ -292,7 +329,9 @@
        rc |= gsmd_simplecmd(g, "AT%CSQ=1");
        /* send unsolicited commands at any time */
        rc |= gsmd_simplecmd(g, "AT%CUNS=0");
-
+       /* enable %CPHS: Initialise CPHS Functionalities */
+       rc |= gsmd_simplecmd(g, "AT%CPHS=1");
+       
        /* enable %CPI: call progress indication */
        cmd = atcmd_fill("AT%CPI=?", 9, &cpi_detect_cb, g, 0);
        if (cmd)




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2007-10-25 15:41:39 +0200 (Thu, 25 Oct 2007)
New Revision: 3269

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
   
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/detail-area.c
Log:
* src/detail-area.c: (detail_area_update_info): Check for NULL before
  unreferencing the pixbuf


Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-10-25 11:56:22 UTC (rev 3268)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-10-25 13:41:39 UTC (rev 3269)
@@ -1,3 +1,8 @@
+2007-10-25  Thomas Wood  <[EMAIL PROTECTED]>
+
+       * src/detail-area.c: (detail_area_update_info): Check for NULL before
+         unreferencing the pixbuf
+
 2007-10-05  Thomas Wood  <[EMAIL PROTECTED]>
 
        * configure.ac:

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/detail-area.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/detail-area.c  
    2007-10-25 11:56:22 UTC (rev 3268)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/detail-area.c  
    2007-10-25 13:41:39 UTC (rev 3269)
@@ -199,7 +199,7 @@
 
       g_free (dep);
     }
-
-  g_object_unref (pix);
+  if (pix)
+    g_object_unref (pix);
 }
 




--- End Message ---
--- Begin Message ---
Author: thomas
Date: 2007-10-25 16:40:15 +0200 (Thu, 25 Oct 2007)
New Revision: 3270

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
   
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
   trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c
Log:
* src/appmanager-window.c: (main): Add notebook for list/details
seperation as per OpenMoko 2007.2 style
* src/tool-box.c: (tool_box_new): Fix toolbar


Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-10-25 13:41:39 UTC (rev 3269)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog      
2007-10-25 14:40:15 UTC (rev 3270)
@@ -1,5 +1,11 @@
 2007-10-25  Thomas Wood  <[EMAIL PROTECTED]>
 
+       * src/appmanager-window.c: (main): Add notebook for list/details
+       seperation as per OpenMoko 2007.2 style
+       * src/tool-box.c: (tool_box_new): Fix toolbar
+
+2007-10-25  Thomas Wood  <[EMAIL PROTECTED]>
+
        * src/detail-area.c: (detail_area_update_info): Check for NULL before
          unreferencing the pixbuf
 

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
        2007-10-25 13:41:39 UTC (rev 3269)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-window.c
        2007-10-25 14:40:15 UTC (rev 3270)
@@ -47,6 +47,7 @@
   GtkWidget       *navigation;
   GtkWidget       *toolbox;
   GtkWidget       *detail;
+  GtkWidget       *notebook;
 
   //GtkWidget       *menubox;
   GtkWidget *vbox;
@@ -79,6 +80,7 @@
 
   /* main vbox */
   vbox = gtk_vbox_new (FALSE, 0);
+  gtk_container_add (GTK_CONTAINER (appdata->mwindow), vbox);
 
   appmenu = application_menu_new (appdata);
 
@@ -110,16 +112,20 @@
 
   toolbox = tool_box_new (appdata);
   gtk_box_pack_start (GTK_BOX (vbox), toolbox, FALSE, FALSE, 0);
-  //moko_paned_window_add_toolbox (window, toolbox);
 
+  notebook = gtk_notebook_new ();
+  gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_BOTTOM);
+  gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
+
   navigation = navigation_area_new (appdata);
-  gtk_box_pack_start (GTK_BOX (vbox), navigation, TRUE, TRUE, 0);
-  //moko_paned_window_set_navigation_pane (window, navigation);
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), navigation,
+     gtk_image_new_from_stock (GTK_STOCK_INDEX, GTK_ICON_SIZE_LARGE_TOOLBAR));
+  gtk_container_child_set (GTK_CONTAINER (notebook), navigation, "tab-expand", 
TRUE, NULL);
 
   detail = detail_area_new (appdata);
-  gtk_box_pack_start (GTK_BOX (vbox), detail, TRUE, TRUE, 0);
-  //moko_paned_window_set_details_pane (window, detail);
-  gtk_container_add (GTK_CONTAINER (appdata->mwindow), vbox);
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), detail,
+     gtk_image_new_from_stock (GTK_STOCK_FILE, GTK_ICON_SIZE_LARGE_TOOLBAR));
+  gtk_container_child_set (GTK_CONTAINER (notebook), detail, "tab-expand", 
TRUE, NULL);
 
   /* Load the list of all package in the memory */
   ret = init_package_list (appdata);

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c 
2007-10-25 13:41:39 UTC (rev 3269)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/tool-box.c 
2007-10-25 14:40:15 UTC (rev 3270)
@@ -180,12 +180,16 @@
   g_signal_connect ((gpointer)bupgrade, "clicked",
                     G_CALLBACK (on_upgrade_clicked), 
                     appdata);
+  gtk_toolbar_insert (GTK_TOOLBAR (toolbox), bupgrade, -1);
+  gtk_container_child_set (GTK_CONTAINER (toolbox), bupgrade, "expand", TRUE, 
NULL);
 
   anImage = gtk_image_new_from_file (PKGDATADIR "/Apply.png");
   bapply = gtk_tool_button_new (anImage, "Apply");
   g_signal_connect ((gpointer)bapply, "clicked",
                     G_CALLBACK (on_apply_clicked), 
                     appdata);
+  gtk_toolbar_insert (GTK_TOOLBAR (toolbox), bapply, -1);
+  gtk_container_child_set (GTK_CONTAINER (toolbox), bapply, "expand", TRUE, 
NULL);
 #if 0
   searchentry = moko_tool_box_get_entry (toolbox);
   application_manager_data_set_search_entry (appdata, GTK_ENTRY (searchentry));




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

Reply via email to