42 Commits

Author SHA1 Message Date
908e7a0a4d feat: 添加Atguigu键盘板支持和IP5306电源管理驱动
添加了两个新的键盘板支持:
- atguigu_keyboard_dongle (基于nrf52833)
- atguigu_mini_keyboard (基于nrf52840)

同时添加了完整的IP5306电源管理芯片驱动,包括:
- 支持充电状态检测
- 提供软硬件保活脉冲功能
- 硬件后端利用nRF的RTC+GPIOTE+GPPI实现低功耗保活
- 软件后端作为备用方案
2026-04-10 08:18:46 +08:00
2356cb4fe8 refactor(display): 重构显示模块UI逻辑分离到独立组件
- 将UI相关的代码从display_module.c中提取到新的display_ui.c文件
- 创建display_ui.h头文件定义UI模型和接口函数
- 在CMakeLists.txt中添加UI目录包含路径和源文件引用
- 修改display_module.c中的UI相关数据结构和函数调用
- 将UI创建和刷新逻辑替换为对新UI模块的调用
- 优化了时间日期文本的更新机制,提高性能
- 移除了原有的内部UI实现代码,保持模块职责清晰
2026-04-02 17:05:16 +08:00
b5433f0403 feat(power): 更新电源管理模块从IP5305到IP5306
- 在CMakeLists.txt中更新ZEPHYR_EXTRA_MODULES路径从ip5305到ip5306
- 在文档中更新未纳入索引的项目项,将IP5305相关引用替换为IP5306
- 在prj.conf中将CONFIG_IP5305配置更改为CONFIG_IP5306
- 在battery_module.c中更新头文件包含、设备获取和函数调用从ip5305到ip5306
- 更新日志输出中的设备名称以匹配新的IP5306芯片
2026-04-01 17:08:04 +08:00
881b36274c feat(qdec_module): 添加电源管理功能支持
- 引入pm/device.h和sys/atomic.h头文件以支持电源管理和原子操作
- 添加active原子变量来跟踪模块激活状态
- 实现qdec_module_suspend()和qdec_module_resume()函数处理挂起和唤醒
- 集成power_event事件订阅,在电源下电时挂起模块,在唤醒时恢复模块
- 修改工作调度逻辑,确保仅在活动状态下执行旋转编码器数据处理
- 重构初始化逻辑,使用qdec_reset_state()函数重置内部状态
2026-04-01 16:18:52 +08:00
e369567998 docs: 添加蓝牙SIG官方规格中BLE Profile汇总文档
新增bluetooth_sig_ble_profiles_summary.md文档,包含:
- 基于GATT的传统BLE Profile
- 基于LE Audio的音频类Profile
- 基于Bluetooth Mesh/NLC的Profile
- 共59个Profile的详细分类说明
- 各Profile的官方条目链接和应用场景描述
- 为new_kbd项目提供键盘相关Profile参考
2026-04-01 15:06:54 +08:00
c0a6e45911 feat(bt): 添加蓝牙设备信息服务的即插即用配置
为蓝牙设备信息服务添加VID和PID配置,支持即插即用功能,
包括供应商ID(0x1209)、产品ID(0x0001)和VID源配置。
2026-04-01 11:52:10 +08:00
5b4353d94f feat(ble): 使用Zephyr BAS服务替换自定义电池服务实现
- 在prj.conf中启用CONFIG_BT_BAS、CONFIG_BT_DIS和CONFIG_BT_DIS_PNP配置项
- 移除自定义的电池服务实现代码
- 改用zephyr/bluetooth/services/bas.h提供的标准BAS服务API
- 简化电池状态事件处理逻辑,直接调用bt_bas_set_battery_level设置电池级别
- 移除手动GATT通知实现,依赖系统BAS服务自动处理通知功能
2026-04-01 10:48:05 +08:00
302df0230d feat(app): 使用传感器驱动重构电池和模式切换模块
- 将电池模块从ADC直接采样改为使用sensor子系统,通过battery_sense传感器获取电压
- 将模式切换模块从ADC采样改为使用mode_sense传感器获取模式电压
- 移除GPIO控制的电池使能脚,改用传感器的PM管理机制
- 更新DTS配置,移除大量设备状态设置,添加boot-mode保留内存支持

