comparison rvinterf/tmsh/ffs2wr.c @ 264:0c938d8b5ba3

fc-tmsh: set-pcm-string and set-rfcap implemented
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Wed, 05 Feb 2014 10:19:21 +0000
parents b5b54feb111a
children
comparison
equal deleted inserted replaced
263:b5b54feb111a 264:0c938d8b5ba3
14 #include "etm.h" 14 #include "etm.h"
15 #include "ffs.h" 15 #include "ffs.h"
16 #include "tmffs2.h" 16 #include "tmffs2.h"
17 17
18 void 18 void
19 send_file_write(filename, data, size)
20 char *filename;
21 u_char *data;
22 {
23 u_char cmdpkt[MAX_PKT_TO_TARGET], *dp;
24
25 dp = cmdpkt + 1;
26 *dp++ = ETM_FFS2;
27 *dp++ = TMFFS_FILE_WRITE;
28 *dp++ = strlen(filename) + 1;
29 strcpy(dp, filename);
30 dp += strlen(filename) + 1;
31 *dp++ = size; /* data size in bytes */
32 bcopy(data, dp, size);
33 dp += size;
34 *dp++ = FFS_O_CREATE | FFS_O_TRUNC;
35 send_etm_cmd(cmdpkt, dp - cmdpkt - 1);
36 }
37
38 void
19 cmd_set_imeisv(argc, argv) 39 cmd_set_imeisv(argc, argv)
20 char **argv; 40 char **argv;
21 { 41 {
22 char *filename, *cp, digits[16]; 42 char *filename, *cp, digits[16];
23 u_char bytes[8], cmdpkt[MAX_PKT_TO_TARGET], *dp; 43 u_char bytes[8];
24 int pcm_order, i; 44 int pcm_order, i;
25 45
26 if (!strcmp(argv[1], "pcm")) { 46 if (!strcmp(argv[1], "pcm")) {
27 filename = "/pcm/IMEI"; 47 filename = "/pcm/IMEI";
28 pcm_order = 1; 48 pcm_order = 1;
52 bytes[i] = pcm_order ? digits[i*2+1] << 4 | digits[i*2] 72 bytes[i] = pcm_order ? digits[i*2+1] << 4 | digits[i*2]
53 : digits[i*2] << 4 | digits[i*2+1]; 73 : digits[i*2] << 4 | digits[i*2+1];
54 printf("Writing \"%02X %02X %02X %02X %02X %02X %02X %02X\" into %s\n", 74 printf("Writing \"%02X %02X %02X %02X %02X %02X %02X %02X\" into %s\n",
55 bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], 75 bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5],
56 bytes[6], bytes[7], filename); 76 bytes[6], bytes[7], filename);
57 dp = cmdpkt + 1; 77 send_file_write(filename, bytes, 8);
58 *dp++ = ETM_FFS2;
59 *dp++ = TMFFS_FILE_WRITE;
60 *dp++ = strlen(filename) + 1;
61 strcpy(dp, filename);
62 dp += strlen(filename) + 1;
63 *dp++ = 8; /* data size in bytes */
64 bcopy(bytes, dp, 8);
65 dp += 8;
66 *dp++ = FFS_O_CREATE | FFS_O_TRUNC;
67 send_etm_cmd(cmdpkt, dp - cmdpkt - 1);
68 } 78 }
79
80 void
81 cmd_set_pcm_string(argc, argv)
82 char **argv;
83 {
84 char filename[16];
85
86 if (strcmp(argv[1], "CGMI") && strcmp(argv[1], "CGMM") &&
87 strcmp(argv[1], "CGMR") && strcmp(argv[1], "CGSN")) {
88 printf("error: \"%s\" is not a recognized PCM string file name\n",
89 argv[1]);
90 return;
91 }
92 sprintf(filename, "/pcm/%s", argv[1]);
93 if (strlen(argv[2]) > 20) {
94 printf("error: %s string may not exceed 20 characters\n",
95 filename);
96 return;
97 }
98 send_file_write(filename, argv[2], strlen(argv[2]));
99 }
100
101 void
102 cmd_set_rfcap(argc, argv)
103 char **argv;
104 {
105 u_char bytes[16];
106 int i;
107
108 for (i = 0; i < 16; i++)
109 bytes[i] = strtoul(argv[i+1], 0, 16);
110 send_file_write("/gsm/com/rfcap", bytes, 16);
111 }