led.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #include "includes.h"
  2. //local file variable
  3. unsigned char sucRedLedFlash=0;
  4. unsigned char sucRedLedSleep=0;
  5. unsigned char sucBlueLedFlash=0;
  6. unsigned char sucBlueLedSleep=0;
  7. LED_INDICATOR g_LedInd;
  8. void LedInit(void)
  9. {
  10. MODEM_LED1_LOW;
  11. MODEM_LED2_LOW;
  12. }
  13. void LedProcess(unsigned char reset)
  14. {
  15. static unsigned char RedLedCt=0;
  16. static unsigned char RedLedMaxCt=0;
  17. static unsigned char RedLedFlash2=0;
  18. static unsigned char LastRedLedFlash=0xff;
  19. static unsigned char LastRedLedSleep=0xff;
  20. static unsigned char BlueLedCt=0;
  21. static unsigned char BlueLedMaxCt=0;
  22. static unsigned char BlueLedFlash2=0;
  23. static unsigned char LastBlueLedFlash=0xff;
  24. static unsigned char LastBlueLedSleep=0xff;
  25. static unsigned int ui_ledCnt;
  26. if(reset){
  27. ui_ledCnt=0;
  28. RedLedCt=0;
  29. RedLedMaxCt=0;
  30. RedLedFlash2=0;
  31. LastRedLedFlash=0xff;
  32. LastRedLedSleep=0xff;
  33. BlueLedCt=0;
  34. BlueLedMaxCt=0;
  35. BlueLedFlash2=0;
  36. LastBlueLedFlash=0xff;
  37. LastBlueLedSleep=0xff;
  38. MODEM_LED1_LOW;
  39. MODEM_LED2_LOW;
  40. return;
  41. }
  42. //red led control
  43. if(sucRedLedFlash==0){ //낀췻
  44. MODEM_LED1_LOW;
  45. }else if(sucRedLedSleep==0){//낀좋
  46. MODEM_LED1_HIGH;
  47. }else{
  48. if(LastRedLedFlash!=sucRedLedFlash || LastRedLedSleep!=sucRedLedSleep){
  49. RedLedCt=0;
  50. BlueLedCt=0;
  51. LastRedLedFlash=sucRedLedFlash;
  52. LastRedLedSleep=sucRedLedSleep;
  53. RedLedFlash2=sucRedLedFlash*2;
  54. RedLedMaxCt=RedLedFlash2+LastRedLedSleep*2;
  55. }
  56. if(++RedLedCt>RedLedMaxCt)RedLedCt=0;
  57. //if(RedLedCt<RedLedFlash2 && (RedLedCt&0x01)==0x01)MODEM_LED1_HIGH;
  58. if(RedLedCt<RedLedFlash2)MODEM_LED1_HIGH;
  59. else MODEM_LED1_LOW;
  60. }
  61. //blue led control
  62. if(sucBlueLedFlash==0){ //낀췻
  63. MODEM_LED2_LOW;
  64. }else if(sucBlueLedSleep==0){//낀좋
  65. MODEM_LED2_HIGH;
  66. }else{
  67. if(LastBlueLedFlash!=sucBlueLedFlash || LastBlueLedSleep!=sucBlueLedSleep){
  68. RedLedCt=0;
  69. BlueLedCt=0;
  70. LastBlueLedFlash=sucBlueLedFlash;
  71. LastBlueLedSleep=sucBlueLedSleep;
  72. BlueLedFlash2=sucBlueLedFlash*2;
  73. BlueLedMaxCt=BlueLedFlash2+LastBlueLedSleep*2;
  74. }
  75. if(++BlueLedCt>BlueLedMaxCt)BlueLedCt=0;
  76. //if(BlueLedCt<BlueLedFlash2 && (BlueLedCt&0x01)==0x01)MODEM_LED2_HIGH;
  77. if(BlueLedCt<BlueLedFlash2)MODEM_LED2_HIGH;
  78. else MODEM_LED2_LOW;
  79. }
  80. }
  81. void SetRedLed(unsigned char flash,unsigned char sleep)
  82. {
  83. int t=(flash+sleep)*2;
  84. if(t>255){
  85. return;
  86. }
  87. sucRedLedFlash=flash;
  88. sucRedLedSleep=sleep;
  89. }
  90. void SetBlueLed(unsigned char flash,unsigned char sleep)
  91. {
  92. int t=(flash+sleep)*2;
  93. if(t>255){
  94. return;
  95. }
  96. sucBlueLedFlash=flash;
  97. sucBlueLedSleep=sleep;
  98. }
  99. void SetLedStatus(LED_STATUS LedStatus)
  100. {
  101. switch(LedStatus){
  102. case NotBright: //엇꼇좋
  103. SetRedLed(0,0);
  104. SetBlueLed(0,0);
  105. break;
  106. case RedBright: //븐됐끽좋
  107. SetRedLed(1,0);
  108. SetBlueLed(0,0);
  109. break;
  110. case RedFastFlash: //븐됐우�
  111. SetRedLed(1,1);
  112. SetBlueLed(0,0);
  113. break;
  114. case RedSlowFlash: //븐됐찹�
  115. SetRedLed(1,10);
  116. SetBlueLed(0,0);
  117. break;
  118. case BlueBright: //융됐끽좋
  119. SetRedLed(0,0);
  120. SetBlueLed(1,0);
  121. break;
  122. case BlueFastFlash: //융됐우�
  123. SetRedLed(0,0);
  124. SetBlueLed(1,1);
  125. break;
  126. case BlueSlowFlash: //융됐찹�
  127. SetRedLed(0,0);
  128. SetBlueLed(1,10);
  129. break;
  130. case RedBlueBright: //븐융끽좋
  131. SetRedLed(1,0);
  132. SetBlueLed(1,0);
  133. break;
  134. case RedBlueFastFlash: //븐융우�
  135. SetRedLed(1,1);
  136. SetBlueLed(1,1);
  137. break;
  138. case RedBlueSlowFlash: //븐융찹�
  139. SetRedLed(1,10);
  140. SetBlueLed(1,10);
  141. break;
  142. }
  143. }
  144. void SetLedIndicator(LED_INDICATOR LedInd)
  145. {
  146. switch(LedInd){
  147. case IndModemErr:
  148. g_LedInd=IndModemErr;
  149. SetLedStatus(RedBright);
  150. break;
  151. case IndNoNet:
  152. g_LedInd=IndNoNet;
  153. SetLedStatus(BlueFastFlash);
  154. break;
  155. case IndStandby:
  156. g_LedInd=IndStandby;
  157. SetLedStatus(BlueSlowFlash);
  158. break;
  159. case IndRX:
  160. g_LedInd=IndRX;
  161. SetLedStatus(BlueBright);
  162. break;
  163. case IndTX:
  164. g_LedInd=IndTX;
  165. SetLedStatus(RedBright);
  166. break;
  167. }
  168. }