Sync froyo ril blob from hyc's codebase.
[xdandroid:rootfs.git] / sms_gsm.h
1 #ifndef _android_sms_h
2 #define _android_sms_h
3
4 #include <time.h>
5
6 /** MESSAGE TEXT
7  **/
8 /* convert a quoted message text into a utf8 string. Note: you can use 'str' as the destination buffer
9  * with the current implementation. always return the number of utf8 bytes corresponding to the original
10  * message string, even if utf8 is NULL and utf8len is 0
11  */
12 extern int  sms_utf8_from_message_str( const char*  str, int  strlen, unsigned char*  utf8, int  utf8len );
13
14 /** TIMESTAMPS
15  **/
16
17 /* An SMS timestamp structure */
18 typedef struct {
19     unsigned char  data[7];
20 } SmsTimeStampRec, *SmsTimeStamp;
21
22 extern void  sms_timestamp_now( SmsTimeStamp  stamp );
23 extern int   sms_timestamp_to_tm( SmsTimeStamp  stamp, struct tm*  tm );
24
25 /** SMS ADDRESSES
26  **/
27
28 #define  SMS_ADDRESS_MAX_SIZE  16
29
30 typedef struct {
31     unsigned char  len;
32     unsigned char  toa;
33     unsigned char  data[ SMS_ADDRESS_MAX_SIZE ];
34 } SmsAddressRec, *SmsAddress;
35
36 extern int  sms_address_from_str( SmsAddress  address, const char*  src, int  srclen );
37 extern int  sms_address_to_str( SmsAddress  address, char*  src, int  srclen );
38
39 extern int  sms_address_from_bytes( SmsAddress  address, const unsigned char*  buf, int  buflen );
40 extern int  sms_address_to_bytes  ( SmsAddress  address, unsigned char*  buf, int  bufsize );
41 extern int  sms_address_from_hex  ( SmsAddress  address, const char*  hex, int  hexlen );
42 extern int  sms_address_to_hex    ( SmsAddress  address, char*   hex, int  hexsize );
43
44 /** SMS PROTOCOL DATA UNITS
45  **/
46
47 typedef struct SmsPDURec*   SmsPDU;
48
49 extern SmsPDU*  smspdu_create_deliver_utf8( const unsigned char*   utf8,
50                                             int                    utf8len,
51                                             const SmsAddressRec*   sender_address,
52                                             const SmsTimeStampRec* timestamp );
53
54 extern void     smspdu_free_list( SmsPDU*  pdus );
55
56 extern SmsPDU   smspdu_create_from_hex( const char*  hex, int  hexlen );
57
58 extern int      smspdu_to_hex( SmsPDU  pdu, char*  hex, int  hexsize );
59
60 /* free a given SMS PDU */
61 extern void     smspdu_free( SmsPDU  pdu );
62
63 typedef enum {
64     SMS_PDU_INVALID = 0,
65     SMS_PDU_DELIVER,
66     SMS_PDU_SUBMIT,
67     SMS_PDU_STATUS_REPORT
68 } SmsPduType;
69
70 extern SmsPduType    smspdu_get_type( SmsPDU  pdu );
71
72 /* retrieve the sender address of a SMS-DELIVER pdu, returns -1 otherwise */
73 extern int  smspdu_get_sender_address( SmsPDU  pdu, SmsAddress  address );
74
75 /* retrieve the service center timestamp of a SMS-DELIVER pdu, return -1 otherwise */
76 extern int  smspdu_get_sc_timestamp( SmsPDU  pdu, SmsTimeStamp  timestamp );
77
78 /* retrieve the receiver address of a SMS-SUBMIT pdu, return -1 otherwise */
79 extern int  smspdu_get_receiver_address( SmsPDU  pdu, SmsAddress  address );
80
81 /* get the message embedded in a SMS PDU as a utf8 byte array, returns the length of the message in bytes */
82 /* or -1 in case of error */
83 extern int  smspdu_get_text_message( SmsPDU  pdu, unsigned char*  utf8, int  utf8len );
84
85 #endif /* _android_sms_h */