~ruther/qmk_firmware

31c57aab35e6fd49c4c8336f449419afe7630e93 — Nick Brassel 4 years ago e702c7f
`qmk cformat`
M quantum/quantum.c => quantum/quantum.c +4 -4
@@ 551,10 551,10 @@ void send_char(char ascii_code) {
    }
#endif

    uint8_t keycode       = pgm_read_byte(&ascii_to_keycode_lut[(uint8_t)ascii_code]);
    bool    is_shifted    = PGM_LOADBIT(ascii_to_shift_lut, (uint8_t)ascii_code);
    bool    is_altgred    = PGM_LOADBIT(ascii_to_altgr_lut, (uint8_t)ascii_code);
    bool    is_dead = PGM_LOADBIT(ascii_to_dead_lut, (uint8_t)ascii_code);
    uint8_t keycode    = pgm_read_byte(&ascii_to_keycode_lut[(uint8_t)ascii_code]);
    bool    is_shifted = PGM_LOADBIT(ascii_to_shift_lut, (uint8_t)ascii_code);
    bool    is_altgred = PGM_LOADBIT(ascii_to_altgr_lut, (uint8_t)ascii_code);
    bool    is_dead    = PGM_LOADBIT(ascii_to_dead_lut, (uint8_t)ascii_code);

    if (is_shifted) {
        register_code(KC_LSFT);

M quantum/quantum.h => quantum/quantum.h +2 -2
@@ 248,9 248,9 @@ typedef ioline_t pin_t;
 */
#    if !defined(GPIO_INPUT_PIN_DELAY)
#        if defined(STM32_SYSCLK)
#            define GPIO_INPUT_PIN_DELAY (STM32_SYSCLK/1000000L / 4)
#            define GPIO_INPUT_PIN_DELAY (STM32_SYSCLK / 1000000L / 4)
#        elif defined(KINETIS_SYSCLK_FREQUENCY)
#            define GPIO_INPUT_PIN_DELAY (KINETIS_SYSCLK_FREQUENCY/1000000L / 4)
#            define GPIO_INPUT_PIN_DELAY (KINETIS_SYSCLK_FREQUENCY / 1000000L / 4)
#        endif
#    endif
#    define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY)

M quantum/rgblight.c => quantum/rgblight.c +1 -1
@@ 843,7 843,7 @@ void rgblight_update_sync(rgblight_syncinfo_t *syncinfo, bool write_to_eeprom) {
        animation_status.restart = true;
    }
#        endif /* RGBLIGHT_SPLIT_NO_ANIMATION_SYNC */
#    endif /* RGBLIGHT_USE_TIMER */
#    endif     /* RGBLIGHT_USE_TIMER */
}
#endif /* RGBLIGHT_SPLIT */


