Wired in teng low and high in config and wired in command handler

This commit is contained in:
2026-03-27 23:37:35 +01:00
parent 618ed9a19f
commit 812f391042
5 changed files with 67 additions and 0 deletions

View File

@@ -37,6 +37,8 @@ enum task_type : uint8_t {
TASK_CONFIG_CFG_RESET,
TASK_CONFIG_VBAT_CAL_SET,
TASK_CONFIG_VBAT_SET_LOW,
TASK_CONFIG_TENG_SET_LOW,
TASK_CONFIG_TENG_SET_HIGH,
TASK_BATTERY_CAL,
TASK_ALL_CONFIG_UPDATED,
};

View File

@@ -13,6 +13,8 @@ struct vehicle_config{
bool track_slot_occupied[8] = {false};
double vbat_calibration = 0;
double vbat_low = 0;
double teng_low = 0;
double teng_high = 0;
};
struct lat_lng {

View File

@@ -120,6 +120,14 @@ cmd::command_id cmd::parse_command_name(const char *input) {
return CMD_BATTERY_SET_LOW;
}
if (strcmp(input, "THERMO_SET_LOW") == 0) {
return CMD_THERMO_SET_LOW;
}
if (strcmp(input, "THERMO_SET_HIGH") == 0) {
return CMD_THERMO_SET_HIGH;
}
return CMD_UNKNOWN;
}
@@ -436,6 +444,48 @@ int cmd::handle_battery_set_low(unsigned short argc, char* argv[]) {
return 0;
}
int cmd::handle_thermo_set_low(unsigned short argc, char* argv[]) {
if (argc != 2) {
#ifdef ERROR
if (_logger != nullptr) {
_logger->error("THERMO_SET_LOW expects 1 argument");
}
#endif
return 1;
}
double low = strtod(argv[1], nullptr);
uint32_t task_data;
memcpy(&task_data, &low, sizeof(uint32_t));
#ifdef INFO
if (_logger != nullptr) {
_logger->info("Setting low level for TENG");
}
#endif
router::send(MOD_CFG, TASK_CONFIG_TENG_SET_LOW, task_data);
return 0;
}
int cmd::handle_thermo_set_high(unsigned short argc, char* argv[]) {
if (argc != 2) {
#ifdef ERROR
if (_logger != nullptr) {
_logger->error("THERMO_SET_HIGH expects 1 argument");
}
#endif
return 1;
}
double low = strtod(argv[1], nullptr);
uint32_t task_data;
memcpy(&task_data, &low, sizeof(uint32_t));
#ifdef INFO
if (_logger != nullptr) {
_logger->info("Setting high level for TENG");
}
#endif
router::send(MOD_CFG, TASK_CONFIG_TENG_SET_LOW, task_data);
return 0;
}
int cmd::handle_unknown_command(unsigned short argc, char *argv[]) {
#ifdef ERROR
if (_logger != nullptr) {
@@ -487,6 +537,12 @@ int cmd::dispatch_command(command_id command, unsigned short argc, char *argv[])
case CMD_BATTERY_SET_LOW:
return this->handle_battery_set_low(argc, argv);
case CMD_THERMO_SET_LOW:
return this->handle_thermo_set_low(argc, argv);
case CMD_THERMO_SET_HIGH:
return this->handle_thermo_set_high(argc, argv);
case CMD_UNKNOWN:
default:
return this->handle_unknown_command(argc, argv);

View File

@@ -28,6 +28,8 @@ private:
CMD_BATTERY_CAL,
CMD_BATTERY_PRINT_VBAT,
CMD_BATTERY_SET_LOW,
CMD_THERMO_SET_LOW,
CMD_THERMO_SET_HIGH,
};
HardwareSerial *_data_stream;
@@ -59,6 +61,8 @@ private:
int handle_battery_cal(unsigned short argc, char *argv[]);
int handle_battery_print_vbat(unsigned short argc);
int handle_battery_set_low(unsigned short argc, char *argv[]);
int handle_thermo_set_low(unsigned short argc, char *argv[]);
int handle_thermo_set_high(unsigned short argc, char *argv[]);
int handle_unknown_command(unsigned short argc, char *argv[]);
public:

View File

@@ -53,6 +53,9 @@ int system_logger::dump_config() {
this->info("\tVBAT cal factor: " + String(temp.vbat_calibration, 6));
this->info("\tVBAT low: " + String(temp.vbat_low, 2));
this->info("\tTENG low: " + String(temp.teng_low, 2));
this->info("\tTENG high: " + String(temp.teng_high, 2));
// Track slots (one per line)
for (size_t i = 0; i < 8; i++) {