perf(pm): 调整分区大小以支持单应用引导模式

- 将mcuboot分区从0xc000扩大到0x100,为单应用模式提供更大空间
- 相应调整app分区地址布局,确保内存分配合理
- 移除secondary镜像相关配置,优化flash使用

refactor(boot): 添加MCUBOOT单应用模式配置

- 在sysbuild中启用单应用模式支持
- 为引导加载程序添加保留内存和启动模式配置
- 配置CDC ACM串口用于引导模式通信
2026-03-31 15:09:23 +08:00
82be5cae52 docs: 添加 Nordic NCS 和 Zephyr 官方知识索引文档
添加了两个新的文档文件:
- nordic_ncs_官方知识索引.md:收录 Nordic NCS 官方文档链接,
包括 Zephyr 镜像文档、CAF 框架、Partition Manager 等相关内容
- zephyr_官方知识索引.md:收录 Zephyr 官方文档链接,
涵盖构建配置、设备树、内核并发、蓝牙、USB、外设驱动等模块

这两个索引文档基于项目实际使用的 nrf52840 芯片和 NCS 3.2.3 版本,
通过浏览器渲染验证确保链接有效性,并按功能模块进行分类整理。
2026-03-31 08:36:40 +08:00
2c7eae4de1 feat: 添加HID主机命令和主题颜色功能
- 添加了新的事件类型包括display_theme_event、hid_host_ack_event、
  hid_host_command_error_event和hid_host_command_event用于处理HID主机命令

- 在CMakeLists.txt中添加了新的源文件,包括显示主题事件和HID主机命令相关模块

- 实现了HID主机命令协议定义,包括主题颜色和时间同步命令

- 在BLE HID模块中添加了对供应商命令报告的支持,增加新的报告ID用于主机命令传输

- 扩展了HID传输路由机制,支持USB和BLE双通道传输

- 实现了显示模块的主题颜色存储功能,支持通过settings持久化保存主题颜色

- 添加了完整的BLE时间同步服务PC主机接入文档

- 修改了电池采样逻辑,增加2秒延迟以等待电池电压稳定
2026-03-30 15:57:38 +08:00
277462a8fe feat(ble): 添加快速广告配置并优化连接状态检查
添加了BLE快速广告相关的配置选项到prj.conf中,包括快速广告间隔、超时等参数。
同时修复了ble_bond_module中的连接状态检查逻辑,避免在挂起后保留LE连接时进行不必要的
断开操作。

在ble_hid_module和usb_hid_module中改进了HID传输事件处理逻辑,确保在相应模式未激活
或连接未建立时正确提交传输完成事件,提高了设备响应的准确性。

BREAKING CHANGE: 广告行为在连接保持情况下有所改变,可能影响配对流程。
2026-03-28 13:59:59 +08:00
64fec3a19e Merge branch 'display' 2026-03-28 09:13:12 +08:00
0b874a5c86 feat(display): 添加完整的LVGL显示界面和电源管理功能
- 集成自定义字体ui_font_keyboard_small_18和ui_font_keyboard_time_48
- 配置LVGL编译选项,启用flex布局和压缩字体支持
- 实现完整的显示UI界面,包括日期时间、电池状态、连接状态等组件
- 添加显示模块的电源管理功能,支持自动休眠和唤醒
- 实现与电池状态、键盘LED、模式切换等事件的交互响应
- 添加1分钟空闲超时自动熄屏功能
- 使用自定义精简字体替换默认蒙特塞拉特字体
2026-03-28 09:12:33 +08:00
3d57e6416a feat: 添加时间同步管理功能
- 新增time_manager模块用于统一管理时间同步状态
- 实现BLE时间同步GATT服务(time_sync_event和ble_time_sync_module)
- 添加time_sync_protocol定义统一的协议帧格式
- 支持UTC时间戳、时区偏移和精度信息的时间同步
- 实现settings持久化存储时间校准数据
- 提供time_manager快照API供其他模块查询当前时间状态
- 增加对BLE/USB/手动三种同步源的支持和区分
2026-03-27 11:25:22 +08:00
988fe11914 Merge branch 'display' 2026-03-27 09:40:19 +08:00
b424c04a01 feat(bt): 添加蓝牙外设首选超时配置
新增 CONFIG_BT_PERIPHERAL_PREF_TIMEOUT 配置项,
设置值为 400,用于优化蓝牙外设连接超时参数。
2026-03-27 09:36:13 +08:00
195f0a9e2b refactor(usb_hid_module): 统一代码风格和结构体定义格式
- 将所有结构体定义改为大括号独立成行的格式
- 调整函数参数对齐以提高可读性
- 统一 if 语句的大括号风格,确保一致性
- 优化代码缩进和空格布局
2026-03-23 18:25:51 +08:00
d02e33d97b feat(display): 添加LVGL显示支持和PWM背光控制
添加了完整的LVGL集成支持,包括:

