You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

253 rivejä
6.0 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. return RET_OK;
  94. }
  95. int LedMgrSetLED(int LedID, bool ON, int Percent, bool breathe)
  96. {
  97. if(LedID >= AUDIO_CONSOLE_NB_LED)
  98. return RET_ERROR;
  99. if(Percent > 100)
  100. return RET_ERROR;
  101. if(ON == true)
  102. {
  103. TurnON(LedID);
  104. }
  105. else
  106. {
  107. TurnOFF(LedID);
  108. }
  109. if(ON != mLedDimmerList[LedID].IsON || breathe == false)
  110. {
  111. mLedDimmerList[LedID].ONPeriod = (((float)Percent/100)*mLedDimmerList[LedID].TotalPeriod);
  112. mLedDimmerList[LedID].Counter = 0;
  113. }
  114. mLedDimmerList[LedID].IsON = ON;
  115. mLedDimmerList[LedID].BreathEffect = breathe;
  116. return RET_OK;
  117. }
  118. int TurnON(int LedID)
  119. {
  120. switch(LedID)
  121. {
  122. case AUDIO_CONSOLE_SYNC_Z2_LED:
  123. {
  124. AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_ON;
  125. break;
  126. }
  127. case AUDIO_CONSOLE_MAIN_PWR_LED:
  128. {
  129. AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_ON;
  130. break;
  131. }
  132. case AUDIO_CONSOLE_Z2_PWR_LED:
  133. {
  134. AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_ON;
  135. break;
  136. }
  137. case AUDIO_CONSOLE_PUSHBTN_2_LED:
  138. {
  139. PUSH_BUTTON_LED2_PIN = LED_ON;
  140. break;
  141. }
  142. case AUDIO_CONSOLE_PUSHBTN_3_LED:
  143. {
  144. PUSH_BUTTON_LED3_PIN = LED_ON;
  145. break;
  146. }
  147. case AUDIO_CONSOLE_PUSHBTN_4_LED:
  148. {
  149. PUSH_BUTTON_LED4_PIN = LED_ON;
  150. break;
  151. }
  152. case AUDIO_CONSOLE_PUSHBTN_5_LED:
  153. {
  154. PUSH_BUTTON_LED5_PIN = LED_ON;
  155. break;
  156. }
  157. case AUDIO_CONSOLE_PUSHBTN_6_LED:
  158. {
  159. PUSH_BUTTON_LED6_PIN = LED_ON;
  160. break;
  161. }
  162. case AUDIO_CONSOLE_PUSHBTN_7_LED:
  163. {
  164. PUSH_BUTTON_LED7_PIN = LED_ON;
  165. break;
  166. }
  167. }
  168. return RET_OK;
  169. }
  170. int TurnOFF(int LedID)
  171. {
  172. switch(LedID)
  173. {
  174. case AUDIO_CONSOLE_SYNC_Z2_LED:
  175. {
  176. AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_OFF;
  177. break;
  178. }
  179. case AUDIO_CONSOLE_MAIN_PWR_LED:
  180. {
  181. AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_OFF;
  182. break;
  183. }
  184. case AUDIO_CONSOLE_Z2_PWR_LED:
  185. {
  186. AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_OFF;
  187. break;
  188. }
  189. case AUDIO_CONSOLE_PUSHBTN_2_LED:
  190. {
  191. PUSH_BUTTON_LED2_PIN = LED_OFF;
  192. break;
  193. }
  194. case AUDIO_CONSOLE_PUSHBTN_3_LED:
  195. {
  196. PUSH_BUTTON_LED3_PIN = LED_OFF;
  197. break;
  198. }
  199. case AUDIO_CONSOLE_PUSHBTN_4_LED:
  200. {
  201. PUSH_BUTTON_LED4_PIN = LED_OFF;
  202. break;
  203. }
  204. case AUDIO_CONSOLE_PUSHBTN_5_LED:
  205. {
  206. PUSH_BUTTON_LED5_PIN = LED_OFF;
  207. break;
  208. }
  209. case AUDIO_CONSOLE_PUSHBTN_6_LED:
  210. {
  211. PUSH_BUTTON_LED6_PIN = LED_OFF;
  212. break;
  213. }
  214. case AUDIO_CONSOLE_PUSHBTN_7_LED:
  215. {
  216. PUSH_BUTTON_LED7_PIN = LED_OFF;
  217. break;
  218. }
  219. }
  220. return RET_OK;
  221. }
  222. int LedMgrShowOfflineMode(bool Offline)
  223. {
  224. int i = 0;
  225. for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
  226. {
  227. LedMgrSetLED(i,Offline,100,true);
  228. }
  229. }