syntax = "proto3"; enum ResponseCode { RESPONSE_CODE_OK = 0; RESPONSE_CODE_UNKNOWN_TYPE = 1; RESPONSE_CODE_INVALID_LENGTH = 2; RESPONSE_CODE_INVALID_PARAM = 3; RESPONSE_CODE_NOT_READY = 4; } 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 Response { ResponseCode error_code = 1; } message DeviceMessage { uint32 msg_id = 10; uint32 reply_to = 11; 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; Response response = 8; } }