aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/config_options.md6
-rw-r--r--docs/feature_split_keyboard.md12
-rw-r--r--quantum/split_common/transaction_id_define.h8
-rw-r--r--quantum/split_common/transactions.c108
-rw-r--r--quantum/split_common/transport.h10
5 files changed, 123 insertions, 21 deletions
diff --git a/docs/config_options.md b/docs/config_options.md
index 78c1f70fd..94f99e74c 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -343,6 +343,12 @@ There are a few different ways to set handedness for split keyboards (listed in
343* `#define SPLIT_WPM_ENABLE` 343* `#define SPLIT_WPM_ENABLE`
344 * Ensures the current WPM is available on the slave when using the QMK-provided split transport. 344 * Ensures the current WPM is available on the slave when using the QMK-provided split transport.
345 345
346* `#define SPLIT_OLED_ENABLE`
347 * Syncs the on/off state of the OLED between the halves.
348
349* `#define SPLIT_ST7565_ENABLE`
350 * Syncs the on/off state of the ST7565 screen between the halves.
351
346* `#define SPLIT_TRANSACTION_IDS_KB .....` 352* `#define SPLIT_TRANSACTION_IDS_KB .....`
347* `#define SPLIT_TRANSACTION_IDS_USER .....` 353* `#define SPLIT_TRANSACTION_IDS_USER .....`
348 * Allows for custom data sync with the slave when using the QMK-provided split transport. See [custom data sync between sides](feature_split_keyboard.md#custom-data-sync) for more information. 354 * Allows for custom data sync with the slave when using the QMK-provided split transport. See [custom data sync between sides](feature_split_keyboard.md#custom-data-sync) for more information.
diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md
index 428d581ca..a84d38460 100644
--- a/docs/feature_split_keyboard.md
+++ b/docs/feature_split_keyboard.md
@@ -233,6 +233,18 @@ This enables transmitting modifier state (normal, weak and oneshot) to the non p
233 233
234This enables transmitting the current WPM to the slave side of the split keyboard. The purpose of this feature is to support cosmetic use of WPM (e.g. displaying the current value on an OLED screen). This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled. 234This enables transmitting the current WPM to the slave side of the split keyboard. The purpose of this feature is to support cosmetic use of WPM (e.g. displaying the current value on an OLED screen). This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
235 235
236```c
237#define SPLIT_OLED_ENABLE
238```
239
240This enables transmitting the current OLED on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
241
242```c
243#define SPLIT_ST7565_ENABLE
244```
245
246This enables transmitting the current ST7565 on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
247
236### Custom data sync between sides :id=custom-data-sync 248### Custom data sync between sides :id=custom-data-sync
237 249
238QMK's split transport allows for arbitrary data transactions at both the keyboard and user levels. This is modelled on a remote procedure call, with the master invoking a function on the slave side, with the ability to send data from master to slave, process it slave side, and send data back from slave to master. 250QMK's split transport allows for arbitrary data transactions at both the keyboard and user levels. This is modelled on a remote procedure call, with the master invoking a function on the slave side, with the ability to send data from master to slave, process it slave side, and send data back from slave to master.
diff --git a/quantum/split_common/transaction_id_define.h b/quantum/split_common/transaction_id_define.h
index 464c73478..3b78402d4 100644
--- a/quantum/split_common/transaction_id_define.h
+++ b/quantum/split_common/transaction_id_define.h
@@ -70,6 +70,14 @@ enum serial_transaction_id {
70 PUT_WPM, 70 PUT_WPM,
71#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) 71#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)
72 72
73#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
74 PUT_OLED,
75#endif // defined(WPM_ENABLE) && defined(SPLIT_OLED_ENABLE)
76
77#if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
78 PUT_ST7565,
79#endif // defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
80
73#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) 81#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
74 PUT_RPC_INFO, 82 PUT_RPC_INFO,
75 PUT_RPC_REQ_DATA, 83 PUT_RPC_REQ_DATA,
diff --git a/quantum/split_common/transactions.c b/quantum/split_common/transactions.c
index abad626e0..de42882df 100644
--- a/quantum/split_common/transactions.c
+++ b/quantum/split_common/transactions.c
@@ -41,8 +41,8 @@
41 { &dummy, 0, 0, sizeof_member(split_shared_memory_t, member), offsetof(split_shared_memory_t, member), cb } 41 { &dummy, 0, 0, sizeof_member(split_shared_memory_t, member), offsetof(split_shared_memory_t, member), cb }
42#define trans_target2initiator_initializer(member) trans_target2initiator_initializer_cb(member, NULL) 42#define trans_target2initiator_initializer(member) trans_target2initiator_initializer_cb(member, NULL)
43 43
44#define transport_write(id, data, length) transport_execute_transaction(id, data, length, NULL, 0) 44#define transport_write(id, data, length) transport_execute_transaction(id, data, length, NULL, 0)
45#define transport_read(id, data, length) transport_execute_transaction(id, NULL, 0, data, length) 45#define transport_read(id, data, length) transport_execute_transaction(id, NULL, 0, data, length)
46 46
47#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) 47#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
48// Forward-declare the RPC callback handlers 48// Forward-declare the RPC callback handlers
@@ -160,8 +160,8 @@ static void master_matrix_handlers_slave(matrix_row_t master_matrix[], matrix_ro
160 memcpy(master_matrix, split_shmem->mmatrix.matrix, sizeof(split_shmem->mmatrix.matrix)); 160 memcpy(master_matrix, split_shmem->mmatrix.matrix, sizeof(split_shmem->mmatrix.matrix));
161} 161}
162 162
163# define TRANSACTIONS_MASTER_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(master_matrix_handlers) 163# define TRANSACTIONS_MASTER_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(master_matrix_handlers)
164# define TRANSACTIONS_MASTER_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(master_matrix_handlers) 164# define TRANSACTIONS_MASTER_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(master_matrix_handlers)
165# define TRANSACTIONS_MASTER_MATRIX_REGISTRATIONS [PUT_MASTER_MATRIX] = trans_initiator2target_initializer(mmatrix.matrix), 165# define TRANSACTIONS_MASTER_MATRIX_REGISTRATIONS [PUT_MASTER_MATRIX] = trans_initiator2target_initializer(mmatrix.matrix),
166 166
167#else // SPLIT_TRANSPORT_MIRROR 167#else // SPLIT_TRANSPORT_MIRROR
@@ -238,8 +238,8 @@ static void sync_timer_handlers_slave(matrix_row_t master_matrix[], matrix_row_t
238 } 238 }
239} 239}
240 240
241# define TRANSACTIONS_SYNC_TIMER_MASTER() TRANSACTION_HANDLER_MASTER(sync_timer_handlers) 241# define TRANSACTIONS_SYNC_TIMER_MASTER() TRANSACTION_HANDLER_MASTER(sync_timer_handlers)
242# define TRANSACTIONS_SYNC_TIMER_SLAVE() TRANSACTION_HANDLER_SLAVE(sync_timer_handlers) 242# define TRANSACTIONS_SYNC_TIMER_SLAVE() TRANSACTION_HANDLER_SLAVE(sync_timer_handlers)
243# define TRANSACTIONS_SYNC_TIMER_REGISTRATIONS [PUT_SYNC_TIMER] = trans_initiator2target_initializer(sync_timer), 243# define TRANSACTIONS_SYNC_TIMER_REGISTRATIONS [PUT_SYNC_TIMER] = trans_initiator2target_initializer(sync_timer),
244 244
245#else // DISABLE_SYNC_TIMER 245#else // DISABLE_SYNC_TIMER
@@ -303,8 +303,8 @@ static void led_state_handlers_slave(matrix_row_t master_matrix[], matrix_row_t
303 set_split_host_keyboard_leds(split_shmem->led_state); 303 set_split_host_keyboard_leds(split_shmem->led_state);
304} 304}
305 305
306# define TRANSACTIONS_LED_STATE_MASTER() TRANSACTION_HANDLER_MASTER(led_state_handlers) 306# define TRANSACTIONS_LED_STATE_MASTER() TRANSACTION_HANDLER_MASTER(led_state_handlers)
307# define TRANSACTIONS_LED_STATE_SLAVE() TRANSACTION_HANDLER_SLAVE(led_state_handlers) 307# define TRANSACTIONS_LED_STATE_SLAVE() TRANSACTION_HANDLER_SLAVE(led_state_handlers)
308# define TRANSACTIONS_LED_STATE_REGISTRATIONS [PUT_LED_STATE] = trans_initiator2target_initializer(led_state), 308# define TRANSACTIONS_LED_STATE_REGISTRATIONS [PUT_LED_STATE] = trans_initiator2target_initializer(led_state),
309 309
310#else // SPLIT_LED_STATE_ENABLE 310#else // SPLIT_LED_STATE_ENABLE
@@ -360,8 +360,8 @@ static void mods_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave
360# endif 360# endif
361} 361}
362 362
363# define TRANSACTIONS_MODS_MASTER() TRANSACTION_HANDLER_MASTER(mods_handlers) 363# define TRANSACTIONS_MODS_MASTER() TRANSACTION_HANDLER_MASTER(mods_handlers)
364# define TRANSACTIONS_MODS_SLAVE() TRANSACTION_HANDLER_SLAVE(mods_handlers) 364# define TRANSACTIONS_MODS_SLAVE() TRANSACTION_HANDLER_SLAVE(mods_handlers)
365# define TRANSACTIONS_MODS_REGISTRATIONS [PUT_MODS] = trans_initiator2target_initializer(mods), 365# define TRANSACTIONS_MODS_REGISTRATIONS [PUT_MODS] = trans_initiator2target_initializer(mods),
366 366
367#else // SPLIT_MODS_ENABLE 367#else // SPLIT_MODS_ENABLE
@@ -385,8 +385,8 @@ static bool backlight_handlers_master(matrix_row_t master_matrix[], matrix_row_t
385 385
386static void backlight_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { backlight_set(split_shmem->backlight_level); } 386static void backlight_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { backlight_set(split_shmem->backlight_level); }
387 387
388# define TRANSACTIONS_BACKLIGHT_MASTER() TRANSACTION_HANDLER_MASTER(backlight_handlers) 388# define TRANSACTIONS_BACKLIGHT_MASTER() TRANSACTION_HANDLER_MASTER(backlight_handlers)
389# define TRANSACTIONS_BACKLIGHT_SLAVE() TRANSACTION_HANDLER_SLAVE(backlight_handlers) 389# define TRANSACTIONS_BACKLIGHT_SLAVE() TRANSACTION_HANDLER_SLAVE(backlight_handlers)
390# define TRANSACTIONS_BACKLIGHT_REGISTRATIONS [PUT_BACKLIGHT] = trans_initiator2target_initializer(backlight_level), 390# define TRANSACTIONS_BACKLIGHT_REGISTRATIONS [PUT_BACKLIGHT] = trans_initiator2target_initializer(backlight_level),
391 391
392#else // BACKLIGHT_ENABLE 392#else // BACKLIGHT_ENABLE
@@ -422,8 +422,8 @@ static void rgblight_handlers_slave(matrix_row_t master_matrix[], matrix_row_t s
422 } 422 }
423} 423}
424 424
425# define TRANSACTIONS_RGBLIGHT_MASTER() TRANSACTION_HANDLER_MASTER(rgblight_handlers) 425# define TRANSACTIONS_RGBLIGHT_MASTER() TRANSACTION_HANDLER_MASTER(rgblight_handlers)
426# define TRANSACTIONS_RGBLIGHT_SLAVE() TRANSACTION_HANDLER_SLAVE(rgblight_handlers) 426# define TRANSACTIONS_RGBLIGHT_SLAVE() TRANSACTION_HANDLER_SLAVE(rgblight_handlers)
427# define TRANSACTIONS_RGBLIGHT_REGISTRATIONS [PUT_RGBLIGHT] = trans_initiator2target_initializer(rgblight_sync), 427# define TRANSACTIONS_RGBLIGHT_REGISTRATIONS [PUT_RGBLIGHT] = trans_initiator2target_initializer(rgblight_sync),
428 428
429#else // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) 429#else // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
@@ -452,8 +452,8 @@ static void led_matrix_handlers_slave(matrix_row_t master_matrix[], matrix_row_t
452 led_matrix_set_suspend_state(split_shmem->led_matrix_sync.led_suspend_state); 452 led_matrix_set_suspend_state(split_shmem->led_matrix_sync.led_suspend_state);
453} 453}
454 454
455# define TRANSACTIONS_LED_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(led_matrix_handlers) 455# define TRANSACTIONS_LED_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(led_matrix_handlers)
456# define TRANSACTIONS_LED_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(led_matrix_handlers) 456# define TRANSACTIONS_LED_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(led_matrix_handlers)
457# define TRANSACTIONS_LED_MATRIX_REGISTRATIONS [PUT_LED_MATRIX] = trans_initiator2target_initializer(led_matrix_sync), 457# define TRANSACTIONS_LED_MATRIX_REGISTRATIONS [PUT_LED_MATRIX] = trans_initiator2target_initializer(led_matrix_sync),
458 458
459#else // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) 459#else // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT)
@@ -482,8 +482,8 @@ static void rgb_matrix_handlers_slave(matrix_row_t master_matrix[], matrix_row_t
482 rgb_matrix_set_suspend_state(split_shmem->rgb_matrix_sync.rgb_suspend_state); 482 rgb_matrix_set_suspend_state(split_shmem->rgb_matrix_sync.rgb_suspend_state);
483} 483}
484 484
485# define TRANSACTIONS_RGB_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(rgb_matrix_handlers) 485# define TRANSACTIONS_RGB_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(rgb_matrix_handlers)
486# define TRANSACTIONS_RGB_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(rgb_matrix_handlers) 486# define TRANSACTIONS_RGB_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(rgb_matrix_handlers)
487# define TRANSACTIONS_RGB_MATRIX_REGISTRATIONS [PUT_RGB_MATRIX] = trans_initiator2target_initializer(rgb_matrix_sync), 487# define TRANSACTIONS_RGB_MATRIX_REGISTRATIONS [PUT_RGB_MATRIX] = trans_initiator2target_initializer(rgb_matrix_sync),
488 488
489#else // defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) 489#else // defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT)
@@ -507,8 +507,8 @@ static bool wpm_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave
507 507
508static void wpm_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { set_current_wpm(split_shmem->current_wpm); } 508static void wpm_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { set_current_wpm(split_shmem->current_wpm); }
509 509
510# define TRANSACTIONS_WPM_MASTER() TRANSACTION_HANDLER_MASTER(wpm_handlers) 510# define TRANSACTIONS_WPM_MASTER() TRANSACTION_HANDLER_MASTER(wpm_handlers)
511# define TRANSACTIONS_WPM_SLAVE() TRANSACTION_HANDLER_SLAVE(wpm_handlers) 511# define TRANSACTIONS_WPM_SLAVE() TRANSACTION_HANDLER_SLAVE(wpm_handlers)
512# define TRANSACTIONS_WPM_REGISTRATIONS [PUT_WPM] = trans_initiator2target_initializer(current_wpm), 512# define TRANSACTIONS_WPM_REGISTRATIONS [PUT_WPM] = trans_initiator2target_initializer(current_wpm),
513 513
514#else // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) 514#else // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)
@@ -520,6 +520,68 @@ static void wpm_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_
520#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) 520#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)
521 521
522//////////////////////////////////////////////////// 522////////////////////////////////////////////////////
523// OLED
524
525#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
526
527static bool oled_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
528 static uint32_t last_update = 0;
529 bool current_oled_state = is_oled_on();
530 return send_if_condition(PUT_OLED, &last_update, (current_oled_state != split_shmem->current_oled_state), &current_oled_state, sizeof(current_oled_state));
531}
532
533static void oled_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
534 if (split_shmem->current_oled_state) {
535 oled_on();
536 } else {
537 oled_off();
538 }
539}
540
541# define TRANSACTIONS_OLED_MASTER() TRANSACTION_HANDLER_MASTER(oled_handlers)
542# define TRANSACTIONS_OLED_SLAVE() TRANSACTION_HANDLER_SLAVE(oled_handlers)
543# define TRANSACTIONS_OLED_REGISTRATIONS [PUT_OLED] = trans_initiator2target_initializer(current_oled_state),
544
545#else // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
546
547# define TRANSACTIONS_OLED_MASTER()
548# define TRANSACTIONS_OLED_SLAVE()
549# define TRANSACTIONS_OLED_REGISTRATIONS
550
551#endif // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
552
553////////////////////////////////////////////////////
554// ST7565
555
556#if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
557
558static bool st7565_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
559 static uint32_t last_update = 0;
560 bool current_st7565_state = st7565_is_on();
561 return send_if_condition(PUT_ST7565, &last_update, (current_st7565_state != split_shmem->current_st7565_state), &current_st7565_state, sizeof(current_st7565_state));
562}
563
564static void st7565_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
565 if (split_shmem->current_st7565_state) {
566 st7565_on();
567 } else {
568 st7565_off();
569 }
570}
571
572# define TRANSACTIONS_ST7565_MASTER() TRANSACTION_HANDLER_MASTER(st7565_handlers)
573# define TRANSACTIONS_ST7565_SLAVE() TRANSACTION_HANDLER_SLAVE(st7565_handlers)
574# define TRANSACTIONS_ST7565_REGISTRATIONS [PUT_ST7565] = trans_initiator2target_initializer(current_st7565_state),
575
576#else // defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
577
578# define TRANSACTIONS_ST7565_MASTER()
579# define TRANSACTIONS_ST7565_SLAVE()
580# define TRANSACTIONS_ST7565_REGISTRATIONS
581
582#endif // defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
583
584////////////////////////////////////////////////////
523 585
524uint8_t dummy; 586uint8_t dummy;
525split_transaction_desc_t split_transaction_table[NUM_TOTAL_TRANSACTIONS] = { 587split_transaction_desc_t split_transaction_table[NUM_TOTAL_TRANSACTIONS] = {
@@ -543,6 +605,8 @@ split_transaction_desc_t split_transaction_table[NUM_TOTAL_TRANSACTIONS] = {
543 TRANSACTIONS_LED_MATRIX_REGISTRATIONS 605 TRANSACTIONS_LED_MATRIX_REGISTRATIONS
544 TRANSACTIONS_RGB_MATRIX_REGISTRATIONS 606 TRANSACTIONS_RGB_MATRIX_REGISTRATIONS
545 TRANSACTIONS_WPM_REGISTRATIONS 607 TRANSACTIONS_WPM_REGISTRATIONS
608 TRANSACTIONS_OLED_REGISTRATIONS
609 TRANSACTIONS_ST7565_REGISTRATIONS
546// clang-format on 610// clang-format on
547 611
548#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) 612#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
@@ -567,6 +631,8 @@ bool transactions_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix
567 TRANSACTIONS_LED_MATRIX_MASTER(); 631 TRANSACTIONS_LED_MATRIX_MASTER();
568 TRANSACTIONS_RGB_MATRIX_MASTER(); 632 TRANSACTIONS_RGB_MATRIX_MASTER();
569 TRANSACTIONS_WPM_MASTER(); 633 TRANSACTIONS_WPM_MASTER();
634 TRANSACTIONS_OLED_MASTER();
635 TRANSACTIONS_ST7565_MASTER();
570 return okay; 636 return okay;
571} 637}
572 638
@@ -583,6 +649,8 @@ void transactions_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[
583 TRANSACTIONS_LED_MATRIX_SLAVE(); 649 TRANSACTIONS_LED_MATRIX_SLAVE();
584 TRANSACTIONS_RGB_MATRIX_SLAVE(); 650 TRANSACTIONS_RGB_MATRIX_SLAVE();
585 TRANSACTIONS_WPM_SLAVE(); 651 TRANSACTIONS_WPM_SLAVE();
652 TRANSACTIONS_OLED_SLAVE();
653 TRANSACTIONS_ST7565_SLAVE();
586} 654}
587 655
588#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) 656#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
diff --git a/quantum/split_common/transport.h b/quantum/split_common/transport.h
index 2e07f6b25..1d4f6ed0c 100644
--- a/quantum/split_common/transport.h
+++ b/quantum/split_common/transport.h
@@ -165,6 +165,14 @@ typedef struct _split_shared_memory_t {
165 uint8_t current_wpm; 165 uint8_t current_wpm;
166#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) 166#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)
167 167
168#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
169 uint8_t current_oled_state;
170#endif // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
171
172#if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
173 uint8_t current_st7565_state;
174#endif // ST7565_ENABLE(OLED_ENABLE) && defined(SPLIT_ST7565_ENABLE)
175
168#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) 176#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
169 rpc_sync_info_t rpc_info; 177 rpc_sync_info_t rpc_info;
170 uint8_t rpc_m2s_buffer[RPC_M2S_BUFFER_SIZE]; 178 uint8_t rpc_m2s_buffer[RPC_M2S_BUFFER_SIZE];
@@ -172,4 +180,4 @@ typedef struct _split_shared_memory_t {
172#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) 180#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
173} split_shared_memory_t; 181} split_shared_memory_t;
174 182
175extern split_shared_memory_t *const split_shmem; \ No newline at end of file 183extern split_shared_memory_t *const split_shmem;