- 在app.overlay中配置显示设备树,添加背光别名和SPI3总线支持
- 集成PWM背光控制,通过pwm-leds子系统管理背光亮度
- 配置LVGL自动初始化和工作队列运行模式
- 实现显示模块的工作队列更新机制,包含UI创建和定时刷新
- 添加详细的LVGL移植说明文档,涵盖设备树配置、调试步骤和常见问题
- 调整分区配置以适应LVGL固件大小需求
- 启用MCUBoot bootloader支持OTA功能

该变更使得系统能够在ST7789V显示屏上正常运行LVGL界面,并通过PWM控制背光。
2026-03-23 09:16:34 +08:00
7ebb8fc87c refactor(hid_tx_manager): 简化BLE模式下的条件判断
移除了冗余的active_mode检查,因为vendor dirty标志的处理
不应该依赖于特定的传输模式,提高了代码的通用性。
2026-03-20 18:00:20 +08:00
6ca70d2580 feat(app): 添加显示模块支持ST7789V显示屏
- 新增display_module.c实现LVGL显示功能,包括标签创建和定时刷新
- 在CMakeLists.txt中添加display_module.c到应用源文件列表
- 在app.overlay中配置显示设备选择和SPI接口使能
- 增加DISPLAY、MIPI_DBI、ST7789V、LVGL等相关配置选项
- 调整pm_static.yml中的应用分区大小以适应新的固件尺寸
- 禁用MCUBOOT和MCUMGR相关配置以节省空间
2026-03-20 17:25:57 +08:00
7e0f224ec8 docs(ble_bond): 添加自定义BLE Bond多身份连接设计说明文档
新增详细的自定义BLE Bond设计文档,涵盖多身份连接场景的支持说明。
文档内容包括:CAF自带BLE Bond与自定义BLE Bond的差异对比、架构图解、
多身份实现的关键工作点、实现注意事项以及推荐的分层设计方案。
2026-03-20 15:54:21 +08:00
a46b7ad8b8 feat(usb_hid): 支持HID供应商报告类型并增加输出报告大小
支持HID供应商特定报告类型的处理,在USB HID模块中添加了对REPORT_ID_VENDOR
的支持,并相应地修改了设备覆盖文件中的输出报告大小配置。

功能变更包括:
- 在app.overlay中将out-report-size从8增加到31以支持更大的报告
- 添加hid_vendor_mask_event.h头文件引入
- 实现try_extract_vendor_mask函数用于解析供应商特定掩码数据
- 在hid_stub_set_report和hid_stub_output_report函数中添加供应商掩码处理逻辑
- 更新handle_hid_tx_event函数以允许REPORT_ID_VENDOR类型的报告
2026-03-20 15:50:20 +08:00
3ff9f8c6fa feat(hid): 添加Vendor报告类型支持键盘掩码功能
- 新增REPORT_ID_VENDOR报告ID和相关常量定义
- 在HID报告描述符中添加Vendor页面的输入输出集合定义
- 更新BLE HID服务配置以支持3个输入报告和2个输出报告
- 实现hid_vendor_mask_event事件用于处理Vendor掩码数据
- 修改keyboard模块以支持物理状态和掩码状态分离
- 添加vendor_output_report_handler处理来自主机的掩码更新
- 更新CMakeLists.txt包含新的事件源文件
- 修改hid_tx_manager以支持Vendor报告的发送管理
2026-03-20 15:17:47 +08:00
9b29910299 feat(hid_tx_manager): 重构HID传输管理器以支持报告状态跟踪
- 引入原子标志位替换布尔变量,提高线程安全性
- 使用消息队列替代循环缓冲区实现传输队列
- 添加boot和NKRO报告状态管理功能
- 实现脏标记机制优化报告发送流程
- 改进传输完成事件处理逻辑
2026-03-20 13:47:54 +08:00
579dc35a36 feat: 添加HID传输管理和旋转编码器支持
添加了hid_tx_event和hid_tx_done_event事件类型,用于统一管理HID
数据传输,并在ble_hid_module和usb_hid_module中实现相应的处理逻辑。

