FreeCalypso > hg > freecalypso-sw
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 } |