Format code according to conventions (#16322)

This commit is contained in:
QMK Bot 2022-02-12 10:29:31 -08:00 committed by GitHub
parent afcdd7079c
commit 63646e8906
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
345 changed files with 4916 additions and 3229 deletions

View File

@ -312,7 +312,9 @@ static bool ble_init(void) {
return state.initialized; return state.initialized;
} }
static inline uint8_t min(uint8_t a, uint8_t b) { return a < b ? a : b; } static inline uint8_t min(uint8_t a, uint8_t b) {
return a < b ? a : b;
}
static bool read_response(char *resp, uint16_t resplen, bool verbose) { static bool read_response(char *resp, uint16_t resplen, bool verbose) {
char *dest = resp; char *dest = resp;
@ -424,7 +426,9 @@ bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool verbose) {
return at_command(cmdbuf, resp, resplen, verbose); return at_command(cmdbuf, resp, resplen, verbose);
} }
bool bluefruit_le_is_connected(void) { return state.is_connected; } bool bluefruit_le_is_connected(void) {
return state.is_connected;
}
bool bluefruit_le_enable_keyboard(void) { bool bluefruit_le_enable_keyboard(void) {
char resbuf[128]; char resbuf[128];
@ -671,7 +675,9 @@ void bluefruit_le_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan,
} }
#endif #endif
uint32_t bluefruit_le_read_battery_voltage(void) { return state.vbat; } uint32_t bluefruit_le_read_battery_voltage(void) {
return state.vbat;
}
bool bluefruit_le_set_mode_leds(bool on) { bool bluefruit_le_set_mode_leds(bool on) {
if (!state.configured) { if (!state.configured) {

View File

@ -61,7 +61,9 @@ static inline uint16_t rn42_consumer_usage_to_bitmap(uint16_t usage) {
} }
} }
void rn42_init(void) { uart_init(RN42_BAUD_RATE); } void rn42_init(void) {
uart_init(RN42_BAUD_RATE);
}
void rn42_send_keyboard(report_keyboard_t *report) { void rn42_send_keyboard(report_keyboard_t *report) {
uart_write(0xFD); uart_write(0xFD);

View File

@ -37,11 +37,17 @@ uint32_t eeprom_read_dword(const uint32_t *addr) {
return ret; return ret;
} }
void eeprom_write_byte(uint8_t *addr, uint8_t value) { eeprom_write_block(&value, addr, 1); } void eeprom_write_byte(uint8_t *addr, uint8_t value) {
eeprom_write_block(&value, addr, 1);
}
void eeprom_write_word(uint16_t *addr, uint16_t value) { eeprom_write_block(&value, addr, 2); } void eeprom_write_word(uint16_t *addr, uint16_t value) {
eeprom_write_block(&value, addr, 2);
}
void eeprom_write_dword(uint32_t *addr, uint32_t value) { eeprom_write_block(&value, addr, 4); } void eeprom_write_dword(uint32_t *addr, uint32_t value) {
eeprom_write_block(&value, addr, 4);
}
void eeprom_update_block(const void *buf, void *addr, size_t len) { void eeprom_update_block(const void *buf, void *addr, size_t len) {
uint8_t read_buf[len]; uint8_t read_buf[len];

View File

@ -52,7 +52,9 @@
# define EXTERNAL_EEPROM_SPI_TIMEOUT 100 # define EXTERNAL_EEPROM_SPI_TIMEOUT 100
#endif #endif
static bool spi_eeprom_start(void) { return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR); } static bool spi_eeprom_start(void) {
return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR);
}
static spi_status_t spi_eeprom_wait_while_busy(int timeout) { static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
uint32_t deadline = timer_read32() + timeout; uint32_t deadline = timer_read32() + timeout;
@ -80,7 +82,9 @@ static void spi_eeprom_transmit_address(uintptr_t addr) {
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
void eeprom_driver_init(void) { spi_init(); } void eeprom_driver_init(void) {
spi_init();
}
void eeprom_driver_erase(void) { void eeprom_driver_erase(void) {
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT) #if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)

View File

@ -30,9 +30,13 @@ size_t clamp_length(intptr_t offset, size_t len) {
return len; return len;
} }
void eeprom_driver_init(void) { eeprom_driver_erase(); } void eeprom_driver_init(void) {
eeprom_driver_erase();
}
void eeprom_driver_erase(void) { memset(transientBuffer, 0x00, TRANSIENT_EEPROM_SIZE); } void eeprom_driver_erase(void) {
memset(transientBuffer, 0x00, TRANSIENT_EEPROM_SIZE);
}
void eeprom_read_block(void *buf, const void *addr, size_t len) { void eeprom_read_block(void *buf, const void *addr, size_t len) {
intptr_t offset = (intptr_t)addr; intptr_t offset = (intptr_t)addr;

View File

@ -65,7 +65,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define DEBUG_FLASH_SPI_OUTPUT // #define DEBUG_FLASH_SPI_OUTPUT
static bool spi_flash_start(void) { return spi_start(EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN, EXTERNAL_FLASH_SPI_LSBFIRST, EXTERNAL_FLASH_SPI_MODE, EXTERNAL_FLASH_SPI_CLOCK_DIVISOR); } static bool spi_flash_start(void) {
return spi_start(EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN, EXTERNAL_FLASH_SPI_LSBFIRST, EXTERNAL_FLASH_SPI_MODE, EXTERNAL_FLASH_SPI_CLOCK_DIVISOR);
}
static flash_status_t spi_flash_wait_while_busy(void) { static flash_status_t spi_flash_wait_while_busy(void) {
uint32_t deadline = timer_read32() + EXTERNAL_FLASH_SPI_TIMEOUT; uint32_t deadline = timer_read32() + EXTERNAL_FLASH_SPI_TIMEOUT;
@ -160,7 +162,9 @@ static flash_status_t spi_flash_transaction(uint8_t cmd, uint32_t addr, uint8_t
return response; return response;
} }
void flash_init(void) { spi_init(); } void flash_init(void) {
spi_init();
}
flash_status_t flash_erase_chip(void) { flash_status_t flash_erase_chip(void) {
flash_status_t response = FLASH_STATUS_SUCCESS; flash_status_t response = FLASH_STATUS_SUCCESS;

View File

@ -111,7 +111,9 @@ void DRV_rtp_init(void) {
DRV_write(DRV_GO, 0x01); DRV_write(DRV_GO, 0x01);
} }
void DRV_amplitude(uint8_t amplitude) { DRV_write(DRV_RTP_INPUT, amplitude); } void DRV_amplitude(uint8_t amplitude) {
DRV_write(DRV_RTP_INPUT, amplitude);
}
void DRV_pulse(uint8_t sequence) { void DRV_pulse(uint8_t sequence) {
DRV_write(DRV_GO, 0x00); DRV_write(DRV_GO, 0x00);

View File

@ -28,13 +28,21 @@ uint8_t solenoid_dwell = SOLENOID_DEFAULT_DWELL;
extern haptic_config_t haptic_config; extern haptic_config_t haptic_config;
void solenoid_buzz_on(void) { haptic_set_buzz(1); } void solenoid_buzz_on(void) {
haptic_set_buzz(1);
}
void solenoid_buzz_off(void) { haptic_set_buzz(0); } void solenoid_buzz_off(void) {
haptic_set_buzz(0);
}
void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); } void solenoid_set_buzz(int buzz) {
haptic_set_buzz(buzz);
}
void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; } void solenoid_set_dwell(uint8_t dwell) {
solenoid_dwell = dwell;
}
void solenoid_stop(void) { void solenoid_stop(void) {
SOLENOID_PIN_WRITE_INACTIVE(); SOLENOID_PIN_WRITE_INACTIVE();
@ -89,4 +97,6 @@ void solenoid_setup(void) {
} }
} }
void solenoid_shutdown(void) { SOLENOID_PIN_WRITE_INACTIVE(); } void solenoid_shutdown(void) {
SOLENOID_PIN_WRITE_INACTIVE();
}

View File

@ -138,7 +138,9 @@ bool st7565_init(display_rotation_t rotation) {
return true; return true;
} }
__attribute__((weak)) display_rotation_t st7565_init_user(display_rotation_t rotation) { return rotation; } __attribute__((weak)) display_rotation_t st7565_init_user(display_rotation_t rotation) {
return rotation;
}
void st7565_clear(void) { void st7565_clear(void) {
memset(st7565_buffer, 0, sizeof(st7565_buffer)); memset(st7565_buffer, 0, sizeof(st7565_buffer));
@ -212,7 +214,8 @@ void st7565_advance_page(bool clearPageRemainder) {
remaining = remaining / ST7565_FONT_WIDTH; remaining = remaining / ST7565_FONT_WIDTH;
// Write empty character until next line // Write empty character until next line
while (remaining--) st7565_write_char(' ', false); while (remaining--)
st7565_write_char(' ', false);
} else { } else {
// Next page index out of bounds? // Next page index out of bounds?
if (index + remaining >= ST7565_MATRIX_SIZE) { if (index + remaining >= ST7565_MATRIX_SIZE) {
@ -429,7 +432,9 @@ bool st7565_off(void) {
__attribute__((weak)) void st7565_off_user(void) {} __attribute__((weak)) void st7565_off_user(void) {}
bool st7565_is_on(void) { return st7565_active; } bool st7565_is_on(void) {
return st7565_active;
}
bool st7565_invert(bool invert) { bool st7565_invert(bool invert) {
if (!st7565_initialized) { if (!st7565_initialized) {
@ -445,9 +450,13 @@ bool st7565_invert(bool invert) {
return st7565_inverted; return st7565_inverted;
} }
uint8_t st7565_max_chars(void) { return ST7565_DISPLAY_WIDTH / ST7565_FONT_WIDTH; } uint8_t st7565_max_chars(void) {
return ST7565_DISPLAY_WIDTH / ST7565_FONT_WIDTH;
}
uint8_t st7565_max_lines(void) { return ST7565_DISPLAY_HEIGHT / ST7565_FONT_HEIGHT; } uint8_t st7565_max_lines(void) {
return ST7565_DISPLAY_HEIGHT / ST7565_FONT_HEIGHT;
}
void st7565_task(void) { void st7565_task(void) {
if (!st7565_initialized) { if (!st7565_initialized) {

View File

@ -72,7 +72,9 @@ void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds) {
} }
// Overwrite the default rgblight_call_driver to use apa102 driver // Overwrite the default rgblight_call_driver to use apa102 driver
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { apa102_setleds(start_led, num_leds); } void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) {
apa102_setleds(start_led, num_leds);
}
void static apa102_init(void) { void static apa102_init(void) {
setPinOutput(RGB_DI_PIN); setPinOutput(RGB_DI_PIN);

View File

@ -232,8 +232,12 @@ bool oled_init(oled_rotation_t rotation) {
return true; return true;
} }
__attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return rotation; } __attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } return rotation;
}
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return rotation;
}
void oled_clear(void) { void oled_clear(void) {
memset(oled_buffer, 0, sizeof(oled_buffer)); memset(oled_buffer, 0, sizeof(oled_buffer));
@ -368,7 +372,8 @@ void oled_advance_page(bool clearPageRemainder) {
remaining = remaining / OLED_FONT_WIDTH; remaining = remaining / OLED_FONT_WIDTH;
// Write empty character until next line // Write empty character until next line
while (remaining--) oled_write_char(' ', false); while (remaining--)
oled_write_char(' ', false);
} else { } else {
// Next page index out of bounds? // Next page index out of bounds?
if (index + remaining >= OLED_MATRIX_SIZE) { if (index + remaining >= OLED_MATRIX_SIZE) {
@ -595,7 +600,9 @@ bool oled_off(void) {
return !oled_active; return !oled_active;
} }
bool is_oled_on(void) { return oled_active; } bool is_oled_on(void) {
return oled_active;
}
uint8_t oled_set_brightness(uint8_t level) { uint8_t oled_set_brightness(uint8_t level) {
if (!oled_initialized) { if (!oled_initialized) {
@ -613,7 +620,9 @@ uint8_t oled_set_brightness(uint8_t level) {
return oled_brightness; return oled_brightness;
} }
uint8_t oled_get_brightness(void) { return oled_brightness; } uint8_t oled_get_brightness(void) {
return oled_brightness;
}
// Set the specific 8 lines rows of the screen to scroll. // Set the specific 8 lines rows of the screen to scroll.
// 0 is the default for start, and 7 for end, which is the entire // 0 is the default for start, and 7 for end, which is the entire
@ -693,7 +702,9 @@ bool oled_scroll_off(void) {
return !oled_scrolling; return !oled_scrolling;
} }
bool is_oled_scrolling(void) { return oled_scrolling; } bool is_oled_scrolling(void) {
return oled_scrolling;
}
bool oled_invert(bool invert) { bool oled_invert(bool invert) {
if (!oled_initialized) { if (!oled_initialized) {
@ -777,5 +788,9 @@ void oled_task(void) {
#endif #endif
} }
__attribute__((weak)) bool oled_task_kb(void) { return oled_task_user(); } __attribute__((weak)) bool oled_task_kb(void) {
__attribute__((weak)) bool oled_task_user(void) { return true; } return oled_task_user();
}
__attribute__((weak)) bool oled_task_user(void) {
return true;
}

View File

@ -71,7 +71,9 @@ static inline void pbuf_clear(void);
#if defined(PROTOCOL_CHIBIOS) #if defined(PROTOCOL_CHIBIOS)
void ps2_interrupt_service_routine(void); void ps2_interrupt_service_routine(void);
void palCallback(void *arg) { ps2_interrupt_service_routine(); } void palCallback(void *arg) {
ps2_interrupt_service_routine();
}
# define PS2_INT_INIT() \ # define PS2_INT_INIT() \
{ palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT); } \ { palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT); } \
@ -244,7 +246,9 @@ RETURN:
} }
#if defined(__AVR__) #if defined(__AVR__)
ISR(PS2_INT_VECT) { ps2_interrupt_service_routine(); } ISR(PS2_INT_VECT) {
ps2_interrupt_service_routine();
}
#endif #endif
/* send LED state to keyboard */ /* send LED state to keyboard */

View File

@ -113,9 +113,13 @@ void ps2_mouse_task(void) {
ps2_mouse_clear_report(&mouse_report); ps2_mouse_clear_report(&mouse_report);
} }
void ps2_mouse_disable_data_reporting(void) { PS2_MOUSE_SEND(PS2_MOUSE_DISABLE_DATA_REPORTING, "ps2 mouse disable data reporting"); } void ps2_mouse_disable_data_reporting(void) {
PS2_MOUSE_SEND(PS2_MOUSE_DISABLE_DATA_REPORTING, "ps2 mouse disable data reporting");
}
void ps2_mouse_enable_data_reporting(void) { PS2_MOUSE_SEND(PS2_MOUSE_ENABLE_DATA_REPORTING, "ps2 mouse enable data reporting"); } void ps2_mouse_enable_data_reporting(void) {
PS2_MOUSE_SEND(PS2_MOUSE_ENABLE_DATA_REPORTING, "ps2 mouse enable data reporting");
}
void ps2_mouse_set_remote_mode(void) { void ps2_mouse_set_remote_mode(void) {
PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_REMOTE_MODE, "ps2 mouse set remote mode"); PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_REMOTE_MODE, "ps2 mouse set remote mode");
@ -127,13 +131,21 @@ void ps2_mouse_set_stream_mode(void) {
ps2_mouse_mode = PS2_MOUSE_STREAM_MODE; ps2_mouse_mode = PS2_MOUSE_STREAM_MODE;
} }
void ps2_mouse_set_scaling_2_1(void) { PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_2_1, "ps2 mouse set scaling 2:1"); } void ps2_mouse_set_scaling_2_1(void) {
PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_2_1, "ps2 mouse set scaling 2:1");
}
void ps2_mouse_set_scaling_1_1(void) { PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_1_1, "ps2 mouse set scaling 1:1"); } void ps2_mouse_set_scaling_1_1(void) {
PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_1_1, "ps2 mouse set scaling 1:1");
}
void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution) { PS2_MOUSE_SET_SAFE(PS2_MOUSE_SET_RESOLUTION, resolution, "ps2 mouse set resolution"); } void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution) {
PS2_MOUSE_SET_SAFE(PS2_MOUSE_SET_RESOLUTION, resolution, "ps2 mouse set resolution");
}
void ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate) { PS2_MOUSE_SET_SAFE(PS2_MOUSE_SET_SAMPLE_RATE, sample_rate, "ps2 mouse set sample rate"); } void ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate) {
PS2_MOUSE_SET_SAFE(PS2_MOUSE_SET_SAMPLE_RATE, sample_rate, "ps2 mouse set sample rate");
}
/* ============================= HELPERS ============================ */ /* ============================= HELPERS ============================ */

View File

@ -74,9 +74,13 @@ void adns5050_sync(void) {
writePinHigh(ADNS5050_CS_PIN); writePinHigh(ADNS5050_CS_PIN);
} }
void adns5050_cs_select(void) { writePinLow(ADNS5050_CS_PIN); } void adns5050_cs_select(void) {
writePinLow(ADNS5050_CS_PIN);
}
void adns5050_cs_deselect(void) { writePinHigh(ADNS5050_CS_PIN); } void adns5050_cs_deselect(void) {
writePinHigh(ADNS5050_CS_PIN);
}
uint8_t adns5050_serial_read(void) { uint8_t adns5050_serial_read(void) {
setPinInput(ADNS5050_SDIO_PIN); setPinInput(ADNS5050_SDIO_PIN);

View File

@ -77,7 +77,9 @@
#define MSB1 0x80 #define MSB1 0x80
// clang-format on // clang-format on
void adns9800_spi_start(void) { spi_start(ADNS9800_CS_PIN, false, ADNS9800_SPI_MODE, ADNS9800_SPI_DIVISOR); } void adns9800_spi_start(void) {
spi_start(ADNS9800_CS_PIN, false, ADNS9800_SPI_MODE, ADNS9800_SPI_DIVISOR);
}
void adns9800_write(uint8_t reg_addr, uint8_t data) { void adns9800_write(uint8_t reg_addr, uint8_t data) {
adns9800_spi_start(); adns9800_spi_start();

View File

@ -54,7 +54,9 @@ void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count);
void RAP_Write(uint8_t address, uint8_t data); void RAP_Write(uint8_t address, uint8_t data);
#ifdef CONSOLE_ENABLE #ifdef CONSOLE_ENABLE
void print_byte(uint8_t byte) { xprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } void print_byte(uint8_t byte) {
xprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0'));
}
#endif #endif
/* Logical Scaling Functions */ /* Logical Scaling Functions */
@ -73,8 +75,12 @@ void ClipCoordinates(pinnacle_data_t* coordinates) {
} }
} }
uint16_t cirque_pinnacle_get_scale(void) { return scale_data; } uint16_t cirque_pinnacle_get_scale(void) {
void cirque_pinnacle_set_scale(uint16_t scale) { scale_data = scale; } return scale_data;
}
void cirque_pinnacle_set_scale(uint16_t scale) {
scale_data = scale;
}
// Scales data to desired X & Y resolution // Scales data to desired X & Y resolution
void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution) { void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution) {

View File

@ -33,7 +33,9 @@
static uint16_t precision = 128; static uint16_t precision = 128;
uint16_t pimoroni_trackball_get_cpi(void) { return (precision * 125); } uint16_t pimoroni_trackball_get_cpi(void) {
return (precision * 125);
}
/** /**
* @brief Sets the scaling value for pimoroni trackball * @brief Sets the scaling value for pimoroni trackball
* *

View File

@ -86,7 +86,9 @@
bool _inBurst = false; bool _inBurst = false;
#ifdef CONSOLE_ENABLE #ifdef CONSOLE_ENABLE
void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } void print_byte(uint8_t byte) {
dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0'));
}
#endif #endif
#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt))) #define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))

View File

@ -90,7 +90,9 @@
bool _inBurst = false; bool _inBurst = false;
#ifdef CONSOLE_ENABLE #ifdef CONSOLE_ENABLE
void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } void print_byte(uint8_t byte) {
dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0'));
}
#endif #endif
#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt))) #define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))

View File

@ -155,7 +155,9 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
} }
} }
void eeprom_update_byte(uint8_t *addr, uint8_t value) { eeprom_write_byte(addr, value); } void eeprom_update_byte(uint8_t *addr, uint8_t value) {
eeprom_write_byte(addr, value);
}
void eeprom_update_word(uint16_t *addr, uint16_t value) { void eeprom_update_word(uint16_t *addr, uint16_t value) {
uint8_t *p = (uint8_t *)addr; uint8_t *p = (uint8_t *)addr;

0
platforms/arm_atsam/eeprom_samd.h Executable file → Normal file
View File

View File

@ -2,18 +2,34 @@
#include "timer.h" #include "timer.h"
#include "tmk_core/protocol/arm_atsam/clks.h" #include "tmk_core/protocol/arm_atsam/clks.h"
void set_time(uint64_t tset) { ms_clk = tset; } void set_time(uint64_t tset) {
ms_clk = tset;
}
void timer_init(void) { timer_clear(); } void timer_init(void) {
timer_clear();
}
uint16_t timer_read(void) { return (uint16_t)ms_clk; } uint16_t timer_read(void) {
return (uint16_t)ms_clk;
}
uint32_t timer_read32(void) { return (uint32_t)ms_clk; } uint32_t timer_read32(void) {
return (uint32_t)ms_clk;
}
uint64_t timer_read64(void) { return ms_clk; } uint64_t timer_read64(void) {
return ms_clk;
}
uint16_t timer_elapsed(uint16_t tlast) { return TIMER_DIFF_16(timer_read(), tlast); } uint16_t timer_elapsed(uint16_t tlast) {
return TIMER_DIFF_16(timer_read(), tlast);
}
uint32_t timer_elapsed32(uint32_t tlast) { return TIMER_DIFF_32(timer_read32(), tlast); } uint32_t timer_elapsed32(uint32_t tlast) {
return TIMER_DIFF_32(timer_read32(), tlast);
}
void timer_clear(void) { set_time(0); } void timer_clear(void) {
set_time(0);
}

View File

@ -21,9 +21,13 @@
static uint8_t aref = ADC_REF_POWER; static uint8_t aref = ADC_REF_POWER;
void analogReference(uint8_t mode) { aref = mode & (_BV(REFS1) | _BV(REFS0)); } void analogReference(uint8_t mode) {
aref = mode & (_BV(REFS1) | _BV(REFS0));
}
int16_t analogReadPin(pin_t pin) { return adc_read(pinToMux(pin)); } int16_t analogReadPin(pin_t pin) {
return adc_read(pinToMux(pin));
}
uint8_t pinToMux(pin_t pin) { uint8_t pinToMux(pin_t pin) {
switch (pin) { switch (pin) {

View File

@ -202,7 +202,9 @@ void channel_2_set_frequency(float freq) {
AUDIO2_OCRxy = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre / 100); AUDIO2_OCRxy = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre / 100);
} }
float channel_2_get_frequency(void) { return channel_2_frequency; } float channel_2_get_frequency(void) {
return channel_2_frequency;
}
void channel_2_start(void) { void channel_2_start(void) {
AUDIO2_TIMSKx |= _BV(AUDIO2_OCIExy); AUDIO2_TIMSKx |= _BV(AUDIO2_OCIExy);

View File

@ -362,17 +362,23 @@ void lcd_gotoxy(uint8_t x, uint8_t y) {
/************************************************************************* /*************************************************************************
*************************************************************************/ *************************************************************************/
int lcd_getxy(void) { return lcd_waitbusy(); } int lcd_getxy(void) {
return lcd_waitbusy();
}
/************************************************************************* /*************************************************************************
Clear display and set cursor to home position Clear display and set cursor to home position
*************************************************************************/ *************************************************************************/
void lcd_clrscr(void) { lcd_command(1 << LCD_CLR); } void lcd_clrscr(void) {
lcd_command(1 << LCD_CLR);
}
/************************************************************************* /*************************************************************************
Set cursor to home position Set cursor to home position
*************************************************************************/ *************************************************************************/
void lcd_home(void) { lcd_command(1 << LCD_HOME); } void lcd_home(void) {
lcd_command(1 << LCD_HOME);
}
/************************************************************************* /*************************************************************************
Display character at current cursor position Display character at current cursor position

View File

@ -23,7 +23,9 @@ void clock_lo(void) {
setPinOutput(PS2_CLOCK_PIN); setPinOutput(PS2_CLOCK_PIN);
} }
void clock_hi(void) { setPinInputHigh(PS2_CLOCK_PIN); } void clock_hi(void) {
setPinInputHigh(PS2_CLOCK_PIN);
}
bool clock_in(void) { bool clock_in(void) {
setPinInputHigh(PS2_CLOCK_PIN); setPinInputHigh(PS2_CLOCK_PIN);
@ -42,7 +44,9 @@ void data_lo(void) {
setPinOutput(PS2_DATA_PIN); setPinOutput(PS2_DATA_PIN);
} }
void data_hi(void) { setPinInputHigh(PS2_DATA_PIN); } void data_hi(void) {
setPinInputHigh(PS2_DATA_PIN);
}
bool data_in(void) { bool data_in(void) {
setPinInputHigh(PS2_DATA_PIN); setPinInputHigh(PS2_DATA_PIN);

View File

@ -223,29 +223,45 @@
# define SLAVE_INT_ACK_WIDTH 4 # define SLAVE_INT_ACK_WIDTH 4
inline static void serial_delay(void) ALWAYS_INLINE; inline static void serial_delay(void) ALWAYS_INLINE;
inline static void serial_delay(void) { _delay_us(SERIAL_DELAY); } inline static void serial_delay(void) {
_delay_us(SERIAL_DELAY);
}
inline static void serial_delay_half1(void) ALWAYS_INLINE; inline static void serial_delay_half1(void) ALWAYS_INLINE;
inline static void serial_delay_half1(void) { _delay_us(SERIAL_DELAY_HALF1); } inline static void serial_delay_half1(void) {
_delay_us(SERIAL_DELAY_HALF1);
}
inline static void serial_delay_half2(void) ALWAYS_INLINE; inline static void serial_delay_half2(void) ALWAYS_INLINE;
inline static void serial_delay_half2(void) { _delay_us(SERIAL_DELAY_HALF2); } inline static void serial_delay_half2(void) {
_delay_us(SERIAL_DELAY_HALF2);
}
inline static void serial_output(void) ALWAYS_INLINE; inline static void serial_output(void) ALWAYS_INLINE;
inline static void serial_output(void) { setPinOutput(SOFT_SERIAL_PIN); } inline static void serial_output(void) {
setPinOutput(SOFT_SERIAL_PIN);
}
// make the serial pin an input with pull-up resistor // make the serial pin an input with pull-up resistor
inline static void serial_input_with_pullup(void) ALWAYS_INLINE; inline static void serial_input_with_pullup(void) ALWAYS_INLINE;
inline static void serial_input_with_pullup(void) { setPinInputHigh(SOFT_SERIAL_PIN); } inline static void serial_input_with_pullup(void) {
setPinInputHigh(SOFT_SERIAL_PIN);
}
inline static uint8_t serial_read_pin(void) ALWAYS_INLINE; inline static uint8_t serial_read_pin(void) ALWAYS_INLINE;
inline static uint8_t serial_read_pin(void) { return !!readPin(SOFT_SERIAL_PIN); } inline static uint8_t serial_read_pin(void) {
return !!readPin(SOFT_SERIAL_PIN);
}
inline static void serial_low(void) ALWAYS_INLINE; inline static void serial_low(void) ALWAYS_INLINE;
inline static void serial_low(void) { writePinLow(SOFT_SERIAL_PIN); } inline static void serial_low(void) {
writePinLow(SOFT_SERIAL_PIN);
}
inline static void serial_high(void) ALWAYS_INLINE; inline static void serial_high(void) ALWAYS_INLINE;
inline static void serial_high(void) { writePinHigh(SOFT_SERIAL_PIN); } inline static void serial_high(void) {
writePinHigh(SOFT_SERIAL_PIN);
}
void soft_serial_initiator_init(void) { void soft_serial_initiator_init(void) {
serial_output(); serial_output();

View File

@ -226,7 +226,9 @@ void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) {
matrix_write_char_inner(matrix, c); matrix_write_char_inner(matrix, c);
} }
void iota_gfx_write_char(uint8_t c) { matrix_write_char(&display, c); } void iota_gfx_write_char(uint8_t c) {
matrix_write_char(&display, c);
}
void matrix_write(struct CharacterMatrix *matrix, const char *data) { void matrix_write(struct CharacterMatrix *matrix, const char *data) {
const char *end = data + strlen(data); const char *end = data + strlen(data);
@ -236,7 +238,9 @@ void matrix_write(struct CharacterMatrix *matrix, const char *data) {
} }
} }
void iota_gfx_write(const char *data) { matrix_write(&display, data); } void iota_gfx_write(const char *data) {
matrix_write(&display, data);
}
void matrix_write_P(struct CharacterMatrix *matrix, const char *data) { void matrix_write_P(struct CharacterMatrix *matrix, const char *data) {
while (true) { while (true) {
@ -249,7 +253,9 @@ void matrix_write_P(struct CharacterMatrix *matrix, const char *data) {
} }
} }
void iota_gfx_write_P(const char *data) { matrix_write_P(&display, data); } void iota_gfx_write_P(const char *data) {
matrix_write_P(&display, data);
}
void matrix_clear(struct CharacterMatrix *matrix) { void matrix_clear(struct CharacterMatrix *matrix) {
memset(matrix->display, ' ', sizeof(matrix->display)); memset(matrix->display, ' ', sizeof(matrix->display));
@ -257,7 +263,9 @@ void matrix_clear(struct CharacterMatrix *matrix) {
matrix->dirty = true; matrix->dirty = true;
} }
void iota_gfx_clear_screen(void) { matrix_clear(&display); } void iota_gfx_clear_screen(void) {
matrix_clear(&display);
}
void matrix_render(struct CharacterMatrix *matrix) { void matrix_render(struct CharacterMatrix *matrix) {
last_flush = timer_read(); last_flush = timer_read();
@ -301,7 +309,9 @@ done:
# endif # endif
} }
void iota_gfx_flush(void) { matrix_render(&display); } void iota_gfx_flush(void) {
matrix_render(&display);
}
__attribute__((weak)) void iota_gfx_task_user(void) {} __attribute__((weak)) void iota_gfx_task_user(void) {}

View File

@ -13,7 +13,9 @@
# define WS2812_TIMEOUT 100 # define WS2812_TIMEOUT 100
#endif #endif
void ws2812_init(void) { i2c_init(); } void ws2812_init(void) {
i2c_init();
}
// Setleds for standard RGB // Setleds for standard RGB
void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {

View File

@ -17,4 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "xprintf.h" #include "xprintf.h"
#include "sendchar.h" #include "sendchar.h"
void print_set_sendchar(sendchar_func_t func) { xdev_out(func); } void print_set_sendchar(sendchar_func_t func) {
xdev_out(func);
}

View File

@ -73,7 +73,9 @@ void timer_init(void) {
* FIXME: needs doc * FIXME: needs doc
*/ */
inline void timer_clear(void) { inline void timer_clear(void) {
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { timer_count = 0; } ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
timer_count = 0;
}
} }
/** \brief timer read /** \brief timer read
@ -83,7 +85,9 @@ inline void timer_clear(void) {
inline uint16_t timer_read(void) { inline uint16_t timer_read(void) {
uint32_t t; uint32_t t;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { t = timer_count; } ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
t = timer_count;
}
return (t & 0xFFFF); return (t & 0xFFFF);
} }
@ -95,7 +99,9 @@ inline uint16_t timer_read(void) {
inline uint32_t timer_read32(void) { inline uint32_t timer_read32(void) {
uint32_t t; uint32_t t;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { t = timer_count; } ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
t = timer_count;
}
return t; return t;
} }
@ -107,7 +113,9 @@ inline uint32_t timer_read32(void) {
inline uint16_t timer_elapsed(uint16_t last) { inline uint16_t timer_elapsed(uint16_t last) {
uint32_t t; uint32_t t;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { t = timer_count; } ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
t = timer_count;
}
return TIMER_DIFF_16((t & 0xFFFF), last); return TIMER_DIFF_16((t & 0xFFFF), last);
} }
@ -119,7 +127,9 @@ inline uint16_t timer_elapsed(uint16_t last) {
inline uint32_t timer_elapsed32(uint32_t last) { inline uint32_t timer_elapsed32(uint32_t last) {
uint32_t t; uint32_t t;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { t = timer_count; } ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
t = timer_count;
}
return TIMER_DIFF_32(t, last); return TIMER_DIFF_32(t, last);
} }
@ -130,4 +140,6 @@ inline uint32_t timer_elapsed32(uint32_t last) {
#else #else
# define TIMER_INTERRUPT_VECTOR TIMER0_COMP_vect # define TIMER_INTERRUPT_VECTOR TIMER0_COMP_vect
#endif #endif
ISR(TIMER_INTERRUPT_VECTOR, ISR_NOBLOCK) { timer_count++; } ISR(TIMER_INTERRUPT_VECTOR, ISR_NOBLOCK) {
timer_count++;
}

View File

@ -18,4 +18,6 @@
#include <ch.h> #include <ch.h>
__attribute__((weak)) void bootloader_jump(void) { NVIC_SystemReset(); } __attribute__((weak)) void bootloader_jump(void) {
NVIC_SystemReset();
}

View File

@ -28,7 +28,9 @@ typedef struct {
uint8_t adc; uint8_t adc;
} adc_mux; } adc_mux;
#define TO_MUX(i, a) \ #define TO_MUX(i, a) \
(adc_mux) { i, a } (adc_mux) { \
i, a \
}
int16_t analogReadPin(pin_t pin); int16_t analogReadPin(pin_t pin);
int16_t analogReadPinAdc(pin_t pin, uint8_t adc); int16_t analogReadPinAdc(pin_t pin, uint8_t adc);

View File

@ -321,7 +321,9 @@ void audio_driver_initialize() {
gptStart(&GPTD6, &gpt6cfg1); gptStart(&GPTD6, &gpt6cfg1);
} }
void audio_driver_stop(void) { state = OUTPUT_SHOULD_STOP; } void audio_driver_stop(void) {
state = OUTPUT_SHOULD_STOP;
}
void audio_driver_start(void) { void audio_driver_start(void) {
gptStartContinuous(&GPTD6, 2U); gptStartContinuous(&GPTD6, 2U);

View File

@ -121,7 +121,9 @@ void channel_1_set_frequency(float freq) {
gpt6cfg1.frequency = 2 * freq * AUDIO_DAC_BUFFER_SIZE; gpt6cfg1.frequency = 2 * freq * AUDIO_DAC_BUFFER_SIZE;
channel_1_start(); channel_1_start();
} }
float channel_1_get_frequency(void) { return channel_1_frequency; } float channel_1_get_frequency(void) {
return channel_1_frequency;
}
void channel_2_start(void) { void channel_2_start(void) {
gptStart(&GPTD7, &gpt7cfg1); gptStart(&GPTD7, &gpt7cfg1);
@ -146,7 +148,9 @@ void channel_2_set_frequency(float freq) {
gpt7cfg1.frequency = 2 * freq * AUDIO_DAC_BUFFER_SIZE; gpt7cfg1.frequency = 2 * freq * AUDIO_DAC_BUFFER_SIZE;
channel_2_start(); channel_2_start();
} }
float channel_2_get_frequency(void) { return channel_2_frequency; } float channel_2_get_frequency(void) {
return channel_2_frequency;
}
static void gpt_audio_state_cb(GPTDriver *gptp) { static void gpt_audio_state_cb(GPTDriver *gptp) {
if (audio_update_state()) { if (audio_update_state()) {

View File

@ -82,14 +82,18 @@ void channel_1_set_frequency(float freq) {
PWM_PERCENTAGE_TO_WIDTH(&AUDIO_PWM_DRIVER, (100 - note_timbre) * 100)); PWM_PERCENTAGE_TO_WIDTH(&AUDIO_PWM_DRIVER, (100 - note_timbre) * 100));
} }
float channel_1_get_frequency(void) { return channel_1_frequency; } float channel_1_get_frequency(void) {
return channel_1_frequency;
}
void channel_1_start(void) { void channel_1_start(void) {
pwmStop(&AUDIO_PWM_DRIVER); pwmStop(&AUDIO_PWM_DRIVER);
pwmStart(&AUDIO_PWM_DRIVER, &pwmCFG); pwmStart(&AUDIO_PWM_DRIVER, &pwmCFG);
} }
void channel_1_stop(void) { pwmStop(&AUDIO_PWM_DRIVER); } void channel_1_stop(void) {
pwmStop(&AUDIO_PWM_DRIVER);
}
static void gpt_callback(GPTDriver *gptp); static void gpt_callback(GPTDriver *gptp);
GPTConfig gptCFG = { GPTConfig gptCFG = {

View File

@ -68,7 +68,9 @@ void channel_1_set_frequency(float freq) {
PWM_PERCENTAGE_TO_WIDTH(&AUDIO_PWM_DRIVER, (100 - note_timbre) * 100)); PWM_PERCENTAGE_TO_WIDTH(&AUDIO_PWM_DRIVER, (100 - note_timbre) * 100));
} }
float channel_1_get_frequency(void) { return channel_1_frequency; } float channel_1_get_frequency(void) {
return channel_1_frequency;
}
void channel_1_start(void) { void channel_1_start(void) {
pwmStop(&AUDIO_PWM_DRIVER); pwmStop(&AUDIO_PWM_DRIVER);

View File

@ -203,4 +203,6 @@ i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uin
return chibios_to_qmk(&status); return chibios_to_qmk(&status);
} }
void i2c_stop(void) { i2cStop(&I2C_DRIVER); } void i2c_stop(void) {
i2cStop(&I2C_DRIVER);
}

View File

@ -50,14 +50,30 @@
# error invalid SELECT_SOFT_SERIAL_SPEED value # error invalid SELECT_SOFT_SERIAL_SPEED value
#endif #endif
inline static void serial_delay(void) { wait_us(SERIAL_DELAY); } inline static void serial_delay(void) {
inline static void serial_delay_half(void) { wait_us(SERIAL_DELAY / 2); } wait_us(SERIAL_DELAY);
inline static void serial_delay_blip(void) { wait_us(1); } }
inline static void serial_output(void) { setPinOutput(SOFT_SERIAL_PIN); } inline static void serial_delay_half(void) {
inline static void serial_input(void) { setPinInputHigh(SOFT_SERIAL_PIN); } wait_us(SERIAL_DELAY / 2);
inline static bool serial_read_pin(void) { return !!readPin(SOFT_SERIAL_PIN); } }
inline static void serial_low(void) { writePinLow(SOFT_SERIAL_PIN); } inline static void serial_delay_blip(void) {
inline static void serial_high(void) { writePinHigh(SOFT_SERIAL_PIN); } wait_us(1);
}
inline static void serial_output(void) {
setPinOutput(SOFT_SERIAL_PIN);
}
inline static void serial_input(void) {
setPinInputHigh(SOFT_SERIAL_PIN);
}
inline static bool serial_read_pin(void) {
return !!readPin(SOFT_SERIAL_PIN);
}
inline static void serial_low(void) {
writePinLow(SOFT_SERIAL_PIN);
}
inline static void serial_high(void) {
writePinHigh(SOFT_SERIAL_PIN);
}
void interrupt_handler(void *arg); void interrupt_handler(void *arg);

View File

@ -43,7 +43,9 @@ void uart_init(uint32_t baud) {
} }
} }
void uart_write(uint8_t data) { sdPut(&SERIAL_DRIVER, c); } void uart_write(uint8_t data) {
sdPut(&SERIAL_DRIVER, c);
}
uint8_t uart_read(void) { uint8_t uart_read(void) {
msg_t res = sdGet(&SERIAL_DRIVER); msg_t res = sdGet(&SERIAL_DRIVER);
@ -51,8 +53,14 @@ uint8_t uart_read(void) {
return (uint8_t)res; return (uint8_t)res;
} }
void uart_transmit(const uint8_t *data, uint16_t length) { sdWrite(&SERIAL_DRIVER, data, length); } void uart_transmit(const uint8_t *data, uint16_t length) {
sdWrite(&SERIAL_DRIVER, data, length);
}
void uart_receive(uint8_t *data, uint16_t length) { sdRead(&SERIAL_DRIVER, data, length); } void uart_receive(uint8_t *data, uint16_t length) {
sdRead(&SERIAL_DRIVER, data, length);
}
bool uart_available(void) { return !sdGetWouldBlock(&SERIAL_DRIVER); } bool uart_available(void) {
return !sdGetWouldBlock(&SERIAL_DRIVER);
}

View File

@ -67,7 +67,9 @@ void sendByte(uint8_t byte) {
} }
} }
void ws2812_init(void) { palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE); } void ws2812_init(void) {
palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE);
}
// Setleds for standard RGB // Setleds for standard RGB
void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {

View File

@ -259,8 +259,10 @@ write/read to/from the other buffer).
void ws2812_init(void) { void ws2812_init(void) {
// Initialize led frame buffer // Initialize led frame buffer
uint32_t i; uint32_t i;
for (i = 0; i < WS2812_COLOR_BIT_N; i++) ws2812_frame_buffer[i] = WS2812_DUTYCYCLE_0; // All color bits are zero duty cycle for (i = 0; i < WS2812_COLOR_BIT_N; i++)
for (i = 0; i < WS2812_RESET_BIT_N; i++) ws2812_frame_buffer[i + WS2812_COLOR_BIT_N] = 0; // All reset bits are zero ws2812_frame_buffer[i] = WS2812_DUTYCYCLE_0; // All color bits are zero duty cycle
for (i = 0; i < WS2812_RESET_BIT_N; i++)
ws2812_frame_buffer[i + WS2812_COLOR_BIT_N] = 0; // All reset bits are zero
palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE); palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE);

View File

@ -104,20 +104,30 @@ static void set_led_color_rgb(LED_TYPE color, int pos) {
uint8_t* tx_start = &txbuf[PREAMBLE_SIZE]; uint8_t* tx_start = &txbuf[PREAMBLE_SIZE];
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB) #if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.g, j); for (int j = 0; j < 4; j++)
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.r, j); tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.g, j);
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j); for (int j = 0; j < 4; j++)
tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.r, j);
for (int j = 0; j < 4; j++)
tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j);
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB) #elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.r, j); for (int j = 0; j < 4; j++)
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j); tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.r, j);
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j); for (int j = 0; j < 4; j++)
tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j);
for (int j = 0; j < 4; j++)
tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j);
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR) #elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR)
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.b, j); for (int j = 0; j < 4; j++)
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j); tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.b, j);
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.r, j); for (int j = 0; j < 4; j++)
tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j);
for (int j = 0; j < 4; j++)
tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.r, j);
#endif #endif
#ifdef RGBW #ifdef RGBW
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 4 + j] = get_protocol_eq(color.w, j); for (int j = 0; j < 4; j++)
tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 4 + j] = get_protocol_eq(color.w, j);
#endif #endif
} }

View File

@ -560,9 +560,13 @@ uint16_t EEPROM_ReadDataWord(uint16_t Address) {
/***************************************************************************** /*****************************************************************************
* Bind to eeprom_driver.c * Bind to eeprom_driver.c
*******************************************************************************/ *******************************************************************************/
void eeprom_driver_init(void) { EEPROM_Init(); } void eeprom_driver_init(void) {
EEPROM_Init();
}
void eeprom_driver_erase(void) { EEPROM_Erase(); } void eeprom_driver_erase(void) {
EEPROM_Erase();
}
void eeprom_read_block(void *buf, const void *addr, size_t len) { void eeprom_read_block(void *buf, const void *addr, size_t len) {
const uint8_t *src = (const uint8_t *)addr; const uint8_t *src = (const uint8_t *)addr;

View File

@ -162,7 +162,9 @@ void eeprom_read_block(void *buf, const void *addr, uint32_t len) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
int eeprom_is_ready(void) { return (FTFL->FCNFG & FTFL_FCNFG_EEERDY) ? 1 : 0; } int eeprom_is_ready(void) {
return (FTFL->FCNFG & FTFL_FCNFG_EEERDY) ? 1 : 0;
}
/** \brief flexram wait /** \brief flexram wait
* *
@ -486,7 +488,9 @@ void eeprom_read_block(void *buf, const void *addr, uint32_t len) {
} }
} }
int eeprom_is_ready(void) { return 1; } int eeprom_is_ready(void) {
return 1;
}
void eeprom_write_word(uint16_t *addr, uint16_t value) { void eeprom_write_word(uint16_t *addr, uint16_t value) {
uint8_t *p = (uint8_t *)addr; uint8_t *p = (uint8_t *)addr;
@ -515,7 +519,9 @@ void eeprom_write_block(const void *buf, void *addr, uint32_t len) {
#endif /* chip selection */ #endif /* chip selection */
// The update functions just calls write for now, but could probably be optimized // The update functions just calls write for now, but could probably be optimized
void eeprom_update_byte(uint8_t *addr, uint8_t value) { eeprom_write_byte(addr, value); } void eeprom_update_byte(uint8_t *addr, uint8_t value) {
eeprom_write_byte(addr, value);
}
void eeprom_update_word(uint16_t *addr, uint16_t value) { void eeprom_update_word(uint16_t *addr, uint16_t value) {
uint8_t *p = (uint8_t *)addr; uint8_t *p = (uint8_t *)addr;

View File

@ -169,21 +169,33 @@ static void gptTimerCallback(GPTDriver *gptp) {
static const GPTConfig gptcfg = {1000000, gptTimerCallback, 0, 0}; static const GPTConfig gptcfg = {1000000, gptTimerCallback, 0, 0};
/* Initialise the timer */ /* Initialise the timer */
void sleep_led_init(void) { gptStart(&SLEEP_LED_GPT_DRIVER, &gptcfg); } void sleep_led_init(void) {
gptStart(&SLEEP_LED_GPT_DRIVER, &gptcfg);
}
void sleep_led_enable(void) { gptStartContinuous(&SLEEP_LED_GPT_DRIVER, gptcfg.frequency / 0xFFFF); } void sleep_led_enable(void) {
gptStartContinuous(&SLEEP_LED_GPT_DRIVER, gptcfg.frequency / 0xFFFF);
}
void sleep_led_disable(void) { gptStopTimer(&SLEEP_LED_GPT_DRIVER); } void sleep_led_disable(void) {
gptStopTimer(&SLEEP_LED_GPT_DRIVER);
}
void sleep_led_toggle(void) { (SLEEP_LED_GPT_DRIVER.state == GPT_READY) ? sleep_led_enable() : sleep_led_disable(); } void sleep_led_toggle(void) {
(SLEEP_LED_GPT_DRIVER.state == GPT_READY) ? sleep_led_enable() : sleep_led_disable();
}
#else /* platform selection: not on familiar chips */ #else /* platform selection: not on familiar chips */
void sleep_led_init(void) {} void sleep_led_init(void) {}
void sleep_led_enable(void) { led_set(1 << USB_LED_CAPS_LOCK); } void sleep_led_enable(void) {
led_set(1 << USB_LED_CAPS_LOCK);
}
void sleep_led_disable(void) { led_set(0); } void sleep_led_disable(void) {
led_set(0);
}
void sleep_led_toggle(void) { void sleep_led_toggle(void) {
// not implemented // not implemented

View File

@ -87,9 +87,13 @@ __attribute__((weak, used)) int _kill(int pid, int sig) {
return -1; return -1;
} }
__attribute__((weak, used)) pid_t _getpid(void) { return 1; } __attribute__((weak, used)) pid_t _getpid(void) {
return 1;
}
__attribute__((weak, used)) void _fini(void) { return; } __attribute__((weak, used)) void _fini(void) {
return;
}
__attribute__((weak, used, noreturn)) void _exit(int i) { __attribute__((weak, used, noreturn)) void _exit(int i) {
while (1) while (1)

View File

@ -73,7 +73,9 @@ void timer_clear(void) {
chSysUnlock(); chSysUnlock();
} }
uint16_t timer_read(void) { return (uint16_t)timer_read32(); } uint16_t timer_read(void) {
return (uint16_t)timer_read32();
}
uint32_t timer_read32(void) { uint32_t timer_read32(void) {
chSysLock(); chSysLock();
@ -96,6 +98,10 @@ uint32_t timer_read32(void) {
return (uint32_t)TIME_I2MS(ticks) + ms_offset_copy; return (uint32_t)TIME_I2MS(ticks) + ms_offset_copy;
} }
uint16_t timer_elapsed(uint16_t last) { return TIMER_DIFF_16(timer_read(), last); } uint16_t timer_elapsed(uint16_t last) {
return TIMER_DIFF_16(timer_read(), last);
}
uint32_t timer_elapsed32(uint32_t last) { return TIMER_DIFF_32(timer_read32(), last); } uint32_t timer_elapsed32(uint32_t last) {
return TIMER_DIFF_32(timer_read32(), last);
}

View File

@ -18,7 +18,9 @@ __attribute__((weak)) void suspend_power_down_user(void) {}
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
__attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user(); } __attribute__((weak)) void suspend_power_down_kb(void) {
suspend_power_down_user();
}
/** \brief run user level code immediately after wakeup /** \brief run user level code immediately after wakeup
* *
@ -30,7 +32,9 @@ __attribute__((weak)) void suspend_wakeup_init_user(void) {}
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
__attribute__((weak)) void suspend_wakeup_init_kb(void) { suspend_wakeup_init_user(); } __attribute__((weak)) void suspend_wakeup_init_kb(void) {
suspend_wakeup_init_user();
}
/** \brief suspend wakeup condition /** \brief suspend wakeup condition
* *

View File

@ -68,7 +68,9 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
} }
} }
void eeprom_update_byte(uint8_t *addr, uint8_t value) { eeprom_write_byte(addr, value); } void eeprom_update_byte(uint8_t *addr, uint8_t value) {
eeprom_write_byte(addr, value);
}
void eeprom_update_word(uint16_t *addr, uint16_t value) { void eeprom_update_word(uint16_t *addr, uint16_t value) {
uint8_t *p = (uint8_t *)addr; uint8_t *p = (uint8_t *)addr;

View File

@ -60,7 +60,9 @@ class EepromStm32Test : public testing::Test {
~EepromStm32Test() {} ~EepromStm32Test() {}
protected: protected:
void SetUp() override { EEPROM_Erase(); } void SetUp() override {
EEPROM_Erase();
}
void TearDown() override { void TearDown() override {
#ifdef EEPROM_DEBUG #ifdef EEPROM_DEBUG

View File

@ -44,6 +44,12 @@ FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) {
} }
} }
FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout) { return FLASH_COMPLETE; } FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout) {
void FLASH_Unlock(void) { flash_locked = false; } return FLASH_COMPLETE;
void FLASH_Lock(void) { flash_locked = true; } }
void FLASH_Unlock(void) {
flash_locked = false;
}
void FLASH_Lock(void) {
flash_locked = true;
}

View File

@ -18,16 +18,34 @@
static uint32_t current_time = 0; static uint32_t current_time = 0;
void timer_init(void) { current_time = 0; } void timer_init(void) {
current_time = 0;
}
void timer_clear(void) { current_time = 0; } void timer_clear(void) {
current_time = 0;
}
uint16_t timer_read(void) { return current_time & 0xFFFF; } uint16_t timer_read(void) {
uint32_t timer_read32(void) { return current_time; } return current_time & 0xFFFF;
uint16_t timer_elapsed(uint16_t last) { return TIMER_DIFF_16(timer_read(), last); } }
uint32_t timer_elapsed32(uint32_t last) { return TIMER_DIFF_32(timer_read32(), last); } uint32_t timer_read32(void) {
return current_time;
}
uint16_t timer_elapsed(uint16_t last) {
return TIMER_DIFF_16(timer_read(), last);
}
uint32_t timer_elapsed32(uint32_t last) {
return TIMER_DIFF_32(timer_read32(), last);
}
void set_time(uint32_t t) { current_time = t; } void set_time(uint32_t t) {
void advance_time(uint32_t ms) { current_time += ms; } current_time = t;
}
void advance_time(uint32_t ms) {
current_time += ms;
}
void wait_ms(uint32_t ms) { advance_time(ms); } void wait_ms(uint32_t ms) {
advance_time(ms);
}

View File

@ -52,14 +52,22 @@ uint32_t timer_elapsed32(uint32_t last);
# define TIMER_DIFF_FAST(a, b) TIMER_DIFF_16(a, b) # define TIMER_DIFF_FAST(a, b) TIMER_DIFF_16(a, b)
# define timer_expired_fast(current, future) timer_expired(current, future) # define timer_expired_fast(current, future) timer_expired(current, future)
typedef uint16_t fast_timer_t; typedef uint16_t fast_timer_t;
fast_timer_t inline timer_read_fast(void) { return timer_read(); } fast_timer_t inline timer_read_fast(void) {
fast_timer_t inline timer_elapsed_fast(fast_timer_t last) { return timer_elapsed(last); } return timer_read();
}
fast_timer_t inline timer_elapsed_fast(fast_timer_t last) {
return timer_elapsed(last);
}
#else #else
# define TIMER_DIFF_FAST(a, b) TIMER_DIFF_32(a, b) # define TIMER_DIFF_FAST(a, b) TIMER_DIFF_32(a, b)
# define timer_expired_fast(current, future) timer_expired32(current, future) # define timer_expired_fast(current, future) timer_expired32(current, future)
typedef uint32_t fast_timer_t; typedef uint32_t fast_timer_t;
fast_timer_t inline timer_read_fast(void) { return timer_read32(); } fast_timer_t inline timer_read_fast(void) {
fast_timer_t inline timer_elapsed_fast(fast_timer_t last) { return timer_elapsed32(last); } return timer_read32();
}
fast_timer_t inline timer_elapsed_fast(fast_timer_t last) {
return timer_elapsed32(last);
}
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -53,14 +53,20 @@ int retro_tapping_counter = 0;
#endif #endif
#ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY #ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY
__attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { return false; } __attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
return false;
}
#endif #endif
#ifdef RETRO_TAPPING_PER_KEY #ifdef RETRO_TAPPING_PER_KEY
__attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) { return false; } __attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
return false;
}
#endif #endif
__attribute__((weak)) bool pre_process_record_quantum(keyrecord_t *record) { return true; } __attribute__((weak)) bool pre_process_record_quantum(keyrecord_t *record) {
return true;
}
/** \brief Called to execute an action. /** \brief Called to execute an action.
* *
@ -163,10 +169,14 @@ void process_record_nocache(keyrecord_t *record) {
disable_action_cache = false; disable_action_cache = false;
} }
#else #else
void process_record_nocache(keyrecord_t *record) { process_record(record); } void process_record_nocache(keyrecord_t *record) {
process_record(record);
}
#endif #endif
__attribute__((weak)) bool process_record_quantum(keyrecord_t *record) { return true; } __attribute__((weak)) bool process_record_quantum(keyrecord_t *record) {
return true;
}
__attribute__((weak)) void post_process_record_quantum(keyrecord_t *record) {} __attribute__((weak)) void post_process_record_quantum(keyrecord_t *record) {}
@ -862,9 +872,13 @@ __attribute__((weak)) void register_code(uint8_t code) {
} }
#ifdef EXTRAKEY_ENABLE #ifdef EXTRAKEY_ENABLE
else if else if
IS_SYSTEM(code) { host_system_send(KEYCODE2SYSTEM(code)); } IS_SYSTEM(code) {
host_system_send(KEYCODE2SYSTEM(code));
}
else if else if
IS_CONSUMER(code) { host_consumer_send(KEYCODE2CONSUMER(code)); } IS_CONSUMER(code) {
host_consumer_send(KEYCODE2CONSUMER(code));
}
#endif #endif
#ifdef MOUSEKEY_ENABLE #ifdef MOUSEKEY_ENABLE
else if else if
@ -927,9 +941,13 @@ __attribute__((weak)) void unregister_code(uint8_t code) {
send_keyboard_report(); send_keyboard_report();
} }
else if else if
IS_SYSTEM(code) { host_system_send(0); } IS_SYSTEM(code) {
host_system_send(0);
}
else if else if
IS_CONSUMER(code) { host_consumer_send(0); } IS_CONSUMER(code) {
host_consumer_send(0);
}
#ifdef MOUSEKEY_ENABLE #ifdef MOUSEKEY_ENABLE
else if else if
IS_MOUSEKEY(code) { IS_MOUSEKEY(code) {
@ -956,7 +974,9 @@ __attribute__((weak)) void tap_code_delay(uint8_t code, uint16_t delay) {
* *
* \param code The basic keycode to tap. If `code` is `KC_CAPS_LOCK`, the delay will be `TAP_HOLD_CAPS_DELAY`, otherwise `TAP_CODE_DELAY`, if defined. * \param code The basic keycode to tap. If `code` is `KC_CAPS_LOCK`, the delay will be `TAP_HOLD_CAPS_DELAY`, otherwise `TAP_CODE_DELAY`, if defined.
*/ */
__attribute__((weak)) void tap_code(uint8_t code) { tap_code_delay(code, code == KC_CAPS_LOCK ? TAP_HOLD_CAPS_DELAY : TAP_CODE_DELAY); } __attribute__((weak)) void tap_code(uint8_t code) {
tap_code_delay(code, code == KC_CAPS_LOCK ? TAP_HOLD_CAPS_DELAY : TAP_CODE_DELAY);
}
/** \brief Adds the given physically pressed modifiers and sends a keyboard report immediately. /** \brief Adds the given physically pressed modifiers and sends a keyboard report immediately.
* *
@ -1100,7 +1120,9 @@ bool is_tap_action(action_t action) {
* *
* FIXME: Needs documentation. * FIXME: Needs documentation.
*/ */
void debug_event(keyevent_t event) { dprintf("%04X%c(%u)", (event.key.row << 8 | event.key.col), (event.pressed ? 'd' : 'u'), event.time); } void debug_event(keyevent_t event) {
dprintf("%04X%c(%u)", (event.key.row << 8 | event.key.col), (event.pressed ? 'd' : 'u'), event.time);
}
/** \brief Debug print (FIXME: Needs better description) /** \brief Debug print (FIXME: Needs better description)
* *
* FIXME: Needs documentation. * FIXME: Needs documentation.

View File

@ -18,13 +18,17 @@ layer_state_t default_layer_state = 0;
* *
* Run user code on default layer state change * Run user code on default layer state change
*/ */
__attribute__((weak)) layer_state_t default_layer_state_set_user(layer_state_t state) { return state; } __attribute__((weak)) layer_state_t default_layer_state_set_user(layer_state_t state) {
return state;
}
/** \brief Default Layer State Set At Keyboard Level /** \brief Default Layer State Set At Keyboard Level
* *
* Run keyboard code on default layer state change * Run keyboard code on default layer state change
*/ */
__attribute__((weak)) layer_state_t default_layer_state_set_kb(layer_state_t state) { return default_layer_state_set_user(state); } __attribute__((weak)) layer_state_t default_layer_state_set_kb(layer_state_t state) {
return default_layer_state_set_user(state);
}
/** \brief Default Layer State Set /** \brief Default Layer State Set
* *
@ -49,30 +53,40 @@ static void default_layer_state_set(layer_state_t state) {
* *
* Print out the hex value of the 32-bit default layer state, as well as the value of the highest bit. * Print out the hex value of the 32-bit default layer state, as well as the value of the highest bit.
*/ */
void default_layer_debug(void) { dprintf("%08lX(%u)", default_layer_state, get_highest_layer(default_layer_state)); } void default_layer_debug(void) {
dprintf("%08lX(%u)", default_layer_state, get_highest_layer(default_layer_state));
}
/** \brief Default Layer Set /** \brief Default Layer Set
* *
* Sets the default layer state. * Sets the default layer state.
*/ */
void default_layer_set(layer_state_t state) { default_layer_state_set(state); } void default_layer_set(layer_state_t state) {
default_layer_state_set(state);
}
#ifndef NO_ACTION_LAYER #ifndef NO_ACTION_LAYER
/** \brief Default Layer Or /** \brief Default Layer Or
* *
* Turns on the default layer based on matching bits between specifed layer and existing layer state * Turns on the default layer based on matching bits between specifed layer and existing layer state
*/ */
void default_layer_or(layer_state_t state) { default_layer_state_set(default_layer_state | state); } void default_layer_or(layer_state_t state) {
default_layer_state_set(default_layer_state | state);
}
/** \brief Default Layer And /** \brief Default Layer And
* *
* Turns on default layer based on matching enabled bits between specifed layer and existing layer state * Turns on default layer based on matching enabled bits between specifed layer and existing layer state
*/ */
void default_layer_and(layer_state_t state) { default_layer_state_set(default_layer_state & state); } void default_layer_and(layer_state_t state) {
default_layer_state_set(default_layer_state & state);
}
/** \brief Default Layer Xor /** \brief Default Layer Xor
* *
* Turns on default layer based on non-matching bits between specifed layer and existing layer state * Turns on default layer based on non-matching bits between specifed layer and existing layer state
*/ */
void default_layer_xor(layer_state_t state) { default_layer_state_set(default_layer_state ^ state); } void default_layer_xor(layer_state_t state) {
default_layer_state_set(default_layer_state ^ state);
}
#endif #endif
#ifndef NO_ACTION_LAYER #ifndef NO_ACTION_LAYER
@ -84,13 +98,17 @@ layer_state_t layer_state = 0;
* *
* Runs user code on layer state change * Runs user code on layer state change
*/ */
__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { return state; } __attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) {
return state;
}
/** \brief Layer state set keyboard /** \brief Layer state set keyboard
* *
* Runs keyboard code on layer state change * Runs keyboard code on layer state change
*/ */
__attribute__((weak)) layer_state_t layer_state_set_kb(layer_state_t state) { return layer_state_set_user(state); } __attribute__((weak)) layer_state_t layer_state_set_kb(layer_state_t state) {
return layer_state_set_user(state);
}
/** \brief Layer state set /** \brief Layer state set
* *
@ -115,13 +133,17 @@ void layer_state_set(layer_state_t state) {
* *
* Turn off all layers * Turn off all layers
*/ */
void layer_clear(void) { layer_state_set(0); } void layer_clear(void) {
layer_state_set(0);
}
/** \brief Layer state is /** \brief Layer state is
* *
* Return whether the given state is on (it might still be shadowed by a higher state, though) * Return whether the given state is on (it might still be shadowed by a higher state, though)
*/ */
bool layer_state_is(uint8_t layer) { return layer_state_cmp(layer_state, layer); } bool layer_state_is(uint8_t layer) {
return layer_state_cmp(layer_state, layer);
}
/** \brief Layer state compare /** \brief Layer state compare
* *
@ -138,47 +160,63 @@ bool layer_state_cmp(layer_state_t cmp_layer_state, uint8_t layer) {
* *
* Turns on the given layer and turn off all other layers * Turns on the given layer and turn off all other layers
*/ */
void layer_move(uint8_t layer) { layer_state_set((layer_state_t)1 << layer); } void layer_move(uint8_t layer) {
layer_state_set((layer_state_t)1 << layer);
}
/** \brief Layer on /** \brief Layer on
* *
* Turns on given layer * Turns on given layer
*/ */
void layer_on(uint8_t layer) { layer_state_set(layer_state | ((layer_state_t)1 << layer)); } void layer_on(uint8_t layer) {
layer_state_set(layer_state | ((layer_state_t)1 << layer));
}
/** \brief Layer off /** \brief Layer off
* *
* Turns off given layer * Turns off given layer
*/ */
void layer_off(uint8_t layer) { layer_state_set(layer_state & ~((layer_state_t)1 << layer)); } void layer_off(uint8_t layer) {
layer_state_set(layer_state & ~((layer_state_t)1 << layer));
}
/** \brief Layer invert /** \brief Layer invert
* *
* Toggle the given layer (set it if it's unset, or unset it if it's set) * Toggle the given layer (set it if it's unset, or unset it if it's set)
*/ */
void layer_invert(uint8_t layer) { layer_state_set(layer_state ^ ((layer_state_t)1 << layer)); } void layer_invert(uint8_t layer) {
layer_state_set(layer_state ^ ((layer_state_t)1 << layer));
}
/** \brief Layer or /** \brief Layer or
* *
* Turns on layers based on matching bits between specifed layer and existing layer state * Turns on layers based on matching bits between specifed layer and existing layer state
*/ */
void layer_or(layer_state_t state) { layer_state_set(layer_state | state); } void layer_or(layer_state_t state) {
layer_state_set(layer_state | state);
}
/** \brief Layer and /** \brief Layer and
* *
* Turns on layers based on matching enabled bits between specifed layer and existing layer state * Turns on layers based on matching enabled bits between specifed layer and existing layer state
*/ */
void layer_and(layer_state_t state) { layer_state_set(layer_state & state); } void layer_and(layer_state_t state) {
layer_state_set(layer_state & state);
}
/** \brief Layer xor /** \brief Layer xor
* *
* Turns on layers based on non-matching bits between specifed layer and existing layer state * Turns on layers based on non-matching bits between specifed layer and existing layer state
*/ */
void layer_xor(layer_state_t state) { layer_state_set(layer_state ^ state); } void layer_xor(layer_state_t state) {
layer_state_set(layer_state ^ state);
}
/** \brief Layer debug printing /** \brief Layer debug printing
* *
* Print out the hex value of the 32-bit layer state, as well as the value of the highest bit. * Print out the hex value of the 32-bit layer state, as well as the value of the highest bit.
*/ */
void layer_debug(void) { dprintf("%08lX(%u)", layer_state, get_highest_layer(layer_state)); } void layer_debug(void) {
dprintf("%08lX(%u)", layer_state, get_highest_layer(layer_state));
}
#endif #endif
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE) #if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
@ -276,4 +314,6 @@ uint8_t layer_switch_get_layer(keypos_t key) {
* *
* Gets action code based on key position * Gets action code based on key position
*/ */
action_t layer_switch_get_action(keypos_t key) { return action_for_key(layer_switch_get_layer(key), key); } action_t layer_switch_get_action(keypos_t key) {
return action_for_key(layer_switch_get_layer(key), key);
}

View File

@ -26,7 +26,9 @@
uint16_t g_tapping_term = TAPPING_TERM; uint16_t g_tapping_term = TAPPING_TERM;
__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { return g_tapping_term; } __attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
return g_tapping_term;
}
# ifdef TAPPING_TERM_PER_KEY # ifdef TAPPING_TERM_PER_KEY
# define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < get_tapping_term(get_record_keycode(&tapping_key, false), &tapping_key)) # define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < get_tapping_term(get_record_keycode(&tapping_key, false), &tapping_key))
@ -35,15 +37,21 @@ __attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *r
# endif # endif
# ifdef TAPPING_FORCE_HOLD_PER_KEY # ifdef TAPPING_FORCE_HOLD_PER_KEY
__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) { return false; } __attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
return false;
}
# endif # endif
# ifdef PERMISSIVE_HOLD_PER_KEY # ifdef PERMISSIVE_HOLD_PER_KEY
__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { return false; } __attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
return false;
}
# endif # endif
# ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY # ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY
__attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { return false; } __attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
return false;
}
# endif # endif
# if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) # if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)

View File

@ -43,7 +43,9 @@ extern inline void clear_keys(void);
#ifndef NO_ACTION_ONESHOT #ifndef NO_ACTION_ONESHOT
static uint8_t oneshot_mods = 0; static uint8_t oneshot_mods = 0;
static uint8_t oneshot_locked_mods = 0; static uint8_t oneshot_locked_mods = 0;
uint8_t get_oneshot_locked_mods(void) { return oneshot_locked_mods; } uint8_t get_oneshot_locked_mods(void) {
return oneshot_locked_mods;
}
void set_oneshot_locked_mods(uint8_t mods) { void set_oneshot_locked_mods(uint8_t mods) {
if (mods != oneshot_locked_mods) { if (mods != oneshot_locked_mods) {
oneshot_locked_mods = mods; oneshot_locked_mods = mods;
@ -58,9 +60,13 @@ void clear_oneshot_locked_mods(void) {
} }
# if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) # if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0))
static uint16_t oneshot_time = 0; static uint16_t oneshot_time = 0;
bool has_oneshot_mods_timed_out(void) { return TIMER_DIFF_16(timer_read(), oneshot_time) >= ONESHOT_TIMEOUT; } bool has_oneshot_mods_timed_out(void) {
return TIMER_DIFF_16(timer_read(), oneshot_time) >= ONESHOT_TIMEOUT;
}
# else # else
bool has_oneshot_mods_timed_out(void) { return false; } bool has_oneshot_mods_timed_out(void) {
return false;
}
# endif # endif
#endif #endif
@ -74,8 +80,12 @@ bool has_oneshot_mods_timed_out(void) { return false; }
*/ */
static int8_t oneshot_layer_data = 0; static int8_t oneshot_layer_data = 0;
inline uint8_t get_oneshot_layer(void) { return oneshot_layer_data >> 3; } inline uint8_t get_oneshot_layer(void) {
inline uint8_t get_oneshot_layer_state(void) { return oneshot_layer_data & 0b111; } return oneshot_layer_data >> 3;
}
inline uint8_t get_oneshot_layer_state(void) {
return oneshot_layer_data & 0b111;
}
# ifdef SWAP_HANDS_ENABLE # ifdef SWAP_HANDS_ENABLE
enum { enum {
@ -88,10 +98,14 @@ enum {
# if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) # if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0))
static uint16_t oneshot_layer_time = 0; static uint16_t oneshot_layer_time = 0;
inline bool has_oneshot_layer_timed_out() { return TIMER_DIFF_16(timer_read(), oneshot_layer_time) >= ONESHOT_TIMEOUT && !(get_oneshot_layer_state() & ONESHOT_TOGGLED); } inline bool has_oneshot_layer_timed_out() {
return TIMER_DIFF_16(timer_read(), oneshot_layer_time) >= ONESHOT_TIMEOUT && !(get_oneshot_layer_state() & ONESHOT_TOGGLED);
}
# ifdef SWAP_HANDS_ENABLE # ifdef SWAP_HANDS_ENABLE
static uint16_t oneshot_swaphands_time = 0; static uint16_t oneshot_swaphands_time = 0;
inline bool has_oneshot_swaphands_timed_out() { return TIMER_DIFF_16(timer_read(), oneshot_swaphands_time) >= ONESHOT_TIMEOUT && (swap_hands_oneshot == SHO_ACTIVE); } inline bool has_oneshot_swaphands_timed_out() {
return TIMER_DIFF_16(timer_read(), oneshot_swaphands_time) >= ONESHOT_TIMEOUT && (swap_hands_oneshot == SHO_ACTIVE);
}
# endif # endif
# endif # endif
@ -179,7 +193,9 @@ void clear_oneshot_layer_state(oneshot_fullfillment_t state) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
bool is_oneshot_layer_active(void) { return get_oneshot_layer_state(); } bool is_oneshot_layer_active(void) {
return get_oneshot_layer_state();
}
/** \brief set oneshot /** \brief set oneshot
* *
@ -198,21 +214,29 @@ void oneshot_set(bool active) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void oneshot_toggle(void) { oneshot_set(!keymap_config.oneshot_disable); } void oneshot_toggle(void) {
oneshot_set(!keymap_config.oneshot_disable);
}
/** \brief enable oneshot /** \brief enable oneshot
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void oneshot_enable(void) { oneshot_set(true); } void oneshot_enable(void) {
oneshot_set(true);
}
/** \brief disable oneshot /** \brief disable oneshot
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void oneshot_disable(void) { oneshot_set(false); } void oneshot_disable(void) {
oneshot_set(false);
}
bool is_oneshot_enabled(void) { return keymap_config.oneshot_disable; } bool is_oneshot_enabled(void) {
return keymap_config.oneshot_disable;
}
#endif #endif
@ -259,68 +283,96 @@ void send_keyboard_report(void) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint8_t get_mods(void) { return real_mods; } uint8_t get_mods(void) {
return real_mods;
}
/** \brief add mods /** \brief add mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void add_mods(uint8_t mods) { real_mods |= mods; } void add_mods(uint8_t mods) {
real_mods |= mods;
}
/** \brief del mods /** \brief del mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void del_mods(uint8_t mods) { real_mods &= ~mods; } void del_mods(uint8_t mods) {
real_mods &= ~mods;
}
/** \brief set mods /** \brief set mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void set_mods(uint8_t mods) { real_mods = mods; } void set_mods(uint8_t mods) {
real_mods = mods;
}
/** \brief clear mods /** \brief clear mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void clear_mods(void) { real_mods = 0; } void clear_mods(void) {
real_mods = 0;
}
/** \brief get weak mods /** \brief get weak mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint8_t get_weak_mods(void) { return weak_mods; } uint8_t get_weak_mods(void) {
return weak_mods;
}
/** \brief add weak mods /** \brief add weak mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void add_weak_mods(uint8_t mods) { weak_mods |= mods; } void add_weak_mods(uint8_t mods) {
weak_mods |= mods;
}
/** \brief del weak mods /** \brief del weak mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void del_weak_mods(uint8_t mods) { weak_mods &= ~mods; } void del_weak_mods(uint8_t mods) {
weak_mods &= ~mods;
}
/** \brief set weak mods /** \brief set weak mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void set_weak_mods(uint8_t mods) { weak_mods = mods; } void set_weak_mods(uint8_t mods) {
weak_mods = mods;
}
/** \brief clear weak mods /** \brief clear weak mods
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void clear_weak_mods(void) { weak_mods = 0; } void clear_weak_mods(void) {
weak_mods = 0;
}
#ifdef KEY_OVERRIDE_ENABLE #ifdef KEY_OVERRIDE_ENABLE
/** \brief set weak mods used by key overrides. DO not call this manually /** \brief set weak mods used by key overrides. DO not call this manually
*/ */
void set_weak_override_mods(uint8_t mods) { weak_override_mods = mods; } void set_weak_override_mods(uint8_t mods) {
weak_override_mods = mods;
}
/** \brief clear weak mods used by key overrides. DO not call this manually /** \brief clear weak mods used by key overrides. DO not call this manually
*/ */
void clear_weak_override_mods(void) { weak_override_mods = 0; } void clear_weak_override_mods(void) {
weak_override_mods = 0;
}
/** \brief set suppressed mods used by key overrides. DO not call this manually /** \brief set suppressed mods used by key overrides. DO not call this manually
*/ */
void set_suppressed_override_mods(uint8_t mods) { suppressed_mods = mods; } void set_suppressed_override_mods(uint8_t mods) {
suppressed_mods = mods;
}
/** \brief clear suppressed mods used by key overrides. DO not call this manually /** \brief clear suppressed mods used by key overrides. DO not call this manually
*/ */
void clear_suppressed_override_mods(void) { suppressed_mods = 0; } void clear_suppressed_override_mods(void) {
suppressed_mods = 0;
}
#endif #endif
#ifndef NO_ACTION_ONESHOT #ifndef NO_ACTION_ONESHOT
@ -328,7 +380,9 @@ void clear_suppressed_override_mods(void) { suppressed_mods = 0; }
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint8_t get_oneshot_mods(void) { return oneshot_mods; } uint8_t get_oneshot_mods(void) {
return oneshot_mods;
}
void add_oneshot_mods(uint8_t mods) { void add_oneshot_mods(uint8_t mods) {
if ((oneshot_mods & mods) != mods) { if ((oneshot_mods & mods) != mods) {
@ -391,7 +445,9 @@ __attribute__((weak)) void oneshot_locked_mods_changed_user(uint8_t mods) {}
* *
* \param mods Contains the active modifiers active after the change. * \param mods Contains the active modifiers active after the change.
*/ */
__attribute__((weak)) void oneshot_locked_mods_changed_kb(uint8_t mods) { oneshot_locked_mods_changed_user(mods); } __attribute__((weak)) void oneshot_locked_mods_changed_kb(uint8_t mods) {
oneshot_locked_mods_changed_user(mods);
}
/** \brief Called when the one shot modifiers have been changed. /** \brief Called when the one shot modifiers have been changed.
* *
@ -403,7 +459,9 @@ __attribute__((weak)) void oneshot_mods_changed_user(uint8_t mods) {}
* *
* \param mods Contains the active modifiers active after the change. * \param mods Contains the active modifiers active after the change.
*/ */
__attribute__((weak)) void oneshot_mods_changed_kb(uint8_t mods) { oneshot_mods_changed_user(mods); } __attribute__((weak)) void oneshot_mods_changed_kb(uint8_t mods) {
oneshot_mods_changed_user(mods);
}
/** \brief Called when the one shot layers have been changed. /** \brief Called when the one shot layers have been changed.
* *
@ -415,10 +473,14 @@ __attribute__((weak)) void oneshot_layer_changed_user(uint8_t layer) {}
* *
* \param layer Contains the layer that is toggled on, or zero when toggled off. * \param layer Contains the layer that is toggled on, or zero when toggled off.
*/ */
__attribute__((weak)) void oneshot_layer_changed_kb(uint8_t layer) { oneshot_layer_changed_user(layer); } __attribute__((weak)) void oneshot_layer_changed_kb(uint8_t layer) {
oneshot_layer_changed_user(layer);
}
/** \brief inspect keyboard state /** \brief inspect keyboard state
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint8_t has_anymod(void) { return bitpop(real_mods); } uint8_t has_anymod(void) {
return bitpop(real_mods);
}

View File

@ -29,11 +29,17 @@ extern report_keyboard_t *keyboard_report;
void send_keyboard_report(void); void send_keyboard_report(void);
/* key */ /* key */
inline void add_key(uint8_t key) { add_key_to_report(keyboard_report, key); } inline void add_key(uint8_t key) {
add_key_to_report(keyboard_report, key);
}
inline void del_key(uint8_t key) { del_key_from_report(keyboard_report, key); } inline void del_key(uint8_t key) {
del_key_from_report(keyboard_report, key);
}
inline void clear_keys(void) { clear_keys_from_report(keyboard_report); } inline void clear_keys(void) {
clear_keys_from_report(keyboard_report);
}
/* modifier */ /* modifier */
uint8_t get_mods(void); uint8_t get_mods(void);

View File

@ -181,7 +181,9 @@ void audio_off(void) {
eeconfig_update_audio(audio_config.raw); eeconfig_update_audio(audio_config.raw);
} }
bool audio_is_on(void) { return (audio_config.enable != 0); } bool audio_is_on(void) {
return (audio_config.enable != 0);
}
void audio_stop_all() { void audio_stop_all() {
if (audio_driver_stopped) { if (audio_driver_stopped) {
@ -294,7 +296,9 @@ void audio_play_note(float pitch, uint16_t duration) {
} }
} }
void audio_play_tone(float pitch) { audio_play_note(pitch, 0xffff); } void audio_play_tone(float pitch) {
audio_play_note(pitch, 0xffff);
}
void audio_play_melody(float (*np)[][2], uint16_t n_count, bool n_repeat) { void audio_play_melody(float (*np)[][2], uint16_t n_count, bool n_repeat) {
if (!audio_config.enable) { if (!audio_config.enable) {
@ -347,11 +351,17 @@ void audio_play_click(uint16_t delay, float pitch, uint16_t duration) {
} }
} }
bool audio_is_playing_note(void) { return playing_note; } bool audio_is_playing_note(void) {
return playing_note;
}
bool audio_is_playing_melody(void) { return playing_melody; } bool audio_is_playing_melody(void) {
return playing_melody;
}
uint8_t audio_get_number_of_active_tones(void) { return active_tones; } uint8_t audio_get_number_of_active_tones(void) {
return active_tones;
}
float audio_get_frequency(uint8_t tone_index) { float audio_get_frequency(uint8_t tone_index) {
if (tone_index >= active_tones) { if (tone_index >= active_tones) {
@ -487,9 +497,15 @@ bool audio_update_state(void) {
// Tone-multiplexing functions // Tone-multiplexing functions
#ifdef AUDIO_ENABLE_TONE_MULTIPLEXING #ifdef AUDIO_ENABLE_TONE_MULTIPLEXING
void audio_set_tone_multiplexing_rate(uint16_t rate) { tone_multiplexing_rate = rate; } void audio_set_tone_multiplexing_rate(uint16_t rate) {
void audio_enable_tone_multiplexing(void) { tone_multiplexing_rate = AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT; } tone_multiplexing_rate = rate;
void audio_disable_tone_multiplexing(void) { tone_multiplexing_rate = 0; } }
void audio_enable_tone_multiplexing(void) {
tone_multiplexing_rate = AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT;
}
void audio_disable_tone_multiplexing(void) {
tone_multiplexing_rate = 0;
}
void audio_increase_tone_multiplexing_rate(uint16_t change) { void audio_increase_tone_multiplexing_rate(uint16_t change) {
if ((0xffff - change) > tone_multiplexing_rate) { if ((0xffff - change) > tone_multiplexing_rate) {
tone_multiplexing_rate += change; tone_multiplexing_rate += change;

View File

@ -32,11 +32,17 @@ voice_type voice = AUDIO_VOICE_DEFAULT;
voice_type voice = default_voice; voice_type voice = default_voice;
#endif #endif
void set_voice(voice_type v) { voice = v; } void set_voice(voice_type v) {
voice = v;
}
void voice_iterate() { voice = (voice + 1) % number_of_voices; } void voice_iterate() {
voice = (voice + 1) % number_of_voices;
}
void voice_deiterate() { voice = (voice - 1 + number_of_voices) % number_of_voices; } void voice_deiterate() {
voice = (voice - 1 + number_of_voices) % number_of_voices;
}
#ifdef AUDIO_VOICES #ifdef AUDIO_VOICES
float mod(float a, int b) { float mod(float a, int b) {
@ -325,12 +331,24 @@ float voice_envelope(float frequency) {
// Vibrato functions // Vibrato functions
void voice_set_vibrato_rate(float rate) { vibrato_rate = rate; } void voice_set_vibrato_rate(float rate) {
void voice_increase_vibrato_rate(float change) { vibrato_rate *= change; } vibrato_rate = rate;
void voice_decrease_vibrato_rate(float change) { vibrato_rate /= change; } }
void voice_set_vibrato_strength(float strength) { vibrato_strength = strength; } void voice_increase_vibrato_rate(float change) {
void voice_increase_vibrato_strength(float change) { vibrato_strength *= change; } vibrato_rate *= change;
void voice_decrease_vibrato_strength(float change) { vibrato_strength /= change; } }
void voice_decrease_vibrato_rate(float change) {
vibrato_rate /= change;
}
void voice_set_vibrato_strength(float strength) {
vibrato_strength = strength;
}
void voice_increase_vibrato_strength(float change) {
vibrato_strength *= change;
}
void voice_decrease_vibrato_strength(float change) {
vibrato_strength /= change;
}
// Timbre functions // Timbre functions
@ -339,4 +357,6 @@ void voice_set_timbre(uint8_t timbre) {
note_timbre = timbre; note_timbre = timbre;
} }
} }
uint8_t voice_get_timbre(void) { return note_timbre; } uint8_t voice_get_timbre(void) {
return note_timbre;
}

View File

@ -122,7 +122,9 @@ void backlight_disable(void) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
bool is_backlight_enabled(void) { return backlight_config.enable; } bool is_backlight_enabled(void) {
return backlight_config.enable;
}
/** \brief Backlight step through levels /** \brief Backlight step through levels
* *
@ -158,11 +160,17 @@ void backlight_level(uint8_t level) {
eeconfig_update_backlight(backlight_config.raw); eeconfig_update_backlight(backlight_config.raw);
} }
uint8_t eeconfig_read_backlight(void) { return eeprom_read_byte(EECONFIG_BACKLIGHT); } uint8_t eeconfig_read_backlight(void) {
return eeprom_read_byte(EECONFIG_BACKLIGHT);
}
void eeconfig_update_backlight(uint8_t val) { eeprom_update_byte(EECONFIG_BACKLIGHT, val); } void eeconfig_update_backlight(uint8_t val) {
eeprom_update_byte(EECONFIG_BACKLIGHT, val);
}
void eeconfig_update_backlight_current(void) { eeconfig_update_backlight(backlight_config.raw); } void eeconfig_update_backlight_current(void) {
eeconfig_update_backlight(backlight_config.raw);
}
void eeconfig_update_backlight_default(void) { void eeconfig_update_backlight_default(void) {
backlight_config.enable = 1; backlight_config.enable = 1;
@ -179,7 +187,9 @@ void eeconfig_update_backlight_default(void) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint8_t get_backlight_level(void) { return backlight_config.level; } uint8_t get_backlight_level(void) {
return backlight_config.level;
}
#ifdef BACKLIGHT_BREATHING #ifdef BACKLIGHT_BREATHING
/** \brief Backlight breathing toggle /** \brief Backlight breathing toggle
@ -225,18 +235,30 @@ void backlight_disable_breathing(void) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
bool is_backlight_breathing(void) { return backlight_config.breathing; } bool is_backlight_breathing(void) {
return backlight_config.breathing;
}
// following are marked as weak purely for backwards compatibility // following are marked as weak purely for backwards compatibility
__attribute__((weak)) void breathing_period_set(uint8_t value) { breathing_period = value ? value : 1; } __attribute__((weak)) void breathing_period_set(uint8_t value) {
breathing_period = value ? value : 1;
}
__attribute__((weak)) uint8_t get_breathing_period(void) { return breathing_period; } __attribute__((weak)) uint8_t get_breathing_period(void) {
return breathing_period;
}
__attribute__((weak)) void breathing_period_default(void) { breathing_period_set(BREATHING_PERIOD); } __attribute__((weak)) void breathing_period_default(void) {
breathing_period_set(BREATHING_PERIOD);
}
__attribute__((weak)) void breathing_period_inc(void) { breathing_period_set(breathing_period + 1); } __attribute__((weak)) void breathing_period_inc(void) {
breathing_period_set(breathing_period + 1);
}
__attribute__((weak)) void breathing_period_dec(void) { breathing_period_set(breathing_period - 1); } __attribute__((weak)) void breathing_period_dec(void) {
breathing_period_set(breathing_period - 1);
}
__attribute__((weak)) void breathing_toggle(void) { __attribute__((weak)) void breathing_toggle(void) {
if (is_breathing()) if (is_breathing())

View File

@ -203,7 +203,9 @@ static inline void disable_pwm(void) {
// or F_CPU/BACKLIGHT_CUSTOM_RESOLUTION if used. // or F_CPU/BACKLIGHT_CUSTOM_RESOLUTION if used.
// Triggered when the counter reaches the OCRx value // Triggered when the counter reaches the OCRx value
ISR(TIMERx_COMPA_vect) { backlight_pins_off(); } ISR(TIMERx_COMPA_vect) {
backlight_pins_off();
}
// Triggered when the counter reaches the TOP value // Triggered when the counter reaches the TOP value
// this one triggers at F_CPU/ICRx = 16MHz/65536 =~ 244 Hz // this one triggers at F_CPU/ICRx = 16MHz/65536 =~ 244 Hz
@ -249,10 +251,14 @@ static uint16_t cie_lightness(uint16_t v) {
} }
// rescale the supplied backlight value to be in terms of the value limit // range for val is [0..ICRx]. PWM pin is high while the timer count is below val. // rescale the supplied backlight value to be in terms of the value limit // range for val is [0..ICRx]. PWM pin is high while the timer count is below val.
static uint32_t rescale_limit_val(uint32_t val) { return (val * (BACKLIGHT_LIMIT_VAL + 1)) / 256; } static uint32_t rescale_limit_val(uint32_t val) {
return (val * (BACKLIGHT_LIMIT_VAL + 1)) / 256;
}
// range for val is [0..ICRx]. PWM pin is high while the timer count is below val. // range for val is [0..ICRx]. PWM pin is high while the timer count is below val.
static inline void set_pwm(uint16_t val) { OCRxx = val; } static inline void set_pwm(uint16_t val) {
OCRxx = val;
}
void backlight_set(uint8_t level) { void backlight_set(uint8_t level) {
if (level > BACKLIGHT_LEVELS) level = BACKLIGHT_LEVELS; if (level > BACKLIGHT_LEVELS) level = BACKLIGHT_LEVELS;
@ -303,7 +309,9 @@ static uint16_t breathing_freq_scale_factor = 2;
# ifdef BACKLIGHT_PWM_TIMER # ifdef BACKLIGHT_PWM_TIMER
static bool breathing = false; static bool breathing = false;
bool is_breathing(void) { return breathing; } bool is_breathing(void) {
return breathing;
}
# define breathing_interrupt_enable() \ # define breathing_interrupt_enable() \
do { \ do { \
@ -315,7 +323,9 @@ bool is_breathing(void) { return breathing; }
} while (0) } while (0)
# else # else
bool is_breathing(void) { return !!(TIMSKx & _BV(TOIEx)); } bool is_breathing(void) {
return !!(TIMSKx & _BV(TOIEx));
}
# define breathing_interrupt_enable() \ # define breathing_interrupt_enable() \
do { \ do { \
@ -370,7 +380,9 @@ void breathing_self_disable(void) {
static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static const uint8_t breathing_table[BREATHING_STEPS] PROGMEM = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// Use this before the cie_lightness function. // Use this before the cie_lightness function.
static inline uint16_t scale_backlight(uint16_t v) { return v / BACKLIGHT_LEVELS * get_backlight_level(); } static inline uint16_t scale_backlight(uint16_t v) {
return v / BACKLIGHT_LEVELS * get_backlight_level();
}
# ifdef BACKLIGHT_PWM_TIMER # ifdef BACKLIGHT_PWM_TIMER
void breathing_task(void) void breathing_task(void)

View File

@ -117,7 +117,9 @@ static const uint8_t breathing_table[BREATHING_STEPS] = {0, 0, 0, 0, 0, 0, 0, 0,
void breathing_callback(PWMDriver *pwmp); void breathing_callback(PWMDriver *pwmp);
bool is_breathing(void) { return pwmCFG.callback != NULL; } bool is_breathing(void) {
return pwmCFG.callback != NULL;
}
void breathing_enable(void) { void breathing_enable(void) {
pwmCFG.callback = breathing_callback; pwmCFG.callback = breathing_callback;
@ -133,7 +135,9 @@ void breathing_disable(void) {
} }
// Use this before the cie_lightness function. // Use this before the cie_lightness function.
static inline uint16_t scale_backlight(uint16_t v) { return v / BACKLIGHT_LEVELS * get_backlight_level(); } static inline uint16_t scale_backlight(uint16_t v) {
return v / BACKLIGHT_LEVELS * get_backlight_level();
}
void breathing_callback(PWMDriver *pwmp) { void breathing_callback(PWMDriver *pwmp) {
uint8_t breathing_period = get_breathing_period(); uint8_t breathing_period = get_breathing_period();

View File

@ -44,6 +44,10 @@ void backlight_pins_init(void) {
FOR_EACH_LED(setPinOutput(backlight_pin); backlight_off(backlight_pin);) FOR_EACH_LED(setPinOutput(backlight_pin); backlight_off(backlight_pin);)
} }
void backlight_pins_on(void) { FOR_EACH_LED(backlight_on(backlight_pin);) } void backlight_pins_on(void) {
FOR_EACH_LED(backlight_on(backlight_pin);)
}
void backlight_pins_off(void) { FOR_EACH_LED(backlight_off(backlight_pin);) } void backlight_pins_off(void) {
FOR_EACH_LED(backlight_off(backlight_pin);)
}

View File

@ -30,11 +30,17 @@ static const uint16_t backlight_duty_table[] = {
// clang-format on // clang-format on
static uint8_t scale_backlight(uint8_t v) { return v * (backlight_duty_table_size - 1) / BACKLIGHT_LEVELS; } static uint8_t scale_backlight(uint8_t v) {
return v * (backlight_duty_table_size - 1) / BACKLIGHT_LEVELS;
}
void backlight_init_ports(void) { backlight_pins_init(); } void backlight_init_ports(void) {
backlight_pins_init();
}
void backlight_set(uint8_t level) { s_duty_pattern = backlight_duty_table[scale_backlight(level)]; } void backlight_set(uint8_t level) {
s_duty_pattern = backlight_duty_table[scale_backlight(level)];
}
void backlight_task(void) { void backlight_task(void) {
static uint8_t backlight_tick = 0; static uint8_t backlight_tick = 0;

View File

@ -61,7 +61,9 @@ static void backlight_timer_top(void) {
} }
} }
static void backlight_timer_cmp(void) { backlight_pins_off(); } static void backlight_timer_cmp(void) {
backlight_pins_off();
}
void backlight_task(void) {} void backlight_task(void) {}
@ -77,7 +79,9 @@ static uint16_t breathing_counter = 0;
static const uint8_t breathing_table[BREATHING_STEPS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static const uint8_t breathing_table[BREATHING_STEPS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// Use this before the cie_lightness function. // Use this before the cie_lightness function.
static inline uint16_t scale_backlight(uint16_t v) { return v / BACKLIGHT_LEVELS * get_backlight_level(); } static inline uint16_t scale_backlight(uint16_t v) {
return v / BACKLIGHT_LEVELS * get_backlight_level();
}
void breathing_task(void) { void breathing_task(void) {
uint8_t breathing_period = get_breathing_period(); uint8_t breathing_period = get_breathing_period();
@ -91,13 +95,17 @@ void breathing_task(void) {
backlight_timer_set_duty(cie_lightness(scale_backlight((uint16_t)breathing_table[index] * 256))); backlight_timer_set_duty(cie_lightness(scale_backlight((uint16_t)breathing_table[index] * 256)));
} }
bool is_breathing(void) { return breathing; } bool is_breathing(void) {
return breathing;
}
void breathing_enable(void) { void breathing_enable(void) {
breathing_counter = 0; breathing_counter = 0;
breathing = true; breathing = true;
} }
void breathing_disable(void) { breathing = false; } void breathing_disable(void) {
breathing = false;
}
void breathing_pulse(void) { void breathing_pulse(void) {
backlight_set(is_backlight_enabled() ? 0 : BACKLIGHT_LEVELS); backlight_set(is_backlight_enabled() ? 0 : BACKLIGHT_LEVELS);
@ -140,8 +148,12 @@ static void timerCallback(void) {
} }
} }
static void backlight_timer_set_duty(uint16_t duty) { s_duty = duty; } static void backlight_timer_set_duty(uint16_t duty) {
static uint16_t backlight_timer_get_duty(void) { return s_duty; } s_duty = duty;
}
static uint16_t backlight_timer_get_duty(void) {
return s_duty;
}
// ChibiOS - Map GPT timer onto Software PWM // ChibiOS - Map GPT timer onto Software PWM
static void gptTimerCallback(GPTDriver *gptp) { static void gptTimerCallback(GPTDriver *gptp) {

View File

@ -20,7 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// bit population - return number of on-bit // bit population - return number of on-bit
__attribute__((noinline)) uint8_t bitpop(uint8_t bits) { __attribute__((noinline)) uint8_t bitpop(uint8_t bits) {
uint8_t c; uint8_t c;
for (c = 0; bits; c++) bits &= bits - 1; for (c = 0; bits; c++)
bits &= bits - 1;
return c; return c;
/* /*
const uint8_t bit_count[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }; const uint8_t bit_count[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
@ -30,13 +31,15 @@ __attribute__((noinline)) uint8_t bitpop(uint8_t bits) {
uint8_t bitpop16(uint16_t bits) { uint8_t bitpop16(uint16_t bits) {
uint8_t c; uint8_t c;
for (c = 0; bits; c++) bits &= bits - 1; for (c = 0; bits; c++)
bits &= bits - 1;
return c; return c;
} }
uint8_t bitpop32(uint32_t bits) { uint8_t bitpop32(uint32_t bits) {
uint8_t c; uint8_t c;
for (c = 0; bits; c++) bits &= bits - 1; for (c = 0; bits; c++)
bits &= bits - 1;
return c; return c;
} }

View File

@ -19,7 +19,9 @@
* *
* ...just incase someone wants to only change the eeprom behaviour * ...just incase someone wants to only change the eeprom behaviour
*/ */
__attribute__((weak)) void bootmagic_lite_reset_eeprom(void) { eeconfig_disable(); } __attribute__((weak)) void bootmagic_lite_reset_eeprom(void) {
eeconfig_disable();
}
/** \brief The lite version of TMK's bootmagic based on Wilba. /** \brief The lite version of TMK's bootmagic based on Wilba.
* *
@ -57,4 +59,6 @@ __attribute__((weak)) void bootmagic_lite(void) {
} }
} }
void bootmagic(void) { bootmagic_lite(); } void bootmagic(void) {
bootmagic_lite();
}

View File

@ -104,7 +104,9 @@ RGB hsv_to_rgb(HSV hsv) {
#endif #endif
} }
RGB hsv_to_rgb_nocie(HSV hsv) { return hsv_to_rgb_impl(hsv, false); } RGB hsv_to_rgb_nocie(HSV hsv) {
return hsv_to_rgb_impl(hsv, false);
}
#ifdef RGBW #ifdef RGBW
# ifndef MIN # ifndef MIN

View File

@ -69,4 +69,6 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool
} }
} }
bool debounce_active(void) { return true; } bool debounce_active(void) {
return true;
}

View File

@ -31,7 +31,9 @@ void set_time(uint32_t t);
void advance_time(uint32_t ms); void advance_time(uint32_t ms);
} }
void DebounceTest::addEvents(std::initializer_list<DebounceTestEvent> events) { events_.insert(events_.end(), events.begin(), events.end()); } void DebounceTest::addEvents(std::initializer_list<DebounceTestEvent> events) {
events_.insert(events_.end(), events.begin(), events.end());
}
void DebounceTest::runEvents() { void DebounceTest::runEvents() {
/* Run the test multiple times, from 1kHz to 10kHz scan rate */ /* Run the test multiple times, from 1kHz to 10kHz scan rate */

View File

@ -157,7 +157,15 @@ void deferred_exec_advanced_task(deferred_executor_t *table, size_t table_count,
static uint32_t last_deferred_exec_check = 0; static uint32_t last_deferred_exec_check = 0;
static deferred_executor_t basic_executors[MAX_DEFERRED_EXECUTORS] = {0}; static deferred_executor_t basic_executors[MAX_DEFERRED_EXECUTORS] = {0};
deferred_token defer_exec(uint32_t delay_ms, deferred_exec_callback callback, void *cb_arg) { return defer_exec_advanced(basic_executors, MAX_DEFERRED_EXECUTORS, delay_ms, callback, cb_arg); } deferred_token defer_exec(uint32_t delay_ms, deferred_exec_callback callback, void *cb_arg) {
bool extend_deferred_exec(deferred_token token, uint32_t delay_ms) { return extend_deferred_exec_advanced(basic_executors, MAX_DEFERRED_EXECUTORS, token, delay_ms); } return defer_exec_advanced(basic_executors, MAX_DEFERRED_EXECUTORS, delay_ms, callback, cb_arg);
bool cancel_deferred_exec(deferred_token token) { return cancel_deferred_exec_advanced(basic_executors, MAX_DEFERRED_EXECUTORS, token); } }
void deferred_exec_task(void) { deferred_exec_advanced_task(basic_executors, MAX_DEFERRED_EXECUTORS, &last_deferred_exec_check); } bool extend_deferred_exec(deferred_token token, uint32_t delay_ms) {
return extend_deferred_exec_advanced(basic_executors, MAX_DEFERRED_EXECUTORS, token, delay_ms);
}
bool cancel_deferred_exec(deferred_token token) {
return cancel_deferred_exec_advanced(basic_executors, MAX_DEFERRED_EXECUTORS, token);
}
void deferred_exec_task(void) {
deferred_exec_advanced_task(basic_executors, MAX_DEFERRED_EXECUTORS, &last_deferred_exec_check);
}

View File

@ -24,9 +24,13 @@ __attribute__((weak)) void digitizer_send(void) {
} }
} }
__attribute__((weak)) void digitizer_task(void) { digitizer_send(); } __attribute__((weak)) void digitizer_task(void) {
digitizer_send();
}
digitizer_t digitizer_get_report(void) { return digitizerReport; } digitizer_t digitizer_get_report(void) {
return digitizerReport;
}
void digitizer_set_report(digitizer_t newDigitizerReport) { void digitizer_set_report(digitizer_t newDigitizerReport) {
digitizerReport = newDigitizerReport; digitizerReport = newDigitizerReport;

View File

@ -52,13 +52,21 @@ static uint16_t scan_count;
static bool 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}; static bool last_dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0};
__attribute__((weak)) bool dip_switch_update_user(uint8_t index, bool active) { return true; } __attribute__((weak)) bool dip_switch_update_user(uint8_t index, bool active) {
return true;
}
__attribute__((weak)) bool dip_switch_update_kb(uint8_t index, bool active) { return dip_switch_update_user(index, active); } __attribute__((weak)) bool dip_switch_update_kb(uint8_t index, bool active) {
return dip_switch_update_user(index, active);
}
__attribute__((weak)) bool dip_switch_update_mask_user(uint32_t state) { return true; } __attribute__((weak)) bool dip_switch_update_mask_user(uint32_t state) {
return true;
}
__attribute__((weak)) bool dip_switch_update_mask_kb(uint32_t state) { return dip_switch_update_mask_user(state); } __attribute__((weak)) bool dip_switch_update_mask_kb(uint32_t state) {
return dip_switch_update_mask_user(state);
}
void dip_switch_init(void) { void dip_switch_init(void) {
#ifdef DIP_SWITCH_PINS #ifdef DIP_SWITCH_PINS

View File

@ -79,7 +79,9 @@
# define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE (DYNAMIC_KEYMAP_EEPROM_MAX_ADDR - DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR + 1) # define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE (DYNAMIC_KEYMAP_EEPROM_MAX_ADDR - DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR + 1)
#endif #endif
uint8_t dynamic_keymap_get_layer_count(void) { return DYNAMIC_KEYMAP_LAYER_COUNT; } uint8_t dynamic_keymap_get_layer_count(void) {
return DYNAMIC_KEYMAP_LAYER_COUNT;
}
void *dynamic_keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column) { void *dynamic_keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column) {
// TODO: optimize this with some left shifts // TODO: optimize this with some left shifts
@ -151,9 +153,13 @@ uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key) {
} }
} }
uint8_t dynamic_keymap_macro_get_count(void) { return DYNAMIC_KEYMAP_MACRO_COUNT; } uint8_t dynamic_keymap_macro_get_count(void) {
return DYNAMIC_KEYMAP_MACRO_COUNT;
}
uint16_t dynamic_keymap_macro_get_buffer_size(void) { return DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE; } uint16_t dynamic_keymap_macro_get_buffer_size(void) {
return DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE;
}
void dynamic_keymap_macro_get_buffer(uint16_t offset, uint16_t size, uint8_t *data) { void dynamic_keymap_macro_get_buffer(uint16_t offset, uint16_t size, uint8_t *data) {
void * source = (void *)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR + offset); void * source = (void *)(DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR + offset);

View File

@ -90,13 +90,17 @@ void eeconfig_init_quantum(void) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_init(void) { eeconfig_init_quantum(); } void eeconfig_init(void) {
eeconfig_init_quantum();
}
/** \brief eeconfig enable /** \brief eeconfig enable
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_enable(void) { eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); } void eeconfig_enable(void) {
eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER);
}
/** \brief eeconfig disable /** \brief eeconfig disable
* *
@ -141,29 +145,39 @@ bool eeconfig_is_disabled(void) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG); } uint8_t eeconfig_read_debug(void) {
return eeprom_read_byte(EECONFIG_DEBUG);
}
/** \brief eeconfig update debug /** \brief eeconfig update debug
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_update_debug(uint8_t val) { eeprom_update_byte(EECONFIG_DEBUG, val); } void eeconfig_update_debug(uint8_t val) {
eeprom_update_byte(EECONFIG_DEBUG, val);
}
/** \brief eeconfig read default layer /** \brief eeconfig read default layer
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint8_t eeconfig_read_default_layer(void) { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); } uint8_t eeconfig_read_default_layer(void) {
return eeprom_read_byte(EECONFIG_DEFAULT_LAYER);
}
/** \brief eeconfig update default layer /** \brief eeconfig update default layer
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_update_default_layer(uint8_t val) { eeprom_update_byte(EECONFIG_DEFAULT_LAYER, val); } void eeconfig_update_default_layer(uint8_t val) {
eeprom_update_byte(EECONFIG_DEFAULT_LAYER, val);
}
/** \brief eeconfig read keymap /** \brief eeconfig read keymap
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint16_t eeconfig_read_keymap(void) { return (eeprom_read_byte(EECONFIG_KEYMAP_LOWER_BYTE) | (eeprom_read_byte(EECONFIG_KEYMAP_UPPER_BYTE) << 8)); } uint16_t eeconfig_read_keymap(void) {
return (eeprom_read_byte(EECONFIG_KEYMAP_LOWER_BYTE) | (eeprom_read_byte(EECONFIG_KEYMAP_UPPER_BYTE) << 8));
}
/** \brief eeconfig update keymap /** \brief eeconfig update keymap
* *
* FIXME: needs doc * FIXME: needs doc
@ -177,53 +191,73 @@ void eeconfig_update_keymap(uint16_t val) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint8_t eeconfig_read_audio(void) { return eeprom_read_byte(EECONFIG_AUDIO); } uint8_t eeconfig_read_audio(void) {
return eeprom_read_byte(EECONFIG_AUDIO);
}
/** \brief eeconfig update audio /** \brief eeconfig update audio
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_update_audio(uint8_t val) { eeprom_update_byte(EECONFIG_AUDIO, val); } void eeconfig_update_audio(uint8_t val) {
eeprom_update_byte(EECONFIG_AUDIO, val);
}
/** \brief eeconfig read kb /** \brief eeconfig read kb
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint32_t eeconfig_read_kb(void) { return eeprom_read_dword(EECONFIG_KEYBOARD); } uint32_t eeconfig_read_kb(void) {
return eeprom_read_dword(EECONFIG_KEYBOARD);
}
/** \brief eeconfig update kb /** \brief eeconfig update kb
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_update_kb(uint32_t val) { eeprom_update_dword(EECONFIG_KEYBOARD, val); } void eeconfig_update_kb(uint32_t val) {
eeprom_update_dword(EECONFIG_KEYBOARD, val);
}
/** \brief eeconfig read user /** \brief eeconfig read user
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint32_t eeconfig_read_user(void) { return eeprom_read_dword(EECONFIG_USER); } uint32_t eeconfig_read_user(void) {
return eeprom_read_dword(EECONFIG_USER);
}
/** \brief eeconfig update user /** \brief eeconfig update user
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_update_user(uint32_t val) { eeprom_update_dword(EECONFIG_USER, val); } void eeconfig_update_user(uint32_t val) {
eeprom_update_dword(EECONFIG_USER, val);
}
/** \brief eeconfig read haptic /** \brief eeconfig read haptic
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
uint32_t eeconfig_read_haptic(void) { return eeprom_read_dword(EECONFIG_HAPTIC); } uint32_t eeconfig_read_haptic(void) {
return eeprom_read_dword(EECONFIG_HAPTIC);
}
/** \brief eeconfig update haptic /** \brief eeconfig update haptic
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_update_haptic(uint32_t val) { eeprom_update_dword(EECONFIG_HAPTIC, val); } void eeconfig_update_haptic(uint32_t val) {
eeprom_update_dword(EECONFIG_HAPTIC, val);
}
/** \brief eeconfig read split handedness /** \brief eeconfig read split handedness
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
bool eeconfig_read_handedness(void) { return !!eeprom_read_byte(EECONFIG_HANDEDNESS); } bool eeconfig_read_handedness(void) {
return !!eeprom_read_byte(EECONFIG_HANDEDNESS);
}
/** \brief eeconfig update split handedness /** \brief eeconfig update split handedness
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
void eeconfig_update_handedness(bool val) { eeprom_update_byte(EECONFIG_HANDEDNESS, !!val); } void eeconfig_update_handedness(bool val) {
eeprom_update_byte(EECONFIG_HANDEDNESS, !!val);
}

View File

@ -132,7 +132,9 @@ void eeconfig_update_handedness(bool val);
flush_timer = timer_read(); \ flush_timer = timer_read(); \
} \ } \
} \ } \
static inline void eeconfig_flag_##name(bool v) { dirty_##name |= v; } \ static inline void eeconfig_flag_##name(bool v) { \
dirty_##name |= v; \
} \
static inline void eeconfig_write_##name(typeof(config) conf) { \ static inline void eeconfig_write_##name(typeof(config) conf) { \
memcpy(&config, &conf, sizeof(config)); \ memcpy(&config, &conf, sizeof(config)); \
eeconfig_flag_##name(true); \ eeconfig_flag_##name(true); \

View File

@ -59,9 +59,13 @@ static uint8_t thisHand, thatHand;
static uint8_t encoder_value[NUMBER_OF_ENCODERS] = {0}; static uint8_t encoder_value[NUMBER_OF_ENCODERS] = {0};
#endif #endif
__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; } __attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) {
return true;
}
__attribute__((weak)) bool encoder_update_kb(uint8_t index, bool clockwise) { return encoder_update_user(index, clockwise); } __attribute__((weak)) bool encoder_update_kb(uint8_t index, bool clockwise) {
return encoder_update_user(index, clockwise);
}
void encoder_init(void) { void encoder_init(void) {
#if defined(SPLIT_KEYBOARD) && defined(ENCODERS_PAD_A_RIGHT) && defined(ENCODERS_PAD_B_RIGHT) #if defined(SPLIT_KEYBOARD) && defined(ENCODERS_PAD_A_RIGHT) && defined(ENCODERS_PAD_B_RIGHT)
@ -140,7 +144,9 @@ bool encoder_read(void) {
#ifdef SPLIT_KEYBOARD #ifdef SPLIT_KEYBOARD
void last_encoder_activity_trigger(void); void last_encoder_activity_trigger(void);
void encoder_state_raw(uint8_t* slave_state) { memcpy(slave_state, &encoder_value[thisHand], sizeof(uint8_t) * NUMBER_OF_ENCODERS); } void encoder_state_raw(uint8_t* slave_state) {
memcpy(slave_state, &encoder_value[thisHand], sizeof(uint8_t) * NUMBER_OF_ENCODERS);
}
void encoder_update_raw(uint8_t* slave_state) { void encoder_update_raw(uint8_t* slave_state) {
bool changed = false; bool changed = false;

View File

@ -26,7 +26,9 @@ uint8_t mockSetPinInputHigh(pin_t pin) {
return 0; return 0;
} }
bool mockReadPin(pin_t pin) { return pins[pin]; } bool mockReadPin(pin_t pin) {
return pins[pin];
}
bool setPin(pin_t pin, bool val) { bool setPin(pin_t pin, bool val) {
pins[pin] = val; pins[pin] = val;

View File

@ -26,7 +26,9 @@ uint8_t mockSetPinInputHigh(pin_t pin) {
return 0; return 0;
} }
bool mockReadPin(pin_t pin) { return pins[pin]; } bool mockReadPin(pin_t pin) {
return pins[pin];
}
bool setPin(pin_t pin, bool val) { bool setPin(pin_t pin, bool val) {
pins[pin] = val; pins[pin] = val;

View File

@ -247,7 +247,9 @@ void haptic_set_dwell(uint8_t dwell) {
xprintf("haptic_config.dwell = %u\n", haptic_config.dwell); xprintf("haptic_config.dwell = %u\n", haptic_config.dwell);
} }
uint8_t haptic_get_enable(void) { return haptic_config.enable; } uint8_t haptic_get_enable(void) {
return haptic_config.enable;
}
uint8_t haptic_get_mode(void) { uint8_t haptic_get_mode(void) {
if (!haptic_config.enable) { if (!haptic_config.enable) {

View File

@ -110,18 +110,34 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif #endif
static uint32_t last_input_modification_time = 0; static uint32_t last_input_modification_time = 0;
uint32_t last_input_activity_time(void) { return last_input_modification_time; } uint32_t last_input_activity_time(void) {
uint32_t last_input_activity_elapsed(void) { return timer_elapsed32(last_input_modification_time); } return last_input_modification_time;
}
uint32_t last_input_activity_elapsed(void) {
return timer_elapsed32(last_input_modification_time);
}
static uint32_t last_matrix_modification_time = 0; static uint32_t last_matrix_modification_time = 0;
uint32_t last_matrix_activity_time(void) { return last_matrix_modification_time; } uint32_t last_matrix_activity_time(void) {
uint32_t last_matrix_activity_elapsed(void) { return timer_elapsed32(last_matrix_modification_time); } return last_matrix_modification_time;
void last_matrix_activity_trigger(void) { last_matrix_modification_time = last_input_modification_time = timer_read32(); } }
uint32_t last_matrix_activity_elapsed(void) {
return timer_elapsed32(last_matrix_modification_time);
}
void last_matrix_activity_trigger(void) {
last_matrix_modification_time = last_input_modification_time = timer_read32();
}
static uint32_t last_encoder_modification_time = 0; static uint32_t last_encoder_modification_time = 0;
uint32_t last_encoder_activity_time(void) { return last_encoder_modification_time; } uint32_t last_encoder_activity_time(void) {
uint32_t last_encoder_activity_elapsed(void) { return timer_elapsed32(last_encoder_modification_time); } return last_encoder_modification_time;
void last_encoder_activity_trigger(void) { last_encoder_modification_time = last_input_modification_time = timer_read32(); } }
uint32_t last_encoder_activity_elapsed(void) {
return timer_elapsed32(last_encoder_modification_time);
}
void last_encoder_activity_trigger(void) {
last_encoder_modification_time = last_input_modification_time = timer_read32();
}
// Only enable this if console is enabled to print to // Only enable this if console is enabled to print to
#if defined(DEBUG_MATRIX_SCAN_RATE) #if defined(DEBUG_MATRIX_SCAN_RATE)
@ -143,7 +159,9 @@ void matrix_scan_perf_task(void) {
} }
} }
uint32_t get_matrix_scan_rate(void) { return last_matrix_scan_count; } uint32_t get_matrix_scan_rate(void) {
return last_matrix_scan_count;
}
#else #else
# define matrix_scan_perf_task() # define matrix_scan_perf_task()
#endif #endif
@ -220,7 +238,9 @@ __attribute__((weak)) void keyboard_pre_init_user(void) {}
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
__attribute__((weak)) void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } __attribute__((weak)) void keyboard_pre_init_kb(void) {
keyboard_pre_init_user();
}
/** \brief keyboard_post_init_user /** \brief keyboard_post_init_user
* *
@ -234,7 +254,9 @@ __attribute__((weak)) void keyboard_post_init_user() {}
* FIXME: needs doc * FIXME: needs doc
*/ */
__attribute__((weak)) void keyboard_post_init_kb(void) { keyboard_post_init_user(); } __attribute__((weak)) void keyboard_post_init_kb(void) {
keyboard_post_init_user();
}
/** \brief keyboard_setup /** \brief keyboard_setup
* *
@ -258,13 +280,17 @@ void keyboard_setup(void) {
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
__attribute__((weak)) bool is_keyboard_master(void) { return true; } __attribute__((weak)) bool is_keyboard_master(void) {
return true;
}
/** \brief is_keyboard_left /** \brief is_keyboard_left
* *
* FIXME: needs doc * FIXME: needs doc
*/ */
__attribute__((weak)) bool is_keyboard_left(void) { return true; } __attribute__((weak)) bool is_keyboard_left(void) {
return true;
}
#endif #endif
@ -273,7 +299,9 @@ __attribute__((weak)) bool is_keyboard_left(void) { return true; }
* Override this function if you have a condition where keypresses processing should change: * Override this function if you have a condition where keypresses processing should change:
* - splits where the slave side needs to process for rgb/oled functionality * - splits where the slave side needs to process for rgb/oled functionality
*/ */
__attribute__((weak)) bool should_process_keypress(void) { return is_keyboard_master(); } __attribute__((weak)) bool should_process_keypress(void) {
return is_keyboard_master();
}
/** \brief housekeeping_task_kb /** \brief housekeeping_task_kb
* *

View File

@ -44,13 +44,21 @@ typedef struct {
* 1) (time == 0) to handle (keyevent_t){} as empty event * 1) (time == 0) to handle (keyevent_t){} as empty event
* 2) Matrix(255, 255) to make TICK event available * 2) Matrix(255, 255) to make TICK event available
*/ */
static inline bool IS_NOEVENT(keyevent_t event) { return event.time == 0 || (event.key.row == 255 && event.key.col == 255); } static inline bool IS_NOEVENT(keyevent_t event) {
static inline bool IS_PRESSED(keyevent_t event) { return (!IS_NOEVENT(event) && event.pressed); } return event.time == 0 || (event.key.row == 255 && event.key.col == 255);
static inline bool IS_RELEASED(keyevent_t event) { return (!IS_NOEVENT(event) && !event.pressed); } }
static inline bool IS_PRESSED(keyevent_t event) {
return (!IS_NOEVENT(event) && event.pressed);
}
static inline bool IS_RELEASED(keyevent_t event) {
return (!IS_NOEVENT(event) && !event.pressed);
}
/* Tick event */ /* Tick event */
#define TICK \ #define TICK \
(keyevent_t) { .key = (keypos_t){.row = 255, .col = 255}, .pressed = false, .time = (timer_read() | 1) } (keyevent_t) { \
.key = (keypos_t){.row = 255, .col = 255}, .pressed = false, .time = (timer_read() | 1) \
}
/* it runs once at early stage of startup before keyboard_init. */ /* it runs once at early stage of startup before keyboard_init. */
void keyboard_setup(void); void keyboard_setup(void);

View File

@ -64,13 +64,17 @@ __attribute__((weak)) void led_set_user(uint8_t usb_led) {}
* *
* \deprecated Use led_update_kb() instead. * \deprecated Use led_update_kb() instead.
*/ */
__attribute__((weak)) void led_set_kb(uint8_t usb_led) { led_set_user(usb_led); } __attribute__((weak)) void led_set_kb(uint8_t usb_led) {
led_set_user(usb_led);
}
/** \brief Lock LED update callback - keymap/user level /** \brief Lock LED update callback - keymap/user level
* *
* \return True if led_update_kb() should run its own code, false otherwise. * \return True if led_update_kb() should run its own code, false otherwise.
*/ */
__attribute__((weak)) bool led_update_user(led_t led_state) { return true; } __attribute__((weak)) bool led_update_user(led_t led_state) {
return true;
}
/** \brief Lock LED update callback - keyboard level /** \brief Lock LED update callback - keyboard level
* *
@ -156,7 +160,9 @@ void led_suspend(void) {
/** \brief Trigger behaviour on transition from suspend /** \brief Trigger behaviour on transition from suspend
*/ */
void led_wakeup(void) { led_set(host_keyboard_leds()); } void led_wakeup(void) {
led_set(host_keyboard_leds());
}
/** \brief set host led state /** \brief set host led state
* *

View File

@ -7,7 +7,9 @@ static uint8_t BAND_math(uint8_t val, uint8_t i, uint8_t time) {
return scale8(v < 0 ? 0 : v, val); return scale8(v < 0 ? 0 : v, val);
} }
bool BAND(effect_params_t* params) { return effect_runner_i(params, &BAND_math); } bool BAND(effect_params_t* params) {
return effect_runner_i(params, &BAND_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_BAND #endif // ENABLE_LED_MATRIX_BAND

View File

@ -2,9 +2,13 @@
LED_MATRIX_EFFECT(BAND_PINWHEEL) LED_MATRIX_EFFECT(BAND_PINWHEEL)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t BAND_PINWHEEL_math(uint8_t val, int16_t dx, int16_t dy, uint8_t time) { return scale8(val - time - atan2_8(dy, dx) * 3, val); } static uint8_t BAND_PINWHEEL_math(uint8_t val, int16_t dx, int16_t dy, uint8_t time) {
return scale8(val - time - atan2_8(dy, dx) * 3, val);
}
bool BAND_PINWHEEL(effect_params_t* params) { return effect_runner_dx_dy(params, &BAND_PINWHEEL_math); } bool BAND_PINWHEEL(effect_params_t* params) {
return effect_runner_dx_dy(params, &BAND_PINWHEEL_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_BAND_PINWHEEL #endif // ENABLE_LED_MATRIX_BAND_PINWHEEL

View File

@ -2,9 +2,13 @@
LED_MATRIX_EFFECT(BAND_SPIRAL) LED_MATRIX_EFFECT(BAND_SPIRAL)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t BAND_SPIRAL_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) { return scale8(val + dist - time - atan2_8(dy, dx), val); } static uint8_t BAND_SPIRAL_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
return scale8(val + dist - time - atan2_8(dy, dx), val);
}
bool BAND_SPIRAL(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &BAND_SPIRAL_math); } bool BAND_SPIRAL(effect_params_t* params) {
return effect_runner_dx_dy_dist(params, &BAND_SPIRAL_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_BAND_SPIRAL #endif // ENABLE_LED_MATRIX_BAND_SPIRAL

View File

@ -2,9 +2,13 @@
LED_MATRIX_EFFECT(CYCLE_LEFT_RIGHT) LED_MATRIX_EFFECT(CYCLE_LEFT_RIGHT)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t CYCLE_LEFT_RIGHT_math(uint8_t val, uint8_t i, uint8_t time) { return scale8(g_led_config.point[i].x - time, val); } static uint8_t CYCLE_LEFT_RIGHT_math(uint8_t val, uint8_t i, uint8_t time) {
return scale8(g_led_config.point[i].x - time, val);
}
bool CYCLE_LEFT_RIGHT(effect_params_t* params) { return effect_runner_i(params, &CYCLE_LEFT_RIGHT_math); } bool CYCLE_LEFT_RIGHT(effect_params_t* params) {
return effect_runner_i(params, &CYCLE_LEFT_RIGHT_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT #endif // ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT

View File

@ -2,9 +2,13 @@
LED_MATRIX_EFFECT(CYCLE_OUT_IN) LED_MATRIX_EFFECT(CYCLE_OUT_IN)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t CYCLE_OUT_IN_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) { return scale8(3 * dist / 2 + time, val); } static uint8_t CYCLE_OUT_IN_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) {
return scale8(3 * dist / 2 + time, val);
}
bool CYCLE_OUT_IN(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &CYCLE_OUT_IN_math); } bool CYCLE_OUT_IN(effect_params_t* params) {
return effect_runner_dx_dy_dist(params, &CYCLE_OUT_IN_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_CYCLE_OUT_IN #endif // ENABLE_LED_MATRIX_CYCLE_OUT_IN

View File

@ -2,9 +2,13 @@
LED_MATRIX_EFFECT(CYCLE_UP_DOWN) LED_MATRIX_EFFECT(CYCLE_UP_DOWN)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t CYCLE_UP_DOWN_math(uint8_t val, uint8_t i, uint8_t time) { return scale8(g_led_config.point[i].y - time, val); } static uint8_t CYCLE_UP_DOWN_math(uint8_t val, uint8_t i, uint8_t time) {
return scale8(g_led_config.point[i].y - time, val);
}
bool CYCLE_UP_DOWN(effect_params_t* params) { return effect_runner_i(params, &CYCLE_UP_DOWN_math); } bool CYCLE_UP_DOWN(effect_params_t* params) {
return effect_runner_i(params, &CYCLE_UP_DOWN_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_CYCLE_UP_DOWN #endif // ENABLE_LED_MATRIX_CYCLE_UP_DOWN

View File

@ -2,9 +2,13 @@
LED_MATRIX_EFFECT(DUAL_BEACON) LED_MATRIX_EFFECT(DUAL_BEACON)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t DUAL_BEACON_math(uint8_t val, int8_t sin, int8_t cos, uint8_t i, uint8_t time) { return scale8(((g_led_config.point[i].y - k_led_matrix_center.y) * cos + (g_led_config.point[i].x - k_led_matrix_center.x) * sin) / 128, val); } static uint8_t DUAL_BEACON_math(uint8_t val, int8_t sin, int8_t cos, uint8_t i, uint8_t time) {
return scale8(((g_led_config.point[i].y - k_led_matrix_center.y) * cos + (g_led_config.point[i].x - k_led_matrix_center.x) * sin) / 128, val);
}
bool DUAL_BEACON(effect_params_t* params) { return effect_runner_sin_cos_i(params, &DUAL_BEACON_math); } bool DUAL_BEACON(effect_params_t* params) {
return effect_runner_sin_cos_i(params, &DUAL_BEACON_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_DUAL_BEACON #endif // ENABLE_LED_MATRIX_DUAL_BEACON

View File

@ -23,11 +23,15 @@ static uint8_t SOLID_REACTIVE_CROSS_math(uint8_t val, int16_t dx, int16_t dy, ui
} }
# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS # ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
bool SOLID_REACTIVE_CROSS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_CROSS_math); } bool SOLID_REACTIVE_CROSS(effect_params_t* params) {
return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_CROSS_math);
}
# endif # endif
# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS # ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
bool SOLID_REACTIVE_MULTICROSS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_CROSS_math); } bool SOLID_REACTIVE_MULTICROSS(effect_params_t* params) {
return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_CROSS_math);
}
# endif # endif
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS

View File

@ -20,11 +20,15 @@ static uint8_t SOLID_REACTIVE_NEXUS_math(uint8_t val, int16_t dx, int16_t dy, ui
} }
# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS # ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
bool SOLID_REACTIVE_NEXUS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_NEXUS_math); } bool SOLID_REACTIVE_NEXUS(effect_params_t* params) {
return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_NEXUS_math);
}
# endif # endif
# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS # ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
bool SOLID_REACTIVE_MULTINEXUS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_NEXUS_math); } bool SOLID_REACTIVE_MULTINEXUS(effect_params_t* params) {
return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_NEXUS_math);
}
# endif # endif
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS

View File

@ -3,9 +3,13 @@
LED_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE) LED_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t SOLID_REACTIVE_SIMPLE_math(uint8_t val, uint16_t offset) { return scale8(255 - offset, val); } static uint8_t SOLID_REACTIVE_SIMPLE_math(uint8_t val, uint16_t offset) {
return scale8(255 - offset, val);
}
bool SOLID_REACTIVE_SIMPLE(effect_params_t* params) { return effect_runner_reactive(params, &SOLID_REACTIVE_SIMPLE_math); } bool SOLID_REACTIVE_SIMPLE(effect_params_t* params) {
return effect_runner_reactive(params, &SOLID_REACTIVE_SIMPLE_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
# endif // ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE # endif // ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE

View File

@ -18,11 +18,15 @@ static uint8_t SOLID_REACTIVE_WIDE_math(uint8_t val, int16_t dx, int16_t dy, uin
} }
# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE # ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
bool SOLID_REACTIVE_WIDE(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_WIDE_math); } bool SOLID_REACTIVE_WIDE(effect_params_t* params) {
return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_WIDE_math);
}
# endif # endif
# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE # ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
bool SOLID_REACTIVE_MULTIWIDE(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_WIDE_math); } bool SOLID_REACTIVE_MULTIWIDE(effect_params_t* params) {
return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_WIDE_math);
}
# endif # endif
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS

View File

@ -18,11 +18,15 @@ uint8_t SOLID_SPLASH_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uin
} }
# ifdef ENABLE_LED_MATRIX_SOLID_SPLASH # ifdef ENABLE_LED_MATRIX_SOLID_SPLASH
bool SOLID_SPLASH(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_SPLASH_math); } bool SOLID_SPLASH(effect_params_t* params) {
return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_SPLASH_math);
}
# endif # endif
# ifdef ENABLE_LED_MATRIX_SOLID_MULTISPLASH # ifdef ENABLE_LED_MATRIX_SOLID_MULTISPLASH
bool SOLID_MULTISPLASH(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_SPLASH_math); } bool SOLID_MULTISPLASH(effect_params_t* params) {
return effect_runner_reactive_splash(0, params, &SOLID_SPLASH_math);
}
# endif # endif
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS

View File

@ -2,9 +2,13 @@
LED_MATRIX_EFFECT(WAVE_LEFT_RIGHT) LED_MATRIX_EFFECT(WAVE_LEFT_RIGHT)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t WAVE_LEFT_RIGHT_math(uint8_t val, uint8_t i, uint8_t time) { return scale8(sin8(g_led_config.point[i].x - time), val); } static uint8_t WAVE_LEFT_RIGHT_math(uint8_t val, uint8_t i, uint8_t time) {
return scale8(sin8(g_led_config.point[i].x - time), val);
}
bool WAVE_LEFT_RIGHT(effect_params_t* params) { return effect_runner_i(params, &WAVE_LEFT_RIGHT_math); } bool WAVE_LEFT_RIGHT(effect_params_t* params) {
return effect_runner_i(params, &WAVE_LEFT_RIGHT_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT #endif // ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT

View File

@ -2,9 +2,13 @@
LED_MATRIX_EFFECT(WAVE_UP_DOWN) LED_MATRIX_EFFECT(WAVE_UP_DOWN)
# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
static uint8_t WAVE_UP_DOWN_math(uint8_t val, uint8_t i, uint8_t time) { return scale8(sin8(g_led_config.point[i].y - time), val); } static uint8_t WAVE_UP_DOWN_math(uint8_t val, uint8_t i, uint8_t time) {
return scale8(sin8(g_led_config.point[i].y - time), val);
}
bool WAVE_UP_DOWN(effect_params_t* params) { return effect_runner_i(params, &WAVE_UP_DOWN_math); } bool WAVE_UP_DOWN(effect_params_t* params) {
return effect_runner_i(params, &WAVE_UP_DOWN_math);
}
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_LED_MATRIX_WAVE_UP_DOWN #endif // ENABLE_LED_MATRIX_WAVE_UP_DOWN

View File

@ -120,7 +120,9 @@ const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT;
EECONFIG_DEBOUNCE_HELPER(led_matrix, EECONFIG_LED_MATRIX, led_matrix_eeconfig); EECONFIG_DEBOUNCE_HELPER(led_matrix, EECONFIG_LED_MATRIX, led_matrix_eeconfig);
void eeconfig_update_led_matrix(void) { eeconfig_flush_led_matrix(true); } void eeconfig_update_led_matrix(void) {
eeconfig_flush_led_matrix(true);
}
void eeconfig_update_led_matrix_default(void) { void eeconfig_update_led_matrix_default(void) {
dprintf("eeconfig_update_led_matrix_default\n"); dprintf("eeconfig_update_led_matrix_default\n");
@ -141,7 +143,9 @@ void eeconfig_debug_led_matrix(void) {
dprintf("led_matrix_eeconfig.flags = %d\n", led_matrix_eeconfig.flags); dprintf("led_matrix_eeconfig.flags = %d\n", led_matrix_eeconfig.flags);
} }
__attribute__((weak)) uint8_t led_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i) { return 0; } __attribute__((weak)) uint8_t led_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i) {
return 0;
}
uint8_t led_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *led_i) { uint8_t led_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *led_i) {
uint8_t led_count = led_matrix_map_row_column_to_led_kb(row, column, led_i); uint8_t led_count = led_matrix_map_row_column_to_led_kb(row, column, led_i);
@ -153,7 +157,9 @@ uint8_t led_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *l
return led_count; return led_count;
} }
void led_matrix_update_pwm_buffers(void) { led_matrix_driver.flush(); } void led_matrix_update_pwm_buffers(void) {
led_matrix_driver.flush();
}
void led_matrix_set_value(int index, uint8_t value) { void led_matrix_set_value(int index, uint8_t value) {
#ifdef USE_CIE1931_CURVE #ifdef USE_CIE1931_CURVE
@ -164,7 +170,8 @@ void led_matrix_set_value(int index, uint8_t value) {
void led_matrix_set_value_all(uint8_t value) { void led_matrix_set_value_all(uint8_t value) {
#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) #if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) led_matrix_set_value(i, value); for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++)
led_matrix_set_value(i, value);
#else #else
# ifdef USE_CIE1931_CURVE # ifdef USE_CIE1931_CURVE
led_matrix_driver.set_value_all(pgm_read_byte(&CIE1931_CURVE[value])); led_matrix_driver.set_value_all(pgm_read_byte(&CIE1931_CURVE[value]));
@ -447,7 +454,9 @@ void led_matrix_set_suspend_state(bool state) {
#endif #endif
} }
bool led_matrix_get_suspend_state(void) { return suspend_state; } bool led_matrix_get_suspend_state(void) {
return suspend_state;
}
void led_matrix_toggle_eeprom_helper(bool write_to_eeprom) { void led_matrix_toggle_eeprom_helper(bool write_to_eeprom) {
led_matrix_eeconfig.enable ^= 1; led_matrix_eeconfig.enable ^= 1;
@ -455,8 +464,12 @@ void led_matrix_toggle_eeprom_helper(bool write_to_eeprom) {
eeconfig_flag_led_matrix(write_to_eeprom); eeconfig_flag_led_matrix(write_to_eeprom);
dprintf("led matrix toggle [%s]: led_matrix_eeconfig.enable = %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.enable); dprintf("led matrix toggle [%s]: led_matrix_eeconfig.enable = %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.enable);
} }
void led_matrix_toggle_noeeprom(void) { led_matrix_toggle_eeprom_helper(false); } void led_matrix_toggle_noeeprom(void) {
void led_matrix_toggle(void) { led_matrix_toggle_eeprom_helper(true); } led_matrix_toggle_eeprom_helper(false);
}
void led_matrix_toggle(void) {
led_matrix_toggle_eeprom_helper(true);
}
void led_matrix_enable(void) { void led_matrix_enable(void) {
led_matrix_enable_noeeprom(); led_matrix_enable_noeeprom();
@ -478,7 +491,9 @@ void led_matrix_disable_noeeprom(void) {
led_matrix_eeconfig.enable = 0; led_matrix_eeconfig.enable = 0;
} }
uint8_t led_matrix_is_enabled(void) { return led_matrix_eeconfig.enable; } uint8_t led_matrix_is_enabled(void) {
return led_matrix_eeconfig.enable;
}
void led_matrix_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) { void led_matrix_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) {
if (!led_matrix_eeconfig.enable) { if (!led_matrix_eeconfig.enable) {
@ -495,24 +510,38 @@ void led_matrix_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) {
eeconfig_flag_led_matrix(write_to_eeprom); eeconfig_flag_led_matrix(write_to_eeprom);
dprintf("led matrix mode [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.mode); dprintf("led matrix mode [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.mode);
} }
void led_matrix_mode_noeeprom(uint8_t mode) { led_matrix_mode_eeprom_helper(mode, false); } void led_matrix_mode_noeeprom(uint8_t mode) {
void led_matrix_mode(uint8_t mode) { led_matrix_mode_eeprom_helper(mode, true); } led_matrix_mode_eeprom_helper(mode, false);
}
void led_matrix_mode(uint8_t mode) {
led_matrix_mode_eeprom_helper(mode, true);
}
uint8_t led_matrix_get_mode(void) { return led_matrix_eeconfig.mode; } uint8_t led_matrix_get_mode(void) {
return led_matrix_eeconfig.mode;
}
void led_matrix_step_helper(bool write_to_eeprom) { void led_matrix_step_helper(bool write_to_eeprom) {
uint8_t mode = led_matrix_eeconfig.mode + 1; uint8_t mode = led_matrix_eeconfig.mode + 1;
led_matrix_mode_eeprom_helper((mode < LED_MATRIX_EFFECT_MAX) ? mode : 1, write_to_eeprom); led_matrix_mode_eeprom_helper((mode < LED_MATRIX_EFFECT_MAX) ? mode : 1, write_to_eeprom);
} }
void led_matrix_step_noeeprom(void) { led_matrix_step_helper(false); } void led_matrix_step_noeeprom(void) {
void led_matrix_step(void) { led_matrix_step_helper(true); } led_matrix_step_helper(false);
}
void led_matrix_step(void) {
led_matrix_step_helper(true);
}
void led_matrix_step_reverse_helper(bool write_to_eeprom) { void led_matrix_step_reverse_helper(bool write_to_eeprom) {
uint8_t mode = led_matrix_eeconfig.mode - 1; uint8_t mode = led_matrix_eeconfig.mode - 1;
led_matrix_mode_eeprom_helper((mode < 1) ? LED_MATRIX_EFFECT_MAX - 1 : mode, write_to_eeprom); led_matrix_mode_eeprom_helper((mode < 1) ? LED_MATRIX_EFFECT_MAX - 1 : mode, write_to_eeprom);
} }
void led_matrix_step_reverse_noeeprom(void) { led_matrix_step_reverse_helper(false); } void led_matrix_step_reverse_noeeprom(void) {
void led_matrix_step_reverse(void) { led_matrix_step_reverse_helper(true); } led_matrix_step_reverse_helper(false);
}
void led_matrix_step_reverse(void) {
led_matrix_step_reverse_helper(true);
}
void led_matrix_set_val_eeprom_helper(uint8_t val, bool write_to_eeprom) { void led_matrix_set_val_eeprom_helper(uint8_t val, bool write_to_eeprom) {
if (!led_matrix_eeconfig.enable) { if (!led_matrix_eeconfig.enable) {
@ -522,37 +551,77 @@ void led_matrix_set_val_eeprom_helper(uint8_t val, bool write_to_eeprom) {
eeconfig_flag_led_matrix(write_to_eeprom); eeconfig_flag_led_matrix(write_to_eeprom);
dprintf("led matrix set val [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.val); dprintf("led matrix set val [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.val);
} }
void led_matrix_set_val_noeeprom(uint8_t val) { led_matrix_set_val_eeprom_helper(val, false); } void led_matrix_set_val_noeeprom(uint8_t val) {
void led_matrix_set_val(uint8_t val) { led_matrix_set_val_eeprom_helper(val, true); } led_matrix_set_val_eeprom_helper(val, false);
}
void led_matrix_set_val(uint8_t val) {
led_matrix_set_val_eeprom_helper(val, true);
}
uint8_t led_matrix_get_val(void) { return led_matrix_eeconfig.val; } uint8_t led_matrix_get_val(void) {
return led_matrix_eeconfig.val;
}
void led_matrix_increase_val_helper(bool write_to_eeprom) { led_matrix_set_val_eeprom_helper(qadd8(led_matrix_eeconfig.val, LED_MATRIX_VAL_STEP), write_to_eeprom); } void led_matrix_increase_val_helper(bool write_to_eeprom) {
void led_matrix_increase_val_noeeprom(void) { led_matrix_increase_val_helper(false); } led_matrix_set_val_eeprom_helper(qadd8(led_matrix_eeconfig.val, LED_MATRIX_VAL_STEP), write_to_eeprom);
void led_matrix_increase_val(void) { led_matrix_increase_val_helper(true); } }
void led_matrix_increase_val_noeeprom(void) {
led_matrix_increase_val_helper(false);
}
void led_matrix_increase_val(void) {
led_matrix_increase_val_helper(true);
}
void led_matrix_decrease_val_helper(bool write_to_eeprom) { led_matrix_set_val_eeprom_helper(qsub8(led_matrix_eeconfig.val, LED_MATRIX_VAL_STEP), write_to_eeprom); } void led_matrix_decrease_val_helper(bool write_to_eeprom) {
void led_matrix_decrease_val_noeeprom(void) { led_matrix_decrease_val_helper(false); } led_matrix_set_val_eeprom_helper(qsub8(led_matrix_eeconfig.val, LED_MATRIX_VAL_STEP), write_to_eeprom);
void led_matrix_decrease_val(void) { led_matrix_decrease_val_helper(true); } }
void led_matrix_decrease_val_noeeprom(void) {
led_matrix_decrease_val_helper(false);
}
void led_matrix_decrease_val(void) {
led_matrix_decrease_val_helper(true);
}
void led_matrix_set_speed_eeprom_helper(uint8_t speed, bool write_to_eeprom) { void led_matrix_set_speed_eeprom_helper(uint8_t speed, bool write_to_eeprom) {
led_matrix_eeconfig.speed = speed; led_matrix_eeconfig.speed = speed;
eeconfig_flag_led_matrix(write_to_eeprom); eeconfig_flag_led_matrix(write_to_eeprom);
dprintf("led matrix set speed [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.speed); dprintf("led matrix set speed [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.speed);
} }
void led_matrix_set_speed_noeeprom(uint8_t speed) { led_matrix_set_speed_eeprom_helper(speed, false); } void led_matrix_set_speed_noeeprom(uint8_t speed) {
void led_matrix_set_speed(uint8_t speed) { led_matrix_set_speed_eeprom_helper(speed, true); } led_matrix_set_speed_eeprom_helper(speed, false);
}
void led_matrix_set_speed(uint8_t speed) {
led_matrix_set_speed_eeprom_helper(speed, true);
}
uint8_t led_matrix_get_speed(void) { return led_matrix_eeconfig.speed; } uint8_t led_matrix_get_speed(void) {
return led_matrix_eeconfig.speed;
}
void led_matrix_increase_speed_helper(bool write_to_eeprom) { led_matrix_set_speed_eeprom_helper(qadd8(led_matrix_eeconfig.speed, LED_MATRIX_SPD_STEP), write_to_eeprom); } void led_matrix_increase_speed_helper(bool write_to_eeprom) {
void led_matrix_increase_speed_noeeprom(void) { led_matrix_increase_speed_helper(false); } led_matrix_set_speed_eeprom_helper(qadd8(led_matrix_eeconfig.speed, LED_MATRIX_SPD_STEP), write_to_eeprom);
void led_matrix_increase_speed(void) { led_matrix_increase_speed_helper(true); } }
void led_matrix_increase_speed_noeeprom(void) {
led_matrix_increase_speed_helper(false);
}
void led_matrix_increase_speed(void) {
led_matrix_increase_speed_helper(true);
}
void led_matrix_decrease_speed_helper(bool write_to_eeprom) { led_matrix_set_speed_eeprom_helper(qsub8(led_matrix_eeconfig.speed, LED_MATRIX_SPD_STEP), write_to_eeprom); } void led_matrix_decrease_speed_helper(bool write_to_eeprom) {
void led_matrix_decrease_speed_noeeprom(void) { led_matrix_decrease_speed_helper(false); } led_matrix_set_speed_eeprom_helper(qsub8(led_matrix_eeconfig.speed, LED_MATRIX_SPD_STEP), write_to_eeprom);
void led_matrix_decrease_speed(void) { led_matrix_decrease_speed_helper(true); } }
void led_matrix_decrease_speed_noeeprom(void) {
led_matrix_decrease_speed_helper(false);
}
void led_matrix_decrease_speed(void) {
led_matrix_decrease_speed_helper(true);
}
led_flags_t led_matrix_get_flags(void) { return led_matrix_eeconfig.flags; } led_flags_t led_matrix_get_flags(void) {
return led_matrix_eeconfig.flags;
}
void led_matrix_set_flags(led_flags_t flags) { led_matrix_eeconfig.flags = flags; } void led_matrix_set_flags(led_flags_t flags) {
led_matrix_eeconfig.flags = flags;
}

Some files were not shown because too many files have changed in this diff Show More