view rvinterf/misc/sendsp.c @ 328:5d9001f0c3aa
fc-sendsp: written, compiles
author |
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
date |
Sun, 20 Apr 2014 23:14:35 +0000 (2014-04-20) |
parents |
|
children |
|
line source
/*
* This hack-utility sends a GPF System Primitive given on the command line
* to a target GSM device via rvinterf.
*/
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>
#include "pktmux.h"
#include "limits.h"
char *socket_pathname = "/tmp/rvinterf_socket";
main(argc, argv)
char **argv;
{
char *stackdest, *primarg;
unsigned intlen;
u_char sendpkt[MAX_PKT_TO_TARGET];
unsigned pktlen;
if (argc < 3) {
usage: fprintf(stderr, "usage: %s [-s socket] stackdest primarg\n",
argv[0]);
exit(1);
}
if (strcmp(argv[1], "-s")) {
if (argc != 3)
goto usage;
stackdest = argv[1];
primarg = argv[2];
} else {
if (argc != 5)
goto usage;
socket_pathname = argv[2];
stackdest = argv[3];
primarg = argv[4];
}
if (strlen(stackdest) > 4) {
fprintf(stderr,
"error: stack destination arg may not exceed 4 characters\n");
exit(1);
}
intlen = 12 + strlen(primarg) + 1;
pktlen = intlen + 4;
if (pktlen > MAX_PKT_TO_TARGET) {
fprintf(stderr, "error: max pkt to target limit exceeded\n");
exit(1);
}
/* fill out the packet */
sendpkt[0] = RVT_L23_HEADER;
sendpkt[1] = 0xB7; /* system prim */
sendpkt[2] = intlen;
sendpkt[3] = intlen >> 8;
/* send zeros for the timestamp */
sendpkt[4] = 0;
sendpkt[5] = 0;
sendpkt[6] = 0;
sendpkt[7] = 0;
/* as far as TI's sw is concerned, we are PCO */
sendpkt[8] = 'P';
sendpkt[9] = 'C';
sendpkt[10] = 'O';
sendpkt[11] = ' ';
sprintf(sendpkt + 12, "%-4s%s", stackdest, primarg);
/* send it! */
send_pkt_to_target(sendpkt, pktlen);
exit(0);
}