From f243da86ed3c515740870ce0a817f2e768b420fe Mon Sep 17 00:00:00 2001 From: laforge Date: Sun, 15 Apr 2007 09:47:23 +0000 Subject: * add (still incomplete) SMS and phonebook support from Sean Chiang git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@1765 99fdad57-331a-0410-800a-d7fa5415bdb3 --- include/libgsmd/sms.h | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 include/libgsmd/sms.h (limited to 'include/libgsmd/sms.h') diff --git a/include/libgsmd/sms.h b/include/libgsmd/sms.h new file mode 100644 index 0000000..a07fc74 --- /dev/null +++ b/include/libgsmd/sms.h @@ -0,0 +1,114 @@ +#ifndef _LIBGSMD_SMS_H +#define _LIBGSMD_SMS_H + +#include + +/* Short Message Service */ + +/* Data Coding Scheme, refer to GSM 03.38 Clause 4 */ +#define B5_COMPRESSED (1<<5) +#define B4_CLASSMEANING (1<<4) +enum { + MESSAGE_CLASS_CLASS0 = 0x00, + MESSAGE_CLASS_CLASS1 = 0x01, + MESSAGE_CLASS_CLASS2 = 0x10, + MESSAGE_CLASS_CLASS3 = 0x11, +}; + +enum { + ALPHABET_DEFAULT = (0x00<<2), + ALPHABET_8BIT = (0x01<<2), + ALPHABET_UCS2 = (0x10<<2), + ALPHABET_RESERVED = (0x11<<2), +}; + +/* Coding of Alpha fields in the SIM for UCS2, (3GPP TS 11.11 Annex B) */ +//enum { + +//}; + + +/* SMS delflg from 3GPP TS 07.05, Clause 3.5.4 */ +enum lgsm_msg_sms_delflg { + LGSM_SMS_DELFLG_INDEX = 0, + LGSM_SMS_DELFLG_READ = 1, + LGSM_SMS_DELFLG_READ_SENT = 2, + LGSM_SMS_DELFLG_LEAVING_UNREAD = 3, + LGSM_SMS_DELFLG_ALL = 4, +}; + +/* SMS stat from 3GPP TS 07.05, Clause 3.1 */ +/* FIXME: only support PDU mode */ +enum lgsm_msg_sms_stat { + LGSM_SMS_REC_UNREAD = 0, + LGSM_SMS_REC_READ = 1, + LGSM_SMS_STO_UNSENT = 2, + LGSM_SMS_STO_SENT = 3, + LGSM_SMS_ALL = 4, +}; + +/* Refer to GSM 07.05 subclause 3.5.4 */ +struct lgsm_sms_delete { + int index; + enum lgsm_msg_sms_delflg delflg; +}; + +/* Refer to GSM 03.40 subclause 9.2.2.2 */ +#define LGSM_SMS_ADDR_MAXLEN 12 +#define LGSM_SMS_DATA_MAXLEN 140 +struct lgsm_sms { + /* FIXME: max length of data, + * 7 bit coding - 160(140*8/7); ucs2 coding - 70(140/2) */ + char addr[LGSM_SMS_ADDR_MAXLEN+1]; + char data[LGSM_SMS_DATA_MAXLEN+1]; +}; + +/* GSM 03.40 subclause 9.2.2.2 and GSM 07.05 subclause 4.4 and subclause 3.1 */ +struct lgsm_sms_write { + enum lgsm_msg_sms_stat stat; + struct lgsm_sms sms; +}; + +/* List Messages */ +extern int lgsm_sms_list(struct lgsm_handle *lh, enum gsmd_msg_sms_type stat); + +/* Read Message */ +extern int lgsm_sms_read(struct lgsm_handle *lh, int index); + +/* Delete Message */ +extern int lgsmd_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); + +/* Write Message to Memory */ +extern int lgsmd_sms_write(struct lgsm_handle *lh, + const struct lgsm_sms_write *sms_write); + +/* Packing of 7-bit characters, refer to GSM 03.38 subclause 6.1.2.1.1 */ +extern int packing_7bit_character(char *src, char *dest); + +/* Packing of 7-bit characters, refer to GSM 03.38 subclause 6.1.2.1.1 */ +extern int unpacking_7bit_character(char *src, char *dest); + +/* Refer to 3GPP TS 11.11 Annex B */ +extern int packing_UCS2_80(char *src, char *dest); + +/* Refer to 3GPP TS 11.11 Annex B */ +extern int unpacking_UCS2_80(char *src, char *dest); + +/* Refer to 3GPP TS 11.11 Annex B */ +extern int packing_UCS2_81(char *src, char *dest); + +/* Refer to 3GPP TS 11.11 Annex B */ +extern int unpacking_UCS2_81(char *src, char *dest); + +/* Refer to 3GPP TS 11.11 Annex B */ +extern int packing_UCS2_82(char *src, char *dest); + +/* Refer to 3GPP TS 11.11 Annex B */ +extern int unpacking_UCS2_82(char *src, char *dest); + +#endif + -- cgit v1.2.3