mirror of
				https://github.com/esphome/esphome.git
				synced 2025-11-04 09:01:49 +00:00 
			
		
		
		
	Merge branch 'integration' into memory_api
This commit is contained in:
		
										
											
												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,11 +617,9 @@ 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) {
 | 
				
			||||||
  if (this->check_authenticated_()) {
 | 
					  if (this->check_authenticated_()) {
 | 
				
			||||||
@@ -650,11 +648,9 @@ 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
 | 
				
			||||||
void APIServerConnection::on_execute_service_request(const ExecuteServiceRequest &msg) {
 | 
					void APIServerConnection::on_execute_service_request(const ExecuteServiceRequest &msg) {
 | 
				
			||||||
@@ -665,11 +661,9 @@ 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
 | 
				
			||||||
#ifdef USE_BUTTON
 | 
					#ifdef USE_BUTTON
 | 
				
			||||||
@@ -858,11 +852,9 @@ 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
 | 
				
			||||||
#ifdef USE_BLUETOOTH_PROXY
 | 
					#ifdef USE_BLUETOOTH_PROXY
 | 
				
			||||||
@@ -889,11 +881,9 @@ 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
 | 
				
			||||||
#ifdef USE_VOICE_ASSISTANT
 | 
					#ifdef USE_VOICE_ASSISTANT
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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,18 +2428,15 @@ 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 += indent(handler_body) + "\n"
 | 
					 | 
				
			||||||
                body += "}\n"
 | 
					                body += "}\n"
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            # No auth check needed, just call the handler
 | 
					            # No auth check needed, just call the handler
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user