新增qdec_module模块来处理旋转编码器输入,将旋转事件转换为步进事件,
并在keyboard_module中集成音量控制功能。

更新CMakeLists.txt以包含新的事件和模块文件,在app.overlay中启
用qdec设备,并在prj.conf中添加SENSOR配置。

BREAKING CHANGE: 将原有的hid_boot_event和hid_report_event替换
为统一的hid_tx_event事件系统。
2026-03-20 11:04:48 +08:00
2a389ef19b feat: 更新键盘固件的事件系统和模块配置
- 在CMakeLists.txt中添加hid_boot_event.c、keyboard_led_event.c和ble_slot_ctrl_module.c源文件
- 新增Kconfig配置项NEW_KBD_BLE_BOND_ENABLE用于启用应用特定的BLE绑定支持
- 修改prj.conf配置,禁用配对模式下的设备名称广播功能
- 重构电池状态事件结构,将charging和full布尔字段改为flags位域,并提供相应的访问函数
- 添加hid_boot_event事件类型,用于处理HID Boot协议输入报告
- 重命名keyboard_led_state_event为keyboard_led_event并改进LED状态处理逻辑
- 移除hid_protocol_event中的transport字段,简化协议事件处理
- 分离hid_report_event和hid_boot_event,明确区分Report和Boot协议报文处理
- 重构battery_module.c代码结构,改用上下文结构体管理电池模块状态
- 更新ble_battery_module.c使用新的电池状态事件访问接口
2026-03-18 13:41:36 +08:00
2a8b44d058 feat(app): 添加蓝牙电量模块支持
- 在CMakeLists.txt中添加ble_battery_module.c源文件
- 实现BLE电池服务模块,提供电池电量GATT服务
- 支持电池电量读取和通知功能
- 集成到应用事件管理器,监听电池状态事件
- 当蓝牙连接就绪时设置模块状态为READY
2026-03-16 17:45:00 +08:00
a9025d0f49 refactor(events): 移除未使用的usb_hid_event定义
移除src/events/usb_hid_event.c和usb_hid_event.h文件,
以及CMakeLists.txt中的相关源文件引用。

feat(modules): 电池模块增加充电状态电源管理限制策略

- 添加充电状态下的电源限制逻辑,充电时限制到ALIVE级别禁止自动休眠,
  非充电时恢复到SUSPENDED级别
- 默认非充电态允许进入SUSPENDED但禁止进入OFF

refactor(modules): 重构usb_hid_module减少模块间耦合

- 移除对power_manager_event.h和usb_hid_event.h的依赖
- 简化模块功能描述,去除对外发布usb_hid_event的职责
- 移除内部usb_hid_event相关的状态管理和发布逻辑
- 修改USB连接处理逻辑,在VBUS就绪时提交唤醒事件
2026-03-16 17:09:49 +08:00
4e8bb71f83 feat(usb_hid): 重构USB HID模块状态管理并优化电源管理
- 修改USB HID事件结构,将enable字段替换为stack_state枚举,
  区分VBUS连接状态和协议栈启用状态
- 更新日志和分析器中的字段映射,正确显示栈状态而非布尔使能值
- 添加电源管理限制功能,在USB连接时保持系统活跃状态
- 重构LED输入报告处理逻辑,支持引导和NKRO设备的报告解析
- 调整USB连接状态变更逻辑,仅反映VBUS连接情况
- 将power_manager超时配置从300秒调整为30秒以优化响应速度

