dipsw test on helix/rev2/sc/back:five_rows

This commit is contained in:
mtei 2020-04-07 20:11:31 +09:00
parent 38d7145da2
commit 4b13ebb996
3 changed files with 96 additions and 0 deletions

View file

@ -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.

View file

@ -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,14 @@ 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();
dip_switch_read(true);
uprintf("call dip_switch_read(true)\n");
dump_pbuf();
if( current_default_layer != base ) {
eeconfig_update_default_layer(1UL<<base);
default_layer_set(1UL<<base);
@ -472,6 +480,16 @@ void music_scale_user(void)
#endif
#if 0
static uint16_t scancount = 0;
void matrix_scan_user(void) {
if( USB_DeviceState == DEVICE_STATE_Configured ) {
if( scancount < 10 )
uprintf("usb on scan=%d\n", scancount);
scancount += 1;
}
}
#endif
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED
@ -595,3 +613,75 @@ 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};
void dump_pbuf(void) {
#ifdef CONSOLE_ENABLE
if( pbuf_count > 0 ) {
uprintf(" dump_pbuf %d\n", 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 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;
}
}
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;
}
}
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;
}
}

View file

@ -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))