Работает:
- переделан ROM, теперь это 64-битное число, а не массив - при замене датчиков на другие с уже записанной локацией - они автоматически определяются и подключаются в нужные структуры - если что-то не определилось, то можно переписать локацию датчика через элементы в структуре UnknownSensors
This commit is contained in:
@@ -34,7 +34,7 @@ HAL_StatusTypeDef PCHSens_FindUnknownSensors(OneWire_t *onewire, PCHSens_Unknown
|
||||
if(result != HAL_OK)
|
||||
__NOP();
|
||||
|
||||
if((IS_REG_PCH_LOCATION(location) == 0) ||
|
||||
if((IS_REG_SENS_LOCATION(location) == 0) ||
|
||||
(IS_REG_PCH_LOCATION(location) == 0) ||
|
||||
(IS_REG_PCH_NUMB(location) == 0) )
|
||||
{
|
||||
@@ -182,15 +182,17 @@ HAL_StatusTypeDef PCHSens_ReadTemperature(PCHSens_ModuleTypeDef *module)
|
||||
|
||||
result = Dallas_ReadTemperature(&module->sens2.sens);
|
||||
if(result != HAL_OK)
|
||||
PCHSens_CheckSensor(module->onewire, &module->sens1);
|
||||
PCHSens_CheckSensor(module->onewire, &module->sens2);
|
||||
|
||||
result = Dallas_ReadTemperature(&module->sens3.sens);
|
||||
if(result != HAL_OK)
|
||||
PCHSens_CheckSensor(module->onewire, &module->sens1);
|
||||
PCHSens_CheckSensor(module->onewire, &module->sens3);
|
||||
|
||||
result = Dallas_ReadTemperature(&module->sens4.sens);
|
||||
if(result != HAL_OK)
|
||||
PCHSens_CheckSensor(module->onewire, &module->sens1);
|
||||
PCHSens_CheckSensor(module->onewire, &module->sens4);
|
||||
|
||||
PCHSens_DefineUnknownSensor(&UnknownSensors, NULL);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -216,7 +218,7 @@ HAL_StatusTypeDef PCHSens_CheckSensor(OneWire_t *onewire, PCHSens_SensorTypeDef*
|
||||
}
|
||||
else
|
||||
{
|
||||
sensor->not_found = 0;
|
||||
sensor->not_found = 0;
|
||||
}
|
||||
}
|
||||
return HAL_OK;
|
||||
@@ -226,16 +228,30 @@ HAL_StatusTypeDef PCHSens_CheckSensor(OneWire_t *onewire, PCHSens_SensorTypeDef*
|
||||
HAL_StatusTypeDef PCHSens_DefineUnknownSensor(PCHSens_UnknownSensorsTypeDef *unknowns, PCHSens_SensorTypeDef *sensor)
|
||||
{
|
||||
HAL_StatusTypeDef result;
|
||||
if(unknowns->UnknownCnt == 0)
|
||||
return HAL_OK;
|
||||
// if(unknowns->UnknownCnt == 0)
|
||||
// return HAL_OK;
|
||||
|
||||
if((unknowns->ROMtoDefine != NULL) && (unknowns->LocationtoDefine.all != NULL))
|
||||
if((unknowns->ROMtoDefine != NULL) && (unknowns->LocationtoDefine.all != NULL) && (unknowns->senstoDefine != NULL))
|
||||
{
|
||||
result = PCHSens_InitNewSensor(unknowns->onewire, sensor, unknowns->ROMtoDefine, unknowns->LocationtoDefine.all);
|
||||
result = PCHSens_InitNewSensor(unknowns->onewire, unknowns->senstoDefine, unknowns->ROMtoDefine, unknowns->LocationtoDefine.all);
|
||||
unknowns->ROMtoDefine = 0;
|
||||
unknowns->LocationtoDefine.all = 0;
|
||||
unknowns->senstoDefine = 0;
|
||||
return result;
|
||||
}
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
HAL_StatusTypeDef PCHSens_FullDeInitSensor(PCHSens_SensorTypeDef *sensor)
|
||||
{
|
||||
HAL_StatusTypeDef result;
|
||||
// if(unknowns->UnknownCnt == 0)
|
||||
// return HAL_OK;
|
||||
|
||||
result = PCHSens_InitNewSensor(sensor->onewire, sensor, unknowns->ROMtoDefine, unknowns->LocationtoDefine.all);
|
||||
return result;
|
||||
}
|
||||
|
||||
void PCHSens_FirstInit(void)
|
||||
{
|
||||
int init_find = 0;
|
||||
@@ -249,6 +265,7 @@ void PCHSens_FirstInit(void)
|
||||
PCHSens_InitModule(&OW, &module1, REG_PCH_NUMB_11|REG_PCH_DIODE_NUMB_1, init_find);
|
||||
|
||||
PCHSens_FindUnknownSensors(&OW, &UnknownSensors);
|
||||
PCHSens_DefineUnknownSensor(&UnknownSensors, NULL);
|
||||
// Dallas_SensorInitByInd(&OW, &AllSens.outdoor, 0);
|
||||
// Dallas_SensorInitByInd(&OW, &AllSens.indoor, 2);
|
||||
// Dallas_SensorInitByInd(&OW, &AllSens.bathroom, 1);
|
||||
|
||||
Reference in New Issue
Block a user