Commit 5775e0702985731797f1dee1d727a5063f58e398
1 parent
57df708f
--no commit message
Showing
7 changed files
with
1173 additions
and
0 deletions
BlinkerSchema/Em/Blinker-STUBS.c
0 โ 100644
1 | +/**** DO NOT EDIT -- this file has been automatically generated from @emmoco.com.Blinker on 2014-05-14T16:24:37T ****/ | |
2 | +/**** protocolLevel = 13, toolsVersion = 13.4.1.201311121909 ****/ | |
3 | + | |
4 | +#include "Blinker.h" | |
5 | + | |
6 | +#ifdef Blinker_STUBS_ /* enables optional inclusion of application stubs */ | |
7 | + | |
8 | +/* Copy the function skeletons below into your own application source file */ | |
9 | + | |
10 | +void Blinker_connectHandler(void) { | |
11 | + /* TODO: application is now connected */ | |
12 | +} | |
13 | + | |
14 | +void Blinker_disconnectHandler(void) { | |
15 | + /* TODO: application is now disconnected */ | |
16 | +} | |
17 | + | |
18 | +void Blinker_cmd_store(Blinker_cmd_t* input) { | |
19 | + /* TODO: write resource 'cmd' from 'input' */ | |
20 | +} | |
21 | + | |
22 | +void Blinker_count_fetch(Blinker_count_t* output) { | |
23 | + /* TODO: read resource 'count' into 'output' */ | |
24 | +} | |
25 | + | |
26 | +void Blinker_count_store(Blinker_count_t* input) { | |
27 | + /* TODO: write resource 'count' from 'input' */ | |
28 | +} | |
29 | + | |
30 | +void Blinker_delay_fetch(Blinker_delay_t* output) { | |
31 | + /* TODO: read resource 'delay' into 'output' */ | |
32 | +} | |
33 | + | |
34 | +void Blinker_delay_store(Blinker_delay_t* input) { | |
35 | + /* TODO: write resource 'delay' from 'input' */ | |
36 | +} | |
37 | + | |
38 | +void Blinker_ledState_fetch(Blinker_ledState_t* output) { | |
39 | + /* TODO: read resource 'ledState' into 'output' */ | |
40 | +} | |
41 | + | |
42 | +#endif /* application stubs */ | ... | ... |
BlinkerSchema/Em/Blinker.c
0 โ 100644
1 | +/**** DO NOT EDIT -- this file has been automatically generated from @emmoco.com.Blinker on 2014-05-14T16:24:37T ****/ | |
2 | +/**** protocolLevel = 13, toolsVersion = 13.4.1.201311121909 ****/ | |
3 | + | |
4 | +#include "Em_Message.h" | |
5 | +#include "Blinker.h" | |
6 | + | |
7 | +#ifdef __cplusplus | |
8 | +extern "C" { | |
9 | +#endif | |
10 | + | |
11 | +#define Em_Message_protocolLevel 13 | |
12 | + | |
13 | +typedef struct Em_App_Message { | |
14 | + uint8_t dummy[3]; | |
15 | + uint8_t sot; | |
16 | + Em_Message_Header hdr; | |
17 | + uint8_t data[20]; | |
18 | +} Em_App_Message; | |
19 | + | |
20 | +const uint8_t Em_App_hash[] = {252, 123, 209, 86, 230, 104, 211, 8, 40, 191, 19, 28, 180, 183, 223, 192, 13, 0, ((sizeof(struct{uint8_t f1; uint16_t f2;}) - sizeof(uint16_t)) << 4) | (sizeof(struct{uint8_t f1; uint32_t f2;}) - sizeof(uint32_t))}; | |
21 | + | |
22 | +const uint8_t Em_App_build[] = {24, 231, 30, 251, 69, 1, 0, 0}; | |
23 | + | |
24 | +#define Em_App_APP_RESOURCE_COUNT 4 | |
25 | +#define Em_App_SYS_RESOURCE_COUNT 9 | |
26 | + | |
27 | +#define Em_App_ACCEPT Blinker_accept | |
28 | +#define Em_App_ACTIVATEPARAMETERS Blinker_activateParameters | |
29 | +#define Em_App_BROADCASTOFF Blinker_broadcastOff | |
30 | +#define Em_App_DISCONNECT Blinker_disconnect | |
31 | +#define Em_App_PAIRINGON Blinker_pairingOn | |
32 | +#define Em_App_PAIRINGOFF Blinker_pairingOff | |
33 | +#define Em_App_RESET Blinker_reset | |
34 | +#define Em_App_SETDEVICENAME Blinker_setDeviceName | |
35 | +#define Em_App_START Blinker_start | |
36 | + | |
37 | +#define Em_App_CONNECTHANDLER Blinker_connectHandler | |
38 | +#define Em_App_DISCONNECTHANDLER Blinker_disconnectHandler | |
39 | + | |
40 | +#define Em_App_MAX_INDICATOR 2 | |
41 | + | |
42 | +/* BEGIN common code */ | |
43 | + | |
44 | +enum {Em_App_IDLE, Em_App_STARTING, Em_App_DISCONNECTED, Em_App_CONNECTED}; | |
45 | + | |
46 | +typedef struct Em_App_Indicator { | |
47 | + uint8_t dummy[3]; | |
48 | + uint8_t sot; | |
49 | + Em_Message_Header hdr; | |
50 | + uint8_t data[Em_Message_INDSIZE]; | |
51 | +} Em_App_Indicator; | |
52 | + | |
53 | +union { uint32_t align; Em_App_Message msg; } Em_App_msg_u; | |
54 | +union { uint32_t align; Em_App_Indicator ind; } Em_App_ind_u; | |
55 | +#define Em_App_msg Em_App_msg_u.msg | |
56 | +#define Em_App_ind Em_App_ind_u.ind | |
57 | + | |
58 | +void (*Em_App_pdHdlr)(void); | |
59 | + | |
60 | +const uint16_t Em_App_endian = 0x0100; | |
61 | + | |
62 | +Em_Message_Size Em_App_recvIdx; | |
63 | +Em_Message_Size Em_App_recvSize; | |
64 | +Em_Message_Size Em_App_xmitIdx; | |
65 | +Em_Message_Size Em_App_xmitSize; | |
66 | + | |
67 | +uint8_t Em_App_state = Em_App_IDLE; | |
68 | +int32_t Em_App_fileIndex = 0; | |
69 | +uint32_t Em_App_xmitMask = 0; | |
70 | + | |
71 | +uint8_t* Em_App_valp; | |
72 | +uint8_t* Em_App_bufp; | |
73 | +const char* Em_App_desc; | |
74 | + | |
75 | +uint8_t* Em_App_inBuf = (uint8_t*)&Em_App_msg.hdr; | |
76 | +uint8_t* Em_App_outBuf = 0; | |
77 | + | |
78 | +uint8_t* _Em_Message_rxBuf = 0; | |
79 | +uint8_t _Em_Message_rxCnt = 0; | |
80 | + | |
81 | +uint8_t* _Em_Message_txBuf = 0; | |
82 | +uint8_t _Em_Message_txCnt = 0; | |
83 | + | |
84 | +#define Em_App_DEVNAME_LEN 9 | |
85 | +const char* Em_App_devName = 0; | |
86 | + | |
87 | +void Em_App_fetchDispatch(void); | |
88 | +void Em_Message_marshallToBuf(uint8_t* valp, uint8_t* bufp, const char* desc); | |
89 | +void Em_Message_marshallToVal(uint8_t* valp, uint8_t* bufp, const char* desc); | |
90 | +void Em_App_storeDispatch(void); | |
91 | +void Em_App_sendIndicator(Em_Message_ResId indId); | |
92 | +void Em_App_sendResponse(Em_Message_Kind kind, Em_Message_Size size); | |
93 | +void Em_App_startIndSend(void); | |
94 | +void Em_App_startResSend(void); | |
95 | +void Em_App_sysFetchDispatch(void); | |
96 | +void Em_App_sysStoreDispatch(void); | |
97 | +bool Em_App_xmitReady(Em_Message_ResId indId); | |
98 | + | |
99 | +void Em_Message_nextXmit(void) { | |
100 | + uint8_t key = Em_Hal_lock(); | |
101 | + if (Em_App_xmitMask != 0) { | |
102 | + uint8_t i; | |
103 | + uint32_t m; | |
104 | + for (i = 0, m = 0x1; i < Em_App_MAX_INDICATOR; i++, m <<= 1) { | |
105 | + if (Em_App_xmitMask & m) { | |
106 | + Em_App_xmitMask &= ~m; | |
107 | + if (i == 0) { | |
108 | + Em_App_startResSend(); | |
109 | + } | |
110 | + else { | |
111 | + Em_App_sendIndicator(i - 1); | |
112 | + } | |
113 | + break; | |
114 | + } | |
115 | + } | |
116 | + } | |
117 | + Em_Hal_unlock(key); | |
118 | +} | |
119 | + | |
120 | +void Em_Message_restart(void) { | |
121 | + Em_App_START(); | |
122 | +} | |
123 | + | |
124 | +void Em_App_ACCEPT(bool enable) { | |
125 | + if (Em_App_state == Em_App_CONNECTED) { | |
126 | + return; | |
127 | + } | |
128 | + Em_App_ind.sot = 0; | |
129 | + Em_App_ind.hdr.kind = Em_Message_ACCEPT; | |
130 | + Em_App_ind.hdr.size = sizeof (Em_Message_Header); | |
131 | + Em_App_ind.hdr.resId = enable; | |
132 | + Em_App_startIndSend(); | |
133 | +} | |
134 | + | |
135 | +void Em_App_ACTIVATEPARAMETERS(uint8_t group) { | |
136 | + if (Em_App_state == Em_App_IDLE || Em_App_state == Em_App_STARTING) { | |
137 | + return; | |
138 | + } | |
139 | + Em_App_ind.sot = 0; | |
140 | + Em_App_ind.hdr.kind = Em_Message_ACTIVE_PARAMS; | |
141 | + Em_App_ind.hdr.size = sizeof (Em_Message_Header); | |
142 | + Em_App_ind.hdr.resId = group; | |
143 | + Em_App_startIndSend(); | |
144 | +} | |
145 | + | |
146 | +void Em_App_BROADCASTOFF(void) { | |
147 | + Em_App_ind.sot = 0; | |
148 | + Em_App_ind.hdr.kind = Em_Message_INDICATOR; | |
149 | + Em_App_ind.hdr.size = sizeof (Em_Message_Header); | |
150 | + Em_App_ind.hdr.resId = 0; | |
151 | + Em_App_startIndSend(); | |
152 | +} | |
153 | + | |
154 | +void Em_App_DISCONNECT(void) { | |
155 | + if (Em_App_state != Em_App_CONNECTED) { | |
156 | + return; | |
157 | + } | |
158 | + Em_App_state = Em_App_DISCONNECTED; | |
159 | + Em_App_ind.sot = 0; | |
160 | + Em_App_ind.hdr.kind = Em_Message_DISCONNECT; | |
161 | + Em_App_ind.hdr.size = sizeof (Em_Message_Header); | |
162 | + Em_App_ind.hdr.resId = 0; | |
163 | + Em_App_startIndSend(); | |
164 | +} | |
165 | + | |
166 | +void Em_Message_dispatch(void) { | |
167 | + if (Em_App_state == Em_App_IDLE) { | |
168 | + return; | |
169 | + } | |
170 | + switch (Em_App_msg.hdr.kind) { | |
171 | + case Em_Message_CONNECT: | |
172 | + Em_App_state = Em_App_CONNECTED; | |
173 | + Em_App_CONNECTHANDLER(); | |
174 | + break; | |
175 | + case Em_Message_DISCONNECT: | |
176 | + Em_App_state = Em_App_DISCONNECTED; | |
177 | + Em_App_DISCONNECTHANDLER(); | |
178 | + break; | |
179 | + case Em_Message_PAIRING_DONE: | |
180 | + if (Em_App_pdHdlr) { | |
181 | + (*Em_App_pdHdlr)(); | |
182 | + } | |
183 | + break; | |
184 | + case Em_Message_FETCH: | |
185 | + if (Em_App_msg.hdr.resId < 0x80) { | |
186 | + Em_App_fetchDispatch(); | |
187 | + } | |
188 | + else { | |
189 | + Em_App_sysFetchDispatch(); | |
190 | + } | |
191 | + break; | |
192 | + case Em_Message_STORE: | |
193 | + if (Em_App_msg.hdr.resId < 0x80) { | |
194 | + Em_App_storeDispatch(); | |
195 | + } | |
196 | + else { | |
197 | + Em_App_sysStoreDispatch(); | |
198 | + } | |
199 | + break; | |
200 | + } | |
201 | +} | |
202 | + | |
203 | +void Em_App_marshallToBuf() { | |
204 | + char ch; | |
205 | + while ((ch = *Em_App_desc++)) { | |
206 | + switch (ch) { | |
207 | + case '0' : { | |
208 | + *Em_App_bufp++ = 0; | |
209 | + break; | |
210 | + } | |
211 | + case '1' : { | |
212 | + *Em_App_bufp++ = *Em_App_valp & 0xFF; | |
213 | + break; | |
214 | + } | |
215 | + case '2' : { | |
216 | + uint16_t v16 = *(uint16_t*)Em_App_valp; | |
217 | + *Em_App_bufp++ = v16 & 0xFF; | |
218 | + *Em_App_bufp++ = (v16 >> 8) & 0xFF; | |
219 | + break; | |
220 | + } | |
221 | + case '4' : { | |
222 | + if (((uint32_t)Em_App_valp & 0x1)) Em_App_valp++; | |
223 | + uint32_t v32 = *(uint32_t*)Em_App_valp++; | |
224 | + *Em_App_bufp++ = v32 & 0xFF; | |
225 | + *Em_App_bufp++ = (v32 >> 8) & 0xFF; | |
226 | + *Em_App_bufp++ = (v32 >> 16) & 0xFF; | |
227 | + *Em_App_bufp++ = (v32 >> 24) & 0xFF; | |
228 | + break; | |
229 | + } | |
230 | + } | |
231 | + Em_App_valp += 1; | |
232 | + } | |
233 | +} | |
234 | + | |
235 | +void Em_App_marshallToVal() { | |
236 | + char ch; | |
237 | + while ((ch = *Em_App_desc++)) { | |
238 | + switch (ch) { | |
239 | + case '0' : { | |
240 | + *Em_App_valp = 0; | |
241 | + Em_App_bufp += 1; | |
242 | + break; | |
243 | + } | |
244 | + case '1' : { | |
245 | + *Em_App_valp = *Em_App_bufp++ & 0xFF; | |
246 | + break; | |
247 | + } | |
248 | + case '2' : { | |
249 | + uint16_t v16 = *Em_App_bufp++ & 0xFF; | |
250 | + v16 |= (*Em_App_bufp++ << 8); | |
251 | + *(uint16_t*)Em_App_valp = v16; | |
252 | + break; | |
253 | + } | |
254 | + case '4' : { | |
255 | + if (((uint32_t)Em_App_valp & 0x1)) Em_App_valp++; | |
256 | + uint32_t v32 = (uint32_t)*Em_App_bufp++ & 0xFF; | |
257 | + v32 |= ((uint32_t)*Em_App_bufp++ << 8); | |
258 | + v32 |= ((uint32_t)*Em_App_bufp++ << 16); | |
259 | + v32 |= ((uint32_t)*Em_App_bufp++ << 24); | |
260 | + *(uint32_t*)Em_App_valp++ = v32; | |
261 | + break; | |
262 | + } | |
263 | + } | |
264 | + Em_App_valp += 1; | |
265 | + } | |
266 | +} | |
267 | + | |
268 | +void Em_App_PAIRINGOFF(void(*handler)(void)) { | |
269 | + Em_App_PAIRINGON(0, handler); | |
270 | +} | |
271 | + | |
272 | +void Em_App_PAIRINGON(uint8_t secs, void(*handler)(void)) { | |
273 | + if (Em_App_state != Em_App_DISCONNECTED) { | |
274 | + return; | |
275 | + } | |
276 | + Em_App_pdHdlr = handler; | |
277 | + Em_App_ind.sot = 0; | |
278 | + Em_App_ind.hdr.kind = Em_Message_PAIRING; | |
279 | + Em_App_ind.hdr.size = sizeof (Em_Message_Header); | |
280 | + Em_App_ind.hdr.resId = secs; | |
281 | + Em_App_startIndSend(); | |
282 | +} | |
283 | + | |
284 | +void Em_App_RESET(void) { | |
285 | + Em_Hal_reset(); | |
286 | + _Em_Message_rxBuf = _Em_Message_txBuf = 0; | |
287 | + _Em_Message_rxCnt = _Em_Message_txCnt = 0; | |
288 | + Em_App_recvIdx = Em_App_recvSize = Em_App_xmitIdx = Em_App_xmitSize = 0; | |
289 | + Em_App_state = Em_App_IDLE; | |
290 | + Em_App_fileIndex = 0; | |
291 | + Em_App_xmitMask = 0; | |
292 | +} | |
293 | + | |
294 | +void Em_App_SETDEVICENAME(const char* name) { | |
295 | + Em_App_devName = name; | |
296 | +} | |
297 | + | |
298 | +void Em_App_START(void) { | |
299 | + Em_App_RESET(); | |
300 | + Em_App_state = Em_App_STARTING; | |
301 | +} | |
302 | + | |
303 | +void Em_App_sendResponse(Em_Message_Kind kind, Em_Message_Size size) { | |
304 | + if (Em_App_state != Em_App_IDLE) { | |
305 | + Em_App_msg.sot = 0; | |
306 | + Em_App_msg.hdr.kind = kind; | |
307 | + Em_App_msg.hdr.size = size + sizeof (Em_Message_Header); | |
308 | + if (Em_App_xmitReady(0)) { | |
309 | + Em_App_startResSend(); | |
310 | + } | |
311 | + } | |
312 | +} | |
313 | + | |
314 | +void Em_App_startIndSend(void) { | |
315 | + Em_App_outBuf = (uint8_t*)&Em_App_ind.sot; | |
316 | + Em_App_xmitSize = Em_App_ind.hdr.size + 1; | |
317 | + Em_App_xmitIdx = 0; | |
318 | + Em_Hal_startSend(); | |
319 | +} | |
320 | + | |
321 | +void Em_App_startResSend(void) { | |
322 | + Em_App_outBuf = (uint8_t*)&Em_App_msg.sot; | |
323 | + Em_App_xmitSize = Em_App_msg.hdr.size + 1; | |
324 | + Em_App_xmitIdx = 0; | |
325 | + Em_Hal_startSend(); | |
326 | +} | |
327 | + | |
328 | +void Em_App_sysFetchDispatch(void) { | |
329 | + uint8_t size = 0; | |
330 | + int i, j; | |
331 | + switch (Em_App_msg.hdr.resId) { | |
332 | + case Em_Message_SYS_SCHEMA_HASH: | |
333 | + for (i = 0; i < sizeof (Em_App_hash); i++) { | |
334 | + Em_App_msg.data[i] = Em_App_hash[i]; | |
335 | + } | |
336 | + Em_App_msg.data[sizeof (Em_App_hash)] = *((uint8_t*)&Em_App_endian); | |
337 | + size = sizeof (Em_App_hash) + 1; | |
338 | + break; | |
339 | + case Em_Message_SYS_MCM_NAME: | |
340 | + if (Em_App_devName) { | |
341 | + for (i = 0; i < Em_App_DEVNAME_LEN; i++) { | |
342 | + if ((Em_App_msg.data[i] = Em_App_devName[i]) == 0) { | |
343 | + break; | |
344 | + } | |
345 | + } | |
346 | + for (j = i; j < Em_App_DEVNAME_LEN; j++) { | |
347 | + Em_App_msg.data[j] = 0; | |
348 | + } | |
349 | + size = Em_App_DEVNAME_LEN; | |
350 | + } | |
351 | + break; | |
352 | + case Em_Message_SYS_EAP_PROTOCOL_LEVEL: | |
353 | + *((Em_Message_protocolLevel_t*)Em_App_msg.data) = Em_Message_protocolLevel; | |
354 | + size = sizeof (Em_Message_protocolLevel_t); | |
355 | + break; | |
356 | + case Em_Message_SYS_EAP_BUILD_DATE: | |
357 | + for (i = 0; i < sizeof (Em_App_build); i++) { | |
358 | + Em_App_msg.data[i] = Em_App_build[i]; | |
359 | + } | |
360 | + size = sizeof (Em_App_build); | |
361 | + break; | |
362 | + case Em_Message_SYS_RESOURCE_COUNT: | |
363 | + Em_App_msg.data[0] = Em_App_APP_RESOURCE_COUNT; | |
364 | + Em_App_msg.data[1] = Em_App_SYS_RESOURCE_COUNT; | |
365 | + size = 2; | |
366 | + break; | |
367 | + } | |
368 | + Em_App_sendResponse(Em_Message_FETCH_DONE, size); | |
369 | +} | |
370 | + | |
371 | +void Em_App_sysStoreDispatch(void) { | |
372 | + switch (Em_App_msg.hdr.resId) { | |
373 | + case Em_Message_SYS_FILE_INDEX_RESET: | |
374 | + Em_App_fileIndex = 0; | |
375 | + break; | |
376 | + } | |
377 | + Em_App_sendResponse(Em_Message_STORE_DONE, 0); | |
378 | +} | |
379 | + | |
380 | +bool Em_App_xmitReady(Em_Message_ResId indId) { | |
381 | + uint8_t key = Em_Hal_lock(); | |
382 | + bool res = _Em_Message_txBuf == 0 && Em_App_xmitMask == 0; | |
383 | + if (!res) { | |
384 | + Em_App_xmitMask |= (1 << indId); | |
385 | + } | |
386 | + Em_Hal_unlock(key); | |
387 | + return res; | |
388 | +} | |
389 | + | |
390 | +/* END common code */ | |
391 | + | |
392 | +void Em_App_fetchDispatch(void) { | |
393 | + uint8_t size = 0; | |
394 | + switch (Em_App_msg.hdr.resId) { | |
395 | + case 0: { | |
396 | + break; | |
397 | + } | |
398 | + case 2: { | |
399 | +#ifdef Em_16BIT | |
400 | + Blinker_count_t val; | |
401 | + Em_App_valp = (uint8_t*)&val; | |
402 | + Em_App_bufp = Em_App_msg.data; | |
403 | + Em_App_desc = "2"; | |
404 | + Blinker_count_fetch(&val); | |
405 | + Em_App_marshallToBuf(); | |
406 | +#else | |
407 | + Blinker_count_fetch((void*)Em_App_msg.data); | |
408 | +#endif | |
409 | + size = 2; | |
410 | + break; | |
411 | + } | |
412 | + case 3: { | |
413 | +#ifdef Em_16BIT | |
414 | + Blinker_delay_t val; | |
415 | + Em_App_valp = (uint8_t*)&val; | |
416 | + Em_App_bufp = Em_App_msg.data; | |
417 | + Em_App_desc = "2"; | |
418 | + Blinker_delay_fetch(&val); | |
419 | + Em_App_marshallToBuf(); | |
420 | +#else | |
421 | + Blinker_delay_fetch((void*)Em_App_msg.data); | |
422 | +#endif | |
423 | + size = 2; | |
424 | + break; | |
425 | + } | |
426 | + case 4: { | |
427 | +#ifdef Em_16BIT | |
428 | + Blinker_ledState_t val; | |
429 | + Em_App_valp = (uint8_t*)&val; | |
430 | + Em_App_bufp = Em_App_msg.data; | |
431 | + Em_App_desc = "1"; | |
432 | + Blinker_ledState_fetch(&val); | |
433 | + Em_App_marshallToBuf(); | |
434 | +#else | |
435 | + Blinker_ledState_fetch((void*)Em_App_msg.data); | |
436 | +#endif | |
437 | + size = 1; | |
438 | + break; | |
439 | + } | |
440 | + } | |
441 | + Em_App_sendResponse(Em_Message_FETCH_DONE, size); | |
442 | +} | |
443 | + | |
444 | +void Em_App_storeDispatch(void) { | |
445 | + switch (Em_App_msg.hdr.resId) { | |
446 | + case 0: { | |
447 | + break; | |
448 | + } | |
449 | + case 1: { | |
450 | +#ifdef Em_16BIT | |
451 | + Blinker_cmd_t val; | |
452 | + Em_App_valp = (uint8_t*)&val; | |
453 | + Em_App_bufp = Em_App_msg.data; | |
454 | + Em_App_desc = "1"; | |
455 | + Em_App_marshallToVal(); | |
456 | + Blinker_cmd_store(&val); | |
457 | +#else | |
458 | + Blinker_cmd_store((void*)Em_App_msg.data); | |
459 | +#endif | |
460 | + break; | |
461 | + } | |
462 | + case 2: { | |
463 | +#ifdef Em_16BIT | |
464 | + Blinker_count_t val; | |
465 | + Em_App_valp = (uint8_t*)&val; | |
466 | + Em_App_bufp = Em_App_msg.data; | |
467 | + Em_App_desc = "2"; | |
468 | + Em_App_marshallToVal(); | |
469 | + Blinker_count_store(&val); | |
470 | +#else | |
471 | + Blinker_count_store((void*)Em_App_msg.data); | |
472 | +#endif | |
473 | + break; | |
474 | + } | |
475 | + case 3: { | |
476 | +#ifdef Em_16BIT | |
477 | + Blinker_delay_t val; | |
478 | + Em_App_valp = (uint8_t*)&val; | |
479 | + Em_App_bufp = Em_App_msg.data; | |
480 | + Em_App_desc = "2"; | |
481 | + Em_App_marshallToVal(); | |
482 | + Blinker_delay_store(&val); | |
483 | +#else | |
484 | + Blinker_delay_store((void*)Em_App_msg.data); | |
485 | +#endif | |
486 | + break; | |
487 | + } | |
488 | + } | |
489 | + Em_App_sendResponse(Em_Message_STORE_DONE, 0); | |
490 | +} | |
491 | + | |
492 | +void Em_App_sendIndicator(Em_Message_ResId indId) { | |
493 | + Em_Message_Size resId = 0; | |
494 | + Em_Message_Size size = 0; | |
495 | + switch (indId) { | |
496 | + case 1: { | |
497 | +#ifdef Em_16BIT | |
498 | + Blinker_ledState_t val; | |
499 | + Em_App_valp = (uint8_t*)&val; | |
500 | + Em_App_bufp = Em_App_ind.data; | |
501 | + Em_App_desc = "1"; | |
502 | + Blinker_ledState_fetch(&val); | |
503 | + Em_App_marshallToBuf(); | |
504 | +#else | |
505 | + Blinker_ledState_fetch((Blinker_ledState_t*)&Em_App_ind.data); | |
506 | +#endif | |
507 | + resId = 4; | |
508 | + size = 1; | |
509 | + break; | |
510 | + } | |
511 | + } | |
512 | + Em_App_ind.sot = 0; | |
513 | + Em_App_ind.hdr.kind = Em_Message_INDICATOR; | |
514 | + Em_App_ind.hdr.size = sizeof (Em_Message_Header) + size; | |
515 | + Em_App_ind.hdr.resId = resId; | |
516 | + Em_App_startIndSend(); | |
517 | +} | |
518 | + | |
519 | +void Blinker_ledState_indicate(void) { | |
520 | + if (Em_App_state == Em_App_CONNECTED && Em_App_xmitReady(1 + 1)) Em_App_sendIndicator(1); | |
521 | +} | |
522 | + | |
523 | +#ifdef __cplusplus | |
524 | +} | |
525 | +#endif | |
526 | + | ... | ... |
BlinkerSchema/Em/Blinker.h
0 โ 100644
1 | +/**** DO NOT EDIT -- this file has been automatically generated from @emmoco.com.Blinker on 2014-05-14T16:24:37T ****/ | |
2 | +/**** protocolLevel = 13, toolsVersion = 13.4.1.201311121909 ****/ | |
3 | + | |
4 | +#ifndef Blinker__H | |
5 | +#define Blinker__H | |
6 | + | |
7 | +#include "Em_Types.h" | |
8 | +#include "Em_Message.h" | |
9 | + | |
10 | +#ifdef __cplusplus | |
11 | +extern "C" { | |
12 | +#endif | |
13 | + | |
14 | +/* -------- connection callback functions implemented by the application -------- */ | |
15 | + | |
16 | +void Blinker_connectHandler(void); | |
17 | +void Blinker_disconnectHandler(void); | |
18 | + | |
19 | +/* -------- resource types defined in the schema -------- */ | |
20 | + | |
21 | +/* enum Cmd */ | |
22 | +typedef uint8_t Blinker_Cmd; | |
23 | +#define Blinker_START_CMD 0 | |
24 | +#define Blinker_STOP_CMD 1 | |
25 | + | |
26 | +/* enum LedState */ | |
27 | +typedef uint8_t Blinker_LedState; | |
28 | +#define Blinker_LED_OFF 0 | |
29 | +#define Blinker_LED_ON 1 | |
30 | + | |
31 | +/* -------- resource callback functions implemented by the application -------- */ | |
32 | + | |
33 | +/* resource cmd */ | |
34 | +typedef Blinker_Cmd Blinker_cmd_t; | |
35 | +extern void Blinker_cmd_store(Blinker_cmd_t* input); | |
36 | + | |
37 | +/* resource count */ | |
38 | +typedef int16_t Blinker_count_t; | |
39 | +extern void Blinker_count_fetch(Blinker_count_t* output); | |
40 | +extern void Blinker_count_store(Blinker_count_t* input); | |
41 | + | |
42 | +/* resource delay */ | |
43 | +typedef uint16_t Blinker_delay_t; | |
44 | +#define Blinker_delay_min 500 | |
45 | +#define Blinker_delay_max 2000 | |
46 | +#define Blinker_delay_step 100 | |
47 | +#define Blinker_delay_scale 1000 | |
48 | +extern void Blinker_delay_fetch(Blinker_delay_t* output); | |
49 | +extern void Blinker_delay_store(Blinker_delay_t* input); | |
50 | + | |
51 | +/* resource ledState */ | |
52 | +typedef Blinker_LedState Blinker_ledState_t; | |
53 | +extern void Blinker_ledState_fetch(Blinker_ledState_t* output); | |
54 | +extern void Blinker_ledState_indicate(void); /* called by the application */ | |
55 | + | |
56 | +/* -------- application functions implemented in Blinker.c -------- */ | |
57 | + | |
58 | +void Blinker_accept(bool enable); | |
59 | +void Blinker_activateParameters(uint8_t group); | |
60 | +void Blinker_broadcastOff(void); | |
61 | +void Blinker_disconnect(void); | |
62 | +void Blinker_pairingOn(uint8_t secs, void(*handler)(void)); | |
63 | +void Blinker_pairingOff(void(*handler)(void)); | |
64 | +void Blinker_reset(void); | |
65 | +void Blinker_setDeviceName(const char* name); | |
66 | +void Blinker_start(void); | |
67 | + | |
68 | +#ifdef __cplusplus | |
69 | +} | |
70 | +#endif | |
71 | + | |
72 | +#endif /* Blinker__H */ | ... | ... |
BlinkerSchema/Em/Em_Message.h
0 โ 100644
1 | +#ifndef Em_Message_H_ | |
2 | +#define Em_Message_H_ | |
3 | + | |
4 | +#include "Em_Types.h" | |
5 | + | |
6 | +#ifdef __cplusplus | |
7 | +extern "C" { | |
8 | +#endif | |
9 | + | |
10 | +/* -------- SRT FUNCTIONS CALLED BY HAL -------- */ | |
11 | + | |
12 | +static inline bool Em_Message_addByte(uint8_t b); | |
13 | +extern void Em_Message_dispatch(void); | |
14 | +static inline bool Em_Message_getByte(uint8_t* bp); | |
15 | +extern void Em_Message_restart(void); | |
16 | +static inline bool Em_Message_startRx(void); | |
17 | +static inline uint8_t Em_Message_startTx(void); | |
18 | + | |
19 | + | |
20 | +/* -------- HAL FUNCTIONS CALLED BY SRT -------- */ | |
21 | + | |
22 | +extern uint8_t Em_Hal_lock(void); | |
23 | +extern void Em_Hal_reset(void); | |
24 | +extern void Em_Hal_startSend(void); | |
25 | +extern void Em_Hal_unlock(uint8_t key); | |
26 | +extern void Em_Hal_watchOff(void); | |
27 | +extern void Em_Hal_watchOn(void); | |
28 | + | |
29 | + | |
30 | +/* -------- MESSAGE FORMAT -------- */ | |
31 | + | |
32 | +/* protocolLevel #4 */ | |
33 | +#define Em_Message_INDSIZE 4 | |
34 | + | |
35 | +typedef uint8_t Em_Message_Size; | |
36 | +typedef uint8_t Em_Message_Kind; | |
37 | +/* protocolLevel #12 -- split 16-bit resId into <resId, chan> */ | |
38 | +typedef uint8_t Em_Message_ResId; | |
39 | +typedef uint8_t Em_Message_Chan; | |
40 | + | |
41 | +#define Em_Message_NOP 0 | |
42 | +#define Em_Message_FETCH 1 | |
43 | +#define Em_Message_FETCH_DONE 2 | |
44 | +#define Em_Message_STORE 3 | |
45 | +#define Em_Message_STORE_DONE 4 | |
46 | +#define Em_Message_INDICATOR 5 | |
47 | +#define Em_Message_CONNECT 6 | |
48 | +#define Em_Message_DISCONNECT 7 | |
49 | +#define Em_Message_ECHO 8 | |
50 | +/* protocolLevel #3 */ | |
51 | +/* protocolLevel #6 -- rename from BROADCAST to PAIRING */ | |
52 | +#define Em_Message_PAIRING 9 | |
53 | +#define Em_Message_PAIRING_DONE 10 | |
54 | +/* protocolLevel #7 */ | |
55 | +#define Em_Message_OFFLINE 11 | |
56 | +/* protocolLevel #8 */ | |
57 | +#define Em_Message_ACCEPT 12 | |
58 | +/* protocolLevel #13 */ | |
59 | +#define Em_Message_START 13 | |
60 | +#define Em_Message_ACTIVE_PARAMS 14 | |
61 | + | |
62 | +typedef struct Em_Message_Header { | |
63 | + Em_Message_Size size; | |
64 | + Em_Message_Kind kind; | |
65 | + Em_Message_ResId resId; | |
66 | + Em_Message_Chan chan; | |
67 | +} Em_Message_Header; | |
68 | + | |
69 | +typedef uint16_t Em_Message_protocolLevel_t; | |
70 | + | |
71 | +/* protocolLevel #1 */ | |
72 | + | |
73 | +/* protocolLevel #10 */ | |
74 | +/* #define Em_Message_SYS_SCHEMA_UUID 0xFF */ | |
75 | + | |
76 | +#define Em_Message_SYS_MCM_PROTOCOL_LEVEL 0xFE | |
77 | +#define Em_Message_SYS_EAP_PROTOCOL_LEVEL 0xFD | |
78 | +#define Em_Message_SYS_EAP_BUILD_DATE 0xFC | |
79 | + | |
80 | +/* protocolLevel #2 */ | |
81 | +#define Em_Message_SYS_FILE_INDEX_RESET 0xFB | |
82 | + | |
83 | +/* protocolLevel #5 */ | |
84 | +#define Em_Message_SYS_SCHEMA_HASH 0xFA | |
85 | + | |
86 | +/* protocolLevel #7 */ | |
87 | +#define Em_Message_SYS_RESOURCE_COUNT 0xF9 | |
88 | + | |
89 | +/* protocolLevel #9 */ | |
90 | +#define Em_Message_SYS_MOBILE_RSSI 0xF8 | |
91 | + | |
92 | +/* protocolLevel #11 */ | |
93 | +#define Em_Message_SYS_MCM_DISCONNECT 0xF7 | |
94 | + | |
95 | +/* protocolLevel #13a */ | |
96 | +#define Em_Message_SYS_MCM_NAME 0xF5 | |
97 | + | |
98 | + | |
99 | +/* -------- PRIVATE -------- */ | |
100 | + | |
101 | +extern void Em_Message_nextXmit(void); | |
102 | + | |
103 | +extern uint8_t* Em_App_inBuf; | |
104 | +extern uint8_t* Em_App_outBuf; | |
105 | +extern Em_Message_Size Em_App_xmitSize; | |
106 | + | |
107 | +extern uint8_t* _Em_Message_rxBuf; | |
108 | +extern uint8_t _Em_Message_rxCnt; | |
109 | + | |
110 | +extern uint8_t* _Em_Message_txBuf; | |
111 | +extern uint8_t _Em_Message_txCnt; | |
112 | + | |
113 | +static inline bool Em_Message_addByte(uint8_t b) { | |
114 | + if (_Em_Message_rxCnt == 0) { | |
115 | + if (b == 0) { | |
116 | + return false; | |
117 | + } | |
118 | + _Em_Message_rxCnt = b; | |
119 | + } | |
120 | + *_Em_Message_rxBuf++ = b; | |
121 | + if (--_Em_Message_rxCnt == 0) { | |
122 | + _Em_Message_rxBuf = 0; | |
123 | + if (_Em_Message_txBuf == 0) { | |
124 | + Em_Hal_watchOff(); | |
125 | + } | |
126 | + return true; | |
127 | + } | |
128 | + else { | |
129 | + return false; | |
130 | + } | |
131 | +} | |
132 | + | |
133 | +static inline bool Em_Message_getByte(uint8_t* bp) { | |
134 | + if (_Em_Message_txBuf == 0) { | |
135 | + return false; | |
136 | + } | |
137 | + if (_Em_Message_txCnt == 0) { | |
138 | + _Em_Message_txCnt = *_Em_Message_txBuf + 1; | |
139 | + } | |
140 | + if (--_Em_Message_txCnt > 0) { | |
141 | + *bp = *_Em_Message_txBuf++; | |
142 | + return true; | |
143 | + } | |
144 | + else { | |
145 | + _Em_Message_txBuf = 0; | |
146 | + Em_App_xmitSize = 0; | |
147 | + Em_Message_nextXmit(); | |
148 | + if (_Em_Message_rxBuf == 0) { | |
149 | + Em_Hal_watchOff(); | |
150 | + } | |
151 | + return false; | |
152 | + } | |
153 | +} | |
154 | + | |
155 | +static inline bool Em_Message_startRx(void) { | |
156 | + if (_Em_Message_rxBuf == 0) { | |
157 | + _Em_Message_rxBuf = Em_App_inBuf; | |
158 | + if (_Em_Message_txBuf == 0) { | |
159 | + Em_Hal_watchOn(); | |
160 | + } | |
161 | + return true; | |
162 | + } | |
163 | + else { | |
164 | + return false; | |
165 | + } | |
166 | +} | |
167 | + | |
168 | +static inline uint8_t Em_Message_startTx(void) { | |
169 | + _Em_Message_txBuf = Em_App_outBuf + 1; | |
170 | + _Em_Message_txCnt = 0; | |
171 | + if (_Em_Message_rxBuf == 0) { | |
172 | + Em_Hal_watchOn(); | |
173 | + } | |
174 | + return 0; | |
175 | +} | |
176 | + | |
177 | + | |
178 | +#ifdef __cplusplus | |
179 | +} | |
180 | +#endif | |
181 | + | |
182 | +#endif /*Em_Message_H_*/ | ... | ... |
BlinkerSchema/Em/Em_Types.h
0 โ 100644
1 | +#ifndef Em_Types_H_ | |
2 | +#define Em_Types_H_ | |
3 | + | |
4 | +#ifndef Em_NOSTDBOOL | |
5 | +#include <stdbool.h> | |
6 | +#endif | |
7 | + | |
8 | +#ifndef Em_NOSTDINT | |
9 | +#include <stdint.h> | |
10 | +#endif | |
11 | + | |
12 | +#ifdef Em_16BIT | |
13 | +typedef signed char int8_t; | |
14 | +typedef unsigned char uint8_t; | |
15 | +#endif | |
16 | + | |
17 | +#endif /*Em_Types_H_*/ | ... | ... |
BlinkerSchema/Em/blinker.json
0 โ 100644
1 | +{ | |
2 | + "resources": { | |
3 | + "$eapProtocolLevel": { | |
4 | + "id": -3, | |
5 | + "align": 2, | |
6 | + "attributes": {"readonly": true}, | |
7 | + "type": "u2", | |
8 | + "access": "r", | |
9 | + "size": 2 | |
10 | + }, | |
11 | + "count": { | |
12 | + "id": 2, | |
13 | + "align": 2, | |
14 | + "attributes": {"readwrite": true}, | |
15 | + "type": "i2", | |
16 | + "access": "rw", | |
17 | + "size": 2 | |
18 | + }, | |
19 | + "$activeGroup": { | |
20 | + "id": -10, | |
21 | + "align": 1, | |
22 | + "pack": 1, | |
23 | + "attributes": {"readwrite": true}, | |
24 | + "type": "E:system@emmoco.com.System/ParameterGroup", | |
25 | + "access": "rw", | |
26 | + "size": 1 | |
27 | + }, | |
28 | + "$mcmDisconnect": { | |
29 | + "id": -9, | |
30 | + "align": 1, | |
31 | + "attributes": {"writeonly": true}, | |
32 | + "type": "u1", | |
33 | + "access": "w", | |
34 | + "size": 1 | |
35 | + }, | |
36 | + "$eapBuildDate": { | |
37 | + "dim": 8, | |
38 | + "id": -4, | |
39 | + "align": 1, | |
40 | + "attributes": {"readonly": true}, | |
41 | + "type": "A8:u1", | |
42 | + "access": "r", | |
43 | + "size": 8 | |
44 | + }, | |
45 | + "ledState": { | |
46 | + "id": 4, | |
47 | + "align": 1, | |
48 | + "pack": 1, | |
49 | + "attributes": { | |
50 | + "indicator": true, | |
51 | + "readonly": true | |
52 | + }, | |
53 | + "type": "E:@emmoco.com.Blinker/LedState", | |
54 | + "access": "ir", | |
55 | + "size": 1 | |
56 | + }, | |
57 | + "$resourceCount": { | |
58 | + "id": -7, | |
59 | + "align": 1, | |
60 | + "attributes": {"readonly": true}, | |
61 | + "type": "S:system@emmoco.com.System/ResourceCount", | |
62 | + "access": "r", | |
63 | + "size": 2 | |
64 | + }, | |
65 | + "$schemaHash": { | |
66 | + "dim": 20, | |
67 | + "id": -6, | |
68 | + "align": 1, | |
69 | + "attributes": {"readonly": true}, | |
70 | + "type": "A20:u1", | |
71 | + "access": "r", | |
72 | + "size": 20 | |
73 | + }, | |
74 | + "cmd": { | |
75 | + "id": 1, | |
76 | + "align": 1, | |
77 | + "pack": 1, | |
78 | + "attributes": {"writeonly": true}, | |
79 | + "type": "E:@emmoco.com.Blinker/Cmd", | |
80 | + "access": "w", | |
81 | + "size": 1 | |
82 | + }, | |
83 | + "$mcmProtocolLevel": { | |
84 | + "id": -2, | |
85 | + "align": 2, | |
86 | + "attributes": {"readonly": true}, | |
87 | + "type": "u2", | |
88 | + "access": "r", | |
89 | + "size": 2 | |
90 | + }, | |
91 | + "$mobileRssi": { | |
92 | + "id": -8, | |
93 | + "align": 1, | |
94 | + "attributes": {"readonly": true}, | |
95 | + "type": "i1", | |
96 | + "access": "r", | |
97 | + "size": 1 | |
98 | + }, | |
99 | + "delay": { | |
100 | + "id": 3, | |
101 | + "align": 2, | |
102 | + "pack": 4, | |
103 | + "attributes": {"readwrite": true}, | |
104 | + "type": "N:0.500000,2.000000,0.100000,3/u2/15", | |
105 | + "access": "rw", | |
106 | + "size": 2 | |
107 | + }, | |
108 | + "$fileIndexReset": { | |
109 | + "id": -5, | |
110 | + "align": 2, | |
111 | + "attributes": {"writeonly": true}, | |
112 | + "type": "i2", | |
113 | + "access": "w", | |
114 | + "size": 2 | |
115 | + } | |
116 | + }, | |
117 | + "resourceNamesSys": [ | |
118 | + "$activeGroup", | |
119 | + "$eapBuildDate", | |
120 | + "$eapProtocolLevel", | |
121 | + "$fileIndexReset", | |
122 | + "$mcmDisconnect", | |
123 | + "$mcmProtocolLevel", | |
124 | + "$mobileRssi", | |
125 | + "$resourceCount", | |
126 | + "$schemaHash" | |
127 | + ], | |
128 | + "manifest": { | |
129 | + "protocolLevel": 13, | |
130 | + "hash": [ | |
131 | + 252, | |
132 | + 123, | |
133 | + 209, | |
134 | + 86, | |
135 | + 230, | |
136 | + 104, | |
137 | + 211, | |
138 | + 8, | |
139 | + 40, | |
140 | + 191, | |
141 | + 19, | |
142 | + 28, | |
143 | + 180, | |
144 | + 183, | |
145 | + 223, | |
146 | + 192 | |
147 | + ], | |
148 | + "toolVersion": "13.4.1.201311121909", | |
149 | + "name": "Blinker", | |
150 | + "$$md5": "fc7bd156e668d30828bf131cb4b7dfc0", | |
151 | + "build": [ | |
152 | + 24, | |
153 | + 231, | |
154 | + 30, | |
155 | + 251, | |
156 | + 69, | |
157 | + 1, | |
158 | + 0, | |
159 | + 0 | |
160 | + ], | |
161 | + "date": "2014-05-14T16:24:37T", | |
162 | + "maxAlign": 2, | |
163 | + "maxSize": 20, | |
164 | + "version": "1.0.0" | |
165 | + }, | |
166 | + "resourceNames": [ | |
167 | + "cmd", | |
168 | + "count", | |
169 | + "delay", | |
170 | + "ledState", | |
171 | + "$mcmProtocolLevel", | |
172 | + "$eapProtocolLevel", | |
173 | + "$eapBuildDate", | |
174 | + "$fileIndexReset", | |
175 | + "$schemaHash", | |
176 | + "$resourceCount", | |
177 | + "$mobileRssi", | |
178 | + "$mcmDisconnect", | |
179 | + "$activeGroup" | |
180 | + ], | |
181 | + "attributes": { | |
182 | + "description": "Blinker, the hello world program for mobile control", | |
183 | + "version": "1.0.0" | |
184 | + }, | |
185 | + "resourceNamesApp": [ | |
186 | + "cmd", | |
187 | + "count", | |
188 | + "delay", | |
189 | + "ledState" | |
190 | + ], | |
191 | + "types": { | |
192 | + "@emmoco.com.Blinker/LedState": { | |
193 | + "values": [ | |
194 | + "LED_OFF", | |
195 | + "LED_ON" | |
196 | + ], | |
197 | + "align": 1, | |
198 | + "pack": 1, | |
199 | + "type": "E:@emmoco.com.Blinker/LedState", | |
200 | + "size": 1 | |
201 | + }, | |
202 | + "system@emmoco.com.System/ResourceCount": { | |
203 | + "packed": false, | |
204 | + "align": 1, | |
205 | + "type": "S:system@emmoco.com.System/ResourceCount", | |
206 | + "size": 2, | |
207 | + "fields": [ | |
208 | + { | |
209 | + "pad": 0, | |
210 | + "align": 1, | |
211 | + "name": "app", | |
212 | + "type": "u1", | |
213 | + "size": 1 | |
214 | + }, | |
215 | + { | |
216 | + "pad": 0, | |
217 | + "align": 1, | |
218 | + "name": "sys", | |
219 | + "type": "u1", | |
220 | + "size": 1 | |
221 | + } | |
222 | + ] | |
223 | + }, | |
224 | + "std:i2": { | |
225 | + "align": 2, | |
226 | + "size": 2 | |
227 | + }, | |
228 | + "std:i1": { | |
229 | + "align": 1, | |
230 | + "size": 1 | |
231 | + }, | |
232 | + "std:u1": { | |
233 | + "align": 1, | |
234 | + "size": 1 | |
235 | + }, | |
236 | + "system@emmoco.com.System/ParameterGroup": { | |
237 | + "values": [ | |
238 | + "GROUP_A", | |
239 | + "GROUP_B" | |
240 | + ], | |
241 | + "align": 1, | |
242 | + "pack": 1, | |
243 | + "type": "E:system@emmoco.com.System/ParameterGroup", | |
244 | + "size": 1 | |
245 | + }, | |
246 | + "@emmoco.com.Blinker/Cmd": { | |
247 | + "values": [ | |
248 | + "START_CMD", | |
249 | + "STOP_CMD" | |
250 | + ], | |
251 | + "align": 1, | |
252 | + "pack": 1, | |
253 | + "type": "E:@emmoco.com.Blinker/Cmd", | |
254 | + "size": 1 | |
255 | + }, | |
256 | + "std:u2": { | |
257 | + "align": 2, | |
258 | + "size": 2 | |
259 | + } | |
260 | + }, | |
261 | + "imports": {"@emmoco.com.Blinker": true} | |
262 | +} | |
0 | 263 | \ No newline at end of file | ... | ... |
BlinkerSchema/Schema-Imports/system@emmoco.com/System.ems
0 โ 100644
1 | +owner = "system@emmoco.com" | |
2 | + | |
3 | +schema System { | |
4 | + | |
5 | + // protocolLevel #13 | |
6 | + | |
7 | + enum ParameterGroup { | |
8 | + GROUP_A, GROUP_B | |
9 | + } | |
10 | + | |
11 | + // protocolLevel #1 | |
12 | + | |
13 | + uint8 $schemaUuid[16] { // protocolLevel #10 -- invisible to applications | |
14 | + readonly | |
15 | + } | |
16 | + | |
17 | + uint16 $mcmProtocolLevel { | |
18 | + readonly | |
19 | + } | |
20 | + | |
21 | + uint16 $eapProtocolLevel { | |
22 | + readonly | |
23 | + } | |
24 | + | |
25 | + uint8 $eapBuildDate[8] { // protocolLevel #5 -- rename from $eapBuildNumber | |
26 | + readonly | |
27 | + } | |
28 | + | |
29 | + // protocolLevel #2 | |
30 | + | |
31 | + int16 $fileIndexReset { | |
32 | + writeonly | |
33 | + } | |
34 | + | |
35 | + // protocolLevel #5 | |
36 | + | |
37 | + // protocolLevel #12 -- increase size to 20 | |
38 | + | |
39 | + uint8 $schemaHash[20] { | |
40 | + readonly | |
41 | + } | |
42 | + | |
43 | + // protocolLevel #7 | |
44 | + | |
45 | + struct ResourceCount { | |
46 | + uint8 app | |
47 | + uint8 sys | |
48 | + } | |
49 | + | |
50 | + ResourceCount $resourceCount { | |
51 | + readonly | |
52 | + } | |
53 | + | |
54 | + // protocolLevel #9 | |
55 | + | |
56 | + int8 $mobileRssi { | |
57 | + readonly | |
58 | + } | |
59 | + | |
60 | + // protocolLevel #11 | |
61 | + | |
62 | + uint8 $mcmDisconnect { | |
63 | + writeonly | |
64 | + } | |
65 | + | |
66 | + // protocolLevel #13 | |
67 | + | |
68 | + ParameterGroup $activeGroup { | |
69 | + readwrite | |
70 | + } | |
71 | + | |
72 | +} | ... | ... |