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