BREAKING CHANGE: USB HID事件结构中的enable字段已替换为stack_state枚举类型
2026-03-16 15:22:10 +08:00
7587df7553 feat(led): 添加键盘LED状态管理模块
- 新增keyboard_led_state_event事件用于处理USB/BLE HID输出报告中的LED状态
- 实现led_state_module模块,管理Num Lock指示灯和BLE状态指示灯
- 定义LED状态效果映射,包括熄灭、常亮、慢闪、快闪等效果
- 将hid_keymap_def.h从configuration目录移至inc目录
- 在BLE和USB HID模块中添加对输出报告LED掩码的解析和处理
- 配置DTS中的led_1为可用状态,更新CMakeLists.txt构建配置
2026-03-16 11:39:27 +08:00
cd8101428d feat(keyboard): 添加完整的HID键盘功能模块
- 新增keyboard_module.c实现完整的键盘HID功能,包括按键映射、
  协议处理和报告生成
- 添加hid_protocol_event和hid_report_event事件系统支持
- 实现键盘和consumer类型的HID报告处理
- 支持Boot协议和Report协议两种模式
- 添加hid_keymap_def.h定义键盘映射表

refactor(ble_hid): 重构HIDS模块为BLE HID模块

- 将hids_module.c重命名为ble_hid_module.c
- 集成新的hid_protocol_event和hid_report_event事件处理
- 改进协议切换逻辑,添加协议事件发布功能
- 优化BLE HID报告发送机制

refactor(CMakeLists): 更新构建配置

- 添加新的事件模块源文件到构建列表
- 添加keyboard_module.c替换原有的button_map_module.c
- 添加ble_hid_module.c替换原有的hids_module.c
- 配置HID密钥映射定义路径编译选项

refactor(events): 简化USB HID事件结构

- 移除USB HID事件中的冗余状态字段
- 更新事件日志和分析器字段定义

docs(hid): 添加HID报告描述符文档

- 定义REPORT_ID_KEYBOARD和REPORT_ID_CONSUMER枚举值
- 整理HID报告相关的常量定义
2026-03-14 18:00:14 +08:00
a3196ef162 feat(ble): 添加蓝牙广播控制模块实现动态广告管理
- 在CMakeLists.txt中添加ble_adv_ctrl_module.c源文件
- 启用MCU管理器相关配置(CONFIG_MCUMGR等)以支持OTA功能
- 添加CAF模块挂起事件配置(CONFIG_CAF_MODULE_SUSPEND_EVENTS)
- 实现ble_adv_ctrl_module模块,根据当前模式类型控制蓝牙广告的挂起/恢复:
  * BLE模式时恢复广告,允许广播
  * USB/2.4G模式时挂起广告,禁止广播
- 模块在启动时默认请求挂起状态,防止模式切换前出现意外广播
- 通过CAF事件系统与ble_adv模块交互,实现广告控制逻辑
2026-03-14 14:04:59 +08:00
e893ddded6 feat: 添加USB HID模块支持
- 添加usb_hid_event事件定义和实现,用于管理USB HID状态
- 添加usb_hid_module模块,实现USB HID协议栈的完整生命周期管理
- 在CMakeLists.txt中注册新的事件和模块源文件
- 在设备树overlay中配置三个HID设备:HID_BOOT、HID_NKRO、HID_RAW
- 在prj.conf中启用USB设备栈相关配置选项
- 修复电池模块和模式切换模块中的重复挂起问题
- 改进蓝牙绑定模块的错误处理和日志记录
- 在app.overlay中启用usbd节点并添加PMIC配置调整
2026-03-14 12:13:25 +08:00
81846a870f feat: 添加配置事件和蓝牙配对模块支持多设备连接
添加了新的配置事件类型用于本地模块配置,包括事件定义和头文件,
以及蓝牙配对模块来管理多个配对设备。更新了CMakeLists.txt以包含
新的源文件,并修改prj.conf增加蓝牙配对数量限制。

