Merge remote-tracking branch 'origin/halcyon' into halcyon-elora-rev2
This commit is contained in:
commit
a6d8b455a7
21 changed files with 116 additions and 99 deletions
|
|
@ -11,18 +11,18 @@
|
|||
#define RP_PWM_USE_PWM5 TRUE
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#define SPLIT_POINTING_ENABLE
|
||||
#define POINTING_DEVICE_COMBINED
|
||||
|
||||
#define HLC_BACKLIGHT_TIMEOUT 120000
|
||||
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD5
|
||||
#define BACKLIGHT_LEVELS 10
|
||||
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B
|
||||
|
||||
#if !defined(HLC_TFT_DISPLAY)
|
||||
#define BACKLIGHT_PIN NO_PIN
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD5
|
||||
#define BACKLIGHT_LEVELS 10
|
||||
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B
|
||||
#endif
|
||||
|
||||
#if !defined(HLC_CIRQUE_TRACKPAD)
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
}
|
||||
#endif
|
||||
|
||||
// Elora
|
||||
// Elora
|
||||
#if PRODUCT_ID == 0xA392
|
||||
#undef ENCODER_A_PINS
|
||||
#define ENCODER_A_PINS { GP22, HLC_ENCODER_A }
|
||||
|
|
@ -88,4 +88,4 @@
|
|||
{k10A, k10B, k10C, k10D, k10E, k10F, KC_NO}, \
|
||||
{k11A, k11B, k11C, k11D, k11E, KC_NO, KC_NO} \
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,13 +1,9 @@
|
|||
// Copyright 2024 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include "halcyon.h"
|
||||
#include "transactions.h"
|
||||
#include "print.h"
|
||||
#include "split_util.h"
|
||||
#include "pointing_device.h"
|
||||
|
||||
__attribute__((weak)) bool module_post_init_kb(void) {
|
||||
return module_post_init_user();
|
||||
|
|
@ -29,6 +25,7 @@ __attribute__((weak)) bool display_module_housekeeping_task_user(bool second_dis
|
|||
return true;
|
||||
}
|
||||
|
||||
module_t module_master;
|
||||
module_t module;
|
||||
#ifdef HLC_NONE
|
||||
module_t module = hlc_none;
|
||||
|
|
@ -49,6 +46,9 @@ bool backlight_off = false;
|
|||
void backlight_wakeup(void) {
|
||||
backlight_off = false;
|
||||
backlight_enable();
|
||||
if (get_backlight_level() == 0) {
|
||||
backlight_level(BACKLIGHT_LEVELS);
|
||||
}
|
||||
}
|
||||
|
||||
// Timeout handling
|
||||
|
|
@ -79,6 +79,8 @@ void housekeeping_task_kb(void) {
|
|||
static bool synced = 0;
|
||||
if(is_transport_connected() && synced == 0) {
|
||||
transaction_rpc_send(MODULE_SYNC, sizeof(module), &module); // Sync to slave
|
||||
// Good moment to make sure the backlight wakes up after boot for both halves
|
||||
backlight_wakeup();
|
||||
synced = 1;
|
||||
}
|
||||
display_module_housekeeping_task_kb(false); // Is master so can never be the second display
|
||||
|
|
@ -90,7 +92,7 @@ void housekeeping_task_kb(void) {
|
|||
display_module_housekeeping_task_kb(false); // Otherwise be the main display
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Backlight feature
|
||||
if (backlight_off && last_input_activity_elapsed() <= HLC_BACKLIGHT_TIMEOUT) {
|
||||
backlight_wakeup();
|
||||
|
|
@ -194,4 +196,4 @@ const matrix_row_t matrix_mask[] = {
|
|||
0b0011111,
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@ typedef enum module {
|
|||
hlc_tft_display
|
||||
} module_t;
|
||||
|
||||
module_t module_master;
|
||||
extern module_t module_master;
|
||||
|
||||
bool module_post_init_kb(void);
|
||||
bool module_housekeeping_task_kb(void);
|
||||
bool display_module_housekeeping_task_kb(bool second_display);
|
||||
bool module_post_init_user(void);
|
||||
bool module_housekeeping_task_user(void);
|
||||
bool display_module_housekeeping_task_user(bool second_display);
|
||||
bool display_module_housekeeping_task_user(bool second_display);
|
||||
|
|
|
|||
|
|
@ -15,4 +15,4 @@
|
|||
#define POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
|
||||
#define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE
|
||||
#define CIRQUE_PINNACLE_TAP_ENABLE
|
||||
#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE
|
||||
#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE
|
||||
|
|
|
|||
|
|
@ -1,7 +1,3 @@
|
|||
CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||
|
||||
SPI_DRIVER_REQUIRED = yes
|
||||
POINTING_DEVICE_ENABLE = yes
|
||||
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
|
||||
|
||||
CONFIG_H += $(CURRENT_DIR)/config.h
|
||||
CONFIG_H += $(CURRENT_DIR)/config.h
|
||||
|
|
|
|||
|
|
@ -9,4 +9,4 @@
|
|||
|
||||
#define HLC_ENCODER_BUTTON GP16
|
||||
#define HLC_ENCODER_A GP27
|
||||
#define HLC_ENCODER_B GP26
|
||||
#define HLC_ENCODER_B GP26
|
||||
|
|
|
|||
|
|
@ -1,11 +1,7 @@
|
|||
// Copyright 2024 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "util.h"
|
||||
#include "split_util.h"
|
||||
#include "matrix.h"
|
||||
#include "debounce.h"
|
||||
#include "atomic_util.h"
|
||||
|
||||
#ifdef SPLIT_KEYBOARD
|
||||
|
|
@ -128,7 +124,7 @@ void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
|
|||
// Populate the matrix row with the state of the col pin
|
||||
current_row_value |= pin_state ? 0 : row_shifter;
|
||||
}
|
||||
}
|
||||
}
|
||||
// ↑↑↑ THIS HAS BEEN ADDED/CHANGED
|
||||
|
||||
// Unselect row
|
||||
|
|
@ -137,4 +133,4 @@ void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
|
|||
|
||||
// Update the matrix
|
||||
current_matrix[current_row] = current_row_value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||
|
||||
SRC += $(CURRENT_DIR)/hlc_encoder.c
|
||||
CONFIG_H += $(CURRENT_DIR)/config.h
|
||||
CONFIG_H += $(CURRENT_DIR)/config.h
|
||||
|
|
|
|||
|
|
@ -29,9 +29,6 @@
|
|||
|
||||
// Backlight configuration
|
||||
#define BACKLIGHT_PIN GP27
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD5
|
||||
#define BACKLIGHT_LEVELS 10
|
||||
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B
|
||||
|
||||
// Timeout configuration
|
||||
#define QUANTUM_PAINTER_DISPLAY_TIMEOUT HLC_BACKLIGHT_TIMEOUT
|
||||
#define QUANTUM_PAINTER_DISPLAY_TIMEOUT HLC_BACKLIGHT_TIMEOUT
|
||||
|
|
|
|||
|
|
@ -1,17 +1,10 @@
|
|||
// Copyright 2024 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include "halcyon.h"
|
||||
#include "hlc_tft_display.h"
|
||||
#include "config.h"
|
||||
|
||||
#include "qp.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_surface.h"
|
||||
#include "qp_st77xx_opcodes.h"
|
||||
#include "split_util.h"
|
||||
#include <time.h>
|
||||
|
||||
// Fonts mono2
|
||||
|
|
@ -44,6 +37,9 @@ static uint16_t lcd_surface_fb[135*240];
|
|||
|
||||
int color_value = 0;
|
||||
|
||||
painter_device_t lcd;
|
||||
painter_device_t lcd_surface;
|
||||
|
||||
led_t last_led_usb_state = {0};
|
||||
layer_state_t last_layer_state = {0};
|
||||
|
||||
|
|
@ -88,7 +84,7 @@ void draw_grid() {
|
|||
// Draw the filled cell inside the outline if it's alive
|
||||
if (grid[y][x]) {
|
||||
switch (color_value) {
|
||||
case 0:
|
||||
case 0:
|
||||
qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_0, true);
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -100,7 +96,7 @@ void draw_grid() {
|
|||
case 3:
|
||||
qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_3, true);
|
||||
break;
|
||||
case 4:
|
||||
case 4:
|
||||
qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_4, true);
|
||||
break;
|
||||
case 5:
|
||||
|
|
@ -195,10 +191,10 @@ void update_display(void) {
|
|||
last_led_usb_state = led_usb_state;
|
||||
first_run_led = true;
|
||||
}
|
||||
|
||||
|
||||
if(last_layer_state != layer_state || first_run_layer == false) {
|
||||
switch (get_highest_layer(layer_state|default_layer_state)) {
|
||||
case 0:
|
||||
case 0:
|
||||
layer_number = qp_load_image_mem(gfx_0);
|
||||
qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_0, HSV_BLACK);
|
||||
break;
|
||||
|
|
@ -214,7 +210,7 @@ void update_display(void) {
|
|||
layer_number = qp_load_image_mem(gfx_3);
|
||||
qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_3, HSV_BLACK);
|
||||
break;
|
||||
case 4:
|
||||
case 4:
|
||||
layer_number = qp_load_image_mem(gfx_4);
|
||||
qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_4, HSV_BLACK);
|
||||
break;
|
||||
|
|
@ -241,7 +237,7 @@ void update_display(void) {
|
|||
}
|
||||
|
||||
// Quantum function
|
||||
void suspend_power_down_kb(void) {
|
||||
void suspend_power_down_kb(void) {
|
||||
qp_power(lcd, false);
|
||||
suspend_power_down_user();
|
||||
}
|
||||
|
|
@ -280,7 +276,7 @@ bool module_post_init_kb(void) {
|
|||
}
|
||||
|
||||
// Called from halcyon.c
|
||||
bool display_module_housekeeping_task_kb(bool second_display) {
|
||||
bool display_module_housekeeping_task_kb(bool second_display) {
|
||||
if(!display_module_housekeeping_task_user(second_display)) { return false; }
|
||||
|
||||
if(second_display) {
|
||||
|
|
@ -295,7 +291,7 @@ bool display_module_housekeeping_task_kb(bool second_display) {
|
|||
second_display_set = true;
|
||||
}
|
||||
|
||||
if (timer_elapsed32(last_draw) >= 100) { // Throttle to 10 fps
|
||||
if (timer_elapsed32(last_draw) >= 100) { // Throttle to 10 fps
|
||||
draw_grid();
|
||||
update_grid();
|
||||
|
||||
|
|
@ -318,4 +314,4 @@ bool display_module_housekeeping_task_kb(bool second_display) {
|
|||
qp_surface_draw(lcd_surface, lcd, 0, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
// #define HSV_LAYER_8 213, 56, 255
|
||||
#define HSV_LAYER_UNDEF 0, 255, 255
|
||||
|
||||
painter_device_t lcd;
|
||||
painter_device_t lcd_surface;
|
||||
extern painter_device_t lcd;
|
||||
extern painter_device_t lcd_surface;
|
||||
|
||||
void draw_grid(void);
|
||||
void update_grid(void);
|
||||
|
|
@ -35,4 +35,4 @@ void add_cell_cluster(void);
|
|||
uint8_t get_random_color_index(void);
|
||||
void update_display(void);
|
||||
void backlight_wakeup(void);
|
||||
void backlight_suspend(void);
|
||||
void backlight_suspend(void);
|
||||
|
|
|
|||
|
|
@ -1,15 +1,9 @@
|
|||
CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||
|
||||
QUANTUM_PAINTER_ENABLE = yes
|
||||
QUANTUM_PAINTER_DRIVERS += st7789_spi surface
|
||||
BACKLIGHT_ENABLE = yes
|
||||
BACKLIGHT_DRIVER = pwm
|
||||
|
||||
SRC += $(CURRENT_DIR)/hlc_tft_display.c
|
||||
SRC += $(CURRENT_DIR)/hlc_tft_display.c
|
||||
CONFIG_H += $(CURRENT_DIR)/config.h
|
||||
|
||||
# Fonts
|
||||
SRC += $(CURRENT_DIR)/graphics/fonts/Retron2000-27.qff.c $(CURRENT_DIR)/graphics/fonts/Retron2000-underline-27.qff.c
|
||||
# Numbers in image format
|
||||
SRC += $(CURRENT_DIR)/graphics/numbers/0.qgf.c $(CURRENT_DIR)/graphics/numbers/1.qgf.c $(CURRENT_DIR)/graphics/numbers/2.qgf.c $(CURRENT_DIR)/graphics/numbers/3.qgf.c $(CURRENT_DIR)/graphics/numbers/4.qgf.c $(CURRENT_DIR)/graphics/numbers/5.qgf.c $(CURRENT_DIR)/graphics/numbers/6.qgf.c $(CURRENT_DIR)/graphics/numbers/7.qgf.c $(CURRENT_DIR)/graphics/numbers/8.qgf.c $(CURRENT_DIR)/graphics/numbers/9.qgf.c $(CURRENT_DIR)/graphics/numbers/undef.qgf.c
|
||||
|
||||
CONFIG_H += $(CURRENT_DIR)/config.h
|
||||
|
|
@ -4,21 +4,16 @@ SRC += halcyon.c
|
|||
|
||||
LTO_ENABLE ?= yes
|
||||
|
||||
ifndef HLC_CIRQUE_TRACKPAD #add any other pointing devices here
|
||||
# Needed otherwise pointing devices will not work
|
||||
POINTING_DEVICE_ENABLE = yes
|
||||
# cirque defined here as otherwise sensitivity on slave is way too high
|
||||
# may need to be changed when we start supporting other pointing devices
|
||||
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
|
||||
endif
|
||||
# May need to be changed when adding more pointing devices
|
||||
POINTING_DEVICE_ENABLE = yes
|
||||
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
|
||||
|
||||
ifndef HLC_TFT_DISPLAY #add any other displays here
|
||||
# Needed otherwise displays will not work
|
||||
QUANTUM_PAINTER_ENABLE = yes
|
||||
QUANTUM_PAINTER_DRIVERS += st7789_spi
|
||||
BACKLIGHT_ENABLE = yes
|
||||
BACKLIGHT_DRIVER = pwm
|
||||
endif
|
||||
# May need to be changed when adding more displays
|
||||
QUANTUM_PAINTER_ENABLE = yes
|
||||
QUANTUM_PAINTER_DRIVERS += st7789_spi surface
|
||||
|
||||
BACKLIGHT_ENABLE = yes
|
||||
BACKLIGHT_DRIVER = pwm
|
||||
|
||||
ifdef HLC_ENCODER
|
||||
include $(CURRENT_DIR)/hlc_encoder/rules.mk
|
||||
|
|
@ -36,4 +31,4 @@ HLC_OPTIONS := $(HLC_NONE) $(HLC_CIRQUE_TRACKPAD) $(HLC_ENCODER) $(HLC_TFT_DISPL
|
|||
|
||||
ifeq ($(filter 1, $(HLC_OPTIONS)), )
|
||||
$(error Wrong or no module specified. Please specify one of the following: HLC_NONE, HLC_CIRQUE_TRACKPAD, HLC_ENCODER or HLC_TFT_DISPLAY.)
|
||||
endif
|
||||
endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue