Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 

158 рядки
4.2 KiB

  1. #include "VolumeTransducer.h"
  2. #include "define.h"
  3. #include "BoardCfg.h"
  4. #include "timer.h"
  5. #include <stdio.h>
  6. #include "Syslog.h"
  7. #include "AudioConsole.h"
  8. int mDebouncingBureau = false;
  9. int mDebouncingCuisine = false;
  10. int mBureauVolume = 0;
  11. int mCuisineVolume = 0;
  12. char VolDebug[100];
  13. int VolumeTransducerInit()
  14. {
  15. //Bureau volume transducer
  16. IEC0bits.INT1IE = 0;
  17. IFS0bits.INT1IF = 0;
  18. if(BUREAU_VOL_POT_CCW_PIN == 1)
  19. {
  20. INTCONbits.INT1EP = 0; //Falling edge
  21. }
  22. else
  23. {
  24. INTCONbits.INT1EP = 1; //Rising edge
  25. }
  26. IPC1bits.INT1IP = 2;
  27. IPC1bits.INT1IS = 1;
  28. IEC0bits.INT1IE = 1;
  29. //Cuisine volume transducer
  30. IEC0bits.INT3IE = 0;
  31. IFS0bits.INT3IF = 0;
  32. if(CUISINE_VOL_POT_CCW_PIN == 1)
  33. {
  34. INTCONbits.INT3EP = 0; //Falling edge
  35. }
  36. else
  37. {
  38. INTCONbits.INT3EP = 1; //Rising edge
  39. }
  40. IPC3bits.INT3IP = 2;
  41. IPC3bits.INT3IS = 2;
  42. IEC0bits.INT3IE = 1;
  43. mDebouncingBureau = false;
  44. mDebouncingCuisine = false;
  45. return RET_OK;
  46. }
  47. int VolumeTransducerTick()
  48. {
  49. if(mDebouncingBureau == true)
  50. {
  51. if(IsTimerExpired(BUREAU_VOLUME_TRANSDUCER_TIMER) == 1)
  52. {
  53. TimerStop(BUREAU_VOLUME_TRANSDUCER_TIMER);
  54. if(BUREAU_VOL_POT_CCW_PIN == BUREAU_VOL_POT_CW_PIN)
  55. {
  56. AudioConsoleVolumeDown(AUDIO_CONSOLE_SALON_ZONE);
  57. mBureauVolume += (-1 * VOLUME_TRANSDUCER_INCREMENT);
  58. // mBureauChange = 0;
  59. sprintf(VolDebug,"Bureau: %d\n",mBureauVolume);
  60. SyslogNewString(VolDebug);
  61. // mBureauChange = -1;
  62. }
  63. else
  64. {
  65. AudioConsoleVolumeUp(AUDIO_CONSOLE_SALON_ZONE);
  66. mBureauVolume += (VOLUME_TRANSDUCER_INCREMENT);
  67. // mBureauChange = 0;
  68. sprintf(VolDebug,"Bureau: %d\n",mBureauVolume);
  69. SyslogNewString(VolDebug);
  70. // mBureauChange = 1;
  71. }
  72. if(BUREAU_VOL_POT_CCW_PIN == 1)
  73. {
  74. INTCONbits.INT1EP = 0; //Falling edge
  75. }
  76. else
  77. {
  78. INTCONbits.INT1EP = 1; //Rising edge
  79. }
  80. IFS0bits.INT1IF = 0;
  81. IEC0bits.INT1IE = 1;
  82. mDebouncingBureau = false;
  83. }
  84. }
  85. if(mDebouncingCuisine == true)
  86. {
  87. if(IsTimerExpired(CUISINE_VOLUME_TRANSDUCER_TIMER) == 1)
  88. {
  89. TimerStop(CUISINE_VOLUME_TRANSDUCER_TIMER);
  90. if(CUISINE_VOL_POT_CCW_PIN == CUISINE_VOL_POT_CW_PIN)
  91. {
  92. AudioConsoleVolumeDown(AUDIO_CONSOLE_CUISINE_ZONE);
  93. mCuisineVolume += (-1 * VOLUME_TRANSDUCER_INCREMENT);
  94. // mBureauChange = 0;
  95. sprintf(VolDebug,"Cuisine: %d\n",mCuisineVolume);
  96. SyslogNewString(VolDebug);
  97. // mBureauChange = -1;
  98. }
  99. else
  100. {
  101. AudioConsoleVolumeUp(AUDIO_CONSOLE_CUISINE_ZONE);
  102. mCuisineVolume += (VOLUME_TRANSDUCER_INCREMENT);
  103. // mBureauChange = 0;
  104. sprintf(VolDebug,"Cuisine: %d\n",mCuisineVolume);
  105. SyslogNewString(VolDebug);
  106. // mBureauChange = 1;
  107. }
  108. if(CUISINE_VOL_POT_CCW_PIN == 1)
  109. {
  110. INTCONbits.INT3EP = 0; //Falling edge
  111. }
  112. else
  113. {
  114. INTCONbits.INT3EP = 1; //Rising edge
  115. }
  116. IFS0bits.INT3IF = 0;
  117. IEC0bits.INT3IE = 1;
  118. mDebouncingCuisine = false;
  119. }
  120. }
  121. }
  122. void __ISR(_EXTERNAL_1_VECTOR, ipl2) BureauTransducerInterrupt(void)
  123. {
  124. IEC0bits.INT1IE = 0;
  125. TimerStart(BUREAU_VOLUME_TRANSDUCER_TIMER,VOLUME_TRANSDUCER_DEBOUNCE_TIMEOUT);
  126. mDebouncingBureau = true;
  127. IFS0bits.INT1IF = 0; //Clear interrupt flag
  128. }
  129. void __ISR(_EXTERNAL_3_VECTOR, ipl2) CuisineTransducerInterrupt(void)
  130. {
  131. IEC0bits.INT3IE = 0;
  132. TimerStart(CUISINE_VOLUME_TRANSDUCER_TIMER,VOLUME_TRANSDUCER_DEBOUNCE_TIMEOUT);
  133. mDebouncingCuisine = true;
  134. IFS0bits.INT3IF = 0; //Clear interrupt flag
  135. }