| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- #include "multi_led.h"
- #include "include.h"
- struct Led lRun,lAla,lErr;
- void ScanLed ( void ) //100ms
- {
- led_ticks();
- }
- void Set_RUN_GPIO(bool state)
- {
- SET_RUN_LED(state);
- }
- void Set_ALA_GPIO(bool state)
- {
- SET_ALA_LED(state);
- }
- void Set_ERR_GPIO(bool state)
- {
- SET_ERR_LED(state);
- }
- void Leds_Init(void)
- {
- led_init_Head();
- led_init(&lRun, Set_RUN_GPIO);
- led_init(&lAla, Set_ALA_GPIO);
- led_init(&lErr, Set_ERR_GPIO);
- led_set_state(&lRun, LED_WORK, 0, LED_STATE2_FLASH, 1000, 0, 0 );
- led_set_state(&lAla, LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
- led_set_state(&lErr, LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
-
- led_start(&lRun);
- led_start(&lAla);
- led_start(&lErr);
- //make the timer invoking the button_ticks() interval 5ms.
- //This function is implemented by yourself.
- //__timer_start(button_ticks, 0, 100);
- }
- /*
- 通用:WorkLed闪动
- 通信正常: TxLed 亮 (其他功能可共用), GZLed 灭; 传输TxLed 闪
- 通信故障: TxLed 灭, GZLed 亮:电源故障
- 通信故障,100s声光提示,声可消除;光保持到,无线模块复位,或故障消除
- */
- pFault FAULT_State = {.State = Bin ( 00 ) };
- pFault FAULT_StateOld = {.State = Bin ( 00 ) };
- bool FAULT_State_NoChange = true;
- u8 sysLed_Pretreat ( u8 State ) //预处理一下:故障和恢复
- {
- u8 Res = State;
- //3G/电源 故障与恢复
- switch ( State )
- {
- case LED_MODE_WORK_3G_OK:
- FAULT_State.Flag._3g = 0;
- break;
- case LED_MODE_WORK_3G_FAIL:
- FAULT_State.Flag._3g = 1;
- break;
- case LED_MODE_WORK_DC_BAT_OK:
- FAULT_State.Flag._dc_bat = 0;
- break;
- case LED_MODE_WORK_DC_BAT_FAIL:
- FAULT_State.Flag._dc_bat = 1;
- break;
- default:
- return State;
- }
- if ( FAULT_State.Flag._3g ) Res = LED_MODE_WORK_3G_FAIL; //最优先3G
- else if ( FAULT_State.Flag._dc_bat ) Res = LED_MODE_WORK_DC_BAT_FAIL;
- FAULT_State_NoChange = false;
- return Res;
- }
- #if 0
- //灯的控制和蜂鸣器的控制
- void sysLed_Set ( u8 State )
- {
- State = sysLed_Pretreat ( State );
- switch ( SysRunType )
- {
- case SysRun_Norm:
- switch ( State )
- {
- case LED_MODE_WORK_RUN:
- LedDoing ( LED_WORK, 0, LED_STATE2_FLASH, 1000, 0, 0 ); //单位100ms: 500ms开,500ms关
- if ( FAULT_State_NoChange ) //初始化状态
- {
- LedDoing ( LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
- LedDoing ( LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
- }
- else if ( FAULT_State.Flag._3g ) //1.3g故障, 2.3g+电源故障
- {
- LedDoing ( LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
- LedDoing ( LED_GZ, 0, LED_STATE1_ON, 0, 0, 0 );
- }
- else if ( FAULT_State.Flag._dc_bat ) //3g正常, 电源故障
- {
- LedDoing ( LED_TX, 0, LED_STATE1_ON, 0, 0, 0 );
- LedDoing ( LED_GZ, 0, LED_STATE2_FLASH, 500, 0, 0 );
- }
- else //3g正常, 电源正常
- {
- LedDoing ( LED_TX, 0, LED_STATE1_ON, 0, 0, 0 );
- LedDoing ( LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
- }
- break;
- case LED_MODE_WORK_3G_OK:
- LedDoing ( LED_TX, 0, LED_STATE1_ON, 0, 0, 0 );
- LedDoing ( LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
- break;
- case LED_MODE_WORK_3G_FAIL:
- LedDoing ( LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
- LedDoing ( LED_GZ, 0, LED_STATE1_ON, 0, 0, 0 );
- break;
- case LED_MODE_WORK_DC_BAT_OK:
- LedDoing ( LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
- break;
- case LED_MODE_WORK_DC_BAT_FAIL:
- LedDoing ( LED_GZ, 0, LED_STATE2_FLASH, 500, 0, 0 );
- break;
- case LED_MODE_WORK_3G_TX:
- LedDoing ( LED_TX, 0, LED_STATE5_FLASH_DELAY, 100, 200, 1 ); //100ms开,开关1次
- break;
-
- case LED_MODE_WORK_3G_RX:
- LedDoing ( LED_TX, 0, LED_STATE5_FLASH_DELAY, 100, 400, 1 ); //100ms开,开关2次
- break;
- case LED_MODE_TEST_RUN:
- case LED_MODE_TEST_KGL_IN:
- break;
- }
- break;
- case SysRun_Test:
- switch ( State )
- {
- case LED_MODE_WORK_RUN:
- break;
- case LED_MODE_WORK_3G_OK:
- LedDoing ( LED_TX, 0, LED_STATE1_ON, 0, 0, 0 );
- break;
- case LED_MODE_WORK_3G_FAIL:
- LedDoing ( LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
- break;
- case LED_MODE_WORK_DC_BAT_OK:
- case LED_MODE_WORK_DC_BAT_FAIL:
- case LED_MODE_WORK_3G_TX:
- case LED_MODE_WORK_3G_RX:
- break;
- case LED_MODE_TEST_RUN:
- LedDoing ( LED_WORK, 0, LED_STATE2_FLASH, 200, 0, 0 );
- LedDoing ( LED_GZ, 0, LED_STATE2_FLASH, 200, 0, 0 );
- LedDoing ( LED_TX, 0, LED_STATE2_FLASH, 200, 0, 0 );
- break;
- case LED_MODE_TEST_KGL_IN:
- LedDoing ( LED_GZ, 0, LED_STATE4_NOT, 0, 0, 0 );
- break;
- }
- break;
- }
- if ( SysRunType == SysRun_Norm )
- {
- if ( FAULT_StateOld.State != FAULT_State.State )
- {
- FAULT_StateOld.State = FAULT_State.State;
- ( FAULT_State.State == 0 ) ? StopBeep() : StartBeep ( WARMING_BEEP ); //判断是否是正常状态,是正常则停,告警则响
- }
- }
- }
- #endif
|