diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2009-08-13 03:39:07 +0200 |
---|---|---|
committer | Harald Welte (local) <laflocal@hanuman.gnumonks.org> | 2009-08-13 16:35:00 +0200 |
commit | 9aef14547a721e96193e65be0a60eb94b34eb476 (patch) | |
tree | 3411a5f45c4d17a93bbb99274dfca9b0d17c3c17 /openbsc/src | |
parent | 58c83d8368c22a25f0bd8482cc031297c1bbcb4c (diff) |
Beautify septet->octet calculation (do not use ceil)
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/gsm_04_11.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c index 246847bf2..e1b417a86 100644 --- a/openbsc/src/gsm_04_11.c +++ b/openbsc/src/gsm_04_11.c @@ -276,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 */ @@ -321,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; |