|
|
@ -42,12 +42,12 @@ typedef struct matrix_index_t { |
|
|
|
|
|
|
|
# define NUMBER_OF_DIP_SWITCHES (sizeof(dip_switch_pad) / sizeof(matrix_index_t)) |
|
|
|
static matrix_index_t dip_switch_pad[] = DIP_SWITCH_MATRIX_GRID; |
|
|
|
extern bool peek_matrix(uint8_t row_index, uint8_t col_index, bool read_raw); |
|
|
|
static uint16_t scan_count; |
|
|
|
extern bool peek_matrix(uint8_t row_index, uint8_t col_index, bool read_raw); |
|
|
|
static uint16_t scan_count; |
|
|
|
#endif /* DIP_SWITCH_MATRIX_GRID */ |
|
|
|
|
|
|
|
static bool dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0}; |
|
|
|
static bool last_dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0}; |
|
|
|
static bool dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0}; |
|
|
|
static bool last_dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0}; |
|
|
|
|
|
|
|
__attribute__((weak)) void dip_switch_update_user(uint8_t index, bool active) {} |
|
|
|
|
|
|
@ -74,13 +74,13 @@ void dip_switch_read(bool forced) { |
|
|
|
uint32_t dip_switch_mask = 0; |
|
|
|
|
|
|
|
#ifdef DIP_SWITCH_MATRIX_GRID |
|
|
|
bool read_raw = false; |
|
|
|
bool read_raw = false; |
|
|
|
|
|
|
|
if (scan_count < 500) { |
|
|
|
scan_count ++; |
|
|
|
scan_count++; |
|
|
|
if (scan_count == 10) { |
|
|
|
read_raw = true; |
|
|
|
forced = true; /* First reading of the dip switch */ |
|
|
|
forced = true; /* First reading of the dip switch */ |
|
|
|
} else { |
|
|
|
return; |
|
|
|
} |
|
|
@ -92,8 +92,7 @@ void dip_switch_read(bool forced) { |
|
|
|
dip_switch_state[i] = !readPin(dip_switch_pad[i]); |
|
|
|
#endif |
|
|
|
#ifdef DIP_SWITCH_MATRIX_GRID |
|
|
|
dip_switch_state[i] = peek_matrix(dip_switch_pad[i].row, dip_switch_pad[i].col, |
|
|
|
read_raw); |
|
|
|
dip_switch_state[i] = peek_matrix(dip_switch_pad[i].row, dip_switch_pad[i].col, read_raw); |
|
|
|
#endif |
|
|
|
dip_switch_mask |= dip_switch_state[i] << i; |
|
|
|
if (last_dip_switch_state[i] != dip_switch_state[i] || forced) { |
|
|
|