- 新增config_event事件类型用于本地配置通信
- 实现ble_bond_module用于管理蓝牙配对和身份切换
- 配置蓝牙最大配对数和身份数为4
- 支持通过配置通道进行设备选择、删除等操作
2026-03-13 16:45:34 +08:00
05f4f117b0 feat(hids): 添加HID服务模块支持键盘和多媒体功能
- 新增hids_module.c实现蓝牙HID服务,支持键盘NKRO和Consumer控制
- 添加hid_report_descriptor.h定义统一的HID描述符,包括键盘、多媒体和RAW HID
- 在CMakeLists.txt中注册hids模块源文件
- 配置prj.conf启用蓝牙HID相关配置项,设置设备名称和外观
- 修改main.c移除启动LED效果,简化主函数逻辑
- 添加settings_loader_def.h确保模块依赖正确加载
- 配置pm_static.yml分配flash存储空间给mcuboot和settings
- 调整电源管理超时时间从20秒增加到300秒
- 启用MCUBOOT引导加载器支持
2026-03-13 16:31:02 +08:00
b3516b988a feat(battery): 添加电池管理模块和IP5305 PMIC支持
- 添加电池状态监测模块,包括ADC采样和SOC估算功能
- 集成IP5305电源管理芯片支持,配置I2C通信和保活机制
- 实现电池状态事件系统,包含充电状态、满电状态和电量百分比
- 添加电池使能GPIO控制和采样工作队列
- 配置设备树支持电池检测和PMIC控制
- 添加外部模块路径到CMakeLists.txt并更新.gitignore
2026-03-13 08:05:31 +08:00
86af0d2373 feat: 添加模式切换模块支持多协议键盘
添加了完整的模式切换功能,通过ADC采样检测模式拨码开关,
实现USB、BLE和2.4G三种工作模式的自动识别和切换。

- 新增mode_event事件用于传递模式状态
- 实现mode_switch_module模块,包含ADC初始化、
  模式识别算法和状态管理逻辑
- 配置CMakeLists.txt添加新源文件和头文件目录
- 更新设备树配置启用ADC和IO通道
- 添加Kconfig选项CONFIG_ADC=y
- 实现防抖机制和稳定的模式检测逻辑
- 集成到CAF事件系统,支持电源管理状态切换
2026-03-11 10:44:50 +08:00
3d9ce9168f feat(kbd): 添加CAF按钮模块支持
- 在CMakeLists.txt中添加button_map_module.c源文件和头文件目录
- 创建inc/buttons_def.h定义按钮矩阵引脚配置
- 配置prj.conf启用CAF按钮相关功能和参数
- 实现src/modules/button_map_module.c按钮映射逻辑
- 支持6x4键盘矩阵的按键事件处理和Linux输入键码转换
2026-03-10 16:09:33 +08:00
cd3400a9ba feat(led): 使用CAF LEDs模块替代自定义LED驱动
- 移除src/modules/led_module.c中的自定义GPIO LED实现
- 在CMakeLists.txt中移除对led_module.c的引用
- 更新prj.conf配置,启用CAF LEDs相关功能
- 添加CONFIG_CAF_POWER_MANAGER配置项以支持电源管理
- 在main.c中集成LED事件,在系统就绪时触发启动LED效果
- 实现白色常亮LED效果作为系统启动指示
2026-03-10 15:00:37 +08:00
c5778e6c7a feat(keyboard): 添加LED模块支持
- 在CMakeLists.txt中添加src/modules/led_module.c源文件
- 创建app.overlay设备树配置文件,启用GPIO0、GPIO1、GPIOTE和LED_0
- 在prj.conf中启用CONFIG_GPIO配置选项
- 实现led_module.c,包含LED GPIO控制逻辑和CAF事件处理
2026-03-10 14:38:54 +08:00
d374f824cd feat(caf): 集成事件管理器并配置CAF模块
- 在prj.conf中启用CAF、堆内存池和日志配置
- 替换kernel头文件为应用事件管理器相关头文件
- 添加模块状态事件支持用于报告就绪状态
- 初始化应用事件管理器并在初始化失败时记录错误
2026-03-10 09:17:07 +08:00
087a378e20 Initial commit for new_kbd 2026-03-10 08:49:05 +08:00