Add get transport addr at index

This commit is contained in:
ReFil 2025-11-07 23:41:23 +00:00
parent 8ecb8a6404
commit ebf4391e0f
4 changed files with 26 additions and 2 deletions

View File

@ -47,4 +47,6 @@ int zmk_split_central_get_peripheral_battery_level(uint8_t source, uint8_t *leve
#endif // IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING)
bool zmk_split_transport_get_available(uint32_t addr);
bool zmk_split_transport_get_available(uint32_t addr);
uint32_t zmk_split_get_transport_addr_at_index(uint8_t index);

View File

@ -10,4 +10,6 @@
int zmk_split_peripheral_report_event(const struct zmk_split_transport_peripheral_event *event);
bool zmk_split_transport_get_available(uint32_t addr);
bool zmk_split_transport_get_available(uint32_t addr);
uint32_t zmk_split_get_transport_addr_at_index(uint8_t index);

View File

@ -226,6 +226,16 @@ bool zmk_split_transport_get_available(uint32_t addr) {
return 0;
}
uint32_t zmk_split_get_transport_addr_at_index(uint8_t index) {
struct zmk_split_transport_central *t;
ptrdiff_t count;
STRUCT_SECTION_COUNT(zmk_split_transport_central, &count);
if ((ptrdiff_t)index > count)
return 0;
STRUCT_SECTION_GET(zmk_split_transport_central, index, &t);
return (uint32_t)t;
}
static int central_init(void) {
STRUCT_SECTION_FOREACH(zmk_split_transport_central, t) {
if (!t->api->set_status_callback) {

View File

@ -144,6 +144,16 @@ bool zmk_split_transport_get_available(uint32_t addr) {
return 0;
}
uint32_t zmk_split_get_transport_addr_at_index(uint8_t index) {
struct zmk_split_transport_peripheral *t;
ptrdiff_t count;
STRUCT_SECTION_COUNT(zmk_split_transport_peripheral, &count);
if ((ptrdiff_t)index > count)
return 0;
STRUCT_SECTION_GET(zmk_split_transport_peripheral, index, &t);
return (uint32_t)t;
}
static int peripheral_init(void) {
STRUCT_SECTION_FOREACH(zmk_split_transport_peripheral, t) {
if (!t->api->set_status_callback) {