[Cornia] Move I2C stuff to keyboard level

This commit is contained in:
Vaarai 2024-10-02 21:12:29 +02:00
parent 018021058a
commit 71b58e22ee
13 changed files with 131 additions and 80 deletions

View File

@ -14,10 +14,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include QMK_KEYBOARD_H
#include "./keymap.h"
#include "./cornia.h"
// 'Cornia', 32x32px
#define OLED_LOGO_CORNIA {\
@ -31,6 +30,9 @@
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x00 \
}
void render_logo(void);
void render_layer_status(void);
void render_boot(bool bootloader);
void cornia_render_logo(void) {
#ifdef OLED_ENABLE
static const char PROGMEM logo[] = OLED_LOGO_CORNIA;
oled_write_raw_P(logo, sizeof(logo));
#endif
}

21
keyboards/cornia/cornia.h Normal file
View File

@ -0,0 +1,21 @@
/* Copyright 2024 Vaarai
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include QMK_KEYBOARD_H
void cornia_render_logo(void);

View File

@ -17,16 +17,37 @@
#include QMK_KEYBOARD_H
#include "./keymap.h"
#include "./oled_routines.h"
#include "./cornia.h"
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_270;
}
bool oled_task_user(void) {
oled_set_cursor(0, 0);
render_logo();
/* Print cornia logo */
cornia_render_logo();
/* Print layer status */
oled_set_cursor(0, 7);
render_layer_status();
switch (get_highest_layer(layer_state)) {
case _ALPHA:
oled_write_ln("ALPHA", 0);
break;
case _NAV:
oled_write_ln("NAV", 0);
break;
case _NUM:
oled_write_ln("NUM", 0);
break;
case _ADJUST:
oled_write_ln("ADJUS", 0);
break;
case _G0:
oled_write_ln("GAME0", 0);
break;
case _G1:
oled_write_ln("GAME1", 0);
break;
}
return false;
}

View File

@ -17,9 +17,15 @@
#include QMK_KEYBOARD_H
#include "./keymap.h"
#include "./oled_routines.h"
bool shutdown_user(bool jump_to_bootloader) {
render_boot(jump_to_bootloader);
oled_clear();
oled_set_cursor(0, 2);
if (jump_to_bootloader) {
oled_write_P(PSTR("FLASH"), false);
} else {
oled_write_P(PSTR("RESET"), false);
}
oled_render_dirty(true);
return false;
}

View File

@ -16,11 +16,6 @@
#pragma once
/* I²C config */
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP10
#define I2C1_SCL_PIN GP11
/* Split */
#define SPLIT_ACTIVITY_ENABLE
#define SPLIT_LAYER_STATE_ENABLE

View File

@ -1,59 +0,0 @@
/* Copyright 2024 Vaarai
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "./keymap.h"
#include "./oled_routines.h"
void render_logo(void) {
static const char PROGMEM logo[] = OLED_LOGO_CORNIA;
oled_write_raw_P(logo, sizeof(logo));
}
void render_layer_status(void) {
switch (get_highest_layer(layer_state)) {
case _ALPHA:
oled_write_ln("ALPHA", 0);
break;
case _NAV:
oled_write_ln("NAV", 0);
break;
case _NUM:
oled_write_ln("NUM", 0);
break;
case _ADJUST:
oled_write_ln("ADJUS", 0);
break;
case _G0:
oled_write_ln("GAME0", 0);
break;
case _G1:
oled_write_ln("GAME1", 0);
break;
}
}
void render_boot(bool bootloader) {
oled_clear();
oled_set_cursor(0, 2);
if (bootloader) {
oled_write_P(PSTR("FLASH"), false);
} else {
oled_write_P(PSTR("RESET"), false);
}
oled_render_dirty(true);
}

View File

@ -13,7 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
SRC += oled_routines.c
SRC += callback_oled.c
SRC += callback_pointing_device.c
SRC += callback_record.c
@ -32,6 +31,3 @@ OLED_TRANSPORT = i2c
# Cirque Trackpad I²C configuration
POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
# Add I²C HAL dependencies
OPT_DEFS += -DHAL_USE_I2C=TRUE

View File

@ -21,5 +21,10 @@
#define MASTER_RIGHT
// #define EE_HANDS
/* I²C config */
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP10
#define I2C1_SCL_PIN GP11
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.

View File

@ -0,0 +1,17 @@
# Copyright 2024 Vaarai
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Add I²C HAL dependencies
OPT_DEFS += -DHAL_USE_I2C=TRUE

View File

@ -16,5 +16,10 @@
#pragma once
/* I²C config */
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP10
#define I2C1_SCL_PIN GP11
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.

View File

@ -0,0 +1,25 @@
/* Copyright 2024 Vaarai
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef RP_I2C_USE_I2C0
#define RP_I2C_USE_I2C0 FALSE
#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C1 TRUE

View File

@ -0,0 +1,17 @@
# Copyright 2024 Vaarai
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Add I²C HAL dependencies
OPT_DEFS += -DHAL_USE_I2C=TRUE