M quantum/split_common/matrix.c => quantum/split_common/matrix.c +1 -1
@@ 264,7 264,7 @@ bool matrix_post_scan(void) {
                // reset other half if disconnected
                for (int i = 0; i < ROWS_PER_HAND; ++i) {
                    matrix[thatHand + i] = 0;
                    slave_matrix[i] = 0;
                    slave_matrix[i]      = 0;
                }

                changed = true;

M quantum/split_common/transport.c => quantum/split_common/transport.c +13 -13
@@ 40,7 40,7 @@ typedef struct _I2C_slave_buffer_t {
#        endif
#    endif
#    ifdef BACKLIGHT_ENABLE
    uint8_t      backlight_level;
    uint8_t backlight_level;
#    endif
#    if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
    rgblight_syncinfo_t rgblight_sync;


@@ 172,9 172,9 @@ void transport_slave(matrix_row_t matrix[]) {
#    ifdef SPLIT_MODS_ENABLE
    set_mods(i2c_buffer->real_mods);
    set_weak_mods(i2c_buffer->weak_mods);
#       ifndef NO_ACTION_ONESHOT
#        ifndef NO_ACTION_ONESHOT
    set_oneshot_mods(i2c_buffer->oneshot_mods);
#       endif
#        endif
#    endif
}



@@ 191,27 191,27 @@ typedef struct _Serial_s2m_buffer_t {
    matrix_row_t smatrix[ROWS_PER_HAND];

#    ifdef ENCODER_ENABLE
    uint8_t encoder_state[NUMBER_OF_ENCODERS];
    uint8_t      encoder_state[NUMBER_OF_ENCODERS];
#    endif

} Serial_s2m_buffer_t;

typedef struct _Serial_m2s_buffer_t {
#    ifdef SPLIT_MODS_ENABLE
    uint8_t real_mods;
    uint8_t weak_mods;
    uint8_t  real_mods;
    uint8_t  weak_mods;
#        ifndef NO_ACTION_ONESHOT
    uint8_t oneshot_mods;
    uint8_t  oneshot_mods;
#        endif
#    endif
#    ifndef DISABLE_SYNC_TIMER
    uint32_t sync_timer;
#    endif
#    ifdef BACKLIGHT_ENABLE
    uint8_t backlight_level;
    uint8_t  backlight_level;
#    endif
#    ifdef WPM_ENABLE
    uint8_t current_wpm;
    uint8_t  current_wpm;
#    endif
} Serial_m2s_buffer_t;



@@ 317,18 317,18 @@ bool transport_master(matrix_row_t matrix[]) {

#    ifdef WPM_ENABLE
    // Write wpm to slave
    serial_m2s_buffer.current_wpm = get_current_wpm();
    serial_m2s_buffer.current_wpm  = get_current_wpm();
#    endif

#    ifdef SPLIT_MODS_ENABLE
    serial_m2s_buffer.real_mods = get_mods();
    serial_m2s_buffer.weak_mods = get_weak_mods();
    serial_m2s_buffer.real_mods    = get_mods();
    serial_m2s_buffer.weak_mods    = get_weak_mods();
#        ifndef NO_ACTION_ONESHOT
    serial_m2s_buffer.oneshot_mods = get_oneshot_mods();
#        endif
#    endif
#    ifndef DISABLE_SYNC_TIMER
    serial_m2s_buffer.sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET;
    serial_m2s_buffer.sync_timer   = sync_timer_read32() + SYNC_TIMER_OFFSET;
#    endif
    return true;
}

M tmk_core/common/avr/bootloader.c => tmk_core/common/avr/bootloader.c +4 -4
@@ 237,13 237,13 @@ __attribute__((weak)) void bootloader_jump(void) {
                 "bootloader_startup_loop%=:         \n\t"
                 "rjmp bootloader_startup_loop%=     \n\t"
                 :
                 : [mcucsrio] "I"(_SFR_IO_ADDR(MCUCSR)),
                 : [ mcucsrio ] "I"(_SFR_IO_ADDR(MCUCSR)),
#    if (FLASHEND > 131071)
                   [ramendhi] "M"(((RAMEND - 2) >> 8) & 0xff), [ramendlo] "M"(((RAMEND - 2) >> 0) & 0xff), [bootaddrhi] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 16) & 0xff),
                   [ ramendhi ] "M"(((RAMEND - 2) >> 8) & 0xff), [ ramendlo ] "M"(((RAMEND - 2) >> 0) & 0xff), [ bootaddrhi ] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 16) & 0xff),
#    else
                   [ramendhi] "M"(((RAMEND - 1) >> 8) & 0xff), [ramendlo] "M"(((RAMEND - 1) >> 0) & 0xff),
                   [ ramendhi ] "M"(((RAMEND - 1) >> 8) & 0xff), [ ramendlo ] "M"(((RAMEND - 1) >> 0) & 0xff),
#    endif
                   [bootaddrme] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 8) & 0xff), [bootaddrlo] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 0) & 0xff));
                   [ bootaddrme ] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 8) & 0xff), [ bootaddrlo ] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 0) & 0xff));

#else  // Assume remaining boards are DFU, even if the flag isn't set


M tmk_core/common/mousekey.c => tmk_core/common/mousekey.c +14 -18
@@ 37,7 37,7 @@ static uint8_t        mousekey_accel        = 0;
static uint8_t        mousekey_repeat       = 0;
static uint8_t        mousekey_wheel_repeat = 0;
#ifdef MK_KINETIC_SPEED
static uint16_t       mouse_timer     = 0;
static uint16_t mouse_timer = 0;
#endif

#ifndef MK_3_SPEED


