feat: add Set B profiles and low-latency native haptics

Add schema-6 profiles, atomic catalog migration, shortcuts, Shift, configurable Turbo/Burst, macro recording and playback. Promote qualified 300 MHz native DualSense transport to AIO/XInput defaults with bounded bus transactions, credit batching and generation-safe persistent rumble.
This commit is contained in:
Joey Yakimowich-Payne 2026-09-05 21:56:19 -06:00
commit 3c2d9fa723
75 changed files with 9599 additions and 1819 deletions

View file

@ -0,0 +1,37 @@
#pragma once
#include <stdint.h>
/* Subset of the Pico SDK's exposed shared-bus ABI used by this transport. */
#define BTSDIO_FWBUF_SIZE 0x1000
typedef enum {
CYBT_SUCCESS = 0,
CYBT_ERR_BADARG = 0xB1,
CYBT_ERR_TIMEOUT = 0xB3,
CYBT_ERR_HCI_READ_FAILED = 0xB9,
} cybt_result_t;
typedef enum {
H2B_BUF_ADDR_IDX = 0x10,
H2B_BUF_IN_ADDR_IDX,
H2B_BUF_OUT_ADDR_IDX,
B2H_BUF_ADDR_IDX,
B2H_BUF_IN_ADDR_IDX,
B2H_BUF_OUT_ADDR_IDX,
} cybt_addr_idx_t;
typedef struct {
uint32_t host2bt_in_val;
uint32_t host2bt_out_val;
uint32_t bt2host_in_val;
uint32_t bt2host_out_val;
} cybt_fw_membuf_index_t;
cybt_result_t cybt_set_bt_awake(int value);
int cybt_awake(void);
cybt_result_t cybt_get_bt_buf_index(cybt_fw_membuf_index_t *indices);
cybt_result_t cybt_mem_read_idx(cybt_addr_idx_t index, uint32_t offset,
uint8_t *buffer, uint32_t length);
cybt_result_t cybt_reg_write_idx(cybt_addr_idx_t index, uint32_t value);
cybt_result_t cybt_toggle_bt_intr(void);

View file

@ -0,0 +1,10 @@
#pragma once
#include <stdint.h>
typedef struct _cyw43_ll_t {
int unused;
} cyw43_ll_t;
int cyw43_btbus_init(cyw43_ll_t *self);
int cyw43_btbus_read(uint8_t *buffer, uint32_t capacity, uint32_t *size);

View file

@ -0,0 +1,11 @@
#pragma once
#include <stdint.h>
void cyw43_thread_enter(void);
void cyw43_thread_exit(void);
void cyw43_delay_ms(uint32_t milliseconds);
_Noreturn void panic(const char *message, ...);
#define CYW43_THREAD_ENTER cyw43_thread_enter();
#define CYW43_THREAD_EXIT cyw43_thread_exit();

View file

@ -0,0 +1,8 @@
#include "cyw43_btbus.h"
int test_cyw43_btbus_init(cyw43_ll_t *self);
/* Separate translation unit: GNU --wrap only redirects unresolved references. */
int cyw43_btbus_init(cyw43_ll_t *self) {
return test_cyw43_btbus_init(self);
}