67 pinMode(data, OUTPUT);
74 case 0: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR0, CHANGE);
break;
75 case 1: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR1, CHANGE);
break;
76 case 2: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR2, CHANGE);
break;
77 case 3: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR3, CHANGE);
break;
78 case 4: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR4, CHANGE);
break;
79 case 5: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR5, CHANGE);
break;
80 case 6: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR6, CHANGE);
break;
81 case 7: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR7, CHANGE);
break;
82 case 8: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR8, CHANGE);
break;
83 case 9: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR9, CHANGE);
break;
84 case 10: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR10, CHANGE);
break;
85 case 11: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR11, CHANGE);
break;
86 case 12: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR12, CHANGE);
break;
87 case 13: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR13, CHANGE);
break;
88 case 14: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR14, CHANGE);
break;
89 case 15: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR15, CHANGE);
break;
90 case 16: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR16, CHANGE);
break;
91 case 17: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR17, CHANGE);
break;
92 case 18: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR18, CHANGE);
break;
93 case 19: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR19, CHANGE);
break;
94 case 20: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR20, CHANGE);
break;
95 case 21: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR21, CHANGE);
break;
96 case 22: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR22, CHANGE);
break;
97 case 23: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR23, CHANGE);
break;
98 case 24: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR24, CHANGE);
break;
99 case 25: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR25, CHANGE);
break;
100 case 26: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR26, CHANGE);
break;
101 case 27: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR27, CHANGE);
break;
102 case 28: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR28, CHANGE);
break;
103 case 29: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR29, CHANGE);
break;
104 case 30: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR30, CHANGE);
break;
105 case 31: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR31, CHANGE);
break;
106 case 32: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR32, CHANGE);
break;
107 case 33: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR33, CHANGE);
break;
108 case 34: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR34, CHANGE);
break;
109 case 35: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR35, CHANGE);
break;
110 case 36: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR36, CHANGE);
break;
111 case 37: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR37, CHANGE);
break;
112 case 38: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR38, CHANGE);
break;
113 case 39: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR39, CHANGE);
break;
114 case 40: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR40, CHANGE);
break;
115 case 41: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR41, CHANGE);
break;
116 case 42: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR42, CHANGE);
break;
117 case 43: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR43, CHANGE);
break;
118 case 44: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR44, CHANGE);
break;
119 case 45: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR45, CHANGE);
break;
120 case 46: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR46, CHANGE);
break;
121 case 47: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR47, CHANGE);
break;
122 case 48: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR48, CHANGE);
break;
123 case 49: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR49, CHANGE);
break;
124 case 50: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR50, CHANGE);
break;
125 case 51: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR51, CHANGE);
break;
126 case 52: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR52, CHANGE);
break;
127 case 53: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR53, CHANGE);
break;
128 case 54: attachInterrupt(digitalPinToInterrupt(data),
pin_ISR54, CHANGE);
break;
149 digitalWrite(
id, HIGH);
151 digitalWrite(
id, LOW);
163 uint8_t data = digitalRead(
id);
177 digitalWrite(
id, value);
182 #if defined(ARDUINO_TEENSY41)
183 uint8_t data = digitalReadFast(
id);
185 uint8_t data = digitalRead(
id);
void error_message(uint8_t error_header, uint8_t source_header, uint32_t value, uint8_t sub_source_header)
void send_pin(uint8_t header, uint8_t id, uint8_t value, bool is_confirmation)
void send_config(uint8_t header, uint8_t config_header, uint8_t value)
@ OUT_ERROR_UNKNOWN_CONFIGURATION
@ OUT_ERROR_PIN_ALREADY_INUSE
@ OUT_ERROR_PIN_NOT_CONFIGURED
@ OUT_ERROR_CONFIGURATION_OUT_OF_BOUNDS
bool reserve_output_pin(uint8_t id, uint8_t from_instruction)
void read_pin(uint8_t id)
void set_pin(uint8_t id, uint32_t data)
void configure_pin(uint8_t instruction, uint8_t data)
volatile bool output_pin_active[NUMBER_OF_DIGITAL_PINS]
void debug_pin(uint8_t id, uint8_t value)
volatile bool input_pin_active[NUMBER_OF_DIGITAL_PINS]
bool reserve_input_pin(uint8_t id, uint8_t from_instruction)
#define NUMBER_OF_DIGITAL_PINS