52 #if defined(ARDUINO_TEENSY41) || defined(ARDUINO_TEENSY40)
53 NVIC_DISABLE_IRQ(IRQ_GPIO6789);
54 #elif defined(ARDUINO_ARCH_SAMD)
55 NVIC_DisableIRQ(EIC_IRQn);
62 #if defined(ARDUINO_TEENSY41) || defined(ARDUINO_TEENSY40)
63 NVIC_ENABLE_IRQ(IRQ_GPIO6789);
64 #elif defined(ARDUINO_ARCH_SAMD)
65 NVIC_EnableIRQ(EIC_IRQn);
73 uint32_t free_spots = 0;
81 if (free_spots > 5 )
return true;
82 else if (free_spots > 1) {
96 else if (free_spots == 1) {
121 uint32_t free_spots = 0;
130 if (free_spots == 0)
return false;
138 uint32_t free_spots = 0;
150 for (position = 0; position <
sizeof(
packet_t); position++) Serial.write(data_packet.
bytes[position]);
181 for (position = 0; position <
sizeof(
packet_t); position++) Serial.write(out.
bytes[position]);
197 for (position = 0; position <
sizeof(
packet_t); position++) {
198 Serial.write(out.
bytes[position]);
210 for (position = 0; position <
sizeof(
packet_t); position++) Serial.write(out.
bytes[position]);
231 for (position = 0; position <
sizeof(
packet_t); position++) Serial.write(out.
bytes[position]);
237void send_data32(uint8_t header, uint32_t value,
bool is_confirmation){
248void send_data_i2c(uint8_t header,uint8_t device_address_8, uint8_t register_address, uint8_t value_ms, uint8_t value_ls,
bool is_confirmation){
262void send_pin(uint8_t header, uint8_t
id, uint8_t value,
bool is_confirmation){
274void send_config(uint8_t header, uint8_t config_header, uint8_t value){
286void error_message(uint8_t error_header, uint8_t source_header, uint32_t value, uint8_t sub_source_header){
311 for (position = 0; position <
sizeof(
packet_t); position++) Serial.write(error_packet.
bytes[position]);
void send_output_ring_buffer()
void set_read_on_request(uint8_t state)
volatile uint16_t output_ring_buffer_next_free
volatile packet_t input_ring_buffer[INPUT_BUFFER_SIZE]
volatile unsigned long offset_time
void send_input_ring_buffer()
void send_output_ring_buffer_last(bool conf)
void error_message(uint8_t error_header, uint8_t source_header, uint32_t value, uint8_t sub_source_header)
volatile uint16_t input_ring_buffer_start
volatile bool output_buffer_read
bool is_output_buffer_not_full()
bool is_input_buffer_not_full()
volatile packet_t output_ring_buffer[OUTPUT_BUFFER_SIZE]
void send_data32(uint8_t header, uint32_t value, bool is_confirmation)
volatile uint16_t input_ring_buffer_next_free
void enable_gpio_interrupt()
volatile bool read_active
void send_input_ring_buffer_free_spots()
volatile uint16_t loop_runs_without_gpio_interrups
void send_data_i2c(uint8_t header, uint8_t device_address_8, uint8_t register_address, uint8_t value_ms, uint8_t value_ls, bool is_confirmation)
void send_pin(uint8_t header, uint8_t id, uint8_t value, bool is_confirmation)
void send_output_ring_buffer_first()
volatile bool is_realtime
void send_config(uint8_t header, uint8_t config_header, uint8_t value)
volatile uint16_t output_ring_buffer_start
void disable_gpio_interrupt()
volatile bool output_buffer_overflow
void add_input_packet(packet_t *input_packet)
void error_message_bypass_buffer(uint8_t error_header, uint8_t source_header, uint32_t value, uint8_t sub_source_header)
packet_t copy_packet(volatile packet_t *in)
@ IN_CONF_READ_ON_REQUEST
@ IN_FREE_INSTRUCTION_SPOTS
@ OUT_FREE_INSTRUCTION_SPOTS
@ OUT_WARNING_DATA_COLLECTION_SQUEUED
uint8_t component_address
#define OUTPUT_BUFFER_SIZE
#define INPUT_BUFFER_SIZE