Skip to content

Commit

Permalink
use fixed-size buffers for whitelist and action messages
Browse files Browse the repository at this point in the history
  • Loading branch information
yoziru committed Aug 1, 2024
1 parent 3652acd commit 524f1d1
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 21 deletions.
12 changes: 6 additions & 6 deletions examples/simple/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ int main()
LOG_DEBUG("Private key length: %d\n", private_key_length);
LOG_DEBUG("Private key: %s", bytes_to_hex_string(private_key_buffer, private_key_length).c_str());

unsigned char whitelist_message_buffer[client.MAX_BLE_MESSAGE_SIZE];
unsigned char whitelist_message_buffer[VCSEC_ToVCSECMessage_size];
size_t whitelist_message_length;
// support for wake command added to CHARGING_MANAGER_ROLE in 2024.20.x (not sure?)
// https://github.com/teslamotors/vehicle-command/issues/232#issuecomment-2181503570
Expand Down Expand Up @@ -121,7 +121,7 @@ int main()

// build wake command
LOG_INFO("Building wake command");
unsigned char action_message_buffer[client.MAX_BLE_MESSAGE_SIZE];
unsigned char action_message_buffer[UniversalMessage_RoutableMessage_size];
size_t action_message_buffer_length = 0;
return_code = client.buildVCSECActionMessage(VCSEC_RKEAction_E_RKE_ACTION_WAKE_VEHICLE, action_message_buffer, &action_message_buffer_length);
if (return_code != 0)
Expand All @@ -134,7 +134,7 @@ int main()

// build information request status
LOG_INFO("Building information request status");
pb_byte_t info_request_status_buffer[client.MAX_BLE_MESSAGE_SIZE];
pb_byte_t info_request_status_buffer[UniversalMessage_RoutableMessage_size];
size_t info_request_status_length = 0;
return_code = client.buildVCSECInformationRequestMessage(VCSEC_InformationRequestType_INFORMATION_REQUEST_TYPE_GET_STATUS, info_request_status_buffer, &info_request_status_length);
if (return_code != 0)
Expand Down Expand Up @@ -197,7 +197,7 @@ int main()
client.setConnectionID(connection_id);

LOG_INFO("Building charging amps message");
pb_byte_t charging_amps_message_buffer[client.MAX_BLE_MESSAGE_SIZE];
pb_byte_t charging_amps_message_buffer[UniversalMessage_RoutableMessage_size];
size_t charging_amps_message_length;
return_code = client.buildChargingAmpsMessage(12, charging_amps_message_buffer, &charging_amps_message_length);
if (return_code != 0)
Expand All @@ -209,7 +209,7 @@ int main()
LOG_INFO("ChargingAmpsMessage hex: %s", bytes_to_hex_string(charging_amps_message_buffer, charging_amps_message_length).c_str());

LOG_INFO("Set charging limit message");
pb_byte_t charging_limit_message_buffer[client.MAX_BLE_MESSAGE_SIZE];
pb_byte_t charging_limit_message_buffer[UniversalMessage_RoutableMessage_size];
size_t charging_limit_message_length;
return_code = client.buildChargingSetLimitMessage(95, charging_limit_message_buffer, &charging_limit_message_length);
if (return_code != 0)
Expand All @@ -221,7 +221,7 @@ int main()
LOG_INFO("ChargingSetLimitMessage hex: %s", bytes_to_hex_string(charging_limit_message_buffer, charging_limit_message_length).c_str());

LOG_INFO("Turn on HVAC limit message");
pb_byte_t hvac_on_message_buffer[client.MAX_BLE_MESSAGE_SIZE];
pb_byte_t hvac_on_message_buffer[UniversalMessage_RoutableMessage_size];
size_t hvac_on_message_length;
return_code = client.buildHVACMessage(true, hvac_on_message_buffer, &hvac_on_message_length);
if (return_code != 0)
Expand Down
2 changes: 0 additions & 2 deletions include/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@ namespace TeslaBLE
mbedtls_ctr_drbg_free(drbg_context_.get());
}

static const int MAX_BLE_MESSAGE_SIZE = 1024;

int createPrivateKey();

void setVIN(const char *vin);
Expand Down
26 changes: 13 additions & 13 deletions src/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ namespace TeslaBLE
payload.sub_message.WhitelistOperation = whitelist;

// printf("Encoding whitelist message\n");
pb_byte_t payload_buffer[80];
pb_byte_t payload_buffer[VCSEC_UnsignedMessage_size];
size_t payload_length;
int return_code = pb_encode_fields(payload_buffer, &payload_length, VCSEC_UnsignedMessage_fields, &payload);
if (return_code != 0)
Expand All @@ -278,7 +278,7 @@ namespace TeslaBLE
vcsec_message.signedMessage = signed_message;

