mirror of
https://github.com/esphome/esphome.git
synced 2025-07-25 20:56:38 +00:00
Merge branch 'integration' into memory_api
This commit is contained in:
commit
285ad9af1e
File diff suppressed because it is too large
Load Diff
@ -16,7 +16,7 @@ void APIServerConnectionBase::log_send_message_(const char *name, const std::str
|
|||||||
|
|
||||||
void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) {
|
void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) {
|
||||||
switch (msg_type) {
|
switch (msg_type) {
|
||||||
case 1: {
|
case HelloRequest::MESSAGE_TYPE: {
|
||||||
HelloRequest msg;
|
HelloRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -25,7 +25,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_hello_request(msg);
|
this->on_hello_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3: {
|
case ConnectRequest::MESSAGE_TYPE: {
|
||||||
ConnectRequest msg;
|
ConnectRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -34,7 +34,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_connect_request(msg);
|
this->on_connect_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5: {
|
case DisconnectRequest::MESSAGE_TYPE: {
|
||||||
DisconnectRequest msg;
|
DisconnectRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -43,7 +43,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_disconnect_request(msg);
|
this->on_disconnect_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 6: {
|
case DisconnectResponse::MESSAGE_TYPE: {
|
||||||
DisconnectResponse msg;
|
DisconnectResponse msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -52,7 +52,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_disconnect_response(msg);
|
this->on_disconnect_response(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 7: {
|
case PingRequest::MESSAGE_TYPE: {
|
||||||
PingRequest msg;
|
PingRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -61,7 +61,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_ping_request(msg);
|
this->on_ping_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 8: {
|
case PingResponse::MESSAGE_TYPE: {
|
||||||
PingResponse msg;
|
PingResponse msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -70,7 +70,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_ping_response(msg);
|
this->on_ping_response(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 9: {
|
case DeviceInfoRequest::MESSAGE_TYPE: {
|
||||||
DeviceInfoRequest msg;
|
DeviceInfoRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -79,7 +79,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_device_info_request(msg);
|
this->on_device_info_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 11: {
|
case ListEntitiesRequest::MESSAGE_TYPE: {
|
||||||
ListEntitiesRequest msg;
|
ListEntitiesRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -88,7 +88,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_list_entities_request(msg);
|
this->on_list_entities_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 20: {
|
case SubscribeStatesRequest::MESSAGE_TYPE: {
|
||||||
SubscribeStatesRequest msg;
|
SubscribeStatesRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -97,7 +97,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_subscribe_states_request(msg);
|
this->on_subscribe_states_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 28: {
|
case SubscribeLogsRequest::MESSAGE_TYPE: {
|
||||||
SubscribeLogsRequest msg;
|
SubscribeLogsRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -107,7 +107,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef USE_COVER
|
#ifdef USE_COVER
|
||||||
case 30: {
|
case CoverCommandRequest::MESSAGE_TYPE: {
|
||||||
CoverCommandRequest msg;
|
CoverCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -118,7 +118,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_FAN
|
#ifdef USE_FAN
|
||||||
case 31: {
|
case FanCommandRequest::MESSAGE_TYPE: {
|
||||||
FanCommandRequest msg;
|
FanCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -129,7 +129,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_LIGHT
|
#ifdef USE_LIGHT
|
||||||
case 32: {
|
case LightCommandRequest::MESSAGE_TYPE: {
|
||||||
LightCommandRequest msg;
|
LightCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -140,7 +140,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_SWITCH
|
#ifdef USE_SWITCH
|
||||||
case 33: {
|
case SwitchCommandRequest::MESSAGE_TYPE: {
|
||||||
SwitchCommandRequest msg;
|
SwitchCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -150,7 +150,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
case 34: {
|
case SubscribeHomeassistantServicesRequest::MESSAGE_TYPE: {
|
||||||
SubscribeHomeassistantServicesRequest msg;
|
SubscribeHomeassistantServicesRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -159,7 +159,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_subscribe_homeassistant_services_request(msg);
|
this->on_subscribe_homeassistant_services_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 36: {
|
case GetTimeRequest::MESSAGE_TYPE: {
|
||||||
GetTimeRequest msg;
|
GetTimeRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -168,7 +168,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_get_time_request(msg);
|
this->on_get_time_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 37: {
|
case GetTimeResponse::MESSAGE_TYPE: {
|
||||||
GetTimeResponse msg;
|
GetTimeResponse msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -177,7 +177,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_get_time_response(msg);
|
this->on_get_time_response(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 38: {
|
case SubscribeHomeAssistantStatesRequest::MESSAGE_TYPE: {
|
||||||
SubscribeHomeAssistantStatesRequest msg;
|
SubscribeHomeAssistantStatesRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -186,7 +186,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
this->on_subscribe_home_assistant_states_request(msg);
|
this->on_subscribe_home_assistant_states_request(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 40: {
|
case HomeAssistantStateResponse::MESSAGE_TYPE: {
|
||||||
HomeAssistantStateResponse msg;
|
HomeAssistantStateResponse msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -196,7 +196,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef USE_API_SERVICES
|
#ifdef USE_API_SERVICES
|
||||||
case 42: {
|
case ExecuteServiceRequest::MESSAGE_TYPE: {
|
||||||
ExecuteServiceRequest msg;
|
ExecuteServiceRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -207,7 +207,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_CAMERA
|
#ifdef USE_CAMERA
|
||||||
case 45: {
|
case CameraImageRequest::MESSAGE_TYPE: {
|
||||||
CameraImageRequest msg;
|
CameraImageRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -218,7 +218,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_CLIMATE
|
#ifdef USE_CLIMATE
|
||||||
case 48: {
|
case ClimateCommandRequest::MESSAGE_TYPE: {
|
||||||
ClimateCommandRequest msg;
|
ClimateCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -229,7 +229,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_NUMBER
|
#ifdef USE_NUMBER
|
||||||
case 51: {
|
case NumberCommandRequest::MESSAGE_TYPE: {
|
||||||
NumberCommandRequest msg;
|
NumberCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -240,7 +240,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_SELECT
|
#ifdef USE_SELECT
|
||||||
case 54: {
|
case SelectCommandRequest::MESSAGE_TYPE: {
|
||||||
SelectCommandRequest msg;
|
SelectCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -251,7 +251,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_SIREN
|
#ifdef USE_SIREN
|
||||||
case 57: {
|
case SirenCommandRequest::MESSAGE_TYPE: {
|
||||||
SirenCommandRequest msg;
|
SirenCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -262,7 +262,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_LOCK
|
#ifdef USE_LOCK
|
||||||
case 60: {
|
case LockCommandRequest::MESSAGE_TYPE: {
|
||||||
LockCommandRequest msg;
|
LockCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -273,7 +273,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BUTTON
|
#ifdef USE_BUTTON
|
||||||
case 62: {
|
case ButtonCommandRequest::MESSAGE_TYPE: {
|
||||||
ButtonCommandRequest msg;
|
ButtonCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -284,7 +284,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_MEDIA_PLAYER
|
#ifdef USE_MEDIA_PLAYER
|
||||||
case 65: {
|
case MediaPlayerCommandRequest::MESSAGE_TYPE: {
|
||||||
MediaPlayerCommandRequest msg;
|
MediaPlayerCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -295,7 +295,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 66: {
|
case SubscribeBluetoothLEAdvertisementsRequest::MESSAGE_TYPE: {
|
||||||
SubscribeBluetoothLEAdvertisementsRequest msg;
|
SubscribeBluetoothLEAdvertisementsRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -306,7 +306,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 68: {
|
case BluetoothDeviceRequest::MESSAGE_TYPE: {
|
||||||
BluetoothDeviceRequest msg;
|
BluetoothDeviceRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -317,7 +317,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 70: {
|
case BluetoothGATTGetServicesRequest::MESSAGE_TYPE: {
|
||||||
BluetoothGATTGetServicesRequest msg;
|
BluetoothGATTGetServicesRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -328,7 +328,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 73: {
|
case BluetoothGATTReadRequest::MESSAGE_TYPE: {
|
||||||
BluetoothGATTReadRequest msg;
|
BluetoothGATTReadRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -339,7 +339,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 75: {
|
case BluetoothGATTWriteRequest::MESSAGE_TYPE: {
|
||||||
BluetoothGATTWriteRequest msg;
|
BluetoothGATTWriteRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -350,7 +350,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 76: {
|
case BluetoothGATTReadDescriptorRequest::MESSAGE_TYPE: {
|
||||||
BluetoothGATTReadDescriptorRequest msg;
|
BluetoothGATTReadDescriptorRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -361,7 +361,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 77: {
|
case BluetoothGATTWriteDescriptorRequest::MESSAGE_TYPE: {
|
||||||
BluetoothGATTWriteDescriptorRequest msg;
|
BluetoothGATTWriteDescriptorRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -372,7 +372,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 78: {
|
case BluetoothGATTNotifyRequest::MESSAGE_TYPE: {
|
||||||
BluetoothGATTNotifyRequest msg;
|
BluetoothGATTNotifyRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -383,7 +383,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 80: {
|
case SubscribeBluetoothConnectionsFreeRequest::MESSAGE_TYPE: {
|
||||||
SubscribeBluetoothConnectionsFreeRequest msg;
|
SubscribeBluetoothConnectionsFreeRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -394,7 +394,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 87: {
|
case UnsubscribeBluetoothLEAdvertisementsRequest::MESSAGE_TYPE: {
|
||||||
UnsubscribeBluetoothLEAdvertisementsRequest msg;
|
UnsubscribeBluetoothLEAdvertisementsRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -405,7 +405,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
case 89: {
|
case SubscribeVoiceAssistantRequest::MESSAGE_TYPE: {
|
||||||
SubscribeVoiceAssistantRequest msg;
|
SubscribeVoiceAssistantRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -416,7 +416,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
case 91: {
|
case VoiceAssistantResponse::MESSAGE_TYPE: {
|
||||||
VoiceAssistantResponse msg;
|
VoiceAssistantResponse msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -427,7 +427,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
case 92: {
|
case VoiceAssistantEventResponse::MESSAGE_TYPE: {
|
||||||
VoiceAssistantEventResponse msg;
|
VoiceAssistantEventResponse msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -438,7 +438,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_ALARM_CONTROL_PANEL
|
#ifdef USE_ALARM_CONTROL_PANEL
|
||||||
case 96: {
|
case AlarmControlPanelCommandRequest::MESSAGE_TYPE: {
|
||||||
AlarmControlPanelCommandRequest msg;
|
AlarmControlPanelCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -449,7 +449,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_TEXT
|
#ifdef USE_TEXT
|
||||||
case 99: {
|
case TextCommandRequest::MESSAGE_TYPE: {
|
||||||
TextCommandRequest msg;
|
TextCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -460,7 +460,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_DATETIME_DATE
|
#ifdef USE_DATETIME_DATE
|
||||||
case 102: {
|
case DateCommandRequest::MESSAGE_TYPE: {
|
||||||
DateCommandRequest msg;
|
DateCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -471,7 +471,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_DATETIME_TIME
|
#ifdef USE_DATETIME_TIME
|
||||||
case 105: {
|
case TimeCommandRequest::MESSAGE_TYPE: {
|
||||||
TimeCommandRequest msg;
|
TimeCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -482,7 +482,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
case 106: {
|
case VoiceAssistantAudio::MESSAGE_TYPE: {
|
||||||
VoiceAssistantAudio msg;
|
VoiceAssistantAudio msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -493,7 +493,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VALVE
|
#ifdef USE_VALVE
|
||||||
case 111: {
|
case ValveCommandRequest::MESSAGE_TYPE: {
|
||||||
ValveCommandRequest msg;
|
ValveCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -504,7 +504,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_DATETIME_DATETIME
|
#ifdef USE_DATETIME_DATETIME
|
||||||
case 114: {
|
case DateTimeCommandRequest::MESSAGE_TYPE: {
|
||||||
DateTimeCommandRequest msg;
|
DateTimeCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -515,7 +515,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
case 115: {
|
case VoiceAssistantTimerEventResponse::MESSAGE_TYPE: {
|
||||||
VoiceAssistantTimerEventResponse msg;
|
VoiceAssistantTimerEventResponse msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -526,7 +526,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_UPDATE
|
#ifdef USE_UPDATE
|
||||||
case 118: {
|
case UpdateCommandRequest::MESSAGE_TYPE: {
|
||||||
UpdateCommandRequest msg;
|
UpdateCommandRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -537,7 +537,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
case 119: {
|
case VoiceAssistantAnnounceRequest::MESSAGE_TYPE: {
|
||||||
VoiceAssistantAnnounceRequest msg;
|
VoiceAssistantAnnounceRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -548,7 +548,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
case 121: {
|
case VoiceAssistantConfigurationRequest::MESSAGE_TYPE: {
|
||||||
VoiceAssistantConfigurationRequest msg;
|
VoiceAssistantConfigurationRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -559,7 +559,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
case 123: {
|
case VoiceAssistantSetConfiguration::MESSAGE_TYPE: {
|
||||||
VoiceAssistantSetConfiguration msg;
|
VoiceAssistantSetConfiguration msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -570,7 +570,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_API_NOISE
|
#ifdef USE_API_NOISE
|
||||||
case 124: {
|
case NoiseEncryptionSetKeyRequest::MESSAGE_TYPE: {
|
||||||
NoiseEncryptionSetKeyRequest msg;
|
NoiseEncryptionSetKeyRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -581,7 +581,7 @@ void APIServerConnectionBase::read_message(uint32_t msg_size, uint32_t msg_type,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
case 127: {
|
case BluetoothScannerSetModeRequest::MESSAGE_TYPE: {
|
||||||
BluetoothScannerSetModeRequest msg;
|
BluetoothScannerSetModeRequest msg;
|
||||||
msg.decode(msg_data, msg_size);
|
msg.decode(msg_data, msg_size);
|
||||||
#ifdef HAS_PROTO_MESSAGE_DUMP
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
||||||
@ -617,10 +617,8 @@ void APIServerConnection::on_ping_request(const PingRequest &msg) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
void APIServerConnection::on_device_info_request(const DeviceInfoRequest &msg) {
|
void APIServerConnection::on_device_info_request(const DeviceInfoRequest &msg) {
|
||||||
if (this->check_connection_setup_()) {
|
if (this->check_connection_setup_() && !this->send_device_info_response(msg)) {
|
||||||
if (!this->send_device_info_response(msg)) {
|
this->on_fatal_error();
|
||||||
this->on_fatal_error();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void APIServerConnection::on_list_entities_request(const ListEntitiesRequest &msg) {
|
void APIServerConnection::on_list_entities_request(const ListEntitiesRequest &msg) {
|
||||||
@ -650,10 +648,8 @@ void APIServerConnection::on_subscribe_home_assistant_states_request(const Subsc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
void APIServerConnection::on_get_time_request(const GetTimeRequest &msg) {
|
void APIServerConnection::on_get_time_request(const GetTimeRequest &msg) {
|
||||||
if (this->check_connection_setup_()) {
|
if (this->check_connection_setup_() && !this->send_get_time_response(msg)) {
|
||||||
if (!this->send_get_time_response(msg)) {
|
this->on_fatal_error();
|
||||||
this->on_fatal_error();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef USE_API_SERVICES
|
#ifdef USE_API_SERVICES
|
||||||
@ -665,10 +661,8 @@ void APIServerConnection::on_execute_service_request(const ExecuteServiceRequest
|
|||||||
#endif
|
#endif
|
||||||
#ifdef USE_API_NOISE
|
#ifdef USE_API_NOISE
|
||||||
void APIServerConnection::on_noise_encryption_set_key_request(const NoiseEncryptionSetKeyRequest &msg) {
|
void APIServerConnection::on_noise_encryption_set_key_request(const NoiseEncryptionSetKeyRequest &msg) {
|
||||||
if (this->check_authenticated_()) {
|
if (this->check_authenticated_() && !this->send_noise_encryption_set_key_response(msg)) {
|
||||||
if (!this->send_noise_encryption_set_key_response(msg)) {
|
this->on_fatal_error();
|
||||||
this->on_fatal_error();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -858,10 +852,8 @@ void APIServerConnection::on_bluetooth_gatt_notify_request(const BluetoothGATTNo
|
|||||||
#ifdef USE_BLUETOOTH_PROXY
|
#ifdef USE_BLUETOOTH_PROXY
|
||||||
void APIServerConnection::on_subscribe_bluetooth_connections_free_request(
|
void APIServerConnection::on_subscribe_bluetooth_connections_free_request(
|
||||||
const SubscribeBluetoothConnectionsFreeRequest &msg) {
|
const SubscribeBluetoothConnectionsFreeRequest &msg) {
|
||||||
if (this->check_authenticated_()) {
|
if (this->check_authenticated_() && !this->send_subscribe_bluetooth_connections_free_response(msg)) {
|
||||||
if (!this->send_subscribe_bluetooth_connections_free_response(msg)) {
|
this->on_fatal_error();
|
||||||
this->on_fatal_error();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -889,10 +881,8 @@ void APIServerConnection::on_subscribe_voice_assistant_request(const SubscribeVo
|
|||||||
#endif
|
#endif
|
||||||
#ifdef USE_VOICE_ASSISTANT
|
#ifdef USE_VOICE_ASSISTANT
|
||||||
void APIServerConnection::on_voice_assistant_configuration_request(const VoiceAssistantConfigurationRequest &msg) {
|
void APIServerConnection::on_voice_assistant_configuration_request(const VoiceAssistantConfigurationRequest &msg) {
|
||||||
if (this->check_authenticated_()) {
|
if (this->check_authenticated_() && !this->send_voice_assistant_get_configuration_response(msg)) {
|
||||||
if (!this->send_voice_assistant_get_configuration_response(msg)) {
|
this->on_fatal_error();
|
||||||
this->on_fatal_error();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -224,12 +224,26 @@ class TypeInfo(ABC):
|
|||||||
|
|
||||||
encode_func = None
|
encode_func = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def can_use_dump_field(cls) -> bool:
|
||||||
|
"""Whether this type can use the dump_field helper functions.
|
||||||
|
|
||||||
|
Returns True for simple types that have dump_field overloads.
|
||||||
|
Complex types like messages and bytes should return False.
|
||||||
|
"""
|
||||||
|
return True
|
||||||
|
|
||||||
|
def dump_field_value(self, value: str) -> str:
|
||||||
|
"""Get the value expression to pass to dump_field.
|
||||||
|
|
||||||
|
Most types just pass the value directly, but some (like enums) need a cast.
|
||||||
|
"""
|
||||||
|
return value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def dump_content(self) -> str:
|
def dump_content(self) -> str:
|
||||||
o = f'out.append(" {self.name}: ");\n'
|
# Default implementation - subclasses can override if they need special handling
|
||||||
o += self.dump(f"this->{self.field_name}") + "\n"
|
return f'dump_field(out, "{self.name}", {self.dump_field_value(f"this->{self.field_name}")});'
|
||||||
o += 'out.append("\\n");\n'
|
|
||||||
return o
|
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def dump(self, name: str) -> str:
|
def dump(self, name: str) -> str:
|
||||||
@ -593,6 +607,22 @@ class StringType(TypeInfo):
|
|||||||
f"}}"
|
f"}}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dump_content(self) -> str:
|
||||||
|
# For SOURCE_CLIENT only, use std::string
|
||||||
|
if not self._needs_encode:
|
||||||
|
return f'dump_field(out, "{self.name}", this->{self.field_name});'
|
||||||
|
|
||||||
|
# For SOURCE_SERVER, use StringRef with _ref_ suffix
|
||||||
|
if not self._needs_decode:
|
||||||
|
return f'dump_field(out, "{self.name}", this->{self.field_name}_ref_);'
|
||||||
|
|
||||||
|
# For SOURCE_BOTH, we need custom logic
|
||||||
|
o = f'out.append(" {self.name}: ");\n'
|
||||||
|
o += self.dump(f"this->{self.field_name}") + "\n"
|
||||||
|
o += 'out.append("\\n");'
|
||||||
|
return o
|
||||||
|
|
||||||
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
||||||
# For SOURCE_CLIENT only messages, use the string field directly
|
# For SOURCE_CLIENT only messages, use the string field directly
|
||||||
if not self._needs_encode:
|
if not self._needs_encode:
|
||||||
@ -615,6 +645,10 @@ class StringType(TypeInfo):
|
|||||||
|
|
||||||
@register_type(11)
|
@register_type(11)
|
||||||
class MessageType(TypeInfo):
|
class MessageType(TypeInfo):
|
||||||
|
@classmethod
|
||||||
|
def can_use_dump_field(cls) -> bool:
|
||||||
|
return False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cpp_type(self) -> str:
|
def cpp_type(self) -> str:
|
||||||
return self._field.type_name[1:]
|
return self._field.type_name[1:]
|
||||||
@ -651,6 +685,13 @@ class MessageType(TypeInfo):
|
|||||||
o = f"{name}.dump_to(out);"
|
o = f"{name}.dump_to(out);"
|
||||||
return o
|
return o
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dump_content(self) -> str:
|
||||||
|
o = f'out.append(" {self.name}: ");\n'
|
||||||
|
o += f"this->{self.field_name}.dump_to(out);\n"
|
||||||
|
o += 'out.append("\\n");'
|
||||||
|
return o
|
||||||
|
|
||||||
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
||||||
return self._get_simple_size_calculation(name, force, "add_message_object")
|
return self._get_simple_size_calculation(name, force, "add_message_object")
|
||||||
|
|
||||||
@ -664,6 +705,10 @@ class MessageType(TypeInfo):
|
|||||||
|
|
||||||
@register_type(12)
|
@register_type(12)
|
||||||
class BytesType(TypeInfo):
|
class BytesType(TypeInfo):
|
||||||
|
@classmethod
|
||||||
|
def can_use_dump_field(cls) -> bool:
|
||||||
|
return False
|
||||||
|
|
||||||
cpp_type = "std::string"
|
cpp_type = "std::string"
|
||||||
default_value = ""
|
default_value = ""
|
||||||
reference_type = "std::string &"
|
reference_type = "std::string &"
|
||||||
@ -719,6 +764,13 @@ class BytesType(TypeInfo):
|
|||||||
f" }}"
|
f" }}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dump_content(self) -> str:
|
||||||
|
o = f'out.append(" {self.name}: ");\n'
|
||||||
|
o += self.dump(f"this->{self.field_name}") + "\n"
|
||||||
|
o += 'out.append("\\n");'
|
||||||
|
return o
|
||||||
|
|
||||||
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
||||||
return f"ProtoSize::add_bytes_field(total_size, {self.calculate_field_id_size()}, this->{self.field_name}_len_);"
|
return f"ProtoSize::add_bytes_field(total_size, {self.calculate_field_id_size()}, this->{self.field_name}_len_);"
|
||||||
|
|
||||||
@ -729,6 +781,10 @@ class BytesType(TypeInfo):
|
|||||||
class FixedArrayBytesType(TypeInfo):
|
class FixedArrayBytesType(TypeInfo):
|
||||||
"""Special type for fixed-size byte arrays."""
|
"""Special type for fixed-size byte arrays."""
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def can_use_dump_field(cls) -> bool:
|
||||||
|
return False
|
||||||
|
|
||||||
def __init__(self, field: descriptor.FieldDescriptorProto, size: int) -> None:
|
def __init__(self, field: descriptor.FieldDescriptorProto, size: int) -> None:
|
||||||
super().__init__(field)
|
super().__init__(field)
|
||||||
self.array_size = size
|
self.array_size = size
|
||||||
@ -778,6 +834,13 @@ class FixedArrayBytesType(TypeInfo):
|
|||||||
o = f"out.append(format_hex_pretty({name}, {name}_len));"
|
o = f"out.append(format_hex_pretty({name}, {name}_len));"
|
||||||
return o
|
return o
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dump_content(self) -> str:
|
||||||
|
o = f'out.append(" {self.name}: ");\n'
|
||||||
|
o += f"out.append(format_hex_pretty(this->{self.field_name}, this->{self.field_name}_len));\n"
|
||||||
|
o += 'out.append("\\n");'
|
||||||
|
return o
|
||||||
|
|
||||||
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
||||||
# Use the actual length stored in the _len field
|
# Use the actual length stored in the _len field
|
||||||
length_field = f"this->{self.field_name}_len"
|
length_field = f"this->{self.field_name}_len"
|
||||||
@ -850,6 +913,10 @@ class EnumType(TypeInfo):
|
|||||||
o = f"out.append(proto_enum_to_string<{self.cpp_type}>({name}));"
|
o = f"out.append(proto_enum_to_string<{self.cpp_type}>({name}));"
|
||||||
return o
|
return o
|
||||||
|
|
||||||
|
def dump_field_value(self, value: str) -> str:
|
||||||
|
# Enums need explicit cast for the template
|
||||||
|
return f"static_cast<{self.cpp_type}>({value})"
|
||||||
|
|
||||||
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
def get_size_calculation(self, name: str, force: bool = False) -> str:
|
||||||
return self._get_simple_size_calculation(
|
return self._get_simple_size_calculation(
|
||||||
name, force, "add_enum_field", f"static_cast<uint32_t>({name})"
|
name, force, "add_enum_field", f"static_cast<uint32_t>({name})"
|
||||||
@ -947,6 +1014,27 @@ class SInt64Type(TypeInfo):
|
|||||||
return self.calculate_field_id_size() + 3 # field ID + 3 bytes typical varint
|
return self.calculate_field_id_size() + 3 # field ID + 3 bytes typical varint
|
||||||
|
|
||||||
|
|
||||||
|
def _generate_array_dump_content(
|
||||||
|
ti, field_name: str, name: str, is_bool: bool = False
|
||||||
|
) -> str:
|
||||||
|
"""Generate dump content for array types (repeated or fixed array).
|
||||||
|
|
||||||
|
Shared helper to avoid code duplication between RepeatedTypeInfo and FixedArrayRepeatedType.
|
||||||
|
"""
|
||||||
|
o = f"for (const auto {'' if is_bool else '&'}it : {field_name}) {{\n"
|
||||||
|
# Check if underlying type can use dump_field
|
||||||
|
if type(ti).can_use_dump_field():
|
||||||
|
# For types that have dump_field overloads, use them with extra indent
|
||||||
|
o += f' dump_field(out, "{name}", {ti.dump_field_value("it")}, 4);\n'
|
||||||
|
else:
|
||||||
|
# For complex types (messages, bytes), use the old pattern
|
||||||
|
o += f' out.append(" {name}: ");\n'
|
||||||
|
o += indent(ti.dump("it")) + "\n"
|
||||||
|
o += ' out.append("\\n");\n'
|
||||||
|
o += "}"
|
||||||
|
return o
|
||||||
|
|
||||||
|
|
||||||
class FixedArrayRepeatedType(TypeInfo):
|
class FixedArrayRepeatedType(TypeInfo):
|
||||||
"""Special type for fixed-size repeated fields using std::array.
|
"""Special type for fixed-size repeated fields using std::array.
|
||||||
|
|
||||||
@ -1013,12 +1101,9 @@ class FixedArrayRepeatedType(TypeInfo):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def dump_content(self) -> str:
|
def dump_content(self) -> str:
|
||||||
o = f"for (const auto &it : this->{self.field_name}) {{\n"
|
return _generate_array_dump_content(
|
||||||
o += f' out.append(" {self.name}: ");\n'
|
self._ti, f"this->{self.field_name}", self.name, is_bool=False
|
||||||
o += indent(self._ti.dump("it")) + "\n"
|
)
|
||||||
o += ' out.append("\\n");\n'
|
|
||||||
o += "}\n"
|
|
||||||
return o
|
|
||||||
|
|
||||||
def dump(self, name: str) -> str:
|
def dump(self, name: str) -> str:
|
||||||
# This is used when dumping the array itself (not its elements)
|
# This is used when dumping the array itself (not its elements)
|
||||||
@ -1144,12 +1229,9 @@ class RepeatedTypeInfo(TypeInfo):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def dump_content(self) -> str:
|
def dump_content(self) -> str:
|
||||||
o = f"for (const auto {'' if self._ti_is_bool else '&'}it : this->{self.field_name}) {{\n"
|
return _generate_array_dump_content(
|
||||||
o += f' out.append(" {self.name}: ");\n'
|
self._ti, f"this->{self.field_name}", self.name, is_bool=self._ti_is_bool
|
||||||
o += indent(self._ti.dump("it")) + "\n"
|
)
|
||||||
o += ' out.append("\\n");\n'
|
|
||||||
o += "}\n"
|
|
||||||
return o
|
|
||||||
|
|
||||||
def dump(self, _: str):
|
def dump(self, _: str):
|
||||||
pass
|
pass
|
||||||
@ -1647,10 +1729,8 @@ def build_message_type(
|
|||||||
dump_impl += f" {dump[0]} "
|
dump_impl += f" {dump[0]} "
|
||||||
else:
|
else:
|
||||||
dump_impl += "\n"
|
dump_impl += "\n"
|
||||||
dump_impl += " __attribute__((unused)) char buffer[64];\n"
|
dump_impl += f' MessageDumpHelper helper(out, "{desc.name}");\n'
|
||||||
dump_impl += f' out.append("{desc.name} {{\\n");\n'
|
|
||||||
dump_impl += indent("\n".join(dump)) + "\n"
|
dump_impl += indent("\n".join(dump)) + "\n"
|
||||||
dump_impl += ' out.append("}");\n'
|
|
||||||
else:
|
else:
|
||||||
o2 = f'out.append("{desc.name} {{}}");'
|
o2 = f'out.append("{desc.name} {{}}");'
|
||||||
if len(dump_impl) + len(o2) + 3 < 120:
|
if len(dump_impl) + len(o2) + 3 < 120:
|
||||||
@ -1937,8 +2017,8 @@ def build_service_message_type(
|
|||||||
case += "#endif\n"
|
case += "#endif\n"
|
||||||
case += f"this->{func}(msg);\n"
|
case += f"this->{func}(msg);\n"
|
||||||
case += "break;"
|
case += "break;"
|
||||||
# Store the ifdef with the case for later use
|
# Store the message name and ifdef with the case for later use
|
||||||
RECEIVE_CASES[id_] = (case, ifdef)
|
RECEIVE_CASES[id_] = (case, ifdef, mt.name)
|
||||||
|
|
||||||
# Only close ifdef if we opened it
|
# Only close ifdef if we opened it
|
||||||
if ifdef is not None:
|
if ifdef is not None:
|
||||||
@ -2007,6 +2087,90 @@ static inline void append_quoted_string(std::string &out, const StringRef &ref)
|
|||||||
out.append("'");
|
out.append("'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Common helpers for dump_field functions
|
||||||
|
static inline void append_field_prefix(std::string &out, const char *field_name, int indent) {
|
||||||
|
out.append(indent, ' ').append(field_name).append(": ");
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void append_with_newline(std::string &out, const char *str) {
|
||||||
|
out.append(str);
|
||||||
|
out.append("\\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// RAII helper for message dump formatting
|
||||||
|
class MessageDumpHelper {
|
||||||
|
public:
|
||||||
|
MessageDumpHelper(std::string &out, const char *message_name) : out_(out) {
|
||||||
|
out_.append(message_name);
|
||||||
|
out_.append(" {\\n");
|
||||||
|
}
|
||||||
|
~MessageDumpHelper() { out_.append(" }"); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string &out_;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Helper functions to reduce code duplication in dump methods
|
||||||
|
static void dump_field(std::string &out, const char *field_name, int32_t value, int indent = 2) {
|
||||||
|
char buffer[64];
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
snprintf(buffer, 64, "%" PRId32, value);
|
||||||
|
append_with_newline(out, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dump_field(std::string &out, const char *field_name, uint32_t value, int indent = 2) {
|
||||||
|
char buffer[64];
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
snprintf(buffer, 64, "%" PRIu32, value);
|
||||||
|
append_with_newline(out, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dump_field(std::string &out, const char *field_name, float value, int indent = 2) {
|
||||||
|
char buffer[64];
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
snprintf(buffer, 64, "%g", value);
|
||||||
|
append_with_newline(out, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dump_field(std::string &out, const char *field_name, double value, int indent = 2) {
|
||||||
|
char buffer[64];
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
snprintf(buffer, 64, "%g", value);
|
||||||
|
append_with_newline(out, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dump_field(std::string &out, const char *field_name, uint64_t value, int indent = 2) {
|
||||||
|
char buffer[64];
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
snprintf(buffer, 64, "%llu", value);
|
||||||
|
append_with_newline(out, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dump_field(std::string &out, const char *field_name, bool value, int indent = 2) {
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
out.append(YESNO(value));
|
||||||
|
out.append("\\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dump_field(std::string &out, const char *field_name, const std::string &value, int indent = 2) {
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
out.append("'").append(value).append("'");
|
||||||
|
out.append("\\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dump_field(std::string &out, const char *field_name, StringRef value, int indent = 2) {
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
append_quoted_string(out, value);
|
||||||
|
out.append("\\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
static void dump_field(std::string &out, const char *field_name, T value, int indent = 2) {
|
||||||
|
append_field_prefix(out, field_name, indent);
|
||||||
|
out.append(proto_enum_to_string<T>(value));
|
||||||
|
out.append("\\n");
|
||||||
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
content += "namespace enums {\n\n"
|
content += "namespace enums {\n\n"
|
||||||
@ -2203,10 +2367,11 @@ static const char *const TAG = "api.service";
|
|||||||
hpp += " void read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) override;\n"
|
hpp += " void read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) override;\n"
|
||||||
out = f"void {class_name}::read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) {{\n"
|
out = f"void {class_name}::read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) {{\n"
|
||||||
out += " switch (msg_type) {\n"
|
out += " switch (msg_type) {\n"
|
||||||
for i, (case, ifdef) in cases:
|
for i, (case, ifdef, message_name) in cases:
|
||||||
if ifdef is not None:
|
if ifdef is not None:
|
||||||
out += f"#ifdef {ifdef}\n"
|
out += f"#ifdef {ifdef}\n"
|
||||||
c = f" case {i}: {{\n"
|
|
||||||
|
c = f" case {message_name}::MESSAGE_TYPE: {{\n"
|
||||||
c += indent(case, " ") + "\n"
|
c += indent(case, " ") + "\n"
|
||||||
c += " }"
|
c += " }"
|
||||||
out += c + "\n"
|
out += c + "\n"
|
||||||
@ -2263,19 +2428,16 @@ static const char *const TAG = "api.service";
|
|||||||
else:
|
else:
|
||||||
check_func = "this->check_connection_setup_()"
|
check_func = "this->check_connection_setup_()"
|
||||||
|
|
||||||
body = f"if ({check_func}) {{\n"
|
|
||||||
|
|
||||||
# Add the actual handler code, indented
|
|
||||||
handler_body = ""
|
|
||||||
if is_void:
|
if is_void:
|
||||||
handler_body = f"this->{func}(msg);\n"
|
# For void methods, just wrap with auth check
|
||||||
|
body = f"if ({check_func}) {{\n"
|
||||||
|
body += f" this->{func}(msg);\n"
|
||||||
|
body += "}\n"
|
||||||
else:
|
else:
|
||||||
handler_body = f"if (!this->send_{func}_response(msg)) {{\n"
|
# For non-void methods, combine auth check and send response check
|
||||||
handler_body += " this->on_fatal_error();\n"
|
body = f"if ({check_func} && !this->send_{func}_response(msg)) {{\n"
|
||||||
handler_body += "}\n"
|
body += " this->on_fatal_error();\n"
|
||||||
|
body += "}\n"
|
||||||
body += indent(handler_body) + "\n"
|
|
||||||
body += "}\n"
|
|
||||||
else:
|
else:
|
||||||
# No auth check needed, just call the handler
|
# No auth check needed, just call the handler
|
||||||
body = ""
|
body = ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user