add thermal detect tag for upload
This commit is contained in:
parent
429c373f47
commit
41ff95d980
|
@ -256,9 +256,9 @@
|
|||
|
||||
|
||||
|
||||
#define MajorVer 23U
|
||||
#define MinorVer 12U
|
||||
#define SubMinorVer 13U
|
||||
#define MajorVer 24U
|
||||
#define MinorVer 01U
|
||||
#define SubMinorVer 10U
|
||||
#define FirmwareVersion 3U
|
||||
#define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U
|
||||
#define YUNHORN_STS_AC_CODE_SIZE 20U
|
||||
|
|
|
@ -244,8 +244,10 @@ typedef struct
|
|||
#if defined(YUNHORN_STS_M1A_ENABLED)
|
||||
typedef struct
|
||||
{
|
||||
uint8_t thermalDetectTag; /* 0x01 water detect, 0x02 human detect */
|
||||
uint16_t waterSpillCount; /* count of water spillage */
|
||||
uint16_t humanSpotCount; /* count of human body spot */
|
||||
uint8_t detectedEvent; /* detected Event, 1: true, 0:false */
|
||||
float averageTemp; /* 0-120 C */
|
||||
float maxTemp; /* 0-120 C */
|
||||
float minTemp; /* 0-120 C */
|
||||
|
|
|
@ -881,30 +881,33 @@ static void SendTxData(void)
|
|||
// AppData.Buffer[i++] = (uint8_t)(r0_data.battery_mV)&0xff; //#13
|
||||
#endif
|
||||
#ifdef STS_TMG
|
||||
AppData.Buffer[i++] = (uint8_t)(14)&0xff; //#length of following bytes
|
||||
AppData.Buffer[i++] = (uint8_t)(17)&0xff; //#length of following bytes
|
||||
|
||||
APP_LOG(TS_OFF, VLEVEL_L, "\r\n------------- SPOT_CNT =%d \r\n", (m1a_data.spot_cnt));
|
||||
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.spot_cnt)&0xff; //#01
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.spillage_level)&0xff; //#02
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.thermalDetectTag)&0xff; //#01
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.detectedEvent)&0xff; //#02
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.spot_cnt)&0xff; //#03
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.spillage_level)&0xff; //#04
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.humanSpot_level)&0xff; //#05
|
||||
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.order[0])&0xff; //#03 non zero value is valid
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.order[1])&0xff; //#04
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.order[2])&0xff; //#05
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.order[3])&0xff; //#06
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.order[0])&0xff; //#06 non zero value is valid
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.order[1])&0xff; //#07
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.order[2])&0xff; //#08
|
||||
AppData.Buffer[i++] = (uint8_t)(m1a_data.order[3])&0xff; //#09
|
||||
|
||||
AppData.Buffer[i++] = (uint8_t)((int)m1a_data.minTemp)&0xff; //#7
|
||||
AppData.Buffer[i++] = (uint8_t)(((int)(m1a_data.minTemp*100))%100)&0xff; //#8
|
||||
AppData.Buffer[i++] = (uint8_t)((int)m1a_data.minTemp)&0xff; //#10
|
||||
AppData.Buffer[i++] = (uint8_t)(((int)(m1a_data.minTemp*100))%100)&0xff; //#11
|
||||
|
||||
AppData.Buffer[i++] = (uint8_t)((int)m1a_data.averageTemp)&0xff; //#9
|
||||
AppData.Buffer[i++] = (uint8_t)(((int)(m1a_data.averageTemp*100))%100)&0xff; //#10
|
||||
AppData.Buffer[i++] = (uint8_t)((int)m1a_data.averageTemp)&0xff; //#12
|
||||
AppData.Buffer[i++] = (uint8_t)(((int)(m1a_data.averageTemp*100))%100)&0xff; //#13
|
||||
|
||||
AppData.Buffer[i++] = (uint8_t)((int)m1a_data.maxTemp)&0xff; //#11
|
||||
AppData.Buffer[i++] = (uint8_t)(((int)(m1a_data.maxTemp*100))%100)&0xff; //#12
|
||||
AppData.Buffer[i++] = (uint8_t)((int)m1a_data.maxTemp)&0xff; //#14
|
||||
AppData.Buffer[i++] = (uint8_t)(((int)(m1a_data.maxTemp*100))%100)&0xff; //#15
|
||||
|
||||
|
||||
AppData.Buffer[i++] = (uint8_t)((int)m1a_data.centerTemp)&0xff; //#13
|
||||
AppData.Buffer[i++] = (uint8_t)(((int)(m1a_data.centerTemp*100))%100)&0xff; //#14
|
||||
AppData.Buffer[i++] = (uint8_t)((int)m1a_data.centerTemp)&0xff; //#16
|
||||
AppData.Buffer[i++] = (uint8_t)(((int)(m1a_data.centerTemp*100))%100)&0xff; //#17
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -198,7 +198,7 @@ static void sortFocusAreas(void)
|
|||
{
|
||||
float temp1=0.0;
|
||||
|
||||
if (maxTemp > humanTempThreshold)
|
||||
if ((maxTemp > humanTempThreshold)&&(thermalDetectTag==WATER_DETECT))
|
||||
{
|
||||
blackOutTag =1;
|
||||
} else
|
||||
|
@ -242,9 +242,11 @@ static void sortFocusAreas(void)
|
|||
|
||||
void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data)
|
||||
{
|
||||
m1a_data->thermalDetectTag = thermalDetectTag;
|
||||
|
||||
m1a_data->waterSpillCount = blackOutTag==0?waterSpillCount:0;
|
||||
m1a_data->humanSpotCount = humanSpotCount;
|
||||
|
||||
m1a_data->humanSpot_level = (uint8_t)((m1a_data->humanSpotCount)*99/768.0);
|
||||
m1a_data->spillage_level = (uint8_t)((m1a_data->waterSpillCount)*99/768.0); //((ROW-2)*(COL-2))); // (24-4) * (32 -4) minus edge dots
|
||||
m1a_data->averageTemp = averageTemp;
|
||||
|
@ -257,6 +259,9 @@ void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data)
|
|||
spot_cnt = max(v_water_cnt, h_water_cnt);
|
||||
m1a_data->spot_cnt = blackOutTag ==0? spot_cnt:0; //max(v_water_cnt, h_water_cnt);
|
||||
|
||||
// TODO XXXX for fall detection logic
|
||||
m1a_data->detectedEvent = (m1a_data->spot_cnt>0)? 1:0; //fall detection or water spillage detection result
|
||||
|
||||
uint8_t i=0;
|
||||
if ((spot_cnt != 0) && (blackOutTag == 0)) {
|
||||
bubbleSort((void *)upMask, 80, (void *)order);
|
||||
|
@ -276,20 +281,34 @@ void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data)
|
|||
|
||||
memcpy((void *)m1a_data->order, (const void *)order, sizeof(order));
|
||||
memset(tempBuffer,0x0,sizeof(tempBuffer));
|
||||
|
||||
sprintf(tempBuffer,(char *)"\r\n## Blackout=%u ######\n##Read Sensor Spot CNT=%4d (areas), \r\n Env_Temp =%2.2f C \r\n## V_cnt=%2d (lane) H_cnt=%2d (lane)\r\n## Spillage Level =%u %% \r\n## averageTempInner=%02.2f C averageTemp=%02.2f C, centerTemp=%2.2f C MinTemp=%2.2f C maxTemp=%2.2f C \r\n",
|
||||
(uint8_t)blackOutTag, (uint16_t)(m1a_data->waterSpillCount), (float)env_temperature, (int)v_water_cnt, (int)h_water_cnt, (uint8_t)(m1a_data->spillage_level), (float)averageTempInner, (float)averageTemp, (float)centerTemp, (float)minTemp, (float)maxTemp);
|
||||
APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer);
|
||||
sprintf(tempBuffer,(char *)"\r\n######## Gap_Average= %2.2f C Gap_Inner =%2.2f C\r\n",(float)(averageTemp - minTemp),(float)(averageTempInner - minTemp));
|
||||
APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer);
|
||||
|
||||
if ((m1a_data->spot_cnt !=0 ) && (blackOutTag == 0))
|
||||
if (thermalDetectTag == WATER_DETECT)
|
||||
{
|
||||
for (uint8_t i=0; i< 4; i++) {
|
||||
memset(tempBuffer,0x0,sizeof(tempBuffer));
|
||||
sprintf(tempBuffer, (char *) " Top {%2u} : order =%2u X=%2u : Y=%2u \r\n", (uint8_t)i, (int)(order[i]),
|
||||
(int)(order[i]%(10)), (int)(order[i]/10));
|
||||
APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer);
|
||||
sprintf(tempBuffer,(char *)"\r\n## Blackout=%u ######\n##Read Sensor Spot CNT=%4d (areas), \r\n Env_Temp =%2.2f C \r\n## V_cnt=%2d (lane) H_cnt=%2d (lane)\r\n## Spillage Level =%u %% \r\n## averageTempInner=%02.2f C averageTemp=%02.2f C, centerTemp=%2.2f C MinTemp=%2.2f C maxTemp=%2.2f C \r\n",
|
||||
(uint8_t)blackOutTag, (uint16_t)(m1a_data->waterSpillCount), (float)env_temperature, (int)v_water_cnt, (int)h_water_cnt, (uint8_t)(m1a_data->spillage_level), (float)averageTempInner, (float)averageTemp, (float)centerTemp, (float)minTemp, (float)maxTemp);
|
||||
|
||||
} else if (thermalDetectTag == HUMAN_DETECT)
|
||||
{
|
||||
sprintf(tempBuffer,(char *)"\r\n######Read Sensor Spot CNT=%4d (areas), \r\n Env_Temp =%2.2f C \r\n## V_cnt=%2d (lane) H_cnt=%2d (lane)\r\n## Spillage Level =%u %% \r\n## averageTempInner=%02.2f C averageTemp=%02.2f C, centerTemp=%2.2f C MinTemp=%2.2f C maxTemp=%2.2f C \r\n",
|
||||
(uint16_t)(m1a_data->humanSpotCount), (float)env_temperature, (int)v_water_cnt, (int)h_water_cnt, (uint8_t)(m1a_data->humanSpot_level), (float)averageTempInner, (float)averageTemp, (float)centerTemp, (float)minTemp, (float)maxTemp);
|
||||
|
||||
}
|
||||
|
||||
APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer);
|
||||
|
||||
sprintf(tempBuffer,(char *)"\r\n######## Gap_Average= %2.2f C Gap_Inner =%2.2f C\r\n ##### Thermal Detect Tag =%s \r\n Human Body Threshold=%2.2f C WaterThreshold=%2.2f C\r\n",(float)(averageTemp - minTemp),(float)(averageTempInner - minTemp), ((thermalDetectTag == WATER_DETECT)? "Water Detect":"Human Detect"), (float)humanTempThreshold, (float)(waterTempThreshold/10));
|
||||
APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer);
|
||||
|
||||
if ((m1a_data->spot_cnt !=0 ))
|
||||
{
|
||||
if ((blackOutTag == 0) || (thermalDetectTag == HUMAN_DETECT))
|
||||
{
|
||||
for (uint8_t i=0; i< 4; i++)
|
||||
{
|
||||
memset(tempBuffer,0x0,sizeof(tempBuffer));
|
||||
sprintf(tempBuffer, (char *) " Top {%2u} : order =%2u X=%2u : Y=%2u \r\n", (uint8_t)i, (int)(order[i]),
|
||||
(int)(order[i]%(10)), (int)(order[i]/10));
|
||||
APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -324,9 +343,12 @@ void mlx90640_display_process(void)
|
|||
spot_cnt /= DetectCycleCount ; //max(v_water_cnt, h_water_cnt);
|
||||
|
||||
|
||||
if (blackOutTag == 0)
|
||||
if ((blackOutTag == 0)&& (thermalDetectTag == WATER_DETECT))
|
||||
{
|
||||
APP_LOG(TS_OFF, VLEVEL_H, "Water Spill Detected Level = %u of 768 \r\n", (uint16_t)waterSpillCount);
|
||||
}
|
||||
else if (thermalDetectTag == HUMAN_DETECT)
|
||||
{
|
||||
APP_LOG(TS_OFF, VLEVEL_H, "Human Spot Detected Level = %u of 768 \r\n", (uint16_t)humanSpotCount);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue