From 879c37e668d2afd3671af4baa67408cf95d36c3d Mon Sep 17 00:00:00 2001 From: Herr Frei Date: Sat, 7 Dec 2024 19:54:47 +0100 Subject: [PATCH] Added buildSentrySwitchMessage() (#15) --- include/client.h | 5 +++++ src/client.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/include/client.h b/include/client.h index 97cfb74..fed6921 100644 --- a/include/client.h +++ b/include/client.h @@ -168,6 +168,11 @@ namespace TeslaBLE pb_byte_t *output_buffer, size_t *output_length); + int buildSentrySwitchMessage( + bool isOn, + pb_byte_t *output_buffer, + size_t *output_length); + Peer *getPeer(UniversalMessage_Domain domain) { if (domain == UniversalMessage_Domain_DOMAIN_VEHICLE_SECURITY) diff --git a/src/client.cpp b/src/client.cpp index a236bae..6b44334 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -775,6 +775,33 @@ namespace TeslaBLE return 0; } + int Client::buildSentrySwitchMessage(bool isOn, + pb_byte_t *output_buffer, + size_t *output_length) + { + CarServer_Action action = CarServer_Action_init_default; + action.which_action_msg = CarServer_Action_vehicleAction_tag; + + CarServer_VehicleAction vehicle_action = CarServer_VehicleAction_init_default; + vehicle_action.which_vehicle_action_msg = CarServer_VehicleAction_vehicleControlSetSentryModeAction_tag; + CarServer_VehicleControlSetSentryModeAction vehicle_action_msg = CarServer_VehicleControlSetSentryModeAction_init_default; + vehicle_action_msg.on = isOn; + vehicle_action.vehicle_action_msg.vehicleControlSetSentryModeAction = vehicle_action_msg; + action.action_msg.vehicleAction = vehicle_action; + + size_t universal_encode_buffer_size = UniversalMessage_RoutableMessage_size; + pb_byte_t universal_encode_buffer[universal_encode_buffer_size]; + int status = this->buildCarServerActionPayload(&action, universal_encode_buffer, &universal_encode_buffer_size); + if (status != 0) + { + LOG_ERROR("Failed to build car action message"); + return status; + } + this->prependLength(universal_encode_buffer, universal_encode_buffer_size, + output_buffer, output_length); + return 0; + } + int Client::buildHVACMessage(bool isOn, pb_byte_t *output_buffer, size_t *output_length)