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 | \ No newline at end of file | 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 | +} |