FreeCalypso > hg > freecalypso-tools
comparison rvinterf/tmsh/l1resp.c @ 134:4c78649101f1
fc-tmsh: l1tm stats response display
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 20 Feb 2017 01:30:10 +0000 |
parents | 4aa1c18c7a2f |
children | 40807eb35ffe |
comparison
equal
deleted
inserted
replaced
133:4aa1c18c7a2f | 134:4c78649101f1 |
---|---|
2 * Handling of TM3 responses from L1TM | 2 * Handling of TM3 responses from L1TM |
3 */ | 3 */ |
4 | 4 |
5 #include <sys/types.h> | 5 #include <sys/types.h> |
6 #include <stdio.h> | 6 #include <stdio.h> |
7 #include "l1tm.h" | |
7 | 8 |
8 extern u_char rvi_msg[]; | 9 extern u_char rvi_msg[]; |
9 extern int rvi_msg_len; | 10 extern int rvi_msg_len; |
10 | 11 |
11 void | 12 void |
18 sprintf(buf, "%s response wrong length", op); | 19 sprintf(buf, "%s response wrong length", op); |
19 print_etm_pkt_raw(buf); | 20 print_etm_pkt_raw(buf); |
20 return; | 21 return; |
21 } | 22 } |
22 if (rvi_msg[3]) | 23 if (rvi_msg[3]) |
23 sprintf(buf, "%s error %u (0x%x)", op, rvi_msg[3], rvi_msg[3]); | 24 sprintf(buf, "%s error %u (0x%02X)", op, |
25 rvi_msg[3], rvi_msg[3]); | |
24 else | 26 else |
25 sprintf(buf, "%s OK", op); | 27 sprintf(buf, "%s OK", op); |
26 async_msg_output(buf); | 28 async_msg_output(buf); |
27 } | 29 } |
28 | 30 |
96 return; | 98 return; |
97 case 1: | 99 case 1: |
98 async_msg_output("RF operation finished"); | 100 async_msg_output("RF operation finished"); |
99 return; | 101 return; |
100 default: | 102 default: |
101 sprintf(buf, "rfe error %u (0x%x)", rvi_msg[3], rvi_msg[3]); | 103 sprintf(buf, "rfe error %u (0x%02X)", rvi_msg[3], rvi_msg[3]); |
102 async_msg_output(buf); | 104 async_msg_output(buf); |
103 return; | 105 return; |
104 } | 106 } |
105 } | 107 } |
108 | |
109 void | |
110 l1tm_stats_response() | |
111 { | |
112 char buf[80]; | |
113 unsigned type, bitmask, val, offset; | |
114 int expect_len; | |
115 | |
116 if (rvi_msg_len < 5) { | |
117 wrong_len: print_etm_pkt_raw("STATS_READ response wrong length"); | |
118 return; | |
119 } | |
120 if (rvi_msg[3]) { | |
121 if (rvi_msg_len != 5) | |
122 goto wrong_len; | |
123 sprintf(buf, "sr error %u (0x%02X)", rvi_msg[3], rvi_msg[3]); | |
124 async_msg_output(buf); | |
125 return; | |
126 } | |
127 if (rvi_msg_len < 9) | |
128 goto wrong_len; | |
129 type = rvi_msg[4] | (rvi_msg[5] << 8); | |
130 bitmask = rvi_msg[6] | (rvi_msg[7] << 8); | |
131 if (type < 1 || type > 2 || (bitmask & 0x0300)) { | |
132 print_etm_pkt_raw("STATS_READ response unable to parse"); | |
133 return; | |
134 } | |
135 expect_len = 9; | |
136 if (bitmask & RSSI) | |
137 expect_len += 2; | |
138 if (bitmask & DSP_PM) | |
139 expect_len += 2; | |
140 if (bitmask & ANGLE_MEAN) | |
141 expect_len += 4; | |
142 if (bitmask & ANGLE_VAR) | |
143 expect_len += 4; | |
144 if (bitmask & ANGLE_MIN) | |
145 expect_len += 4; | |
146 if (bitmask & ANGLE_MAX) | |
147 expect_len += 4; | |
148 if (bitmask & SNR_MEAN) | |
149 expect_len += 4; | |
150 if (bitmask & SNR_VAR) | |
151 expect_len += 4; | |
152 if (bitmask & TOA_MEAN) | |
153 expect_len += 4; | |
154 if (bitmask & TOA_VAR) | |
155 expect_len += 4; | |
156 if (bitmask & FRAME_NUMBER) | |
157 expect_len += 4; | |
158 if (bitmask & RUNS) | |
159 expect_len += 4; | |
160 if (bitmask & SUCCESSES) | |
161 expect_len += 4; | |
162 if (bitmask & BSIC) | |
163 expect_len += 2; | |
164 if (rvi_msg_len != expect_len) | |
165 goto wrong_len; | |
166 sprintf(buf, "Stats type %u bitmask %04X:", type, bitmask); | |
167 async_msg_output(buf); | |
168 offset = 8; | |
169 if (bitmask & RSSI) { | |
170 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8); | |
171 offset += 2; | |
172 sprintf(buf, "RSSI: %u (0x%04X)", val, val); | |
173 async_msg_output(buf); | |
174 } | |
175 if (bitmask & DSP_PM) { | |
176 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8); | |
177 offset += 2; | |
178 sprintf(buf, "DSP_PM: %u (0x%04X)", val, val); | |
179 async_msg_output(buf); | |
180 } | |
181 if (bitmask & ANGLE_MEAN) { | |
182 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
183 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
184 offset += 4; | |
185 sprintf(buf, "ANGLE_MEAN: %d (0x%08X)", val, val); | |
186 async_msg_output(buf); | |
187 } | |
188 if (bitmask & ANGLE_VAR) { | |
189 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
190 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
191 offset += 4; | |
192 sprintf(buf, "ANGLE_VAR: %u (0x%08X)", val, val); | |
193 async_msg_output(buf); | |
194 } | |
195 if (bitmask & ANGLE_MIN) { | |
196 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
197 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
198 offset += 4; | |
199 sprintf(buf, "ANGLE_MIN: %d (0x%08X)", val, val); | |
200 async_msg_output(buf); | |
201 } | |
202 if (bitmask & ANGLE_MAX) { | |
203 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
204 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
205 offset += 4; | |
206 sprintf(buf, "ANGLE_MAX: %d (0x%08X)", val, val); | |
207 async_msg_output(buf); | |
208 } | |
209 if (bitmask & SNR_MEAN) { | |
210 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
211 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
212 offset += 4; | |
213 sprintf(buf, "SNR_MEAN: %u (0x%08X)", val, val); | |
214 async_msg_output(buf); | |
215 } | |
216 if (bitmask & SNR_VAR) { | |
217 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
218 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
219 offset += 4; | |
220 sprintf(buf, "SNR_VAR: %u (0x%08X)", val, val); | |
221 async_msg_output(buf); | |
222 } | |
223 if (bitmask & TOA_MEAN) { | |
224 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
225 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
226 offset += 4; | |
227 sprintf(buf, "TOA_MEAN: %u (0x%08X)", val, val); | |
228 async_msg_output(buf); | |
229 } | |
230 if (bitmask & TOA_VAR) { | |
231 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
232 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
233 offset += 4; | |
234 sprintf(buf, "TOA_VAR: %u (0x%08X)", val, val); | |
235 async_msg_output(buf); | |
236 } | |
237 if (bitmask & FRAME_NUMBER) { | |
238 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
239 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
240 offset += 4; | |
241 sprintf(buf, "FRAME_NUMBER: %u (0x%08X)", val, val); | |
242 async_msg_output(buf); | |
243 } | |
244 if (bitmask & RUNS) { | |
245 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
246 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
247 offset += 4; | |
248 sprintf(buf, "RUNS: %u (0x%08X)", val, val); | |
249 async_msg_output(buf); | |
250 } | |
251 if (bitmask & SUCCESSES) { | |
252 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8) | | |
253 (rvi_msg[offset+2] << 16) | (rvi_msg[offset+3] << 24); | |
254 offset += 4; | |
255 sprintf(buf, "SUCCESSES: %u (0x%08X)", val, val); | |
256 async_msg_output(buf); | |
257 } | |
258 if (bitmask & BSIC) { | |
259 val = rvi_msg[offset] | (rvi_msg[offset+1] << 8); | |
260 offset += 2; | |
261 sprintf(buf, "BSIC: %u (0x%04X)", val, val); | |
262 async_msg_output(buf); | |
263 } | |
264 } |