25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

270 lines
6.5 KiB

  1. #include "AudioConsoleLedMgr.h"
  2. #include "timer.h"
  3. //BtnLedDimmer_t mLinkZ2LEDDimmer;
  4. //int DimmerSlope = 5;
  5. BtnLedDimmer_t mLedDimmerList[AUDIO_CONSOLE_NB_LED];
  6. BtnLedDimmer_t mLinkZ2LEDDimmer;
  7. int DimmerSlope = 5;
  8. void AudioConsoleLedMgrInit()
  9. {
  10. mLinkZ2LEDDimmer.IsON = false;
  11. mLinkZ2LEDDimmer.TotalPeriod = 200;
  12. mLinkZ2LEDDimmer.ONPeriod = 200;
  13. mLinkZ2LEDDimmer.Counter = 0;
  14. mLinkZ2LEDDimmer.BreathEffect = true;
  15. int i;
  16. for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
  17. {
  18. mLedDimmerList[i].IsON = false;
  19. mLedDimmerList[i].TotalPeriod = 200;
  20. mLedDimmerList[i].ONPeriod = 200;
  21. mLedDimmerList[i].Counter = 0;
  22. mLedDimmerList[i].BreathEffect = false;
  23. mLedDimmerList[i].DimmerSlope = 5;
  24. }
  25. TimerStart(LED_EFFECT_TIMER,LED_EFFECT_TIMEOUT);
  26. }
  27. void AudioConsoleLedMgrTick()
  28. {
  29. if(IsTimerExpired(LED_EFFECT_TIMER) == true) //Reuse pushbutton timer :)
  30. {
  31. int i;
  32. for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
  33. {
  34. if(mLedDimmerList[i].BreathEffect == true && mLedDimmerList[i].IsON == true)
  35. {
  36. mLedDimmerList[i].ONPeriod += mLedDimmerList[i].DimmerSlope;
  37. if(mLedDimmerList[i].ONPeriod >= mLedDimmerList[i].TotalPeriod)
  38. {
  39. mLedDimmerList[i].DimmerSlope = -5;
  40. mLedDimmerList[i].ONPeriod = mLedDimmerList[i].TotalPeriod - 5;
  41. }
  42. else if(mLedDimmerList[i].ONPeriod <= 5)
  43. {
  44. mLedDimmerList[i].DimmerSlope = 5;
  45. }
  46. }
  47. }
  48. TimerStart(LED_EFFECT_TIMER,LED_EFFECT_TIMEOUT);
  49. }
  50. int i;
  51. for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
  52. {
  53. if(mLedDimmerList[i].IsON)
  54. {
  55. if(mLedDimmerList[i].Counter++ >= mLedDimmerList[i].ONPeriod)
  56. {
  57. TurnOFF(i);
  58. if(mLedDimmerList[i].Counter >= mLedDimmerList[i].TotalPeriod)
  59. {
  60. TurnON(i);
  61. mLedDimmerList[i].Counter = 0;
  62. }
  63. }
  64. }
  65. }
  66. }
  67. int UpdatePushButtonLEDs(AVReceiverStatus_t *MainZoneStatus, AVReceiverStatus_t* Z2Status)
  68. {
  69. if(MainZoneStatus->MainPwrStatus == true)
  70. {
  71. LedMgrSetLED(AUDIO_CONSOLE_MAIN_PWR_LED,true,100,false);
  72. }
  73. else
  74. {
  75. LedMgrSetLED(AUDIO_CONSOLE_MAIN_PWR_LED,false,100,false);
  76. }
  77. if(Z2Status->MainPwrStatus == true)
  78. {
  79. LedMgrSetLED(AUDIO_CONSOLE_Z2_PWR_LED,true,100,false);
  80. }
  81. else
  82. {
  83. LedMgrSetLED(AUDIO_CONSOLE_Z2_PWR_LED,false,100,false);
  84. }
  85. if(MainZoneStatus->SyncZones == true)
  86. {
  87. LedMgrSetLED(AUDIO_CONSOLE_SYNC_Z2_LED,true,100,false);
  88. }
  89. else
  90. {
  91. LedMgrSetLED(AUDIO_CONSOLE_SYNC_Z2_LED,false,100,false);
  92. }
  93. if(MainZoneStatus->IsMute == true)
  94. {
  95. LedMgrSetLED(AUDIO_CONSOLE_MAIN_MUTE_LED,true,100,true);
  96. }
  97. else
  98. {
  99. LedMgrSetLED(AUDIO_CONSOLE_MAIN_MUTE_LED,false,100,false);
  100. }
  101. if(Z2Status->IsMute == true)
  102. {
  103. LedMgrSetLED(AUDIO_CONSOLE_Z2_MUTE_LED,true,100,true);
  104. }
  105. else
  106. {
  107. LedMgrSetLED(AUDIO_CONSOLE_Z2_MUTE_LED,false,100,false);
  108. }
  109. return RET_OK;
  110. }
  111. int LedMgrSetLED(int LedID, bool ON, int Percent, bool breathe)
  112. {
  113. if(LedID >= AUDIO_CONSOLE_NB_LED)
  114. return RET_ERROR;
  115. if(Percent > 100)
  116. return RET_ERROR;
  117. if(ON == true)
  118. {
  119. TurnON(LedID);
  120. }
  121. else
  122. {
  123. TurnOFF(LedID);
  124. }
  125. if(ON != mLedDimmerList[LedID].IsON || breathe == false)
  126. {
  127. mLedDimmerList[LedID].ONPeriod = (((float)Percent/100)*mLedDimmerList[LedID].TotalPeriod);
  128. mLedDimmerList[LedID].Counter = 0;
  129. }
  130. mLedDimmerList[LedID].IsON = ON;
  131. mLedDimmerList[LedID].BreathEffect = breathe;
  132. return RET_OK;
  133. }
  134. int TurnON(int LedID)
  135. {
  136. switch(LedID)
  137. {
  138. case AUDIO_CONSOLE_SYNC_Z2_LED:
  139. {
  140. AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_ON;
  141. break;
  142. }
  143. case AUDIO_CONSOLE_MAIN_PWR_LED:
  144. {
  145. AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_ON;
  146. break;
  147. }
  148. case AUDIO_CONSOLE_Z2_PWR_LED:
  149. {
  150. AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_ON;
  151. break;
  152. }
  153. case AUDIO_CONSOLE_MAIN_MUTE_LED:
  154. {
  155. AUDIO_CONSOLE_MAIN_MUTE_STATUS_LED = LED_ON;
  156. break;
  157. }
  158. case AUDIO_CONSOLE_Z2_MUTE_LED:
  159. {
  160. AUDIO_CONSOLE_Z2_MUTE_STATUS_LED = LED_ON;
  161. break;
  162. }
  163. case AUDIO_CONSOLE_PUSHBTN_4_LED:
  164. {
  165. PUSH_BUTTON_LED4_PIN = LED_ON;
  166. break;
  167. }
  168. case AUDIO_CONSOLE_PUSHBTN_5_LED:
  169. {
  170. PUSH_BUTTON_LED5_PIN = LED_ON;
  171. break;
  172. }
  173. case AUDIO_CONSOLE_PUSHBTN_6_LED:
  174. {
  175. PUSH_BUTTON_LED6_PIN = LED_ON;
  176. break;
  177. }
  178. case AUDIO_CONSOLE_PUSHBTN_7_LED:
  179. {
  180. PUSH_BUTTON_LED7_PIN = LED_ON;
  181. break;
  182. }
  183. }
  184. return RET_OK;
  185. }
  186. int TurnOFF(int LedID)
  187. {
  188. switch(LedID)
  189. {
  190. case AUDIO_CONSOLE_SYNC_Z2_LED:
  191. {
  192. AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_OFF;
  193. break;
  194. }
  195. case AUDIO_CONSOLE_MAIN_PWR_LED:
  196. {
  197. AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_OFF;
  198. break;
  199. }
  200. case AUDIO_CONSOLE_Z2_PWR_LED:
  201. {
  202. AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_OFF;
  203. break;
  204. }
  205. case AUDIO_CONSOLE_MAIN_MUTE_LED:
  206. {
  207. AUDIO_CONSOLE_MAIN_MUTE_STATUS_LED = LED_OFF;
  208. break;
  209. }
  210. case AUDIO_CONSOLE_Z2_MUTE_LED:
  211. {
  212. AUDIO_CONSOLE_Z2_MUTE_STATUS_LED = LED_OFF;
  213. break;
  214. }
  215. case AUDIO_CONSOLE_PUSHBTN_4_LED:
  216. {
  217. PUSH_BUTTON_LED4_PIN = LED_OFF;
  218. break;
  219. }
  220. case AUDIO_CONSOLE_PUSHBTN_5_LED:
  221. {
  222. PUSH_BUTTON_LED5_PIN = LED_OFF;
  223. break;
  224. }
  225. case AUDIO_CONSOLE_PUSHBTN_6_LED:
  226. {
  227. PUSH_BUTTON_LED6_PIN = LED_OFF;
  228. break;
  229. }
  230. case AUDIO_CONSOLE_PUSHBTN_7_LED:
  231. {
  232. PUSH_BUTTON_LED7_PIN = LED_OFF;
  233. break;
  234. }
  235. }
  236. return RET_OK;
  237. }
  238. int LedMgrShowOfflineMode(bool Offline)
  239. {
  240. int i = 0;
  241. for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
  242. {
  243. LedMgrSetLED(i,Offline,100,true);
  244. }
  245. }