diff --git a/ArbiterCommand.c b/ArbiterCommand.c index d7a9564..0788252 100644 --- a/ArbiterCommand.c +++ b/ArbiterCommand.c @@ -11,6 +11,8 @@ #include #include "dig_pot.h" +uint64_t StatLIN4[LIN4_SENSOR_COUNT]; +tDRS_Stat StatLIN5[LIN5_SENSOR_COUNT]; //начало ------------------------------Отправка без подтверждения------------------------------------------------------- //начало ------------------------------Отправка без подтверждения------------------------------------------------------- @@ -289,8 +291,7 @@ setResistanceInit(tTaskSerial *env, char *name, int16_t temperature, const Table * @param vdd Напряжение питания датчика (В) * @return float Сопротивление R1 (Ом), или 0.0f если делитель не нужен */ -float calculate_r1_for_pressure_atm(float p_atm, float r2, float vref, float vdd) -{ +float calculate_r1_for_pressure_atm(float p_atm, float r2, float vref, float vdd) { // Переводим давление в кгс/см² float p_kgf = p_atm * ATM_TO_KGF_CM2; @@ -310,13 +311,13 @@ float calculate_r1_for_pressure_atm(float p_atm, float r2, float vref, float vdd static bool setPressure(tTaskSerial *env, char *name, - tSensorType sensorType, - tSensorAdr sensorAdr1, tSensorAdr sensorAdr2) { + tSensorType sensorType, + tSensorAdr sensorAdr1, tSensorAdr sensorAdr2) { char *start = env->At.rxBuffer.data + strlen(name); int16_t pressure = atoi(start); - uint32_t r1 = (uint32_t)calculate_r1_for_pressure_atm((float)pressure / 10, 51000.0f, 4.96f, 5.0f); + uint32_t r1 = (uint32_t) calculate_r1_for_pressure_atm((float) pressure / 10, 51000.0f, 4.96f, 5.0f); uint8_t step100; uint8_t step10; @@ -333,10 +334,10 @@ setPressure(tTaskSerial *env, char *name, static bool setPressureInit(tTaskSerial *env, char *name, int16_t pressure, - tSensorType sensorType, - tSensorAdr sensorAdr1, tSensorAdr sensorAdr2) { + tSensorType sensorType, + tSensorAdr sensorAdr1, tSensorAdr sensorAdr2) { - uint32_t r1 = (uint32_t)calculate_r1_for_pressure_atm((float)pressure / 10, 51000.0f, 4.96f, 5.0f); + uint32_t r1 = (uint32_t) calculate_r1_for_pressure_atm((float) pressure / 10, 51000.0f, 4.96f, 5.0f); uint8_t step100; uint8_t step10; @@ -534,19 +535,18 @@ void SerialCommand_Scheduler(tTaskSerial *env) { } - if (AtCmdRxBeginWithStatic(&env->At, "Incar_FL")) { - setResistance(env, "Incar_FL", incar_lookup_table_20000, size_incar_lookup_table_20000, - SENSOR_TYPE_D, - SENSOR_ADR_1, - SENSOR_ADR_2); + setResistance(env, "Incar_FL", incar_lookup_table_20000, size_incar_lookup_table_20000, + SENSOR_TYPE_D, + SENSOR_ADR_1, + SENSOR_ADR_2); } if (AtCmdRxBeginWithStatic(&env->At, "Incar_RL")) { setResistance(env, "Incar_RL", incar_lookup_table_20000, size_incar_lookup_table_20000, - SENSOR_TYPE_D, - SENSOR_ADR_5, - SENSOR_ADR_6); + SENSOR_TYPE_D, + SENSOR_ADR_5, + SENSOR_ADR_6); } if (AtCmdRxBeginWithStatic(&env->At, "Incar_FR")) { @@ -570,6 +570,211 @@ void SerialCommand_Scheduler(tTaskSerial *env) { SENSOR_ADR_9, SENSOR_ADR_10); } + + + //----------------------------------------------tAirQS_Stat----------------------------------------------------- + //----------------------------------------------tAirQS_Stat----------------------------------------------------- + //----------------------------------------------tAirQS_Stat----------------------------------------------------- + + if (AtCmdRxBeginWithStatic(&env->At, "AirQS_LinRespErr_Stat")) { + env->c_AirQS_Stat->AirQS_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_LinRespErr_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "AirQS_Sens_Stat")) { + env->c_AirQS_Stat->AirQS_Sens_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_Sens_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "AirQS_Combined_Stat")) { + env->c_AirQS_Stat->AirQS_Combined_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_Combined_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "AirQS_Err_Stat")) { + env->c_AirQS_Stat->AirQS_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_Err_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "AirQS_COLvl_Stat")) { + env->c_AirQS_Stat->AirQS_COLvl_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_COLvl_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "AirQS_NOxLvl_Stat")) { + env->c_AirQS_Stat->AirQS_NOxLvl_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_NOxLvl_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "AirQS_NH3Lvl_Stat")) { + env->c_AirQS_Stat->AirQS_NH3Lvl_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_NH3Lvl_Stat") - 1); + } + + //----------------------------------------------tAroma_Stat----------------------------------------------------- + //----------------------------------------------tAroma_Stat----------------------------------------------------- + //----------------------------------------------tAroma_Stat----------------------------------------------------- + if (AtCmdRxBeginWithStatic(&env->At, "Aroma_LinRespErr_Stat")) { + env->c_Aroma_Stat->Aroma_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_LinRespErr_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "Aroma_CartridgeSw_Stat")) { + env->c_Aroma_Stat->Aroma_CartridgeSw_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_CartridgeSw_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "Aroma_Err_Stat")) { + env->c_Aroma_Stat->Aroma_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_Err_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "Aroma_Intens_Stat")) { + env->c_Aroma_Stat->Aroma_Intens_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_Intens_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "Aroma_CartridgeFlavor_Stat")) { + env->c_Aroma_Stat->Aroma_CartridgeFlavor_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_CartridgeFlavor_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "Aroma_CartridgeCapacity_Stat")) { + env->c_Aroma_Stat->Aroma_CartridgeCapacity_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_CartridgeCapacity_Stat") - 1); + } + + //----------------------------------------------tIonizer_Stat----------------------------------------------------- + //----------------------------------------------tIonizer_Stat----------------------------------------------------- + //----------------------------------------------tIonizer_Stat----------------------------------------------------- + if (AtCmdRxBeginWithStatic(&env->At, "Ionizer_LinRespErr_Stat")) { + env->c_Ionizer_Stat->Ionizer_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("Ionizer_LinRespErr_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "Ionizer_Err_Stat")) { + env->c_Ionizer_Stat->Ionizer_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("Ionizer_Err_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "Ionizer_Ionization_Stat")) { + env->c_Ionizer_Stat->Ionizer_Ionization_Stat = atoi(env->At.rxBuffer.data + sizeof("Ionizer_Ionization_Stat") - 1); + } + + //----------------------------------------------teTXV_fHVAC_Stat----------------------------------------------------- + //----------------------------------------------teTXV_fHVAC_Stat----------------------------------------------------- + //----------------------------------------------teTXV_fHVAC_Stat----------------------------------------------------- + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_Pos_Stat")) { + env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_Pos_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_Pos_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_LinRespErr_Stat")) { + env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_LinRespErr_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_Err_Stat")) { + env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_Err_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_Pressure_Val")) { + env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_Pressure_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_Pressure_Val") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_Temp_Val")) { + env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_Temp_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_Temp_Val") - 1) + 40; + } + + //----------------------------------------------teTXV_rHVAC_Stat----------------------------------------------------- + //----------------------------------------------teTXV_rHVAC_Stat----------------------------------------------------- + //----------------------------------------------teTXV_rHVAC_Stat----------------------------------------------------- + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_Pos_Stat")) { + env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_Pos_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_Pos_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_LinRespErr_Stat")) { + env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_LinRespErr_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_Err_Stat")) { + env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_Err_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_Pressure_Val")) { + env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_Pressure_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_Pressure_Val") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_Temp_Val")) { + env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_Temp_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_Temp_Val") - 1) + 40; + } + + + //----------------------------------------------teTXV_batChiller_Stat----------------------------------------------------- + //----------------------------------------------teTXV_batChiller_Stat----------------------------------------------------- + //----------------------------------------------teTXV_batChiller_Stat----------------------------------------------------- + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_Pos_Stat")) { + env->c_teTXV_batChiller_Stat->eTXV_batChiller_Pos_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_Pos_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_LinRespErr_Stat")) { + env->c_teTXV_batChiller_Stat->eTXV_batChiller_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_LinRespErr_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_Err_Stat")) { + env->c_teTXV_batChiller_Stat->eTXV_batChiller_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_Err_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_Pressure_Val")) { + env->c_teTXV_batChiller_Stat->eTXV_batChiller_Pressure_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_Pressure_Val") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_Temp_Val")) { + env->c_teTXV_batChiller_Stat->eTXV_batChiller_Temp_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_Temp_Val") - 1) + 40; + } + + + //----------------------------------------------teTXV_eeChiller_Stat----------------------------------------------------- + //----------------------------------------------teTXV_eeChiller_Stat----------------------------------------------------- + //----------------------------------------------teTXV_eeChiller_Stat----------------------------------------------------- + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_Pos_Stat")) { + env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_Pos_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_Pos_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_LinRespErr_Stat")) { + env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_LinRespErr_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_Err_Stat")) { + env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_Err_Stat") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_Pressure_Val")) { + env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_Pressure_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_Pressure_Val") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_Temp_Val")) { + env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_Temp_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_Temp_Val") - 1) + 40; + } + + //---------------------------------------------------LIN5------------------------------------------------------- + //---------------------------------------------------LIN5------------------------------------------------------- + //---------------------------------------------------LIN5------------------------------------------------------- + if (AtCmdRxBeginWithStatic(&env->At, "DRS_DL_Btn")) { + env->c_DRS_Stat[0]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_DL_Btn") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "DRS_DR_Btn")) { + env->c_DRS_Stat[1]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_DR_Btn") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "DRS_FPL_Btn")) { + env->c_DRS_Stat[2]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_FPL_Btn") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "DRS_FPR_Btn")) { + env->c_DRS_Stat[3]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_FPR_Btn") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "DRS_RLB_Btn")) { + env->c_DRS_Stat[4]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_RLB_Btn") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "DRS_RRB_Btn")) { + env->c_DRS_Stat[5]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_RRB_Btn") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "DRS_FCL_Btn")) { + env->c_DRS_Stat[6]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_FCL_Btn") - 1); + } + + if (AtCmdRxBeginWithStatic(&env->At, "DRS_FCR_Btn")) { + env->c_DRS_Stat[7]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_FCR_Btn") - 1); + } + } @@ -612,6 +817,19 @@ void TaskSerialUSB1_Init(tTaskSerial *env, 2000, 2000 ); + env->c_AirQS_Stat = (tAirQS_Stat *)&StatLIN4[0]; + env->c_Aroma_Stat = (tAroma_Stat *)&StatLIN4[1]; + env->c_Ionizer_Stat = (tIonizer_Stat *)&StatLIN4[2]; + env->c_teTXV_fHVAC_Stat = (teTXV_fHVAC_Stat *)&StatLIN4[3]; + env->c_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *)&StatLIN4[4]; + env->c_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *)&StatLIN4[5]; + env->c_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *)&StatLIN4[6]; + + for (uint8_t i=0; ic_DRS_Stat[i] = &StatLIN5[i]; + } + + InitThreadAtrStatic(&env->thread.attr, "SerialUSB1", env->thread.controlBlock, env->thread.stack, osPriorityNormal); } @@ -689,7 +907,7 @@ static _Noreturn void Serial_USB1_Thread(tTaskSerial *env) { SENSOR_ADR_7, SENSOR_ADR_8); - setPressureInit(env, "Pressure", pressure, + setPressureInit(env, "Pressure", pressure, SENSOR_TYPE_D, SENSOR_ADR_9, SENSOR_ADR_10); diff --git a/ArbiterCommand.h b/ArbiterCommand.h index 7de6513..e613110 100644 --- a/ArbiterCommand.h +++ b/ArbiterCommand.h @@ -10,12 +10,14 @@ #include "AtCmdCommon.h" #include "CanSerialPortFrame.h" #include "SensorSPI.h" +#include "Lin_4_5_SensorTasks.h" typedef enum { FROM_USB1, FROM_USB2 } tFrom_usb; + typedef struct { tSerialPortFrameIO *ioCAN; @@ -79,11 +81,20 @@ typedef struct { osThreadAttr_t attr; } thread; + tAirQS_Stat *c_AirQS_Stat; + tAroma_Stat *c_Aroma_Stat; + tIonizer_Stat *c_Ionizer_Stat; + teTXV_fHVAC_Stat *c_teTXV_fHVAC_Stat; + teTXV_rHVAC_Stat *c_teTXV_rHVAC_Stat; + teTXV_batChiller_Stat *c_teTXV_batChiller_Stat; + teTXV_eeChiller_Stat *c_teTXV_eeChiller_Stat; + + tDRS_Stat *c_DRS_Stat[LIN5_SENSOR_COUNT]; + } tTaskSerial; - typedef struct { tSerialPortFrameIO *ioCAN; tSerialPortIO *ioUSB; @@ -119,10 +130,10 @@ void TaskSerialUSB1_StartThread(tTaskSerial *env); void TaskSerialUSB2_Init(tTaskSerial *env, tFrom_usb from_usb, - tSerialPortIO *ioUSB2, - tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, - tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, - tTaskSerialToCanSpontany *TaskSerialToCanSpontany, + tSerialPortIO *ioUSB2, + tTaskSerialToCanCyclic *TaskSerialToCanCyclic0, + tTaskSerialToCanCyclic *TaskSerialToCanCyclic1, + tTaskSerialToCanSpontany *TaskSerialToCanSpontany, tSensorSPI *sensorSPI ); @@ -152,10 +163,6 @@ void TaskSerialToCanSpontany_Init(tTaskSerialToCanSpontany *env, void TaskSerialToCanSpontany_StartThread(tTaskSerialToCanSpontany *env); - - - - void Task_RECEIVED_SerialUSB1_Init(tTaskReceivedSerial *env, tSerialPortFrameIO *ioCAN, tFrom_usb from_usb1, @@ -164,16 +171,12 @@ void Task_RECEIVED_SerialUSB1_Init(tTaskReceivedSerial *env, void Task_RECEIVED_SerialUSB1_StartThread(tTaskReceivedSerial *env); - void Task_RECEIVED_SerialUSB2_Init(tTaskReceivedSerial *env, - tSerialPortFrameIO *ioCAN, - tFrom_usb from_usb2, - tSerialPortIO *ioUSB2); + tSerialPortFrameIO *ioCAN, + tFrom_usb from_usb2, + tSerialPortIO *ioUSB2); void Task_RECEIVED_SerialUSB2_StartThread(tTaskReceivedSerial *env); - - - #endif //HVAC_DEV_ARBITERCOMMAND_H