@@ 123,20 123,18 @@ static uint8_t wheel_unit(void) {
 * B: base mouse travel speed
 */
const uint16_t mk_accelerated_speed = MOUSEKEY_ACCELERATED_SPEED;
const uint16_t mk_base_speed = MOUSEKEY_BASE_SPEED;
const uint16_t mk_base_speed        = MOUSEKEY_BASE_SPEED;
const uint16_t mk_decelerated_speed = MOUSEKEY_DECELERATED_SPEED;
const uint16_t mk_initial_speed = MOUSEKEY_INITIAL_SPEED;
const uint16_t mk_initial_speed     = MOUSEKEY_INITIAL_SPEED;

static uint8_t move_unit(void) {
    float speed = mk_initial_speed;

    if (mousekey_accel & ((1<<0) | (1<<2))) {
        speed = mousekey_accel & (1<<2) ? mk_accelerated_speed : mk_decelerated_speed;
    if (mousekey_accel & ((1 << 0) | (1 << 2))) {
        speed = mousekey_accel & (1 << 2) ? mk_accelerated_speed : mk_decelerated_speed;
    } else if (mousekey_repeat && mouse_timer) {
        const float time_elapsed = timer_elapsed(mouse_timer) / 50;
        speed = mk_initial_speed +
            MOUSEKEY_MOVE_DELTA * time_elapsed +
            MOUSEKEY_MOVE_DELTA * 0.5 * time_elapsed * time_elapsed;
        speed                    = mk_initial_speed + MOUSEKEY_MOVE_DELTA * time_elapsed + MOUSEKEY_MOVE_DELTA * 0.5 * time_elapsed * time_elapsed;

        speed = speed > mk_base_speed ? mk_base_speed : speed;
    }


@@ 153,14 151,12 @@ float mk_wheel_interval = 1000.0f / MOUSEKEY_WHEEL_INITIAL_MOVEMENTS;
static uint8_t wheel_unit(void) {
    float speed = MOUSEKEY_WHEEL_INITIAL_MOVEMENTS;

    if (mousekey_accel & ((1<<0) | (1<<2))) {
        speed = mousekey_accel & (1<<2) ? MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS : MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS;
    if (mousekey_accel & ((1 << 0) | (1 << 2))) {
        speed = mousekey_accel & (1 << 2) ? MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS : MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS;
    } else if (mousekey_repeat && mouse_timer) {
        if (mk_wheel_interval != MOUSEKEY_WHEEL_BASE_MOVEMENTS) {
            const float time_elapsed = timer_elapsed(mouse_timer) / 50;
            speed = MOUSEKEY_WHEEL_INITIAL_MOVEMENTS +
                1 * time_elapsed +
                1 * 0.5 * time_elapsed * time_elapsed;
            speed                    = MOUSEKEY_WHEEL_INITIAL_MOVEMENTS + 1 * time_elapsed + 1 * 0.5 * time_elapsed * time_elapsed;
        }
        speed = speed > MOUSEKEY_WHEEL_BASE_MOVEMENTS ? MOUSEKEY_WHEEL_BASE_MOVEMENTS : speed;
    }


@@ 209,7 205,7 @@ static uint8_t wheel_unit(void) {
}

#        endif /* #ifndef MK_KINETIC_SPEED */
#    endif /* #ifndef MK_COMBINED */
#    endif     /* #ifndef MK_COMBINED */

void mousekey_task(void) {
    // report cursor and scroll movement independently


@@ 260,11 256,11 @@ void mousekey_task(void) {
}

void mousekey_on(uint8_t code) {
#ifdef MK_KINETIC_SPEED
#    ifdef MK_KINETIC_SPEED
    if (mouse_timer == 0) {
        mouse_timer = timer_read();
    }
#endif /* #ifdef MK_KINETIC_SPEED */
#    endif /* #ifdef MK_KINETIC_SPEED */

    if (code == KC_MS_UP)
        mouse_report.y = move_unit() * -1;


@@ 335,9 331,9 @@ void mousekey_off(uint8_t code) {
        mousekey_accel &= ~(1 << 2);
    if (mouse_report.x == 0 && mouse_report.y == 0) {
        mousekey_repeat = 0;
#ifdef MK_KINETIC_SPEED
#    ifdef MK_KINETIC_SPEED
        mouse_timer = 0;
#endif /* #ifdef MK_KINETIC_SPEED */
#    endif /* #ifdef MK_KINETIC_SPEED */
    }
    if (mouse_report.v == 0 && mouse_report.h == 0) mousekey_wheel_repeat = 0;
}

M tmk_core/common/mousekey.h => tmk_core/common/mousekey.h +39 -39
@@ 36,28 36,28 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#    endif

#    ifndef MOUSEKEY_MOVE_DELTA
#ifndef MK_KINETIC_SPEED
#        define MOUSEKEY_MOVE_DELTA 5
#else
#        define MOUSEKEY_MOVE_DELTA 25
#endif
#        ifndef MK_KINETIC_SPEED
#            define MOUSEKEY_MOVE_DELTA 5
#        else
#            define MOUSEKEY_MOVE_DELTA 25
#        endif
#    endif
#    ifndef MOUSEKEY_WHEEL_DELTA
#        define MOUSEKEY_WHEEL_DELTA 1
#    endif
#    ifndef MOUSEKEY_DELAY
#ifndef MK_KINETIC_SPEED
#        define MOUSEKEY_DELAY 300
#else
#        define MOUSEKEY_DELAY 8
#endif
#        ifndef MK_KINETIC_SPEED
#            define MOUSEKEY_DELAY 300
#        else
#            define MOUSEKEY_DELAY 8
#        endif
#    endif
#    ifndef MOUSEKEY_INTERVAL
#ifndef MK_KINETIC_SPEED
#        define MOUSEKEY_INTERVAL 50
#else
#        define MOUSEKEY_INTERVAL 8
#endif
#        ifndef MK_KINETIC_SPEED
#            define MOUSEKEY_INTERVAL 50
#        else
#            define MOUSEKEY_INTERVAL 8
#        endif
#    endif
#    ifndef MOUSEKEY_MAX_SPEED
#        define MOUSEKEY_MAX_SPEED 10


@@ 78,30 78,30 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#        define MOUSEKEY_WHEEL_TIME_TO_MAX 40
#    endif

#ifndef MOUSEKEY_INITIAL_SPEED
#define MOUSEKEY_INITIAL_SPEED  100
#endif
#ifndef MOUSEKEY_BASE_SPEED
#define MOUSEKEY_BASE_SPEED 1000
#endif
#ifndef MOUSEKEY_DECELERATED_SPEED
#define MOUSEKEY_DECELERATED_SPEED 400
#endif
#ifndef MOUSEKEY_ACCELERATED_SPEED
#define MOUSEKEY_ACCELERATED_SPEED 3000
#endif
#ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
#define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS  16
#endif
#ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
#define MOUSEKEY_WHEEL_BASE_MOVEMENTS  32
#endif
#ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
#define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS  48
#endif
#ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
#define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS  8
#endif
#    ifndef MOUSEKEY_INITIAL_SPEED
#        define MOUSEKEY_INITIAL_SPEED 100
#    endif
#    ifndef MOUSEKEY_BASE_SPEED
#        define MOUSEKEY_BASE_SPEED 1000
#    endif
#    ifndef MOUSEKEY_DECELERATED_SPEED
#        define MOUSEKEY_DECELERATED_SPEED 400
#    endif
#    ifndef MOUSEKEY_ACCELERATED_SPEED
#        define MOUSEKEY_ACCELERATED_SPEED 3000
#    endif
#    ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
#        define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16
#    endif
#    ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
#        define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32
#    endif
#    ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
#        define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48
#    endif
#    ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
#        define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8
#    endif

#else /* #ifndef MK_3_SPEED */


M tmk_core/common/wait.h => tmk_core/common/wait.h +58 -31
@@ 15,44 15,71 @@ extern "C" {

#    define CLOCK_DELAY_NOP8 "nop\n\t nop\n\t nop\n\t nop\n\t   nop\n\t nop\n\t nop\n\t nop\n\t"

__attribute__((always_inline))
static inline void wait_cpuclock_allnop(unsigned int n) { /* n: 1..135 */
__attribute__((always_inline)) static inline void wait_cpuclock_allnop(unsigned int n) { /* n: 1..135 */
    /* The argument n must be a constant expression.
     * That way, compiler optimization will remove unnecessary code. */
    if (n < 1) { return; }
    if (n < 1) {
        return;
    }
    if (n > 8) {
        unsigned int n8 = n/8;
        n = n - n8*8;
        unsigned int n8 = n / 8;
        n               = n - n8 * 8;
        switch (n8) {
        case 16: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case 15: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case 14: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case 13: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case 12: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case 11: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case 10: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  9: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  8: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  7: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  6: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  5: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  4: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  3: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  2: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  1: asm volatile (CLOCK_DELAY_NOP8::: "memory");
        case  0: break;
            case 16:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 15:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 14:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 13:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 12:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 11:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 10:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 9:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 8:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 7:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 6:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 5:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 4:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 3:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 2:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 1:
                asm volatile(CLOCK_DELAY_NOP8::: "memory");
            case 0:
                break;
        }
    }
    switch (n) {
    case 8: asm volatile ("nop"::: "memory");
    case 7: asm volatile ("nop"::: "memory");
    case 6: asm volatile ("nop"::: "memory");
    case 5: asm volatile ("nop"::: "memory");
    case 4: asm volatile ("nop"::: "memory");
    case 3: asm volatile ("nop"::: "memory");
    case 2: asm volatile ("nop"::: "memory");
    case 1: asm volatile ("nop"::: "memory");
    case 0: break;
        case 8:
            asm volatile("nop" ::: "memory");
        case 7:
            asm volatile("nop" ::: "memory");
        case 6:
            asm volatile("nop" ::: "memory");
        case 5:
            asm volatile("nop" ::: "memory");
        case 4:
            asm volatile("nop" ::: "memory");
        case 3:
            asm volatile("nop" ::: "memory");
        case 2:
            asm volatile("nop" ::: "memory");
        case 1:
            asm volatile("nop" ::: "memory");
        case 0:
            break;
    }
}
#endif