From 348c9af2fce8d0d53341d9861494b5c13f9796f1 Mon Sep 17 00:00:00 2001 From: laforge Date: Fri, 17 Aug 2007 08:29:08 +0000 Subject: From: Andrzej Zaborowski Date: Thu, 26 Jul 2007 00:32:38 +0200 Subject: [PATCH] SMSC and Preferred Storage operations. This adds setting and retrieval of SMS storage stats (memory type, used entries, all entries), and of the default service centre (SMSC) number for outgoing messages. The operation of setting a new SMSC number is untested because my SIM doesn't seem to allow this (that or I did something wrong). New "libgmsd-tool -m shell" commands for testing are also added. Other changes in this patch: * The third, optional, parameter to +CMGL: is a string, not an integer as I wrongly assumed earlier, this is now corrected. * Rename libgsmd API functions starting with lgsmd_.. to lgsm_.. for consistency with all other identifiers. * Move lgsm_send_simple() to libgsmd.c and add a prototype in lgsm_internals.h, this eliminates some compile-time warnings. git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@2720 99fdad57-331a-0410-800a-d7fa5415bdb3 --- include/gsmd/sms.h | 3 +++ include/gsmd/usock.h | 23 +++++++++++++++++++++++ include/libgsmd/misc.h | 5 ----- include/libgsmd/sms.h | 20 +++++++++++++++++--- 4 files changed, 43 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/gsmd/sms.h b/include/gsmd/sms.h index ac16509..3192472 100644 --- a/include/gsmd/sms.h +++ b/include/gsmd/sms.h @@ -11,6 +11,9 @@ int sms_pdu_make_smssubmit(char *dest, const struct gsmd_sms_submit *src); int sms_pdu_to_msg(struct gsmd_sms_list *dst, const u_int8_t *src, int pdulen, int len); +extern const char *ts0705_memtype_name[]; +int parse_memtype(char *memtype); + #endif /* __GSMD__ */ #endif diff --git a/include/gsmd/usock.h b/include/gsmd/usock.h index b60e28e..bcff129 100644 --- a/include/gsmd/usock.h +++ b/include/gsmd/usock.h @@ -329,6 +329,29 @@ struct gsmd_sms_list { int is_last; }; +/* Refer to GSM 07.05 subclause 3.1 */ +enum ts0705_mem_type { + GSM0705_MEMTYPE_NONE, + GSM0705_MEMTYPE_BROADCAST, + GSM0705_MEMTYPE_ME_MESSAGE, + GSM0705_MEMTYPE_MT, + GSM0705_MEMTYPE_SIM, + GSM0705_MEMTYPE_TA, + GSM0705_MEMTYPE_SR, +}; + +/* Refer to GSM 07.05 subclause 3.2.2 */ +struct __gsmd_sms_storage { + u_int8_t memtype; + u_int8_t pad[3]; + u_int16_t used; + u_int16_t total; +} __attribute__ ((packed)); + +struct gsmd_sms_storage { + struct __gsmd_sms_storage mem[3]; +} __attribute__ ((packed)); + /* Refer to GSM 07.07 subclause 8.12 */ struct gsmd_phonebook_readrg { u_int8_t index1; diff --git a/include/libgsmd/misc.h b/include/libgsmd/misc.h index 672b980..9988518 100644 --- a/include/libgsmd/misc.h +++ b/include/libgsmd/misc.h @@ -65,11 +65,6 @@ extern int lgsm_get_netreg_state(struct lgsm_handle *lh, /* CLIP, CLIR, COLP, Call Forwarding, Call Waiting, Call Deflecting */ /* TBD */ - -/* SMS related functions */ -/* TBD */ - - /* GPRS related functions */ /* TBD */ diff --git a/include/libgsmd/sms.h b/include/libgsmd/sms.h index 6a62c38..d389b21 100644 --- a/include/libgsmd/sms.h +++ b/include/libgsmd/sms.h @@ -61,16 +61,30 @@ extern int lgsm_sms_list(struct lgsm_handle *lh, enum gsmd_msg_sms_type stat); extern int lgsm_sms_read(struct lgsm_handle *lh, int index); /* Delete Message */ -extern int lgsmd_sms_delete(struct lgsm_handle *lh, +extern int lgsm_sms_delete(struct lgsm_handle *lh, const struct lgsm_sms_delete *sms_del); /* Send Message */ -extern int lgsmd_sms_send(struct lgsm_handle *lh, const struct lgsm_sms *sms); +extern int lgsm_sms_send(struct lgsm_handle *lh, const struct lgsm_sms *sms); /* Write Message to Memory */ -extern int lgsmd_sms_write(struct lgsm_handle *lh, +extern int lgsm_sms_write(struct lgsm_handle *lh, const struct lgsm_sms_write *sms_write); +/* Retrieve SMS storage information */ +extern int lgsm_sms_get_storage(struct lgsm_handle *lh); + +/* Set preferred SMS storage */ +extern int lgsm_sms_set_storage(struct lgsm_handle *lh, + enum ts0705_mem_type mem1, enum ts0705_mem_type mem2, + enum ts0705_mem_type mem3); + +/* Retrieve current default service centre address */ +extern int lgsm_sms_get_smsc(struct lgsm_handle *lh); + +/* Set new default service centre address */ +extern int lgsm_sms_set_smsc(struct lgsm_handle *lh, const char *number); + /* Packing of 7-bit characters, refer to GSM 03.38 subclause 6.1.2.1.1 */ extern int packing_7bit_character(const char *src, struct lgsm_sms *dest); -- cgit v1.2.3