# HG changeset patch # User Mychaela Falconia # Date 1613955639 0 # Node ID a33d4d8079d2fcbc3661a8bf4420891fba2addd2 # Parent 86b4f288862d844e139a1e018b8279b835b0c586 ota-set-msisdn utility written, compiles diff -r 86b4f288862d -r a33d4d8079d2 .hgignore --- a/.hgignore Mon Feb 22 00:41:12 2021 +0000 +++ b/.hgignore Mon Feb 22 01:00:39 2021 +0000 @@ -2,6 +2,8 @@ \.[oa]$ +^gen/ota-set-msisdn$ + ^smswrap/ota-smswrap-sjs1$ ^test/ota-smspp-envelope$ diff -r 86b4f288862d -r a33d4d8079d2 Makefile --- a/Makefile Mon Feb 22 00:41:12 2021 +0000 +++ b/Makefile Mon Feb 22 01:00:39 2021 +0000 @@ -1,9 +1,10 @@ -PROGDIR=smswrap test +PROGDIR=gen smswrap test LIBDIR= libutil SUBDIR= ${PROGDIR} ${LIBDIR} all: ${SUBDIR} +gen: libutil smswrap: libutil test: libutil diff -r 86b4f288862d -r a33d4d8079d2 gen/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gen/Makefile Mon Feb 22 01:00:39 2021 +0000 @@ -0,0 +1,17 @@ +CC= gcc +CFLAGS= -O2 +PROGS= ota-set-msisdn +LIBS= ../libutil/libutil.a +INSTBIN=/opt/freecalypso/bin + +all: ${PROGS} + +ota-set-msisdn: ota-set-msisdn.o ${LIBS} + ${CC} ${CFLAGS} -o $@ $@.o ${LIBS} + +install: + mkdir -p ${INSTBIN} + install -c ${PROGS} ${INSTBIN} + +clean: + rm -f ${PROGS} *.o diff -r 86b4f288862d -r a33d4d8079d2 gen/ota-set-msisdn.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gen/ota-set-msisdn.c Mon Feb 22 01:00:39 2021 +0000 @@ -0,0 +1,50 @@ +/* + * This program generates the OTA RFM payload (to be fed to ota-smswrap-* + * tools) for programming the MSISDN record. + */ + +#include +#include +#include +#include +#include + +main(argc, argv) + char **argv; +{ + int rc; + u_char record[80], *fixp; + unsigned record_len, n; + + if (argc < 3 || argc > 4) { + fprintf(stderr, + "usage: %s record-len phone-number [alpha-tag]\n", + argv[0]); + exit(1); + } + record_len = strtoul(argv[1], 0, 0); + if (record_len < 14 || record_len > 80) { + fprintf(stderr, + "error: specified MSISDN record length is out of range\n"); + exit(1); + } + memset(record, 0xFF, record_len); + fixp = record + record_len - 14; + rc = encode_phone_number_arg(argv[2], fixp, 0); + if (rc < 0) + exit(1); /* error msg already printed */ + if (argv[3]) { + rc = qstring_arg_to_gsm7(argv[3], record, record_len - 14); + if (rc < 0) + exit(1); /* error msg already printed */ + } + /* emit output */ + printf("A0A40000023F00\n"); /* SELECT MF */ + printf("A0A40000027F10\n"); /* SELECT DF_TELECOM */ + printf("A0A40000026F40\n"); /* SELECT EF_MSISDN */ + printf("A0DC0104%02X\n", record_len); /* UPDATE RECORD */ + for (n = 0; n < record_len; n++) + printf("%02X", record[n]); + putchar('\n'); + exit(0); +}