FreeCalypso > hg > freecalypso-tools
comparison rvinterf/old/sendsp/sendsp.c @ 0:e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 11 Jun 2016 00:13:35 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:e7502631a0f9 |
---|---|
1 /* | |
2 * This hack-utility sends a GPF System Primitive given on the command line | |
3 * to a target GSM device via rvinterf. | |
4 */ | |
5 | |
6 #include <sys/types.h> | |
7 #include <stdio.h> | |
8 #include <string.h> | |
9 #include <strings.h> | |
10 #include <stdlib.h> | |
11 #include "pktmux.h" | |
12 #include "limits.h" | |
13 | |
14 char *socket_pathname = "/tmp/rvinterf_socket"; | |
15 | |
16 main(argc, argv) | |
17 char **argv; | |
18 { | |
19 char *stackdest, *primarg; | |
20 unsigned intlen; | |
21 u_char sendpkt[MAX_PKT_TO_TARGET]; | |
22 unsigned pktlen; | |
23 | |
24 if (argc < 3) { | |
25 usage: fprintf(stderr, "usage: %s [-s socket] stackdest primarg\n", | |
26 argv[0]); | |
27 exit(1); | |
28 } | |
29 if (strcmp(argv[1], "-s")) { | |
30 if (argc != 3) | |
31 goto usage; | |
32 stackdest = argv[1]; | |
33 primarg = argv[2]; | |
34 } else { | |
35 if (argc != 5) | |
36 goto usage; | |
37 socket_pathname = argv[2]; | |
38 stackdest = argv[3]; | |
39 primarg = argv[4]; | |
40 } | |
41 if (strlen(stackdest) > 4) { | |
42 fprintf(stderr, | |
43 "error: stack destination arg may not exceed 4 characters\n"); | |
44 exit(1); | |
45 } | |
46 intlen = 12 + strlen(primarg) + 1; | |
47 pktlen = intlen + 4; | |
48 if (pktlen > MAX_PKT_TO_TARGET) { | |
49 fprintf(stderr, "error: max pkt to target limit exceeded\n"); | |
50 exit(1); | |
51 } | |
52 /* fill out the packet */ | |
53 sendpkt[0] = RVT_L23_HEADER; | |
54 sendpkt[1] = 0xB7; /* system prim */ | |
55 sendpkt[2] = intlen; | |
56 sendpkt[3] = intlen >> 8; | |
57 /* send zeros for the timestamp */ | |
58 sendpkt[4] = 0; | |
59 sendpkt[5] = 0; | |
60 sendpkt[6] = 0; | |
61 sendpkt[7] = 0; | |
62 /* as far as TI's sw is concerned, we are PCO */ | |
63 sendpkt[8] = 'P'; | |
64 sendpkt[9] = 'C'; | |
65 sendpkt[10] = 'O'; | |
66 sendpkt[11] = ' '; | |
67 sprintf(sendpkt + 12, "%-4s%s", stackdest, primarg); | |
68 /* send it! */ | |
69 send_pkt_to_target(sendpkt, pktlen); | |
70 exit(0); | |
71 } |