Add utility for parsing MWI SMS DCS types

This commit is contained in:
Denis Kenzior 2009-06-05 17:56:11 -05:00
parent 219a94a502
commit f9f3080781
2 changed files with 56 additions and 0 deletions

View File

@ -172,6 +172,50 @@ gboolean sms_dcs_decode(guint8 dcs, enum sms_class *cls,
return TRUE;
}
gboolean sms_mwi_dcs_decode(guint8 dcs, enum sms_mwi_type *type,
enum sms_charset *charset,
gboolean *active, gboolean *discard)
{
guint8 upper = (dcs & 0xf0) >> 4;
enum sms_mwi_type t;
enum sms_charset ch;
gboolean dis;
gboolean act;
if (upper < 0xC || upper > 0xE)
return FALSE;
upper = (dcs & 0x30) >> 4;
if (upper == 0)
dis = TRUE;
else
dis = FALSE;
if (upper == 3)
ch = SMS_CHARSET_UCS2;
else
ch = SMS_CHARSET_7BIT;
act = dcs & 0x8;
t = (enum sms_mwi_type) (dcs & 0x3);
if (type)
*type = t;
if (charset)
*charset = ch;
if (active)
*active = act;
if (discard)
*discard = dis;
return TRUE;
}
int sms_udl_in_bytes(guint8 ud_len, guint8 dcs)
{
int len_7bit = (ud_len + 1) * 7 / 8;

View File

@ -156,6 +156,13 @@ enum sms_charset {
SMS_CHARSET_UCS2 = 2,
};
enum sms_mwi_type {
SMS_MWI_TYPE_VOICE = 0,
SMS_MWI_TYPE_FAX = 1,
SMS_MWI_TYPE_EMAIL = 2,
SMS_MWI_TYPE_OTHER = 3,
};
struct sms_address {
enum sms_number_type number_type;
enum sms_numbering_plan numbering_plan;
@ -317,4 +324,9 @@ gboolean sms_udh_iter_next(struct sms_udh_iter *iter);
gboolean sms_dcs_decode(guint8 dcs, enum sms_class *cls,
enum sms_charset *charset,
gboolean *compressed, gboolean *autodelete);
gboolean sms_mwi_dcs_decode(guint8 dcs, enum sms_mwi_type *type,
enum sms_charset *charset,
gboolean *active, gboolean *discard);
#endif