uC chip interface arduino  0.9.0
A interface for async and neuromrphic IC testing
Loading...
Searching...
No Matches
datatypes.h
Go to the documentation of this file.
1/*
2 This file is part of the Firmware project to interface with small Async or Neuromorphic chips
3 Copyright (C) 2022-2023 Ole Richter - University of Groningen
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <https://www.gnu.org/licenses/>.
17*/
18
19#ifndef DATATYPES_H
20#define DATATYPES_H
21#include <cstdint>
22
23
24/*
25 the packet header are byte that identifies the instruction to be executed by the uC
26 order is as follows
27 - general commands
28 - write to interface PIN, AER, SPI
29 - configure Interfaces
30*/
31enum inPacketHeader : uint8_t {
32 /*
33 read all availiable output packets out of the output buffer, and clear the buffer afterwards
34 uses data:
35 - value is ignored
36 */
37 IN_READ = 0U,
38
39 /*
40 use
41 */
43
44 /*
45 @todo rename to IN_RUN_EXPERIMENT
46 set the execution time, if set to 0 recording and exec are halted
47 if set to 1 (or bigger) exec and recoding will be started from timestep 1 (or bigger)
48 uses data
49 - value is the time current to be set, role over of system time is not handled
50 */
52 /*
53 return the current execution time to the output buffer
54 uses data
55 - value is ignored
56 */
58 /*
59 read all availiable input packets out of the input buffer that have not been processed
60 uses data
61 - value is ignored
62 */
64 /*
65 this packet is used to request how many free spots there are in the instruction ring buffer
66 */
68 /*
69 @todo move to sub config
70 legacy mode: turn off automatic sending of the output buffer
71 uses config
72 - value 1 for read on request (legacy)
73 - value 0 for continous read (default)
74 */
76 /*
77 send a modify output pin command
78 uses pin
79 - pin is the pin number
80 - value is 0 or 1 for low or high
81 */
82 IN_PIN = 10U,
83 /*
84 send a read input pin command
85 uses pin
86 - pin is the pin number
87 - value is ignored
88 */
90 /*
91 sends an 8/16/32bbit word on the SPI0 interface
92 uses data32
93 - value is the to be send
94 */
95 IN_SPI0 = 20U,
96 /*
97 sends an 8/16/32bbit word on the SPI1 interface
98 uses data32
99 - value is the to be send
100 */
101 IN_SPI1 = 21U,
102 /*
103 sends an 8/16/32bit word on the SPI2 interface
104 uses data32
105 - value is the to be send
106 */
107 IN_SPI2 = 22U,
108
109 /*
110 sends an 8 or 16 bit word or recives a specified number of bytes on the I2C interface
111 uses data_i2c
112 - device_address is the 7bit (MS) address of sets the ASYNC_FROM_CHIP7 configuration
113 uses config
114 - config/sub header is the config state to be applied the aer interface
115 - value is used according to the config sub headerss
116 - value_ms is the MS 8bit to be send
117 - value_ls is the LS 8bit to be send or the number of bytes to read
118 */
119 IN_I2C0 = 25U,
120 /*
121 sends an 8 or 16 bit word or recives a specified number of bytes on the I2C interface
122 uses data_i2c
123 - device_address is the 7bit (MS) address of the device and the LSB indicates Read(1)/Write(0) following the i2c standard
124 - register_address is the 8bit register address
125 - value_ms is the MS 8bit to be send
126 - value_ls is the LS 8bit to be send or the number of bytes to read
127 */
128 IN_I2C1 = 26U,
129 /*
130 sends an 8 or 16 bit word or recives a specified number of bytes on the I2C interface
131 uses data_i2c
132 - device_address is the 7bit (MS) address of the device and the LSB indicates Read(1)/Write(0) following the i2c standard
133 - register_address is the 8bit register address
134 - value_ms is the MS 8bit to be send
135 - value_ls is the LS 8bit to be send or the number of bytes to read
136 */
137 IN_I2C2 = 27U,
138 /*
139 sends an 0-32bit word on the ASYNC_TO_CHIP0 interface
140 uses data
141 - value is the word to be send, if the width is configured to >32 the MS bits are ignored
142 */
144 /*
145 sends an 0-32bit word on the ASYNC_TO_CHIP1 interface
146 uses data
147 - value is the word to be send, if the width is configured to >32 the MS bits are ignored
148 */
150 /*
151 sends an 0-32bit word on the ASYNC_TO_CHIP2 interface
152 uses data
153 - value is the word to be send, if the width is configured to >32 the MS bits are ignored
154 */
156 /*
157 sends an 0-32bit word on the ASYNC_TO_CHIP3 interface
158 uses data
159 - value is the word to be send, if the width is configured to >32 the MS bits are ignored
160 */
162 /*
163 sends an 0-32bit word on the ASYNC_TO_CHIP4 interface
164 uses data
165 - value is the word to be send, if the width is configured to >32 the MS bits are ignored
166 */
168 /*
169 sends an 0-32bit word on the ASYNC_TO_CHIP5 interface
170 uses data
171 - value is the word to be send, if the width is configured to >32 the MS bits are ignored
172 */
174 /*
175 sends an 0-32bit word on the ASYNC_TO_CHIP6 interface
176 uses data
177 - value is the word to be send, if the width is configured to >32 the MS bits are ignored
178 */
180 /*
181 sends an 0-32bit word on the ASYNC_TO_CHIP7 interface
182 uses data
183 - value is the word to be send, if the width is configured to >32 the MS bits are ignored
184 */
186 /*
187 sets the pin configuration
188 uses config
189 - config/sub header is the config state to be applied the pin
190 - value is the pin id
191 */
193 /*
194 sets the spi0 configuration
195 uses config
196 - config/sub header is the config state to be applied the spi
197 - value is used according to the config sub header
198 */
200 /*
201 sets the spi1 configuration
202 uses config
203 - config/sub header is the config state to be applied the spi
204 - value is used according to the config sub header
205 */
207 /*
208 sets the spi2 configuration
209 uses config
210 - config/sub header is the config state to be applied the spi
211 - value is used according to the config sub header
212 */
214
215 /*
216 sets the i2c0 configuration
217 uses config
218 - config/sub header is the config state to be applied the spi
219 - value is used according to the config sub header
220 */
222 /*
223 sets the i2c1 configuration
224 uses config
225 - config/sub header is the config state to be applied the spi
226 - value is used according to the config sub header
227 */
229 /*
230 sets the i2c2 configuration
231 uses config
232 - config/sub header is the config state to be applied the spi
233 - value is used according to the config sub header
234 */
236 /*
237 sets the ASYNC_TO_CHIP0 configuration
238 uses config
239 - config/sub header is the config state to be applied the aer interface
240 - value is used according to the config sub header
241 */
243 /*
244 sets the ASYNC_TO_CHIP1 configuration
245 uses config
246 - config/sub header is the config state to be applied the aer interface
247 - value is used according to the config sub header
248 */
250 /*
251 sets the ASYNC_TO_CHIP2 configuration
252 uses config
253 - config/sub header is the config state to be applied the aer interface
254 - value is used according to the config sub header
255 */
257 /*
258 sets the ASYNC_TO_CHIP3 configuration
259 uses config
260 - config/sub header is the config state to be applied the aer interface
261 - value is used according to the config sub header
262 */
264 /*
265 sets the ASYNC_TO_CHIP4 configuration
266 uses config
267 - config/sub header is the config state to be applied the aer interface
268 - value is used according to the config sub header
269 */
271 /*
272 sets the ASYNC_TO_CHIP5 configuration
273 uses config
274 - config/sub header is the config state to be applied the aer interface
275 - value is used according to the config sub header
276 */
278 /*
279 sets the ASYNC_TO_CHIP6 configuration
280 uses config
281 - config/sub header is the config state to be applied the aer interface
282 - value is used according to the config sub header
283 */
285 /*
286 sets the ASYNC_TO_CHIP7 configuration
287 uses config
288 - config/sub header is the config state to be applied the aer interface
289 - value is used according to the config sub header
290 */
292 /*
293 sets the ASYNC_FROM_CHIP0 configuration
294 uses config
295 - config/sub header is the config state to be applied the aer interface
296 - value is used according to the config sub header
297 */
299 /*
300 sets the ASYNC_FROM_CHIP1 configuration
301 uses config
302 - config/sub header is the config state to be applied the aer interface
303 - value is used according to the config sub header
304 */
306 /*
307 sets the ASYNC_FROM_CHIP2 configuration
308 uses config
309 - config/sub header is the config state to be applied the aer interface
310 - value is used according to the config sub header
311 */
313 /*
314 sets the ASYNC_FROM_CHIP3 configuration
315 uses config
316 - config/sub header is the config state to be applied the aer interface
317 - value is used according to the config sub header
318 */
320 /*
321 sets the ASYNC_FROM_CHIP4 configuration
322 uses config
323 - config/sub header is the config state to be applied the aer interface
324 - value is used according to the config sub header
325 */
327 /*
328 sets the ASYNC_FROM_CHIP5 configuration
329 uses config
330 - config/sub header is the config state to be applied the aer interface
331 - value is used according to the config sub header
332 */
334 /*
335 sets the ASYNC_FROM_CHIP6 configuration
336 uses config
337 - config/sub header is the config state to be applied the aer interface
338 - value is used according to the config sub header
339 */
341 /*
342 sets the ASYNC_FROM_CHIP7 configuration
343 uses config
344 - config/sub header is the config state to be applied the aer interface
345 - value is used according to the config sub header
346 */
348
349
350 /*
351 chip config to free up main headers
352 */
354
355 /*
356 in mapper key switches into sequence transmission mode,
357 the next packet is considered the key all subsequent packages
358 are considdered values until IN_MAPPER_END.
359 */
361 /*
362 In mapper end switches back to normal packet exec mode.
363 */
365
366 /*
367 this packet is used to reset the full uC
368 uses data
369 - value is ignored
370 */
371 IN_RESET = 254U,
372 /*
373 This packet is used to align the communication protocol between the PC and the uC
374 it is send by the PC and the uC will respond with the same sequence:
375 the sequence is 9 bytes of 255U followed by 1 byte of 0U
376 the 9 bytes are needed so that one of them is interpreted as the header
377 */
379
380};
381
382/*
383 the packet header is byte that identifies the information to be read by the host
384 order is as follows
385 - general info
386 - value is the word to be send, incomming data from PIN, AER, SPI
387 - error messages
388 - other transaction messages
389*/
390enum outPacketHeader : uint8_t {
391
392 /*
393 responce to the READ_TIME packet
394 uses data
395 - exec_time the current run time
396 - value the system_time (without run time offset)
397 */
398 OUT_TIME = 100U,
399 /*
400 this packet is used to report how many free spots there are in the instruction ring buffer
401 */
403 /*
404 After a input pin change below threshold this records the change
405 uses pin
406 - exec_time the time the change occured
407 - pin the pin id
408 - value the new state (value is manatory)
409 */
411 /*
412 After a input pin change above threshold this records the change
413 uses pin
414 - exec_time the time the change occured
415 - pin the pin id
416 - value the new state (value is manatory)
417 */
419 /*
420 responce to the IN_SPI0_32 packet
421 uses data32
422 - exec_time the current run time
423 - value the 32bit word that was read on the SPI
424 */
425 OUT_SPI0 = 120U,
426 /*
427 responce to the IN_SPI1_32 packet
428 uses data32
429 - exec_time the current run time
430 - value the 32bit word that was read on the SPI
431 */
432 OUT_SPI1 = 121U,
433 /*
434 responce to the IN_SPI2_32 packet
435 uses data32
436 - exec_time the current run time
437 - value the 32bit word that was read on the SPI
438 */
439 OUT_SPI2 = 122U,
440
441 /*
442 responce to the IN_I2C0 packet
443 uses data32
444 - exec_time the current run time
445 - value the 8/16bit word that was read on the I2C
446 */
447 OUT_I2C0 = 125U,
448 /*
449 responce to the IN_I2C1 packet
450 uses data32
451 - exec_time the current run time
452 - value the 8/16bit word that was read on the I2C
453 */
454 OUT_I2C1 = 126U,
455 /*
456 responce to the IN_I2C2 packet
457 uses data32
458 - exec_time the current run time
459 - value the 8/16bit word that was read on the I2C
460 */
461 OUT_I2C2 = 127U,
462 /*
463 a event was reseved on ASYNC_FROM_CHIP0
464 uses data
465 - exec_time the current run time
466 - value the 0-32bit word that was read on the AER
467 */
469 /*
470 a event was reseved on ASYNC_FROM_CHIP1
471 uses data
472 - exec_time the current run time
473 - value the 0-32bit word that was read on the AER
474 */
476 /*
477 a event was reseved on ASYNC_FROM_CHIP2
478 uses data
479 - exec_time the current run time
480 - value the 0-32bit word that was read on the AER
481 */
483 /*
484 a event was reseved on ASYNC_FROM_CHIP3
485 uses data
486 - exec_time the current run time
487 - value the 0-32bit word that was read on the AER
488 */
490 /*
491 a event was reseved on ASYNC_FROM_CHIP4
492 uses data
493 - exec_time the current run time
494 - value the 0-32bit word that was read on the AER
495 */
497 /*
498 a event was reseved on ASYNC_FROM_CHIP5
499 uses data
500 - exec_time the current run time
501 - value the 0-32bit word that was read on the AER
502 */
504 /*
505 a event was reseved on ASYNC_FROM_CHIP6
506 uses data
507 - exec_time the current run time
508 - value the 0-32bit word that was read on the AER
509 */
511 /*
512 a event was reseved on ASYNC_FROM_CHIP7
513 uses data
514 - exec_time the current run time
515 - value the 0-32bit word that was read on the AER
516 */
518 /*
519
520 uses
521 */
522 OUT_ERROR = 200U,
523 /*
524
525 uses
526 */
528 /*
529
530 uses
531 */
533 /*
534
535 uses
536 */
538 /*
539
540 uses
541 */
543 /*
544
545 uses
546 */
548 /*
549
550 uses
551 */
553 /*
554
555 uses
556 */
558 /*
559
560 uses
561 */
563 /*
564
565 uses
566 */
568 /*
569 this error is thrown when a peripheral interface is not ready
570 For example: the I2C for the MCP23017 is not ready
571 uses
572 */
574 /*
575 the configuration id you send is out of bounds of the available uC resources
576 uses error_package
577 - id is the wrong id
578 */
580 /*
581 the data you send is larger the the configured bit/byte width of the interface
582 uses error_package
583 - the wrong data
584 */
586 /*
587 the data collection is taking up to much time (to many requests)
588 the uC does not have time to ship the data to the PC.
589 from now on whenever this happens the uC will pause data collection
590 for a moment and transmit ~ 10 pakages to the PC before it resumes
591 data collection
592 */
594
595 /*
596 responce to alignment request, as the first communication is an alignment
597 confirms the connection with the uC.
598 also sends the firmware version - to see if the correct version is running
599 uses data_i2c
600 - exec_time the current run time
601 - device address - major version
602 - register address - minor version
603 - value_ms the MS 8bit of patch version
604 - value_ls the LS 8bit of patch version
605 */
607
608};
609
610enum confPacketHeader : uint8_t {
611 /*
612 set an interface to active, after activation the pins/width cant be changed anymore
613 works for spi and aer, activation will fail if pins are already used for other interfaces
614 @TODO deactivation not implemented yet sould be new header for compatebility
615 uses config
616 - value is ignored
617 */
619 /*
620 set a pin to output to be able to write on it
621 uses config
622 - value is ID of pin
623 */
625 /*
626 set a pin to input, it registers an interupt service
627 to record all incomming changes
628 uses config
629 - value is ID of pin
630 */
632 /*
633 sets the Req pin for the given AER interface
634 uses config
635 - value is ID of pin
636 */
637 CONF_REQ = 70U,
638 /*
639 sets the Ack pin for the given AER interface
640 uses config
641 - value is ID of pin
642 */
643 CONF_ACK = 71U,
644 /*
645 sets the bit width of the given AER interface
646 uses config
647 - value is width 0-32
648 */
650 /*
651 set the delay on the request line
652 uses config
653 - value the delay in multiple of 20ns
654 */
656 /*
657 interface_order
658 - value LSFIRST = 0 and MSFIRST = 1 - default is 0
659 */
661 /*
662 interface speed class se interface doc
663 */
665 /*
666 interface_type
667 - value type id (see interface doc) - default is 0
668 */
670 /*
671 indication of no sub category
672 */
673 CONF_NONE = 253U,
674 /*
675 setting the pin for AER data channel X
676 uses config
677 - value is the pin ID
678 */
679
712
713
714};
715
716/*
717the struct packet_t is 9 byte big,
718the 9 bytes can be utilised in different ways:
719*/
720
721/*
722the data32 packet format: 9 bytes
723*/
724#pragma pack(push,1)
725struct data32_t{
726 uint8_t header;
727 uint32_t exec_time;
728 uint32_t value;
729};
730#pragma pack(pop)
731/*
732the data8 packet format: 6 bytes
733*/
734#pragma pack(push,1)
735struct data8_t{
736 uint8_t header;
737 uint32_t exec_time;
738 uint8_t value;
739};
740#pragma pack(pop)
741/*
742the data_i2c_t packet format: 9 bytes
743*/
744#pragma pack(push,1)
746 uint8_t header;
747 uint32_t exec_time;
750 uint8_t value_ms;
751 uint8_t value_ls;
752};
753#pragma pack(pop)
754/*
755the config packet format: 9 bytes
756*/
757#pragma pack(push,1)
758struct config_t{
759 uint8_t header;
760 uint32_t exec_time;
762 uint8_t value;
763};
764#pragma pack(pop)
765/*
766the pin packet format: 7 bytes
767*/
768#pragma pack(push,1)
769struct pin_t {
770 uint8_t header;
771 uint32_t exec_time;
772 uint8_t id;
773 uint8_t value;
774};
775#pragma pack(pop)
776/*
777the error packet format: 7 bytes
778*/
779#pragma pack(push,1)
780struct error_t{
781 uint8_t header;
782 uint8_t org_header;
783 uint32_t value;
784 uint8_t sub_header;
785};
786#pragma pack(pop)
787/*
788the struct packet_t is 9 byte big,
789the 9 bytes can be utilised in different ways
790*/
791#pragma pack(push,1)
793 uint8_t bytes[1+4+4];
799};
800#pragma pack(pop)
801
802/*
803helper function to deep copy packets from volotile to not volotile and reverse
804*/
805packet_t copy_packet(volatile packet_t* in);
806
807void copy_packet(packet_t* in, volatile packet_t* out);
808
809#endif
inPacketHeader
Definition: datatypes.h:31
@ IN_READ_INSTRUCTIONS
Definition: datatypes.h:63
@ IN_ASYNC_TO_CHIP6
Definition: datatypes.h:179
@ IN_CONF_SPI2
Definition: datatypes.h:213
@ IN_ASYNC_TO_CHIP4
Definition: datatypes.h:167
@ IN_RESET
Definition: datatypes.h:371
@ IN_CONF_ASYNC_TO_CHIP2
Definition: datatypes.h:256
@ IN_PIN_READ
Definition: datatypes.h:89
@ IN_READ
Definition: datatypes.h:37
@ IN_ASYNC_TO_CHIP1
Definition: datatypes.h:149
@ IN_CONF_ASYNC_FROM_CHIP6
Definition: datatypes.h:340
@ IN_CONF_ASYNC_TO_CHIP0
Definition: datatypes.h:242
@ IN_PIN
Definition: datatypes.h:82
@ IN_ASYNC_TO_CHIP7
Definition: datatypes.h:185
@ IN_CONF_SPI1
Definition: datatypes.h:206
@ IN_I2C0
Definition: datatypes.h:119
@ IN_MAPPER_KEY
Definition: datatypes.h:360
@ IN_CONF_ASYNC_TO_CHIP5
Definition: datatypes.h:277
@ IN_ASYNC_TO_CHIP3
Definition: datatypes.h:161
@ IN_ASYNC_TO_CHIP0
Definition: datatypes.h:143
@ IN_CONF_ASYNC_TO_CHIP3
Definition: datatypes.h:263
@ IN_CONF_ASYNC_FROM_CHIP5
Definition: datatypes.h:333
@ IN_SPI1
Definition: datatypes.h:101
@ IN_CONF_ASYNC_FROM_CHIP2
Definition: datatypes.h:312
@ IN_CONF_ASYNC_FROM_CHIP0
Definition: datatypes.h:298
@ IN_CONF_ASYNC_FROM_CHIP3
Definition: datatypes.h:319
@ IN_SPI2
Definition: datatypes.h:107
@ IN_CONF_ASYNC_FROM_CHIP7
Definition: datatypes.h:347
@ IN_CONF_SPI0
Definition: datatypes.h:199
@ IN_CONF_READ_ON_REQUEST
Definition: datatypes.h:75
@ IN_READ_TIME
Definition: datatypes.h:57
@ IN_ASYNC_TO_CHIP5
Definition: datatypes.h:173
@ IN_CONF_I2C2
Definition: datatypes.h:235
@ IN_CONF_I2C0
Definition: datatypes.h:221
@ IN_CONF_ASYNC_TO_CHIP4
Definition: datatypes.h:270
@ IN_CONF_I2C1
Definition: datatypes.h:228
@ IN_I2C1
Definition: datatypes.h:128
@ IN_MAPPER_END
Definition: datatypes.h:364
@ IN_READ_LAST
Definition: datatypes.h:42
@ IN_CONF_ASYNC_TO_CHIP6
Definition: datatypes.h:284
@ IN_I2C2
Definition: datatypes.h:137
@ IN_CONF_ASYNC_TO_CHIP1
Definition: datatypes.h:249
@ IN_CONF_ASYNC_TO_CHIP7
Definition: datatypes.h:291
@ IN_ALIGN_COMMUNICATION_PROTOCOL
Definition: datatypes.h:378
@ IN_CONF_PIN
Definition: datatypes.h:192
@ IN_ASYNC_TO_CHIP2
Definition: datatypes.h:155
@ IN_FREE_INSTRUCTION_SPOTS
Definition: datatypes.h:67
@ IN_CONF_ASYNC_FROM_CHIP1
Definition: datatypes.h:305
@ IN_SET_TIME
Definition: datatypes.h:51
@ IN_CONF_ASYNC_FROM_CHIP4
Definition: datatypes.h:326
@ IN_SPI0
Definition: datatypes.h:95
@ IN_CONF_UC
Definition: datatypes.h:353
packet_t copy_packet(volatile packet_t *in)
Definition: datatypes.cpp:23
confPacketHeader
Definition: datatypes.h:610
@ CONF_TYPE
Definition: datatypes.h:669
@ CONF_CHANNEL27
Definition: datatypes.h:707
@ CONF_REQ
Definition: datatypes.h:637
@ CONF_CHANNEL23
Definition: datatypes.h:703
@ CONF_CHANNEL8
Definition: datatypes.h:688
@ CONF_CHANNEL13
Definition: datatypes.h:693
@ CONF_REQ_DELAY
Definition: datatypes.h:655
@ CONF_CHANNEL21
Definition: datatypes.h:701
@ CONF_CHANNEL31
Definition: datatypes.h:711
@ CONF_CHANNEL17
Definition: datatypes.h:697
@ CONF_CHANNEL26
Definition: datatypes.h:706
@ CONF_CHANNEL14
Definition: datatypes.h:694
@ CONF_CHANNEL0
Definition: datatypes.h:680
@ CONF_NONE
Definition: datatypes.h:673
@ CONF_CHANNEL29
Definition: datatypes.h:709
@ CONF_CHANNEL9
Definition: datatypes.h:689
@ CONF_CHANNEL22
Definition: datatypes.h:702
@ CONF_CHANNEL11
Definition: datatypes.h:691
@ CONF_SPEED_CLASS
Definition: datatypes.h:664
@ CONF_CHANNEL20
Definition: datatypes.h:700
@ CONF_INPUT
Definition: datatypes.h:631
@ CONF_OUTPUT
Definition: datatypes.h:624
@ CONF_ACTIVE
Definition: datatypes.h:618
@ CONF_CHANNEL4
Definition: datatypes.h:684
@ CONF_CHANNEL1
Definition: datatypes.h:681
@ CONF_CHANNEL25
Definition: datatypes.h:705
@ CONF_CHANNEL7
Definition: datatypes.h:687
@ CONF_CHANNEL28
Definition: datatypes.h:708
@ CONF_WIDTH
Definition: datatypes.h:649
@ CONF_CHANNEL3
Definition: datatypes.h:683
@ CONF_CHANNEL10
Definition: datatypes.h:690
@ CONF_CHANNEL16
Definition: datatypes.h:696
@ CONF_CHANNEL2
Definition: datatypes.h:682
@ CONF_CHANNEL5
Definition: datatypes.h:685
@ CONF_CHANNEL30
Definition: datatypes.h:710
@ CONF_CHANNEL12
Definition: datatypes.h:692
@ CONF_CHANNEL19
Definition: datatypes.h:699
@ CONF_CHANNEL18
Definition: datatypes.h:698
@ CONF_ACK
Definition: datatypes.h:643
@ CONF_BYTE_ORDER
Definition: datatypes.h:660
@ CONF_CHANNEL24
Definition: datatypes.h:704
@ CONF_CHANNEL6
Definition: datatypes.h:686
@ CONF_CHANNEL15
Definition: datatypes.h:695
outPacketHeader
Definition: datatypes.h:390
@ OUT_ERROR_INTERFACE_NOT_ACTIVE
Definition: datatypes.h:557
@ OUT_ASYNC_FROM_CHIP0
Definition: datatypes.h:468
@ OUT_ERROR_UNKNOWN_INSTRUCTION
Definition: datatypes.h:552
@ OUT_I2C2
Definition: datatypes.h:461
@ OUT_SPI1
Definition: datatypes.h:432
@ OUT_ASYNC_FROM_CHIP1
Definition: datatypes.h:475
@ OUT_ASYNC_FROM_CHIP5
Definition: datatypes.h:503
@ OUT_ASYNC_FROM_CHIP4
Definition: datatypes.h:496
@ OUT_ASYNC_FROM_CHIP3
Definition: datatypes.h:489
@ OUT_ERROR
Definition: datatypes.h:522
@ OUT_TIME
Definition: datatypes.h:398
@ OUT_ASYNC_FROM_CHIP2
Definition: datatypes.h:482
@ OUT_SPI2
Definition: datatypes.h:439
@ OUT_ASYNC_FROM_CHIP6
Definition: datatypes.h:510
@ OUT_ERROR_INPUT_FULL
Definition: datatypes.h:537
@ OUT_FREE_INSTRUCTION_SPOTS
Definition: datatypes.h:402
@ OUT_ERROR_UNKNOWN_CONFIGURATION
Definition: datatypes.h:562
@ OUT_PIN_LOW
Definition: datatypes.h:410
@ OUT_ERROR_INTERFACE_ALREADY_ACTIVE
Definition: datatypes.h:547
@ OUT_WARNING_DATA_COLLECTION_SQUEUED
Definition: datatypes.h:593
@ OUT_ERROR_ASYNC_HS_TIMEOUT
Definition: datatypes.h:567
@ OUT_ALIGN_SUCCESS_VERSION
Definition: datatypes.h:606
@ OUT_I2C1
Definition: datatypes.h:454
@ OUT_SPI0
Definition: datatypes.h:425
@ OUT_I2C0
Definition: datatypes.h:447
@ OUT_ERROR_DATA_OUT_OF_BOUNDS
Definition: datatypes.h:585
@ OUT_ERROR_PIN_ALREADY_INUSE
Definition: datatypes.h:527
@ OUT_ERROR_OUTPUT_FULL
Definition: datatypes.h:542
@ OUT_PIN_HIGH
Definition: datatypes.h:418
@ OUT_ASYNC_FROM_CHIP7
Definition: datatypes.h:517
@ OUT_ERROR_PIN_NOT_CONFIGURED
Definition: datatypes.h:532
@ OUT_ERROR_PERIPHERAL_INTERFACE_NOT_READY
Definition: datatypes.h:573
@ OUT_ERROR_CONFIGURATION_OUT_OF_BOUNDS
Definition: datatypes.h:579
uint8_t header
Definition: datatypes.h:759
uint8_t value
Definition: datatypes.h:762
uint32_t exec_time
Definition: datatypes.h:760
uint8_t config_header
Definition: datatypes.h:761
uint8_t header
Definition: datatypes.h:726
uint32_t exec_time
Definition: datatypes.h:727
uint32_t value
Definition: datatypes.h:728
uint8_t header
Definition: datatypes.h:736
uint8_t value
Definition: datatypes.h:738
uint32_t exec_time
Definition: datatypes.h:737
uint8_t header
Definition: datatypes.h:746
uint8_t register_address
Definition: datatypes.h:749
uint8_t value_ms
Definition: datatypes.h:750
uint8_t value_ls
Definition: datatypes.h:751
uint32_t exec_time
Definition: datatypes.h:747
uint8_t component_address
Definition: datatypes.h:748
uint8_t sub_header
Definition: datatypes.h:784
uint8_t header
Definition: datatypes.h:781
uint32_t value
Definition: datatypes.h:783
uint8_t org_header
Definition: datatypes.h:782
uint8_t id
Definition: datatypes.h:772
uint8_t header
Definition: datatypes.h:770
uint8_t value
Definition: datatypes.h:773
uint32_t exec_time
Definition: datatypes.h:771
config_t config
Definition: datatypes.h:796
data_i2c_t data_i2c
Definition: datatypes.h:795
uint8_t bytes[1+4+4]
Definition: datatypes.h:793
error_t error
Definition: datatypes.h:798
data32_t data
Definition: datatypes.h:794
pin_t pin
Definition: datatypes.h:797