No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

291 líneas
7.7 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. // if(mLinkZ2LEDDimmer.BreathEffect == true && mLinkZ2LEDDimmer.IsON == true)
  32. // {
  33. // mLinkZ2LEDDimmer.ONPeriod += DimmerSlope;
  34. // if(mLinkZ2LEDDimmer.ONPeriod >= mLinkZ2LEDDimmer.TotalPeriod)
  35. // {
  36. // DimmerSlope = -5;
  37. // mLinkZ2LEDDimmer.ONPeriod = mLinkZ2LEDDimmer.TotalPeriod - 5;
  38. // }
  39. // else if(mLinkZ2LEDDimmer.ONPeriod <= 5)
  40. // mLinkZ2LEDDimmer.ONPeriod = DimmerSlope = 5;
  41. // }
  42. int i;
  43. for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
  44. {
  45. if(mLedDimmerList[i].BreathEffect == true && mLedDimmerList[i].IsON == true)
  46. {
  47. mLedDimmerList[i].ONPeriod += mLedDimmerList[i].DimmerSlope;
  48. if(mLedDimmerList[i].ONPeriod >= mLedDimmerList[i].TotalPeriod)
  49. {
  50. mLedDimmerList[i].DimmerSlope = -5;
  51. mLedDimmerList[i].ONPeriod = mLedDimmerList[i].TotalPeriod - 5;
  52. }
  53. else if(mLedDimmerList[i].ONPeriod <= 5)
  54. {
  55. mLedDimmerList[i].DimmerSlope = 5;
  56. }
  57. }
  58. }
  59. TimerStart(LED_EFFECT_TIMER,LED_EFFECT_TIMEOUT);
  60. }
  61. // if(mLinkZ2LEDDimmer.IsON)
  62. // {
  63. // if(mLinkZ2LEDDimmer.Counter++ >= mLinkZ2LEDDimmer.ONPeriod)
  64. // {
  65. // AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_OFF;
  66. // if(mLinkZ2LEDDimmer.Counter >= mLinkZ2LEDDimmer.TotalPeriod)
  67. // {
  68. // AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_ON;
  69. // mLinkZ2LEDDimmer.Counter = 0;
  70. // }
  71. // }
  72. // }
  73. int i;
  74. for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
  75. {
  76. if(mLedDimmerList[i].IsON)
  77. {
  78. if(mLedDimmerList[i].Counter++ >= mLedDimmerList[i].ONPeriod)
  79. {
  80. TurnOFF(i);
  81. if(mLedDimmerList[i].Counter >= mLedDimmerList[i].TotalPeriod)
  82. {
  83. TurnON(i);
  84. mLedDimmerList[i].Counter = 0;
  85. }
  86. }
  87. }
  88. }
  89. }
  90. int UpdatePushButtonLEDs(AVReceiverStatus_t *MainZoneStatus, AVReceiverStatus_t* Z2Status)
  91. {
  92. if(MainZoneStatus->MainPwrStatus == true)
  93. {
  94. LedMgrSetLED(AUDIO_CONSOLE_MAIN_PWR_LED,true,100,false);
  95. // AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_ON;
  96. }
  97. else
  98. {
  99. LedMgrSetLED(AUDIO_CONSOLE_MAIN_PWR_LED,false,100,false);
  100. // AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_OFF;
  101. }
  102. if(Z2Status->MainPwrStatus == true)
  103. {
  104. LedMgrSetLED(AUDIO_CONSOLE_Z2_PWR_LED,true,100,false);
  105. // AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_ON;
  106. }
  107. else
  108. {
  109. LedMgrSetLED(AUDIO_CONSOLE_Z2_PWR_LED,false,100,false);
  110. // AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_OFF;
  111. }
  112. if(MainZoneStatus->SyncZones == true)
  113. {
  114. LedMgrSetLED(AUDIO_CONSOLE_SYNC_Z2_LED,true,100,true);
  115. // AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_ON;
  116. // mLinkZ2LEDDimmer.IsON = true;
  117. // mLinkZ2LEDDimmer.Counter = 0;
  118. }
  119. else
  120. {
  121. LedMgrSetLED(AUDIO_CONSOLE_SYNC_Z2_LED,false,100,false);
  122. // AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_OFF;
  123. // mLinkZ2LEDDimmer.IsON = false;
  124. }
  125. return RET_OK;
  126. }
  127. int LedMgrSetLED(int LedID, bool ON, int Percent, bool breathe)
  128. {
  129. if(LedID >= AUDIO_CONSOLE_NB_LED)
  130. return RET_ERROR;
  131. if(Percent > 100)
  132. return RET_ERROR;
  133. if(ON == true)
  134. {
  135. TurnON(LedID);
  136. }
  137. else
  138. {
  139. TurnOFF(LedID);
  140. }
  141. if(ON != mLedDimmerList[LedID].IsON || breathe == false)
  142. {
  143. mLedDimmerList[LedID].ONPeriod = (((float)Percent/100)*mLedDimmerList[LedID].TotalPeriod);
  144. mLedDimmerList[LedID].Counter = 0;
  145. }
  146. mLedDimmerList[LedID].IsON = ON;
  147. mLedDimmerList[LedID].BreathEffect = breathe;
  148. return RET_OK;
  149. }
  150. int TurnON(int LedID)
  151. {
  152. switch(LedID)
  153. {
  154. case AUDIO_CONSOLE_SYNC_Z2_LED:
  155. {
  156. AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_ON;
  157. break;
  158. }
  159. case AUDIO_CONSOLE_MAIN_PWR_LED:
  160. {
  161. AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_ON;
  162. break;
  163. }
  164. case AUDIO_CONSOLE_Z2_PWR_LED:
  165. {
  166. AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_ON;
  167. break;
  168. }
  169. case AUDIO_CONSOLE_PUSHBTN_2_LED:
  170. {
  171. PUSH_BUTTON_LED2_PIN = LED_ON;
  172. break;
  173. }
  174. case AUDIO_CONSOLE_PUSHBTN_3_LED:
  175. {
  176. PUSH_BUTTON_LED3_PIN = LED_ON;
  177. break;
  178. }
  179. case AUDIO_CONSOLE_PUSHBTN_4_LED:
  180. {
  181. PUSH_BUTTON_LED4_PIN = LED_ON;
  182. break;
  183. }
  184. case AUDIO_CONSOLE_PUSHBTN_5_LED:
  185. {
  186. PUSH_BUTTON_LED5_PIN = LED_ON;
  187. break;
  188. }
  189. case AUDIO_CONSOLE_PUSHBTN_6_LED:
  190. {
  191. PUSH_BUTTON_LED6_PIN = LED_ON;
  192. break;
  193. }
  194. case AUDIO_CONSOLE_PUSHBTN_7_LED:
  195. {
  196. PUSH_BUTTON_LED7_PIN = LED_ON;
  197. break;
  198. }
  199. }
  200. return RET_OK;
  201. }
  202. int TurnOFF(int LedID)
  203. {
  204. switch(LedID)
  205. {
  206. case AUDIO_CONSOLE_SYNC_Z2_LED:
  207. {
  208. AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_OFF;
  209. break;
  210. }
  211. case AUDIO_CONSOLE_MAIN_PWR_LED:
  212. {
  213. AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_OFF;
  214. break;
  215. }
  216. case AUDIO_CONSOLE_Z2_PWR_LED:
  217. {
  218. AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_OFF;
  219. break;
  220. }
  221. case AUDIO_CONSOLE_PUSHBTN_2_LED:
  222. {
  223. PUSH_BUTTON_LED2_PIN = LED_OFF;
  224. break;
  225. }
  226. case AUDIO_CONSOLE_PUSHBTN_3_LED:
  227. {
  228. PUSH_BUTTON_LED3_PIN = LED_OFF;
  229. break;
  230. }
  231. case AUDIO_CONSOLE_PUSHBTN_4_LED:
  232. {
  233. PUSH_BUTTON_LED4_PIN = LED_OFF;
  234. break;
  235. }
  236. case AUDIO_CONSOLE_PUSHBTN_5_LED:
  237. {
  238. PUSH_BUTTON_LED5_PIN = LED_OFF;
  239. break;
  240. }
  241. case AUDIO_CONSOLE_PUSHBTN_6_LED:
  242. {
  243. PUSH_BUTTON_LED6_PIN = LED_OFF;
  244. break;
  245. }
  246. case AUDIO_CONSOLE_PUSHBTN_7_LED:
  247. {
  248. PUSH_BUTTON_LED7_PIN = LED_OFF;
  249. break;
  250. }
  251. }
  252. return RET_OK;
  253. }
  254. int LedMgrShowOfflineMode(bool Offline)
  255. {
  256. int i = 0;
  257. bool ON = true;
  258. if(Offline == true)
  259. {
  260. ON = false;
  261. }
  262. for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
  263. {
  264. LedMgrSetLED(i,ON,100,true);
  265. }
  266. }