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; } enum KeyAction { KEY_ACTION_RELEASE = 0; KEY_ACTION_PRESS = 1; } message FunctionKeyEvent { uint32 usage = 1; KeyAction action = 2; } 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; Ack ack = 5; Error error = 6; } }