diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md index 856ca0a9b22..d5c340edce7 100644 --- a/docs/i2c_driver.md +++ b/docs/i2c_driver.md @@ -7,7 +7,7 @@ The I2C Master drivers used in QMK have a set of common functions to allow porta |Function |Description | |------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |`void i2c_init(void);` |Initializes the I2C driver. This function should be called once before any transaction is initiated. | -|`uint8_t i2c_start(uint8_t address);` |Starts an I2C transaction. Address is the 7-bit slave address without the direction bit. | +|`uint8_t i2c_start(uint8_t address, uint16_t timeout);` |Starts an I2C transaction. Address is the 7-bit slave address without the direction bit. | |`uint8_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Transmit data over I2C. Address is the 7-bit slave address without the direction. Returns status of transaction. | |`uint8_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Receive data over I2C. Address is the 7-bit slave address without the direction. Saves number of bytes specified by `length` in `data` array. Returns status of transaction. | |`uint8_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_transmit` function but `regaddr` sets where in the slave the data will be written. | diff --git a/drivers/avr/analog.h b/drivers/avr/analog.h index 32452a1ec21..1b773d82cef 100644 --- a/drivers/avr/analog.h +++ b/drivers/avr/analog.h @@ -19,9 +19,15 @@ #include +#ifdef __cplusplus +extern "C" { +#endif void analogReference(uint8_t mode); int16_t analogRead(uint8_t pin); int16_t adc_read(uint8_t mux); +#ifdef __cplusplus +} +#endif #define ADC_REF_POWER (1 << REFS0) #define ADC_REF_INTERNAL ((1 << REFS1) | (1 << REFS0)) diff --git a/keyboards/aeboards/ext65/keymaps/default/keymap.c b/keyboards/aeboards/ext65/keymaps/default/keymap.c index 79d5ecf5056..efa11cd0fd6 100644 --- a/keyboards/aeboards/ext65/keymaps/default/keymap.c +++ b/keyboards/aeboards/ext65/keymaps/default/keymap.c @@ -62,7 +62,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - void keyboard_pre_init_user(void) { // Call the keyboard pre init code. @@ -75,19 +74,19 @@ void keyboard_pre_init_user(void) { void led_set_user(uint8_t usb_led) { if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { - writePinLow(D5); - } else { writePinHigh(D5); + } else { + writePinLow(D5); } if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - writePinLow(D3); - } else { writePinHigh(D3); + } else { + writePinLow(D3); } if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) { - writePinLow(D2); - } else { writePinHigh(D2); + } else { + writePinLow(D2); } } @@ -101,4 +100,4 @@ uint32_t layer_state_set_user(uint32_t state) { break; } return state; -} \ No newline at end of file +} diff --git a/keyboards/aeboards/ext65/keymaps/via/keymap.c b/keyboards/aeboards/ext65/keymaps/via/keymap.c index 3079c528eb5..efa11cd0fd6 100644 --- a/keyboards/aeboards/ext65/keymaps/via/keymap.c +++ b/keyboards/aeboards/ext65/keymaps/via/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ext65( KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR, KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL , - KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP, + KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP, KC_PENT, KC_P3 , KC_P2 , KC_P1 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_PGDN, KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), @@ -74,19 +74,19 @@ void keyboard_pre_init_user(void) { void led_set_user(uint8_t usb_led) { if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { - writePinLow(D5); - } else { writePinHigh(D5); + } else { + writePinLow(D5); } if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - writePinLow(D3); - } else { writePinHigh(D3); + } else { + writePinLow(D3); } if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) { - writePinLow(D2); - } else { writePinHigh(D2); + } else { + writePinLow(D2); } } diff --git a/keyboards/atomic/atomic.c b/keyboards/atomic/atomic.c index 6f393315eeb..eba5ed61f68 100644 --- a/keyboards/atomic/atomic.c +++ b/keyboards/atomic/atomic.c @@ -4,12 +4,9 @@ void matrix_init_kb(void) { // put your keyboard start-up code here // runs once when the firmware starts up - MCUCR |= (1< +#include "analog.h" // These are the pin assignments for the 32u4 boards. // You may define them to something else in your config.h @@ -29,6 +30,12 @@ #define SAMPLE_BATTERY #define ConnectionUpdateInterval 1000 /* milliseconds */ +#ifdef SAMPLE_BATTERY +#ifndef BATTERY_LEVEL_PIN +# define BATTERY_LEVEL_PIN 7 +#endif +#endif + static struct { bool is_connected; bool initialized; @@ -631,15 +638,10 @@ void adafruit_ble_task(void) { } #ifdef SAMPLE_BATTERY - // I don't know if this really does anything useful yet; the reported - // voltage level always seems to be around 3200mV. We may want to just rip - // this code out. if (timer_elapsed(state.last_battery_update) > BatteryUpdateInterval && resp_buf.empty()) { state.last_battery_update = timer_read(); - if (at_command_P(PSTR("AT+HWVBAT"), resbuf, sizeof(resbuf))) { - state.vbat = atoi(resbuf); - } + state.vbat = analogRead(BATTERY_LEVEL_PIN); } #endif } diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c index 98b11b3a914..9cee25ac664 100644 --- a/users/konstantin/konstantin.c +++ b/users/konstantin/konstantin.c @@ -36,9 +36,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #ifdef LAYER_FN static bool fn_lock = false; + case FNLK: + if (record->event.pressed) { + fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this + } + break; + case FN_FNLK: if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - fn_lock = !IS_LAYER_ON(L_FN); // Fn layer will be toggled after this + fn_lock = !IS_LAYER_ON(L_FN); } break; #endif