FreeCalypso > hg > sms-coding-utils
comparison gen-pdu/settings.c @ 9:003660a57f99
new program sms-gen-tpdu
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sat, 05 Aug 2023 07:43:45 +0000 |
| parents | |
| children | 5854e48d0ef7 |
comparison
equal
deleted
inserted
replaced
| 8:265b8103530c | 9:003660a57f99 |
|---|---|
| 1 /* | |
| 2 * This module implements functions for various settings that come before | |
| 3 * msg or msg-udh lines. | |
| 4 */ | |
| 5 | |
| 6 #include <sys/types.h> | |
| 7 #include <stdio.h> | |
| 8 #include <stdlib.h> | |
| 9 #include <string.h> | |
| 10 #include <strings.h> | |
| 11 #include "error.h" | |
| 12 | |
| 13 extern int dir_mo, include_sca; | |
| 14 extern u_char sc_addr[12], user_addr[12]; | |
| 15 extern u_char mr_byte, pid_byte, dcs_byte; | |
| 16 extern u_char scts_buf[7]; | |
| 17 extern int is_septet, scts_is_set; | |
| 18 | |
| 19 extern int input_lineno; | |
| 20 | |
| 21 void | |
| 22 set_sc_addr(argc, argv) | |
| 23 char **argv; | |
| 24 { | |
| 25 int rc; | |
| 26 | |
| 27 if (!include_sca) { | |
| 28 fprintf(stderr, ERR_PREFIX | |
| 29 "sc-addr is not allowed in bare TPDU mode\n", | |
| 30 input_lineno); | |
| 31 exit(1); | |
| 32 } | |
| 33 rc = encode_phone_number_arg(argv[1], sc_addr, 0); | |
| 34 if (rc < 0) { | |
| 35 fprintf(stderr, ERR_PREFIX "invalid phone number argument\n", | |
| 36 input_lineno); | |
| 37 exit(1); | |
| 38 } | |
| 39 } | |
| 40 | |
| 41 void | |
| 42 set_user_addr(argc, argv) | |
| 43 char **argv; | |
| 44 { | |
| 45 int rc; | |
| 46 | |
| 47 rc = encode_phone_number_arg(argv[1], user_addr, 1); | |
| 48 if (rc < 0) { | |
| 49 fprintf(stderr, ERR_PREFIX "invalid phone number argument\n", | |
| 50 input_lineno); | |
| 51 exit(1); | |
| 52 } | |
| 53 } | |
| 54 | |
| 55 void | |
| 56 set_mr_byte(argc, argv) | |
| 57 char **argv; | |
| 58 { | |
| 59 char *endp; | |
| 60 | |
| 61 if (!dir_mo) { | |
| 62 fprintf(stderr, ERR_PREFIX "mr is not allowed in MT mode\n", | |
| 63 input_lineno); | |
| 64 exit(1); | |
| 65 } | |
| 66 mr_byte = strtoul(argv[1], &endp, 0); | |
| 67 if (*endp) { | |
| 68 fprintf(stderr, ERR_PREFIX "invalid byte value argument\n", | |
| 69 input_lineno); | |
| 70 exit(1); | |
| 71 } | |
| 72 } | |
| 73 | |
| 74 void | |
| 75 set_pid_byte(argc, argv) | |
| 76 char **argv; | |
| 77 { | |
| 78 char *endp; | |
| 79 | |
| 80 pid_byte = strtoul(argv[1], &endp, 0); | |
| 81 if (*endp) { | |
| 82 fprintf(stderr, ERR_PREFIX "invalid byte value argument\n", | |
| 83 input_lineno); | |
| 84 exit(1); | |
| 85 } | |
| 86 } | |
| 87 | |
| 88 void | |
| 89 set_dcs(argc, argv) | |
| 90 char **argv; | |
| 91 { | |
| 92 char *endp; | |
| 93 | |
| 94 dcs_byte = strtoul(argv[1], &endp, 0); | |
| 95 if (*endp) { | |
| 96 fprintf(stderr, ERR_PREFIX "invalid byte value argument\n", | |
| 97 input_lineno); | |
| 98 exit(1); | |
| 99 } | |
| 100 if (!strcmp(argv[2], "septet")) | |
| 101 is_septet = 1; | |
| 102 else if (!strcmp(argv[2], "octet")) | |
| 103 is_septet = 0; | |
| 104 else { | |
| 105 fprintf(stderr, ERR_PREFIX "invalid septet/octet mode kw\n", | |
| 106 input_lineno); | |
| 107 exit(1); | |
| 108 } | |
| 109 } | |
| 110 | |
| 111 void | |
| 112 set_scts(argc, argv) | |
| 113 char **argv; | |
| 114 { | |
| 115 int rc; | |
| 116 | |
| 117 if (dir_mo) { | |
| 118 fprintf(stderr, ERR_PREFIX "sc-ts is not allowed in MO mode\n", | |
| 119 input_lineno); | |
| 120 exit(1); | |
| 121 } | |
| 122 rc = encode_gsm_sms_abstime(argv[1], scts_buf); | |
| 123 if (rc < 0) { | |
| 124 fprintf(stderr, ERR_PREFIX "invalid timestamp argument\n", | |
| 125 input_lineno); | |
| 126 exit(1); | |
| 127 } | |
| 128 scts_is_set = 1; | |
| 129 } |
