diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2009-08-13 20:30:46 +0200 |
---|---|---|
committer | Daniel Willmann <daniel@totalueberwachung.de> | 2009-08-13 20:30:46 +0200 |
commit | bc9e9f856b6bf2a82d64d5cb6fc31b065044cc75 (patch) | |
tree | a6e878f2cd24f35eb88a602335ff91cba6d3fcbd /openbsc/src/gsm_04_11.c | |
parent | 7f69816144a603099c785d34f35fa16f9866a2df (diff) | |
parent | eea9337e9e0684dcd1056af395613fdcca68b124 (diff) |
Merge commit 'har/laforge'
Diffstat (limited to 'openbsc/src/gsm_04_11.c')
-rw-r--r-- | openbsc/src/gsm_04_11.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c index 05e55d4dc..e1b417a86 100644 --- a/openbsc/src/gsm_04_11.c +++ b/openbsc/src/gsm_04_11.c @@ -175,6 +175,10 @@ static unsigned long gsm340_validity_period(u_int8_t sms_vpf, u_int8_t *sms_vp) /* FIXME: implementation */ DEBUGP(DSMS, "VPI enhanced not implemented yet\n"); break; + case GSM340_TP_VPF_NONE: + /* Default validity: two days */ + minutes = 24 * 60 * 2; + break; } return minutes; } @@ -272,6 +276,7 @@ static int gsm340_gen_tpdu(struct msgb *msg, struct gsm_sms *sms) u_int8_t *smsp; u_int8_t oa[12]; /* max len per 03.40 */ u_int8_t oa_len = 0; + u_int8_t octet_len; unsigned int old_msg_len = msg->len; /* generate first octet with masked bits */ @@ -317,10 +322,13 @@ static int gsm340_gen_tpdu(struct msgb *msg, struct gsm_sms *sms) /* generate TP-UD */ /* FIXME: Handle DSC of UCS2 or 8/bit default */ if (gsm338_get_sms_alphabet(sms->data_coding_scheme) == DCS_7BIT_DEFAULT) { + octet_len = sms->user_data_len*7/8; + if (sms->user_data_len*7%8 != 0) + octet_len++; /* Warning, user_data_len indicates the amount of septets * (characters), we need amount of octets occupied */ - smsp = msgb_put(msg, ceil(sms->user_data_len*7/8.0)); - memcpy(smsp, sms->user_data, ceil(sms->user_data_len*7/8.0)); + smsp = msgb_put(msg, octet_len); + memcpy(smsp, sms->user_data, octet_len); } return msg->len - old_msg_len; @@ -383,6 +391,9 @@ static int gsm340_rx_tpdu(struct msgb *msg) sms_vp = smsp; smsp += 7; break; + case GSM340_TP_VPF_NONE: + sms_vp = 0; + break; default: DEBUGP(DSMS, "SMS Validity period not implemented: 0x%02x\n", sms_vpf); @@ -954,6 +965,8 @@ static int subscr_sig_cb(unsigned int subsys, unsigned int signal, struct gsm_lchan *lchan; struct gsm_sms *sms; + u_int32_t token; + switch (signal) { case S_SUBSCR_ATTACHED: /* A subscriber has attached. Check if there are |