Nuevas variables a telemetría añadidas

This commit is contained in:
adrigongv23 2026-07-22 12:14:10 +02:00
parent ec5895f827
commit 5738a6c7d7
4 changed files with 79 additions and 33 deletions

View file

@ -6,6 +6,12 @@
#include "../include/can.hpp"
// Volcado en crudo de TODOS los mensajes del bus, a la velocidad a la que
// llegan. Satura los 115200 baudios y frena la tarea de escucha, asi que solo
// debe activarse para depurar el bus. Con esto a 1 no se leen las lineas
// [TRAMA n] del data_processor, que son las utiles para localizar canales
#define VOLCADO_CRUDO_CAN 0
static bool driver_installed = false;
void CAN::start() {
@ -174,36 +180,44 @@ void CAN::listen() {
}
if (all_zeros) {
#if VOLCADO_CRUDO_CAN
Serial.println("Ignoring message with all zero data");
#endif
taskYIELD();
continue;
}
#if VOLCADO_CRUDO_CAN
if (message.extd) {
Serial.println("Extended Format");
} else {
Serial.println("Standard Format");
}
Serial.printf("ID: %lx\nByte:", message.identifier);
for (int i = 0; i < message.data_length_code && !(message.rtr); i++) {
Serial.printf(" %d = %02x,", i, message.data[i]);
}
Serial.println("");
#endif
if (!(message.rtr)) {
for (int i = 0; i < message.data_length_code; i++) {
Serial.printf(" %d = %02x,", i, message.data[i]);
}
Serial.println("");
// Send to data processor based on first byte (maintaining original logic)
switch (message.data[0]) {
case 0:
_data_processor->send_serial_frame_0(message.data[1], message.data[2], message.data[3], message.data[4], message.data[5], message.data[6], message.data[7]);
break;
case 1:
//_data_processor->send_serial_frame_1(message.data[1], message.data[2], message.data[3], message.data[4], message.data[5], message.data[6], message.data[7]);
_data_processor->send_serial_frame_1(message.data[1], message.data[2], message.data[3], message.data[4], message.data[5], message.data[6], message.data[7]);
break;
case 2:
//_data_processor->send_serial_frame_2(message.data[1], message.data[2], message.data[3], message.data[4], message.data[5], message.data[6], message.data[7]);
break;
case 3:
//_data_processor->send_serial_frame_3(message.data[1], message.data[2], message.data[3], message.data[4], message.data[5], message.data[6], message.data[7]);
_data_processor->send_serial_frame_2(message.data[1], message.data[2], message.data[3], message.data[4], message.data[5], message.data[6], message.data[7]);
break;
case 3:
_data_processor->send_serial_frame_3(message.data[1], message.data[2], message.data[3], message.data[4], message.data[5], message.data[6], message.data[7]);
break;
case 4:
_data_processor->send_serial_frame_4(message.data[1], message.data[2], message.data[3], message.data[4], message.data[5], message.data[6], message.data[7]);
break;
default:
break;
}

View file

@ -1,5 +1,6 @@
#include "../include/data_processor.hpp"
char* DataProcessor::process(std::vector<float> data) {
// Implementación del procesamiento de datos si es necesario
return nullptr; // Placeholder
@ -14,40 +15,47 @@ void DataProcessor::send_serial(byte type, unsigned int value) {
Serial.write(dato, 8); //Se envía serialmente el mensaje, indicando su longituden bytes para ello.
}
/*
this->current_marcha_value
this->current_pcomb_value
this->current_taceite_value
this->current_paceite_value
this->current_map_value
this->current_lambda_value
this->current_lambda_obj_value
*/
//RPM + TPS + vBatt + ECT
void DataProcessor::send_serial_frame_0(int rpmh, int rpml, int tpsh, int tpsl, int vbatth, int vbattl, int ect){
//Calculos necesarios para obtener bien el formato de los valores necesarios
int rpm = (rpmh * 256) + rpml;
double vbatt = ((vbatth * 256) + vbattl) / 100.0;
Serial.println("send_serial_frame_0");
int tps = (tpsh * 256) + tpsl;
// Actualizamos las variables globales para que puedan ser leidas por el protocolo UDP
this->current_ect_value = ect;
this->current_ect_value = ect;
this->current_rpm_value = rpm;
this->current_vbatt_value = vbatt;
Serial.printf("CAN RX -> ECT: %d | RPM: %d | BATT: %.1f \n", ect, rpm, vbatt);;
this->current_tps_value = tps;
}
//LAMB + LAMBTRG + FUEL + GEAR
void DataProcessor::send_serial_frame_1(int lmbh, int lmbl, int lmbth, int lmbtl, int fuelh, int fuell, int gear){
}
void DataProcessor::send_serial_frame_2(int shut, int fan, int lmbch, int lmbcl, int brakeh, int brakel, int aux1){
}
void DataProcessor::send_serial_frame_3(int aux3, int aux4, int aux5, int aux6, int aux7, int aux8, int dig1){
}
void DataProcessor::send_serial_frame_4(int dig3, int dig4, int dig5, int dig6, int dig7, int dig8, int dig9){
}