542 lines
19 KiB
C
542 lines
19 KiB
C
#include "led_app.h"
|
||
|
||
#include "can_app.h"
|
||
#include "Com_Cfg.h"
|
||
#include "pwm_manage.h"
|
||
#include "Com.h"
|
||
#include "system_voltage_manage.h"
|
||
#include "system_voltage_manage_cfg.h"
|
||
#include "CanNm.h"
|
||
#include "common_memory.h"
|
||
#include "Com_Cfg.h"
|
||
#define LED_APP_TASK_PERIOD_TIME 5u
|
||
#define OTA_EXIT_DELAY_3S (3000u / LED_APP_TASK_PERIOD_TIME)
|
||
|
||
|
||
|
||
#define BACKGROUND_LIGHT_MOD_4G_49A_LOST_COMMUNICATION_3MIN (1000u * 60u * 3u / LED_APP_TASK_PERIOD_TIME)
|
||
#define BACKGROUND_LIGHT_METER_1_DIR_4BF_LOST_COMMUNICATION_2S (2000u / LED_APP_TASK_PERIOD_TIME)
|
||
|
||
#define BACKGROUND_LIGHT_LEVEL_INVALID 0u
|
||
#define BACKGROUND_LIGHT_LEVEL_1 1u
|
||
#define BACKGROUND_LIGHT_LEVEL_2 2u
|
||
#define BACKGROUND_LIGHT_LEVEL_3 3u
|
||
#define BACKGROUND_LIGHT_LEVEL_4 4u
|
||
#define BACKGROUND_LIGHT_LEVEL_5 5u
|
||
#define BACKGROUND_LIGHT_LEVEL_6 6u
|
||
#define BACKGROUND_LIGHT_LEVEL_7 7u
|
||
#define BACKGROUND_LIGHT_LEVEL_8 8u
|
||
#define BACKGROUND_LIGHT_LEVEL_9 9u
|
||
#define BACKGROUND_LIGHT_LEVEL_10 10u
|
||
#define BACKGROUND_LIGHT_LEVEL_11 11u
|
||
|
||
#define BACKGROUND_LIGHT_LEVEL_RESERVED 23u
|
||
|
||
#define BACKGROUND_LIGHT_LEVEL_MAX 11u
|
||
#define NUM_OF_BACKGROUND_LIGHT_LEVEL 12u
|
||
|
||
|
||
#define PICK_LIGHT_FAST_FLASH_PERIOD (380u / LED_APP_TASK_PERIOD_TIME)
|
||
#define PICK_LIGHT_FAST_FLASH_DUTY (200u / LED_APP_TASK_PERIOD_TIME)
|
||
|
||
#define PICK_LIGHT_SLOW_FLASH_PERIOD (750u / LED_APP_TASK_PERIOD_TIME)
|
||
#define PICK_LIGHT_SLOW_FLASH_DUTY (400u / LED_APP_TASK_PERIOD_TIME)
|
||
|
||
|
||
|
||
#define PICK_FUN_INACTIVE 0u
|
||
#define PICK_FUN_ACTIVE 1u
|
||
#define PICK_FUN_SECOND_ALARM 2u
|
||
#define PICK_FUN_THREE_ALARM 3u
|
||
|
||
const uint8_t background_light_level_tab[NUM_OF_BACKGROUND_LIGHT_LEVEL] =
|
||
{
|
||
0, 10, 16, 22, 28, 34, 40, 70, 80, 85, 90, 100
|
||
};
|
||
|
||
#define BACKGROUND_LIGHT_STEP_TIME_35MS (30u / LED_APP_TASK_PERIOD_TIME)
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t cur_level;
|
||
uint8_t duty;
|
||
uint16_t invalid_timer;
|
||
uint8_t ota_mod;
|
||
uint16_t ota_exit_delay;
|
||
uint32_t mod_4g_49a_lost_communication_timer;
|
||
uint8_t step_timer;
|
||
uint16_t meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer;
|
||
}app_background_light_type;
|
||
|
||
app_background_light_type app_background_light;
|
||
|
||
|
||
|
||
|
||
#define APP_PICK_LIGHT_STATE_IDLE 0u
|
||
#define APP_PICK_LIGHT_STATE_ON 1u
|
||
#define APP_PICK_LIGHT_STATE_SLOW_FLASH 2u
|
||
#define APP_PICK_LIGHT_STATE_FAST_FLASH 3u
|
||
|
||
#define APP_PICK_LIGHT_DAY_MOD 0u
|
||
#define APP_PICK_LIGHT_NIGHT_MOD 1u
|
||
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t timer;
|
||
uint8_t state;
|
||
uint8_t output;
|
||
uint8_t day_night_mod;
|
||
}app_pick_light_type;
|
||
|
||
app_pick_light_type app_pick_light;
|
||
|
||
|
||
void led_app_init(void)
|
||
{
|
||
common_memory_clear((uint8_t *)&app_background_light, sizeof(app_background_light));
|
||
common_memory_clear((uint8_t *)&app_pick_light, sizeof(app_pick_light));
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
}
|
||
|
||
uint8_t is_led_app_allow_sleep(void)
|
||
{
|
||
uint8_t ret = FALSE;
|
||
if((app_background_light.duty == (uint16_t)0))
|
||
{
|
||
ret = TRUE;
|
||
}
|
||
|
||
return (ret);
|
||
}
|
||
|
||
uint8_t pick_light_state_get(void)
|
||
{
|
||
uint8_t acc_mode_display1_29c_s;
|
||
uint8_t dnp_status_s;
|
||
uint8_t dnp_take_over_req_s;
|
||
uint8_t pick_light_state;
|
||
|
||
|
||
can_app_receive_signal(COM_RXSIGADS_ACC_MODE_DISPLAYL, &acc_mode_display1_29c_s);
|
||
can_app_receive_signal(COM_RXSIGADS_DNP_STATS, &dnp_status_s);
|
||
can_app_receive_signal(COM_RXSIGADS_DNP_TAKE_OVER_REQ_S, &dnp_take_over_req_s);
|
||
|
||
|
||
pick_light_state = PICK_FUN_INACTIVE;
|
||
/* ACC 功能未激活 */
|
||
if( ( (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_ACTIVE_CONTROL_MODE) \
|
||
&& (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_BRAKE_ONLY_MODE) \
|
||
&& (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_OVENIDE) \
|
||
&& (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_STAND_STILL_ACTIVE_MODE)\
|
||
&& (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_STAND_STILL_WAIT_MODE) ) \
|
||
/* LCC功能不可用*/
|
||
&& ((dnp_status_s == ADS_DNP_STATS_OFF) || (dnp_status_s == ADS_DNP_STATS_PASSIVE)) \
|
||
/* NOA 功能不可用 */
|
||
||((dnp_status_s == ADS_DNP_STATS_FAULT) || (dnp_status_s == ADS_DNP_STATS_FORBIDDEN)))
|
||
{
|
||
pick_light_state = PICK_FUN_INACTIVE;
|
||
}
|
||
/* ACC 功能激活 */
|
||
if ( (((acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_ACTIVE_CONTROL_MODE) \
|
||
|| (acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_BRAKE_ONLY_MODE) \
|
||
|| (acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_OVENIDE) \
|
||
|| (acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_STAND_STILL_ACTIVE_MODE)\
|
||
|| (acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_STAND_STILL_WAIT_MODE)) \
|
||
/*LCC 功能激活*/
|
||
|| ((dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE2) || (dnp_status_s == ADS_DNP_STATS_ILCA_ACTIVE) || (dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE1)) \
|
||
/* NOA 功能激活 */
|
||
|| ((dnp_status_s == ADS_DNP_STATS_DNP_ACTIVE))) && ((dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_INACTIVE))
|
||
)
|
||
{
|
||
pick_light_state = PICK_FUN_ACTIVE;
|
||
}
|
||
|
||
/*LCC 功能激活*/
|
||
if( (((dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE2) || (dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE1)) \
|
||
/* NOA 功能激活 */
|
||
|| ((dnp_status_s == ADS_DNP_STATS_DNP_ACTIVE)))
|
||
/* 触发一级接管请求 */
|
||
&& ((dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL1)))
|
||
{
|
||
pick_light_state = PICK_FUN_ACTIVE;
|
||
}
|
||
|
||
/*LCC 功能激活*/
|
||
if( (((dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE2) || (dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE1)) \
|
||
/* NOA 功能激活 */
|
||
|| ((dnp_status_s == ADS_DNP_STATS_DNP_ACTIVE)))
|
||
/* 触发二级接管请求 */
|
||
&& ((dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL2)))
|
||
{
|
||
pick_light_state = PICK_FUN_SECOND_ALARM;
|
||
}
|
||
/* LCC 功能退出 */
|
||
if( (((dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE2) || (dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE1)) \
|
||
/* NOA 功能激活 */
|
||
|| ((dnp_status_s == ADS_DNP_STATS_DNP_ACTIVE)))
|
||
/* 触发三级接管请求 */
|
||
&& ((dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL3)))
|
||
{
|
||
pick_light_state = PICK_FUN_THREE_ALARM;
|
||
}
|
||
|
||
/* LCC 等于MRC(最小风险策略) */
|
||
if((dnp_status_s == ADS_DNP_STATS_MRC) && (dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_SAFE_STOP))
|
||
{
|
||
pick_light_state = PICK_FUN_THREE_ALARM;
|
||
}
|
||
|
||
if(COM_RXIPDUADS_29C_TIMEOUTFLAG)
|
||
{
|
||
pick_light_state = PICK_FUN_INACTIVE;
|
||
}
|
||
return (pick_light_state);
|
||
|
||
}
|
||
|
||
uint8_t pick_light_state_process(void)
|
||
{
|
||
uint8_t pick_light_state;
|
||
uint8_t pick_light_task_state;
|
||
|
||
pick_light_state = pick_light_state_get();
|
||
if(pick_light_state == PICK_FUN_ACTIVE)
|
||
{
|
||
pick_light_task_state = APP_PICK_LIGHT_STATE_ON;
|
||
}
|
||
else if(pick_light_state == PICK_FUN_SECOND_ALARM)
|
||
{
|
||
pick_light_task_state = APP_PICK_LIGHT_STATE_SLOW_FLASH;
|
||
}
|
||
else if(pick_light_state == PICK_FUN_THREE_ALARM)
|
||
{
|
||
pick_light_task_state = APP_PICK_LIGHT_STATE_FAST_FLASH;
|
||
}
|
||
else
|
||
{
|
||
pick_light_task_state = APP_PICK_LIGHT_STATE_IDLE;
|
||
}
|
||
|
||
|
||
return pick_light_task_state;
|
||
}
|
||
|
||
void pick_light_task(void)
|
||
{
|
||
uint8_t background_light_level;
|
||
Nm_StateType can_nm_state;
|
||
Nm_ModeType can_nm_mode;
|
||
|
||
can_app_receive_signal(COM_RXSIGMETER1_BACKGROUNDLIGHTLVLCMD, &background_light_level);
|
||
CanNm_GetState(0 ,(Nm_StateType * )(&can_nm_state),(Nm_ModeType * )(&can_nm_mode));
|
||
|
||
|
||
if(background_light_level >= BACKGROUND_LIGHT_LEVEL_1 && background_light_level <= BACKGROUND_LIGHT_LEVEL_11)
|
||
{
|
||
app_pick_light.day_night_mod = APP_PICK_LIGHT_NIGHT_MOD;
|
||
}
|
||
else if(background_light_level > BACKGROUND_LIGHT_LEVEL_11 && background_light_level < BACKGROUND_LIGHT_LEVEL_RESERVED)
|
||
{
|
||
app_pick_light.day_night_mod = APP_PICK_LIGHT_DAY_MOD;
|
||
}
|
||
else
|
||
{
|
||
app_pick_light.day_night_mod = APP_PICK_LIGHT_DAY_MOD;
|
||
}
|
||
|
||
app_pick_light.state = APP_PICK_LIGHT_STATE_IDLE;
|
||
|
||
#if 0
|
||
switch(app_pick_light.state)
|
||
{
|
||
case APP_PICK_LIGHT_STATE_IDLE:
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
app_pick_light.state = pick_light_state_process();
|
||
if(app_pick_light.state != APP_PICK_LIGHT_STATE_IDLE)
|
||
{
|
||
app_pick_light.timer = 0u;
|
||
app_pick_light.output = 1u;
|
||
}
|
||
break;
|
||
case APP_PICK_LIGHT_STATE_ON:
|
||
if(app_pick_light.day_night_mod == APP_PICK_LIGHT_DAY_MOD)
|
||
{
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 1000);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 1000);
|
||
}
|
||
else
|
||
{
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
}
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 1000);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 1000);
|
||
app_pick_light.state = pick_light_state_process();
|
||
app_pick_light.timer = 0u;
|
||
app_pick_light.output = 1u;
|
||
break;
|
||
case APP_PICK_LIGHT_STATE_FAST_FLASH:
|
||
app_pick_light.timer ++;
|
||
if(app_pick_light.output)
|
||
{
|
||
if(app_pick_light.day_night_mod == APP_PICK_LIGHT_DAY_MOD)
|
||
{
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 1000);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 1000);
|
||
}
|
||
else
|
||
{
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
}
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 1000);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 1000);
|
||
if(app_pick_light.timer >= PICK_LIGHT_FAST_FLASH_DUTY)
|
||
{
|
||
app_pick_light.output = 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
if(app_pick_light.timer >= PICK_LIGHT_FAST_FLASH_PERIOD)
|
||
{
|
||
app_pick_light.timer = 0;
|
||
app_pick_light.output = 1;
|
||
app_pick_light.state = pick_light_state_process();
|
||
}
|
||
}
|
||
break;
|
||
case APP_PICK_LIGHT_STATE_SLOW_FLASH:
|
||
app_pick_light.timer ++;
|
||
if(app_pick_light.output)
|
||
{
|
||
if(app_pick_light.day_night_mod == APP_PICK_LIGHT_DAY_MOD)
|
||
{
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 1000);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 1000);
|
||
}
|
||
else
|
||
{
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
}
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 1000);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 1000);
|
||
if(app_pick_light.timer >= PICK_LIGHT_SLOW_FLASH_DUTY)
|
||
{
|
||
app_pick_light.output = 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
if(app_pick_light.timer >= PICK_LIGHT_SLOW_FLASH_PERIOD)
|
||
{
|
||
app_pick_light.timer = 0;
|
||
app_pick_light.output = 1;
|
||
app_pick_light.state = pick_light_state_process();
|
||
}
|
||
}
|
||
|
||
break;
|
||
default:
|
||
while(1);
|
||
}
|
||
#endif
|
||
}
|
||
|
||
void background_light_task(void)
|
||
{
|
||
uint8_t enter_ota_mode_req;
|
||
|
||
uint8_t power_gear;
|
||
uint8_t background_light_level;
|
||
uint8_t pick_light_state;
|
||
|
||
Nm_StateType can_nm_state;
|
||
Nm_ModeType can_nm_mode;
|
||
|
||
can_app_receive_signal(COM_RXSIGMETER1_BACKGROUNDLIGHTLVLCMD, &background_light_level);
|
||
can_app_receive_signal(COM_RXSIGBCM1_POWER_GEAR, &power_gear);
|
||
can_app_receive_signal(COM_RXSIGMOD_4G_ENTER_OTA_MODE_REQ, &enter_ota_mode_req);
|
||
|
||
CanNm_GetState(0 ,(Nm_StateType * )(&can_nm_state),(Nm_ModeType * )(&can_nm_mode));
|
||
|
||
|
||
|
||
if(power_gear == POWER_GEAR_OFF)
|
||
{
|
||
if((COM_RXIPDUMETER_1_DIR_4BF_TIMEOUTFLAG == 1u) || (background_light_level == BACKGROUND_LIGHT_LEVEL_INVALID) \
|
||
|| (background_light_level >= BACKGROUND_LIGHT_LEVEL_RESERVED))
|
||
{
|
||
if(app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer < 0xffffu)
|
||
{
|
||
app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer ++;
|
||
}
|
||
if(app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer >= BACKGROUND_LIGHT_METER_1_DIR_4BF_LOST_COMMUNICATION_2S)
|
||
{
|
||
app_background_light.cur_level = 0u;
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
if(background_light_level > BACKGROUND_LIGHT_LEVEL_11)
|
||
{
|
||
background_light_level = 0u;
|
||
}
|
||
app_background_light.cur_level = background_light_level;
|
||
app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer = 0u;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if((background_light_level != BACKGROUND_LIGHT_LEVEL_INVALID) && (background_light_level < BACKGROUND_LIGHT_LEVEL_RESERVED))
|
||
{
|
||
if(background_light_level > BACKGROUND_LIGHT_LEVEL_11)
|
||
{
|
||
background_light_level = 0u;
|
||
}
|
||
app_background_light.cur_level = background_light_level;
|
||
}
|
||
app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer = 0u;
|
||
}
|
||
|
||
if(COM_RXIPDUMOD_4G_49A_TIMEOUTFLAG)
|
||
{
|
||
if(app_background_light.mod_4g_49a_lost_communication_timer < 0xffffffffu)
|
||
{
|
||
app_background_light.mod_4g_49a_lost_communication_timer ++;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
app_background_light.mod_4g_49a_lost_communication_timer = 0u;
|
||
}
|
||
|
||
if(app_background_light.ota_mod)
|
||
{
|
||
app_background_light.cur_level = 0u;
|
||
|
||
if(app_background_light.mod_4g_49a_lost_communication_timer >= BACKGROUND_LIGHT_MOD_4G_49A_LOST_COMMUNICATION_3MIN)
|
||
{
|
||
app_background_light.mod_4g_49a_lost_communication_timer = 0u;
|
||
app_background_light.ota_mod = 0u;
|
||
}
|
||
if(COM_RXIPDUMOD_4G_49A_TIMEOUTFLAG == 0u)
|
||
{
|
||
if(enter_ota_mode_req == 0u)
|
||
{
|
||
app_background_light.ota_exit_delay ++;
|
||
if(app_background_light.ota_exit_delay >= OTA_EXIT_DELAY_3S)
|
||
{
|
||
app_background_light.ota_exit_delay = 0u;
|
||
app_background_light.ota_mod = 0u;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
app_background_light.ota_exit_delay = 0u;
|
||
app_background_light.ota_mod = 1u;
|
||
}
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
if(COM_RXIPDUMOD_4G_49A_TIMEOUTFLAG == 0u)
|
||
{
|
||
if(enter_ota_mode_req == 1u)
|
||
{
|
||
app_background_light.ota_mod = 1u;
|
||
}
|
||
}
|
||
}
|
||
if((can_nm_state == NM_STATE_BUS_SLEEP))
|
||
{
|
||
app_background_light.cur_level = 0;
|
||
}
|
||
app_background_light.step_timer ++;
|
||
if(app_background_light.step_timer >= BACKGROUND_LIGHT_STEP_TIME_35MS)
|
||
{
|
||
app_background_light.step_timer = 0u;
|
||
if(app_background_light.duty > background_light_level_tab[app_background_light.cur_level])
|
||
{
|
||
app_background_light.duty --;
|
||
}
|
||
else if(app_background_light.duty < background_light_level_tab[app_background_light.cur_level])
|
||
{
|
||
app_background_light.duty ++;
|
||
}
|
||
else
|
||
{
|
||
|
||
}
|
||
|
||
pwm_set_duty(BACKGROUND_LIGHT_PWM_ID, BACKGROUND_LIGHT_PWM_CH, (uint16_t)(app_background_light.duty * 10u));
|
||
|
||
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, L_PICK_BACKGROUND_LIGHT_PWM_CH, (uint16_t)(app_background_light.duty * 10u));
|
||
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, R_PICK_BACKGROUND_LIGHT_PWM_CH, (uint16_t)(app_background_light.duty * 10u));
|
||
|
||
|
||
}
|
||
}
|
||
|
||
|
||
void Led_EnterSleepMode(void)
|
||
{
|
||
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, L_PICK_BACKGROUND_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, R_PICK_BACKGROUND_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(BACKGROUND_LIGHT_PWM_ID, BACKGROUND_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
|
||
app_background_light.cur_level = 0;
|
||
app_background_light.duty = 0;
|
||
app_pick_light.state = APP_PICK_LIGHT_STATE_IDLE;
|
||
}
|
||
|
||
void led_app_task(void)
|
||
{
|
||
uint8_t system_voltage_mode;
|
||
|
||
system_voltage_mode = system_voltage_manage_mode_get(FUNC_SYSTEM_VOLTAGE_MANAGE_ID);
|
||
|
||
if(system_voltage_mode == SYSTEM_VOLTAGE_MODE_NORMAL)
|
||
{
|
||
background_light_task();
|
||
//pick_light_task();
|
||
}
|
||
else
|
||
{
|
||
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, L_PICK_BACKGROUND_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, R_PICK_BACKGROUND_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(BACKGROUND_LIGHT_PWM_ID, BACKGROUND_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
|
||
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
|
||
|
||
app_background_light.cur_level = 0;
|
||
app_background_light.duty = 0;
|
||
app_pick_light.state = APP_PICK_LIGHT_STATE_IDLE;
|
||
}
|
||
|
||
} |