# Summary

## Key changes
- Added USB CDC support
- Added simple CDC echo example
- Updated TinyUSB config and descriptors to enable CDC
- Added experimental HID report generation logic
- Added Pico build script and improved SDK import support

## Changed files
- `firmware/.gitignore`
- `firmware/CMakeLists.txt`
- `firmware/build.sh`
- `firmware/pico_sdk_import.cmake`
- `firmware/src/main.cc`
- `firmware/src/recoil.h`
- `firmware/src/remapper.cc`
- `firmware/src/tinyusb_stuff.cc`
- `firmware/src/tusb_config_both/tusb_config.h`
- `firmware/src/tusb_config_device/tusb_config.h`

## Details
### `firmware/build.sh`
- Added build script
- Creates `build` directory, clears contents, runs `cmake ..` and `make remapper -j`

### `firmware/src/main.cc`
- Added `cdc_task()`
- Added CDC callbacks:
  - `tud_cdc_line_state_cb()`
  - `tud_cdc_rx_cb()`
- Calls `cdc_task()` from main loop
- CDC code reads data, echoes it, and sends `count = ...` response

### `firmware/src/recoil.h`
- Added recoil header
- Defined `Recoil_offset_def_t`
- Declared `init_recoil()` and `do_recoil()`

### `firmware/src/remapper.cc`
- Added `next_create_report_time`
- Added experimental HID report generation inside `process_mapping()`
- Builds and queues a test mouse report for outgoing reports

### `firmware/src/tinyusb_stuff.cc`
- Updated USB configuration descriptor to include CDC
- Changed `bNumInterfaces` from `2` to `4`
- Added `TUD_CDC_DESCRIPTOR(...)`

### `firmware/src/tusb_config_both/tusb_config.h`
- Enabled TinyUSB device stack: `CFG_TUD_ENABLED 1`
- Enabled `CFG_TUD_CDC 1`
- Added CDC buffer size macros

### `firmware/src/tusb_config_device/tusb_config.h`
- Enabled `CFG_TUD_CDC 1`
- Added CDC buffer size macros

## Notes
- CDC implementation is basic echo/example code, not full command handling
- HID report generation is experimental and may need further integration/testing