---fix no flashing bug...

This commit is contained in:
Yunhorn 2024-08-12 18:40:02 +08:00
parent 6a30d6bf18
commit 4b46039979
4 changed files with 134 additions and 73 deletions

View File

@ -223,19 +223,27 @@
//#define YUNHORN_STS_M10_LORA_APP_DATA_PORT 9U
//#define YUNHORN_STS_M10_LORA_APP_HTBT_PORT 9U
#define STS_IOC_IN_0 ((uint8_t)0x01) /* I/O Control sensor 1 */
#define STS_IOC_IN_1 ((uint8_t)0x02) /* I/O Control sensor 2 */
#define STS_IOC_IN_2 ((uint8_t)0x04) /* I/O Control sensor 3 */
#define STS_IOC_IN_3 ((uint8_t)0x08) /* I/O Control sensor 4 */
#define STS_IOC_IN_0 ((uint8_t)0x01) /* I/O Control sensor 1 */ // HALL-1
#define STS_IOC_IN_1 ((uint8_t)0x02) /* I/O Control sensor 2 */ // HALL-2
#define STS_IOC_IN_2 ((uint8_t)0x04) /* I/O Control sensor 3 */ // MOTION-1
#define STS_IOC_IN_3 ((uint8_t)0x08) /* I/O Control sensor 4 */ // HALL-4
#define STS_IOC_OUT_0 ((uint8_t)0x10) /* I/O Control out interface 1 */
#define STS_IOC_OUT_1 ((uint8_t)0x20) /* I/O Control out interface 2 */
#define STS_IOC_OUT_2 ((uint8_t)0x40) /* I/O Control out interface 3 */
#define STS_IOC_OUT_3 ((uint8_t)0x80) /* I/O Control out interface 4 */
#define STS_IOC_MASK (0xFFu) /* I/O Control mask */
#define STS_IOC_MASK_ALL (0xFF) /* I/O Control mask */
#define STS_IOC_MASK_NONE (0x00) /* NONE enabled */
#define STS_IOC_IN_ALL (STS_IOC_IN_0|STS_IOC_IN_1 |STS_IOC_IN_2 |STS_IOC_IN_3)
#define STS_IOC_OUT_ALL (STS_IOC_OUT_0|STS_IOC_OUT_1|STS_IOC_OUT_2|STS_IOC_OUT_3)
#define IS_STS_LAMP_BAR_OUTPUT_ENABLE STS_IOC_OUT_0
#define IS_STS_RS485_OUTPUT_ENABLE STS_IOC_OUT_1
#define STS_IOC_MODE_0_MASK STS_IOC_OUT_0 //NETWOR MODE, NO ON-BOARD INTERFACE, OUT LAMP BAR ENABLED
#define STS_IOC_MODE_1_MASK STS_IOC_IN_1 //WIRED MODE, ONE ON-BOARD INTEFACE ENABLE, NO LAMP BAR
#define STS_IOC_MODE_2_MASK STS_IOC_IN_0|STS_IOC_IN_1 //REEDSWITCH MODE, ONE ON-BOARD INTERFACE ENABLED, LAMP BAR ENABLED
#define STS_IOC_MODE_3_MASK STS_IOC_IN_2|STS_IOC_IN_1|STS_IOC_OUT_0 // RSS MODE, ONE ON-BOARD INTERFACE MOTION ENABLED, LAMP BAR ENABLED
#define STS_IOC_MODE_4_MASK STS_IOC_IN_0|STS_IOC_IN_1|STS_IOC_IN_2|STS_IOC_OUT_0|STS_IOC_OUT_1 //DUAL MODE
#define STS_IOC_MODE_5_MASK STS_IOC_IN_ALL|STS_IOC_OUT_ALL //UNI_MODE
#define MajorVer 24U
#define MinorVer 8U

View File

