67ddbf8cd9758764a151c1fe4e48a09d1c629fe2.svn-base 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. #include "multi_led.h"
  2. #include "led.h"
  3. #include "N76E003.h"
  4. struct Led lRun, lAla, lErr;
  5. void ScanLed ( void ) //100ms
  6. {
  7. led_ticks();
  8. }
  9. void Set_RUN_GPIO ( bool state )
  10. {
  11. P12 = state;
  12. }
  13. void Leds_Init ( void )
  14. {
  15. led_init_Head();
  16. led_init ( &lRun, Set_RUN_GPIO );
  17. led_set_state ( &lRun, LED_WORK, 0, LED_STATE2_FLASH, 1000, 0, 0 );
  18. led_start ( &lRun );
  19. //make the timer invoking the button_ticks() interval 5ms.
  20. //This function is implemented by yourself.
  21. //__timer_start(button_ticks, 0, 100);
  22. }
  23. /*
  24. 通用:WorkLed闪动
  25. 通信正常: TxLed 亮 (其他功能可共用), GZLed 灭; 传输TxLed 闪
  26. 通信故障: TxLed 灭, GZLed 亮:电源故障
  27. 通信故障,100s声光提示,声可消除;光保持到,无线模块复位,或故障消除
  28. */
  29. #if 0
  30. pFault FAULT_State = {.State = Bin ( 00 ) };
  31. pFault FAULT_StateOld = {.State = Bin ( 00 ) };
  32. bool FAULT_State_NoChange = true;
  33. u8 sysLed_Pretreat ( u8 State ) //预处理一下:故障和恢复
  34. {
  35. u8 Res = State;
  36. //3G/电源 故障与恢复
  37. switch ( State )
  38. {
  39. case LED_MODE_WORK_3G_OK:
  40. FAULT_State.Flag._3g = 0;
  41. break;
  42. case LED_MODE_WORK_3G_FAIL:
  43. FAULT_State.Flag._3g = 1;
  44. break;
  45. case LED_MODE_WORK_DC_BAT_OK:
  46. FAULT_State.Flag._dc_bat = 0;
  47. break;
  48. case LED_MODE_WORK_DC_BAT_FAIL:
  49. FAULT_State.Flag._dc_bat = 1;
  50. break;
  51. default:
  52. return State;
  53. }
  54. if ( FAULT_State.Flag._3g ) Res = LED_MODE_WORK_3G_FAIL; //最优先3G
  55. else if ( FAULT_State.Flag._dc_bat ) Res = LED_MODE_WORK_DC_BAT_FAIL;
  56. FAULT_State_NoChange = false;
  57. return Res;
  58. }
  59. //灯的控制和蜂鸣器的控制
  60. void sysLed_Set ( u8 State )
  61. {
  62. State = sysLed_Pretreat ( State );
  63. switch ( SysRunType )
  64. {
  65. case SysRun_Norm:
  66. switch ( State )
  67. {
  68. case LED_MODE_WORK_RUN:
  69. LedDoing ( LED_WORK, 0, LED_STATE2_FLASH, 1000, 0, 0 ); //单位100ms: 500ms开,500ms关
  70. if ( FAULT_State_NoChange ) //初始化状态
  71. {
  72. LedDoing ( LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
  73. LedDoing ( LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
  74. }
  75. else if ( FAULT_State.Flag._3g ) //1.3g故障, 2.3g+电源故障
  76. {
  77. LedDoing ( LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
  78. LedDoing ( LED_GZ, 0, LED_STATE1_ON, 0, 0, 0 );
  79. }
  80. else if ( FAULT_State.Flag._dc_bat ) //3g正常, 电源故障
  81. {
  82. LedDoing ( LED_TX, 0, LED_STATE1_ON, 0, 0, 0 );
  83. LedDoing ( LED_GZ, 0, LED_STATE2_FLASH, 500, 0, 0 );
  84. }
  85. else //3g正常, 电源正常
  86. {
  87. LedDoing ( LED_TX, 0, LED_STATE1_ON, 0, 0, 0 );
  88. LedDoing ( LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
  89. }
  90. break;
  91. case LED_MODE_WORK_3G_OK:
  92. LedDoing ( LED_TX, 0, LED_STATE1_ON, 0, 0, 0 );
  93. LedDoing ( LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
  94. break;
  95. case LED_MODE_WORK_3G_FAIL:
  96. LedDoing ( LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
  97. LedDoing ( LED_GZ, 0, LED_STATE1_ON, 0, 0, 0 );
  98. break;
  99. case LED_MODE_WORK_DC_BAT_OK:
  100. LedDoing ( LED_GZ, 0, LED_STATE0_OFF, 0, 0, 0 );
  101. break;
  102. case LED_MODE_WORK_DC_BAT_FAIL:
  103. LedDoing ( LED_GZ, 0, LED_STATE2_FLASH, 500, 0, 0 );
  104. break;
  105. case LED_MODE_WORK_3G_TX:
  106. LedDoing ( LED_TX, 0, LED_STATE5_FLASH_DELAY, 100, 200, 1 ); //100ms开,开关1次
  107. break;
  108. case LED_MODE_WORK_3G_RX:
  109. LedDoing ( LED_TX, 0, LED_STATE5_FLASH_DELAY, 100, 400, 1 ); //100ms开,开关2次
  110. break;
  111. case LED_MODE_TEST_RUN:
  112. case LED_MODE_TEST_KGL_IN:
  113. break;
  114. }
  115. break;
  116. case SysRun_Test:
  117. switch ( State )
  118. {
  119. case LED_MODE_WORK_RUN:
  120. break;
  121. case LED_MODE_WORK_3G_OK:
  122. LedDoing ( LED_TX, 0, LED_STATE1_ON, 0, 0, 0 );
  123. break;
  124. case LED_MODE_WORK_3G_FAIL:
  125. LedDoing ( LED_TX, 0, LED_STATE0_OFF, 0, 0, 0 );
  126. break;
  127. case LED_MODE_WORK_DC_BAT_OK:
  128. case LED_MODE_WORK_DC_BAT_FAIL:
  129. case LED_MODE_WORK_3G_TX:
  130. case LED_MODE_WORK_3G_RX:
  131. break;
  132. case LED_MODE_TEST_RUN:
  133. LedDoing ( LED_WORK, 0, LED_STATE2_FLASH, 200, 0, 0 );
  134. LedDoing ( LED_GZ, 0, LED_STATE2_FLASH, 200, 0, 0 );
  135. LedDoing ( LED_TX, 0, LED_STATE2_FLASH, 200, 0, 0 );
  136. break;
  137. case LED_MODE_TEST_KGL_IN:
  138. LedDoing ( LED_GZ, 0, LED_STATE4_NOT, 0, 0, 0 );
  139. break;
  140. }
  141. break;
  142. }
  143. if ( SysRunType == SysRun_Norm )
  144. {
  145. if ( FAULT_StateOld.State != FAULT_State.State )
  146. {
  147. FAULT_StateOld.State = FAULT_State.State;
  148. ( FAULT_State.State == 0 ) ? StopBeep() : StartBeep ( WARMING_BEEP ); //判断是否是正常状态,是正常则停,告警则响
  149. }
  150. }
  151. }
  152. #endif