// printf("Encoding VCSEC to VCSEC message\n");
pb_byte_t vcsec_encode_buffer[86];
pb_byte_t vcsec_encode_buffer[VCSEC_ToVCSECMessage_size];
size_t vcsec_encode_buffer_size;
return_code = pb_encode_fields(vcsec_encode_buffer, &vcsec_encode_buffer_size, VCSEC_ToVCSECMessage_fields, &vcsec_message);
if (return_code != 0)
Expand Down Expand Up @@ -565,7 +565,7 @@ namespace TeslaBLE
}
memcpy(universal_message.uuid, uuid, sizeof(uuid));

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
size_t universal_encode_buffer_size = UniversalMessage_RoutableMessage_size;
pb_byte_t universal_encode_buffer[universal_encode_buffer_size];
int return_code = pb_encode_fields(universal_encode_buffer, &universal_encode_buffer_size, UniversalMessage_RoutableMessage_fields, &universal_message);
if (return_code != 0)
Expand All @@ -592,7 +592,7 @@ namespace TeslaBLE
size_t *output_length,
bool encryptPayload)
{
pb_byte_t payload_buffer[100];
pb_byte_t payload_buffer[VCSEC_UnsignedMessage_size];
size_t payload_length;
// printf("message: %p\n", message);
// printf("message.which_sub_message: %d\n", message->which_sub_message);
Expand All @@ -619,7 +619,7 @@ namespace TeslaBLE
payload.which_sub_message = VCSEC_UnsignedMessage_InformationRequest_tag;
payload.sub_message.InformationRequest = informationRequest;

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
size_t universal_encode_buffer_size = UniversalMessage_RoutableMessage_size;
pb_byte_t universal_encode_buffer[universal_encode_buffer_size];
int status = this->buildUnsignedMessagePayload(&payload, universal_encode_buffer, &universal_encode_buffer_size, false);
if (status != 0)
Expand All @@ -636,7 +636,7 @@ namespace TeslaBLE
pb_byte_t *output_buffer,
size_t *output_length)
{
pb_byte_t payload_buffer[100];
pb_byte_t payload_buffer[UniversalMessage_RoutableMessage_size];
size_t payload_length = 0;
int return_code = pb_encode_fields(payload_buffer, &payload_length, CarServer_Action_fields, action);
if (return_code != 0)
Expand Down Expand Up @@ -669,7 +669,7 @@ namespace TeslaBLE
action.which_action_msg = CarServer_Action_vehicleAction_tag;
action.action_msg.vehicleAction = *vehicle_action;

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
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)
Expand All @@ -696,7 +696,7 @@ namespace TeslaBLE
vehicle_action.vehicle_action_msg.setChargingAmpsAction = set_charging_amps_action;
action.action_msg.vehicleAction = vehicle_action;

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
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)
Expand All @@ -723,7 +723,7 @@ namespace TeslaBLE
vehicle_action.vehicle_action_msg.chargingSetLimitAction = charging_set_limit_action;
action.action_msg.vehicleAction = vehicle_action;

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
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)
Expand Down Expand Up @@ -758,7 +758,7 @@ namespace TeslaBLE
vehicle_action.vehicle_action_msg.chargingStartStopAction = vehicle_action_msg;
action.action_msg.vehicleAction = vehicle_action;

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
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)
Expand All @@ -785,7 +785,7 @@ namespace TeslaBLE
vehicle_action.vehicle_action_msg.hvacAutoAction = vehicle_action_msg;
action.action_msg.vehicleAction = vehicle_action;

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
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)
Expand All @@ -805,7 +805,7 @@ namespace TeslaBLE
unsigned_message.which_sub_message = VCSEC_UnsignedMessage_RKEAction_tag;
unsigned_message.sub_message.RKEAction = action;

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
size_t universal_encode_buffer_size = UniversalMessage_RoutableMessage_size;
pb_byte_t universal_encode_buffer[universal_encode_buffer_size];
int status = this->buildUnsignedMessagePayload(&unsigned_message, universal_encode_buffer, &universal_encode_buffer_size, true);
if (status != 0)
Expand Down Expand Up @@ -837,7 +837,7 @@ namespace TeslaBLE
unsigned_message.which_sub_message = VCSEC_UnsignedMessage_InformationRequest_tag;
unsigned_message.sub_message.InformationRequest = information_request;

size_t universal_encode_buffer_size = this->MAX_BLE_MESSAGE_SIZE - 2;
size_t universal_encode_buffer_size = UniversalMessage_RoutableMessage_size;
pb_byte_t universal_encode_buffer[universal_encode_buffer_size];
int status = this->buildUnsignedMessagePayload(&unsigned_message, universal_encode_buffer, &universal_encode_buffer_size, false);
if (status != 0)
Expand Down

0 comments on commit 524f1d1

Please sign in to comment.