PicoCalc/Code/picocalc_keyboard/reg.ino

46 lines
1.6 KiB
C++

#include "reg.h"
static uint8_t regs[REG_ID_LAST];
uint8_t reg_get_value(enum reg_id reg)
{
return regs[reg];
}
void reg_set_value(enum reg_id reg, uint8_t value)
{
regs[reg] = value;
}
bool reg_is_bit_set(enum reg_id reg, uint8_t bit)
{
return regs[reg] & bit;
}
void reg_set_bit(enum reg_id reg, uint8_t bit)
{
regs[reg] |= bit;
}
/*
* | Bit | Name | Description |
| ------ |:----------------:| ------------------------------------------------------------------:|
| 7 | CFG_USE_MODS | Should Alt, Sym and the Shift keys modify the keys being reported. |
| 6 | CFG_REPORT_MODS | Should Alt, Sym and the Shift keys be reported as well. |
| 5 | CFG_PANIC_INT | Currently not implemented. |
| 4 | CFG_KEY_INT | Should an interrupt be generated when a key is pressed. |
| 3 | CFG_NUMLOCK_INT | Should an interrupt be generated when Num Lock is toggled. |
| 2 | CFG_CAPSLOCK_INT | Should an interrupt be generated when Caps Lock is toggled. |
| 1 | CFG_OVERFLOW_INT | Should an interrupt be generated when a FIFO overflow happens. |
| 0 | CFG_OVERFLOW_ON | When a FIFO overflow happens, should the new entry still be pushed, overwriting the oldest one. If 0 then new entry is lost. |
*/
void reg_init(void)
{
regs[REG_ID_CFG] = CFG_OVERFLOW_INT | CFG_KEY_INT | CFG_USE_MODS|CFG_REPORT_MODS ;
regs[REG_ID_DEB] = 10;
regs[REG_ID_FRQ] = 5;
regs[REG_ID_BKL] = 255;//100%duty
regs[REG_ID_BK2] = 0;
regs[REG_ID_BAT] = 0xff; //default .no battery
}