@ -169,7 +169,8 @@ void STS_Lamp_Bar_Refresh(void)
void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum)
{
if (sts_lamp_color <=8)
{
switch (sts_lamp_color)
{
case STS_DARK:
@ -196,31 +197,11 @@ void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum)
case STS_WHITE:
STS_Lamp_Bar_Set_RGB_Color(lum, lum, lum);
break;
case STS_COLOR_MAX:
sts_lamp_bar_color = STS_RED_BLUE;
break;
case STS_GREENDARK:
sts_lamp_bar_color = STS_GREEN_DARK;
break;
case STS_REDDARK:
sts_lamp_bar_color = STS_RED_DARK;
break;
case STS_REDBLUE:
sts_lamp_bar_color = STS_RED_BLUE;
break;
case STS_BLUEDARK:
sts_lamp_bar_color = STS_BLUE_DARK;
break;
case STS_REDGREEN:
sts_lamp_bar_color = STS_RED_GREEN;
break;
case STS_BLUEGREEN:
sts_lamp_bar_color = STS_BLUE_GREEN;
break;
}
}
}
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
__HAL_TIM_SetCompare(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL,0);

View File

@ -479,8 +479,9 @@ void STS_Combined_Status_Processing(void)
switch (sts_work_mode)
{
case STS_NETWORK_MODE:
sts_status_color = sts_cloud_netcolor+0x30;
sts_lamp_bar_color = sts_cloud_netcolor+0x30;
sts_status_color = sts_cloud_netcolor;
sts_lamp_bar_color = sts_cloud_netcolor;
break;
case STS_WIRED_MODE: // NO LAMP BAR FOR THOSE WATER LEAKAGE SENSOR OR SOAP CAPACITY SENSORS
sts_status_color = STS_DARK;
@ -848,7 +849,7 @@ void STS_PRESENCE_SENSOR_Init(void)
APP_LOG(TS_ON, VLEVEL_M, "##### YunHorn SmarToilets(r) Presence Sensor Started\r\n");
sts_o7_sensorData.workmode = (uint8_t)sts_work_mode; //STS_DUAL_MODE;
//sts_o7_sensorData.lamp_bar_color = (uint8_t)STS_GREEN;
sts_o7_sensorData.lamp_bar_color = (uint8_t)STS_GREEN;
sts_o7_sensorData.battery_Pct = 99;
sts_o7_sensorData.dutycycletimelevel = 1;
sts_o7_sensorData.event_sensor1_start_time = 0;

View File

@ -83,6 +83,7 @@ volatile uint8_t upload_message_timer=0;
volatile uint8_t heart_beat_timer =0;
volatile uint32_t wcnt=0;
volatile bool p2_work_finished=true;
extern volatile uint8_t luminance_level;
uint8_t outbuf[255]={0x0};
volatile static bool r_b=true;
volatile sts_cfg_nvm_t sts_cfg_nvm = {
@ -613,7 +614,7 @@ void LoRaWAN_Init(void)
UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL);
UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL);
UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL);
UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSLampBarColorTimerEvent, NULL);
UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSLampBarColorTimerEvent, NULL);
UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL);
if (FLASH_IF_Init(NULL) != FLASH_IF_OK)
@ -939,7 +940,7 @@ static void SendTxData(void)
} else if (sts_work_mode == STS_UNI_MODE)
{
AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_DATA_PORT;
} else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE))
} else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE))
{
AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_DATA_PORT;
}
@ -953,7 +954,7 @@ static void SendTxData(void)
AppData.Port = (uint8_t)YUNHORN_STS_O6_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
else if (sts_work_mode == STS_UNI_MODE)
AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE))
else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE))
AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
//AppData.Port = (uint8_t)sts_sendhtbtport; //LORAWAN_USER_APP_PORT+1;
@ -1161,15 +1162,23 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
//uint8_t lum=DEFAULT_LUMINANCE_LEVEL;
//HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */
//if ((sts_work_mode != STS_WIRED_MODE))
uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x07;
uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x0f;
#if 0
luminance_level += 10;
luminance_level %= 60;
luminance_level = MAX(10,luminance_level);
#endif
//if (STSLampBarColorTimer.IsRunning)
{
UTIL_TIMER_Stop(&STSLampBarColorTimer);
if (high4==0)
{
if (last_sts_lamp_bar_color != sts_lamp_bar_color)
//if (last_sts_lamp_bar_color != sts_lamp_bar_color)
{
__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, DEFAULT_LUMINANCE_LEVEL);
__enable_irq();
//__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level);
//__enable_irq();
//STS_WS2812B_Refresh();
last_sts_lamp_bar_color = sts_lamp_bar_color;
}
@ -1178,22 +1187,25 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
if (r_b)
{
//__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(high4, DEFAULT_LUMINANCE_LEVEL);
STS_Lamp_Bar_Set_STS_RGB_Color(high4, luminance_level);
//__enable_irq();
last_sts_lamp_bar_color = high4;
//last_sts_lamp_bar_color = high4;
//STS_WS2812B_Refresh();
}
else {
//__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(low4, DEFAULT_LUMINANCE_LEVEL);
STS_Lamp_Bar_Set_STS_RGB_Color(low4, luminance_level);
//__enable_irq();
last_sts_lamp_bar_color = low4;
//last_sts_lamp_bar_color = low4;
//STS_WS2812B_Refresh();
}
r_b = !r_b;
}
UTIL_TIMER_Start(&STSLampBarColorTimer);
}
}
static void OnYunhornSTSDurationCheckTimerEvent(void *context)
@ -1419,21 +1431,23 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
if (STS_LoRa_WAN_Joined)
{
heart_beat_timer = 1;
//SendTxData();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
SendTxData();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
//UTIL_TIMER_Start(&TxTimer);
//UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
STS_SENSOR_Distance_Test_Process();
APP_LOG(TS_OFF, VLEVEL_H, "\r\nRSS Measured Distance=[%u] mm \r\n", (uint16_t)sts_distance_rss_distance);
}
/* USER CODE END OnJoinRequest_1 */
@ -2278,7 +2292,40 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
if (sts_work_mode == STS_NETWORK_MODE)
{ //network mode
sts_cloud_netcolor = (uint8_t)(tlv_buf[CFG_CMD5]-0x30);
APP_LOG(TS_OFF, VLEVEL_L, "\r\n Cloud Color Set to %u = %02X \r\n", sts_cloud_netcolor, (uint8_t)tlv_buf[CFG_CMD5]);
if (sts_cloud_netcolor == STS_COLOR_MAX) sts_cloud_netcolor = STS_RED_BLUE;
else if (sts_cloud_netcolor > STS_COLOR_MAX)
{
#if 1
switch((uint8_t)tlv_buf[CFG_CMD5])
{
case STS_GREENDARK:
sts_lamp_bar_color = STS_GREEN_DARK;
sts_cloud_netcolor = STS_GREEN_DARK;
break;
case STS_REDDARK:
sts_lamp_bar_color = STS_RED_DARK;
sts_cloud_netcolor = STS_RED_DARK;
break;
case STS_REDBLUE:
sts_lamp_bar_color = STS_RED_BLUE;
sts_cloud_netcolor = STS_RED_BLUE;
break;
case STS_BLUEDARK:
sts_lamp_bar_color = STS_BLUE_DARK;
sts_cloud_netcolor = STS_BLUE_DARK;
break;
case STS_REDGREEN:
sts_lamp_bar_color = STS_RED_GREEN;
sts_cloud_netcolor = STS_RED_GREEN;
break;
case STS_BLUEGREEN:
sts_lamp_bar_color = STS_BLUE_GREEN;
sts_cloud_netcolor = STS_BLUE_GREEN;
break;
}
}
#endif
APP_LOG(TS_OFF, VLEVEL_L, "\r\n Cloud Color Set to 0X%02X \r\n",sts_cloud_netcolor);
}
sts_service_mask = STS_SERVICE_MASK_L0;
@ -2382,9 +2429,33 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
//sts_service_mask = STS_SERVICE_MASK_L0;
//sts_lamp_bar_color = STS_GREEN;
switch (sts_work_mode) {
case STS_NETWORK_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_0_MASK;
break;
case STS_WIRED_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_1_MASK;
break;
case STS_REEDSWITCH_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_2_MASK;
break;
case STS_RSS_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_3_MASK;
break;
case STS_DUAL_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_4_MASK;
break;
case STS_UNI_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_5_MASK;
break;
default:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MASK_NONE;
break;
}
sts_cfg_nvm.work_mode = (uint8_t)sts_work_mode;
if (sts_work_mode == STS_UNI_MODE) {
sts_presence_fall_detection=TRUE;
} else {
sts_presence_fall_detection=FALSE;
}