FreeCalypso > hg > themwi-ota-tools
diff gen/ota-set-msisdn.c @ 7:a33d4d8079d2
ota-set-msisdn utility written, compiles
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 22 Feb 2021 01:00:39 +0000 |
parents | |
children |
line wrap: on
line diff
--- /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 <sys/types.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> + +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); +}