dipsw test on helix/rev2/sc/back:five_rows
This commit is contained in:
parent
582cea6e1d
commit
bf99ace095
3 changed files with 107 additions and 1 deletions
|
@ -27,6 +27,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
/* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD.
|
||||
see tmk_core/common/action_tapping.c */
|
||||
|
||||
//#define DIP_SWITCH_PINS { B5, B6 }
|
||||
#define DIP_SWITCH_PINS { B5, B6, B5, B6 }
|
||||
|
||||
// place overrides here
|
||||
|
||||
// If you need more program area, try select and reduce rgblight modes to use.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
#include <avr/pgmspace.h>
|
||||
#include "bootloader.h"
|
||||
#ifdef PROTOCOL_LUFA
|
||||
#include "lufa.h"
|
||||
|
@ -13,6 +14,7 @@
|
|||
#ifdef CONSOLE_ENABLE
|
||||
#include <print.h>
|
||||
#endif
|
||||
#include "timer.h"
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
|
@ -332,8 +334,13 @@ uint32_t default_layer_state_set_kb(uint32_t state) {
|
|||
return state;
|
||||
}
|
||||
|
||||
void dump_pbuf(void);
|
||||
void update_base_layer(int base)
|
||||
{
|
||||
uprintf("layer\n");
|
||||
dump_pbuf();
|
||||
uprintf("call dip_switch_read(true)\n");
|
||||
dip_switch_read(true);
|
||||
if( current_default_layer != base ) {
|
||||
eeconfig_update_default_layer(1UL<<base);
|
||||
default_layer_set(1UL<<base);
|
||||
|
@ -472,7 +479,6 @@ void music_scale_user(void)
|
|||
|
||||
#endif
|
||||
|
||||
|
||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
|
||||
|
@ -595,3 +601,97 @@ void iota_gfx_task_user(void) {
|
|||
}
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _pr {
|
||||
const char * PROGMEM fmt;
|
||||
uint8_t arg1;
|
||||
uint8_t arg2;
|
||||
uint16_t timer;
|
||||
} printbuf_t;
|
||||
uint8_t pbuf_count = 0;
|
||||
bool pbuf_overflow = false;
|
||||
printbuf_t pbuf[16] = {0};
|
||||
bool pbuf_wait = true;
|
||||
uint16_t pbuf_timer = 0;
|
||||
|
||||
void dump_pbuf(void) {
|
||||
if( pbuf_wait )
|
||||
return;
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
if( pbuf_count > 0 ) {
|
||||
if (pbuf_count > 1)
|
||||
uprintf(" %06d : dump_pbuf %d\n", timer_read(), pbuf_count);
|
||||
for( uint8_t i = 0; i < pbuf_count; i++ ) {
|
||||
uprintf(" %06d : ", pbuf[i].timer);
|
||||
__xprintf(pbuf[i].fmt, pbuf[i].arg1, pbuf[i].arg2);
|
||||
}
|
||||
pbuf_count = 0;
|
||||
if( pbuf_overflow ) {
|
||||
uprintf(" pbuf overflow \n");
|
||||
pbuf_overflow = false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
if( pbuf_wait ) {
|
||||
if( pbuf_timer == 0 ) {
|
||||
/* the first scan. */
|
||||
pbuf_timer = timer_read();
|
||||
}
|
||||
if( timer_elapsed(pbuf_timer) < 2000 ) {
|
||||
return;
|
||||
}
|
||||
pbuf_wait = false;
|
||||
dump_pbuf();
|
||||
}
|
||||
}
|
||||
|
||||
void dip_switch_update_user(uint8_t index, bool active) {
|
||||
if( pbuf_count < sizeof(pbuf)/sizeof(pbuf[0]) ) {
|
||||
pbuf[pbuf_count].fmt = PSTR("dip_switch_update_user(%d,%d)\n");
|
||||
pbuf[pbuf_count].arg1 = index;
|
||||
pbuf[pbuf_count].arg2 = active;
|
||||
pbuf[pbuf_count].timer = timer_read();
|
||||
pbuf_count++;
|
||||
} else {
|
||||
pbuf_overflow = true;
|
||||
}
|
||||
dump_pbuf();
|
||||
}
|
||||
|
||||
void dip_switch_update_mask_user(uint32_t state) {
|
||||
if( pbuf_count < sizeof(pbuf)/sizeof(pbuf[0]) ) {
|
||||
pbuf[pbuf_count].fmt = PSTR("dip_switch_update_mask_user(0b%b)\n");
|
||||
pbuf[pbuf_count].arg1 = state;
|
||||
pbuf[pbuf_count].timer = timer_read();
|
||||
pbuf_count++;
|
||||
} else {
|
||||
pbuf_overflow = true;
|
||||
}
|
||||
dump_pbuf();
|
||||
}
|
||||
|
||||
void keyboard_pre_init_user(void)
|
||||
{
|
||||
if( pbuf_count < sizeof(pbuf)/sizeof(pbuf[0]) ) {
|
||||
pbuf[pbuf_count].fmt = PSTR("keyboard_pre_init_user()\n");
|
||||
pbuf[pbuf_count].timer = timer_read();
|
||||
pbuf_count++;
|
||||
} else {
|
||||
pbuf_overflow = true;
|
||||
}
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void)
|
||||
{
|
||||
if( pbuf_count < sizeof(pbuf)/sizeof(pbuf[0]) ) {
|
||||
pbuf[pbuf_count].fmt = PSTR("keyboard_post_init_user()\n");
|
||||
pbuf[pbuf_count].timer = timer_read();
|
||||
pbuf_count++;
|
||||
} else {
|
||||
pbuf_overflow = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,9 @@ ifneq ($(strip $(HELIX)),)
|
|||
endif
|
||||
endif
|
||||
|
||||
CONSOLE_ENABLE = yes
|
||||
DIP_SWITCH_ENABLE = yes
|
||||
|
||||
# convert Helix-specific options (that represent combinations of standard options)
|
||||
# into QMK standard options.
|
||||
include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
|
||||
|
|
Loading…
Reference in a new issue