Skip to content

Commit 2f19b18

Browse files
committed
feat(split): wired split over serial TX support (WIP 2024-05-26)
1 parent 2aa03ea commit 2f19b18

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

app/src/split/serial/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Copyright (c) 2023 The ZMK Contributors
22
# SPDX-License-Identifier: MIT
33

4+
if (NOT CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
5+
target_sources(app PRIVATE peripheral.c)
6+
endif()
7+
48
if (CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
59
target_sources(app PRIVATE central.c)
610
endif()

app/src/split/serial/peripheral.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright (c) 2023 The ZMK Contributors
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*/
6+
7+
#include <zephyr/kernel.h>
8+
9+
#include <zmk/split/serial/serial.h>
10+
11+
// TODO TODO TODO
12+
#include <zephyr/logging/log.h>
13+
LOG_MODULE_DECLARE(slicemk);
14+
15+
// TODO TODO TODO these two should be in a header somewhere
16+
17+
// TODO TODO TODO implement central to peripheral data transfer
18+
void serial_handle_rx(uint32_t cmd, uint8_t *data, uint8_t len) {
19+
LOG_HEXDUMP_ERR(data, len, "central to peripheral");
20+
}
21+
22+
void send_position_state_impl(uint8_t *state, int len) {
23+
serial_write_uart(0x73627400, state, len);
24+
}

app/src/split/serial/serial.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ static void serial_callback(const struct device *dev, void *data) {
117117
}
118118
}
119119

120-
void serial_write(struct serial_device *sd, uint32_t cmd, uint8_t *data, uint8_t len) {
120+
static void serial_write(struct serial_device *sd, uint32_t cmd, uint8_t *data, uint8_t len) {
121121
// TODO TODO TODO use buf with size SERIAL_BUF_SIZE. do single
122122
// ring_buf_put() to avoid potential race
123123
uint8_t header[13] = SERIAL_MSG_PREFIX;
@@ -138,6 +138,13 @@ void serial_write(struct serial_device *sd, uint32_t cmd, uint8_t *data, uint8_t
138138
uart_irq_tx_enable(sd->dev);
139139
}
140140

141+
// TODO TODO TODO this should be abstracted a bit differently
142+
#ifdef CONFIG_ZMK_SPLIT_SERIAL_UART
143+
void serial_write_uart(uint32_t cmd, uint8_t *data, uint8_t len) {
144+
serial_write(&serial_devs[0], cmd, data, len);
145+
}
146+
#endif
147+
141148
#ifdef CONFIG_ZMK_SPLIT_SERIAL_UART_POLL
142149

143150
static void serial_tx_work_handler(struct k_work *work) {

0 commit comments

Comments
 (0)