- 添加新的 function_bitmap_state_event 事件类型用于跟踪功能键位图状态 - 移除已废弃的 key_function_event 事件及其相关文件 - 更新 CMakeLists.txt 中的源文件列表以包含新事件文件 - 修改协议定义文件 device_comm.options 和 device_comm.proto 以使用位图方式传输功能键状态而不是单独的按键事件 - 更新键盘核心模块中的位图处理逻辑,添加 usage_to_bitmap_pos 辅助函数来正确定位修饰键和普通按键的位置 - 修改报告构建逻辑以正确处理新的位图布局 - 更新协议模块以处理新的功能位图状态事件和 LED 状态事件 - 实现协议模块中的 ACK、错误响应和 LED 状态编码功能
72 lines
1.2 KiB
Protocol Buffer
72 lines
1.2 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
message HelloReq {
|
|
uint32 protocol_version = 1;
|
|
}
|
|
|
|
message HelloRsp {
|
|
uint32 protocol_version = 1;
|
|
uint32 vendor_id = 2;
|
|
uint32 product_id = 3;
|
|
uint32 firmware_major = 4;
|
|
uint32 firmware_minor = 5;
|
|
uint32 capability_flags = 6;
|
|
}
|
|
|
|
message Bitmap {
|
|
bytes usage_bitmap = 1;
|
|
}
|
|
|
|
message FunctionKeyEvent {
|
|
bytes usage_bitmap = 1;
|
|
}
|
|
|
|
message LedState {
|
|
uint32 led_mask = 1;
|
|
}
|
|
|
|
message TimeSync {
|
|
uint32 version = 1;
|
|
uint32 flags = 2;
|
|
sint32 timezone_min = 3;
|
|
fixed64 utc_ms = 4;
|
|
fixed32 accuracy_ms = 5;
|
|
}
|
|
|
|
message ThemeRgb {
|
|
uint32 red = 1;
|
|
uint32 green = 2;
|
|
uint32 blue = 3;
|
|
}
|
|
|
|
message Ack {
|
|
uint32 acked_type = 1;
|
|
}
|
|
|
|
enum ErrorCode {
|
|
ERROR_CODE_NONE = 0;
|
|
ERROR_CODE_UNKNOWN_TYPE = 1;
|
|
ERROR_CODE_INVALID_LENGTH = 2;
|
|
ERROR_CODE_INVALID_PARAM = 3;
|
|
ERROR_CODE_NOT_READY = 4;
|
|
}
|
|
|
|
message Error {
|
|
uint32 error_type = 1;
|
|
ErrorCode error_code = 2;
|
|
}
|
|
|
|
message CdcPacketBody {
|
|
oneof body {
|
|
HelloReq hello_req = 1;
|
|
HelloRsp hello_rsp = 2;
|
|
Bitmap bitmap = 3;
|
|
FunctionKeyEvent function_key_event = 4;
|
|
LedState led_state = 5;
|
|
TimeSync time_sync = 6;
|
|
ThemeRgb theme_rgb = 7;
|
|
Ack ack = 8;
|
|
Error error = 9;
|
|
}
|
|
}
|