Skip to content

Commit 92921c3

Browse files
committed
[Keyboard] Add Nuphy Gem80 keyboard
1 parent 1389ecc commit 92921c3

18 files changed

Lines changed: 4416 additions & 0 deletions

File tree

keyboards/nuphy/gem80/ansi/ansi.c

Lines changed: 823 additions & 0 deletions
Large diffs are not rendered by default.

keyboards/nuphy/gem80/ansi/ansi.h

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
// Copyright 2023 Persama (@Persama)
2+
// SPDX-License-Identifier: GPL-2.0-or-later
3+
#pragma once
4+
5+
#include "quantum.h"
6+
7+
8+
#define MAC_PRT G(S(KC_3))
9+
#define MAC_PRTA G(S(KC_4))
10+
#define WIN_PRTA G(S(KC_S))
11+
12+
#define RF_IDLE 0
13+
#define RF_PAIRING 1
14+
#define RF_LINKING 2
15+
#define RF_CONNECT 3
16+
#define RF_DISCONNECT 4
17+
#define RF_SLEEP 5
18+
#define RF_SNIF 6
19+
#define RF_INVAILD 0XFE
20+
#define RF_ERR_STATE 0XFF
21+
22+
#define CMD_POWER_UP 0XF0
23+
#define CMD_SLEEP 0XF1
24+
#define CMD_HAND 0XF2
25+
#define CMD_SNIF 0XF3
26+
#define CMD_24G_SUSPEND 0XF4
27+
#define CMD_IDLE_EXIT 0XFE
28+
29+
#define CMD_RPT_MS 0XE0
30+
#define CMD_RPT_BYTE_KB 0XE1
31+
#define CMD_RPT_BIT_KB 0XE2
32+
#define CMD_RPT_CONSUME 0XE3
33+
#define CMD_RPT_SYS 0XE4
34+
35+
#define CMD_SET_LINK 0XC0
36+
#define CMD_SET_CONFIG 0XC1
37+
#define CMD_GET_CONFIG 0XC2
38+
#define CMD_SET_NAME 0XC3
39+
#define CMD_GET_NAME 0XC4
40+
#define CMD_CLR_DEVICE 0XC5
41+
#define CMD_NEW_ADV 0XC7
42+
#define CMD_RF_STS_SYSC 0XC9
43+
#define CMD_SET_24G_NAME 0XCA
44+
#define CMD_GO_TEST 0XCF
45+
#define CMD_RF_DFU 0XB1
46+
47+
#define CMD_WRITE_DATA 0X80
48+
#define CMD_READ_DATA 0X81
49+
50+
#define LINK_RF_24 0
51+
#define LINK_BT_1 1
52+
#define LINK_BT_2 2
53+
#define LINK_BT_3 3
54+
#define LINK_USB 4
55+
56+
#define UART_HEAD 0x5A
57+
#define FUNC_VALID_LEN 32
58+
#define UART_MAX_LEN 64
59+
60+
#define SYS_SW_WIN 0xa1
61+
#define SYS_SW_MAC 0xa2
62+
63+
#define RF_LINK_SHOW_TIME 300
64+
65+
#define HOST_USB_TYPE 0
66+
#define HOST_BLE_TYPE 1
67+
#define HOST_RF_TYPE 2
68+
69+
#define LINK_TIMEOUT (100 * 120)
70+
#define SLEEP_TIME_DELAY (100 * 360)
71+
#define POWER_DOWN_DELAY (24)
72+
73+
#define RF_LONG_PRESS_DELAY 30
74+
#define DEV_RESET_PRESS_DELAY 30
75+
76+
enum custom_keycodes {
77+
RF_DFU = QK_KB_0,
78+
LNK_USB,
79+
LNK_RF,
80+
LNK_BLE1,
81+
LNK_BLE2,
82+
LNK_BLE3,
83+
84+
MAC_TASK,
85+
MAC_SEARCH,
86+
MAC_VOICE,
87+
MAC_CONSOLE,
88+
MAC_DND,
89+
90+
WIN_LOCK,
91+
DEV_RESET,
92+
SLEEP_MODE,
93+
BAT_SHOW,
94+
RGB_TEST,
95+
SHIFT_GRV,
96+
97+
SIDE_VAI,
98+
SIDE_VAD,
99+
SIDE_MOD,
100+
SIDE_HUI,
101+
SIDE_SPI,
102+
SIDE_SPD,
103+
104+
LOGO_VAI,
105+
LOGO_VAD,
106+
LOGO_MOD,
107+
LOGO_HUI,
108+
LOGO_SPI,
109+
LOGO_SPD
110+
};
111+
112+
113+
typedef enum {
114+
RX_Idle,
115+
RX_Receiving,
116+
RX_Done,
117+
RX_Fail,
118+
RX_OV_ERR,
119+
RX_SUM_ERR,
120+
RX_CMD_ERR,
121+
RX_DATA_ERR,
122+
RX_DATA_OV,
123+
RX_FORMAT_ERR,
124+
125+
TX_OK = 0XE0,
126+
TX_DONE,
127+
TX_BUSY,
128+
TX_TIMEOUT,
129+
TX_DATA_ERR,
130+
131+
} TYPE_RX_STATE;
132+
133+
typedef struct
134+
{
135+
uint8_t RXDState;
136+
uint8_t RXDLen;
137+
uint8_t RXDOverTime;
138+
uint8_t TXDLenBack;
139+
uint8_t TXDOffset;
140+
uint8_t TXDBuf[UART_MAX_LEN];
141+
uint8_t RXDBuf[UART_MAX_LEN];
142+
} USART_MGR_STRUCT;
143+
144+
typedef struct
145+
{
146+
uint8_t link_mode;
147+
uint8_t rf_channel;
148+
uint8_t ble_channel;
149+
uint8_t rf_state;
150+
uint8_t rf_charge;
151+
uint8_t rf_led;
152+
uint8_t rf_baterry;
153+
uint8_t sys_sw_state;
154+
} DEV_INFO_STRUCT;
155+
156+
157+
typedef struct
158+
{
159+
uint8_t bit0: 1;
160+
uint8_t bit1: 1;
161+
uint8_t bit2: 1;
162+
uint8_t bit3: 1;
163+
uint8_t bit4: 1;
164+
uint8_t bit5: 1;
165+
uint8_t bit6: 1;
166+
uint8_t bit7: 1;
167+
}m_8bit;
168+
169+
170+
typedef struct
171+
{
172+
uint8_t default_brightness_flag;
173+
uint8_t ee_side_mode;
174+
uint8_t ee_side_light;
175+
uint8_t ee_side_speed;
176+
uint8_t ee_side_rgb;
177+
uint8_t ee_side_colour;
178+
uint8_t ee_logo_mode;
179+
uint8_t ee_logo_light;
180+
uint8_t ee_logo_speed;
181+
uint8_t ee_logo_rgb;
182+
uint8_t ee_logo_colour;
183+
m_8bit ee_dev_config;
184+
} user_config_t;
185+
186+
187+
188+
extern user_config_t user_config;
189+
#define f_dev_sleep_enable user_config.ee_dev_config.bit0
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
2+
#pragma once
3+
4+
#define USB_MODE 0
5+
#define THREE_MODE 1
6+
#define WORK_MODE THREE_MODE
7+
#define TAP_CODE_DELAY 8
8+
#define DYNAMIC_KEYMAP_MACRO_DELAY 8
9+
#define EECONFIG_USER_DATA_SIZE 12
10+
#define DEV_MODE_PIN C0
11+
#define SYS_MODE_PIN C1
12+
#define DC_BOOST_PIN C2
13+
#define NRF_RESET_PIN B4
14+
#define NRF_BOOT_PIN B5
15+
#define NRF_WAKEUP_PIN B8
16+
#define WS2812_PWM_DRIVER PWMD3
17+
#define WS2812_PWM_CHANNEL 2
18+
#define WS2812_PWM_PAL_MODE 1
19+
#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
20+
#define WS2812_DMA_CHANNEL 3
21+
#define WS2812_PWM_TARGET_PERIOD 800000
22+
#define DRIVER_RGB_DI_PIN A7
23+
#define DRIVER_LED_CS_PIN C6
24+
#define DRIVER_SIDE_PIN C8
25+
#define DRIVER_SIDE_CS_PIN C9
26+
#define SERIAL_DRIVER SD1
27+
#define SD1_TX_PIN B6
28+
#define SD1_TX_PAL_MODE 0
29+
#define SD1_RX_PIN B7
30+
#define SD1_RX_PAL_MODE 0
31+
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CUSTOM_position_mode
32+
#define RGB_DEFAULT_COLOUR 168
33+
#define RGB_DISABLE_WHEN_USB_SUSPENDED
34+
35+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#pragma once
2+
3+
#include_next <halconf.h>
4+
5+
#undef HAL_USE_PWM
6+
#define HAL_USE_PWM TRUE
7+
8+
#undef HAL_USE_SERIAL
9+
#define HAL_USE_SERIAL TRUE

0 commit comments

Comments
 (0)