# HG changeset patch # User Mychaela Falconia # Date 1520144676 0 # Node ID 68c8cf672ecd16ae44e5065f33ee6d3704d535ef # Parent 061f8d75083d95e0bb985f4d884a737fa6e69fa4 uptools/libcoding: implemented generation of SMS-SUBMIT PDUs diff -r 061f8d75083d -r 68c8cf672ecd uptools/libcoding/Makefile --- a/uptools/libcoding/Makefile Sun Mar 04 05:16:34 2018 +0000 +++ b/uptools/libcoding/Makefile Sun Mar 04 06:24:36 2018 +0000 @@ -3,7 +3,7 @@ OBJS= alpha_addr.o decode_helpers.o grokdcs.o gsm7_decode.o \ gsm7_decode_tables.o gsm7_encode.o gsm7_encode_table.o gsm7_pack.o \ gsm7_unpack.o gsmtime.o hexdecode.o hexdump.o number_decode.o \ - number_encode.o scaddr.o ucs2_decode.o utf8_decode.o + number_encode.o scaddr.o sms_submit.o ucs2_decode.o utf8_decode.o LIB= libcoding.a all: ${LIB} diff -r 061f8d75083d -r 68c8cf672ecd uptools/libcoding/sms_submit.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uptools/libcoding/sms_submit.c Sun Mar 04 06:24:36 2018 +0000 @@ -0,0 +1,48 @@ +/* + * This library module implements the function for constructing outgoing + * SMS-SUBMIT PDUs. + */ + +#include +#include + +make_sms_submit_pdu(da, textsrc, textlen, udh, udhl, outbuf) + u_char *da, *textsrc, *udh, *outbuf; + unsigned textlen, udhl; +{ + u_char *outp = outbuf; + unsigned addr_field_len; + unsigned udh_octets, udh_chars; + u_char ud7[160]; + unsigned udl, udl_octets; + + if (udh) + *outp++ = 0x41; + else + *outp++ = 0x01; + *outp++ = 0; + addr_field_len = ((da[0] + 1) >> 1) + 2; + bcopy(da, outp, addr_field_len); + outp += addr_field_len; + *outp++ = 0; + *outp++ = 0; + if (udh) { + udh_octets = udhl + 1; + udh_chars = (udh_octets * 8 + 6) / 7; + } else { + udh_octets = 0; + udh_chars = 0; + } + udl = udh_chars + textlen; + *outp++ = udl; + udl_octets = (udl * 7 + 7) / 8; + bzero(ud7, 160); + bcopy(textsrc, ud7 + udh_chars, textlen); + gsm7_pack(ud7, outp, udl_octets); + if (udh) { + *outp = udhl; + bcopy(udh, outp + 1, udhl); + } + outp += udl_octets; + return (outp - outbuf); +}