158 lines
4.2 KiB
C
158 lines
4.2 KiB
C
#include "VolumeTransducer.h"
|
|
#include "define.h"
|
|
#include "BoardCfg.h"
|
|
#include "timer.h"
|
|
#include <stdio.h>
|
|
#include "Syslog.h"
|
|
#include "AudioConsole.h"
|
|
|
|
int mDebouncingBureau = false;
|
|
int mDebouncingCuisine = false;
|
|
int mBureauVolume = 0;
|
|
int mCuisineVolume = 0;
|
|
|
|
char VolDebug[100];
|
|
|
|
int VolumeTransducerInit()
|
|
{
|
|
//Bureau volume transducer
|
|
IEC0bits.INT1IE = 0;
|
|
IFS0bits.INT1IF = 0;
|
|
if(BUREAU_VOL_POT_CCW_PIN == 1)
|
|
{
|
|
INTCONbits.INT1EP = 0; //Falling edge
|
|
}
|
|
else
|
|
{
|
|
INTCONbits.INT1EP = 1; //Rising edge
|
|
}
|
|
IPC1bits.INT1IP = 2;
|
|
IPC1bits.INT1IS = 1;
|
|
IEC0bits.INT1IE = 1;
|
|
|
|
|
|
//Cuisine volume transducer
|
|
IEC0bits.INT3IE = 0;
|
|
IFS0bits.INT3IF = 0;
|
|
if(CUISINE_VOL_POT_CCW_PIN == 1)
|
|
{
|
|
INTCONbits.INT3EP = 0; //Falling edge
|
|
}
|
|
else
|
|
{
|
|
INTCONbits.INT3EP = 1; //Rising edge
|
|
}
|
|
IPC3bits.INT3IP = 2;
|
|
IPC3bits.INT3IS = 2;
|
|
IEC0bits.INT3IE = 1;
|
|
|
|
|
|
mDebouncingBureau = false;
|
|
mDebouncingCuisine = false;
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
|
|
int VolumeTransducerTick()
|
|
{
|
|
if(mDebouncingBureau == true)
|
|
{
|
|
if(IsTimerExpired(BUREAU_VOLUME_TRANSDUCER_TIMER) == 1)
|
|
{
|
|
TimerStop(BUREAU_VOLUME_TRANSDUCER_TIMER);
|
|
if(BUREAU_VOL_POT_CCW_PIN == BUREAU_VOL_POT_CW_PIN)
|
|
{
|
|
AudioConsoleVolumeDown(AUDIO_CONSOLE_SALON_ZONE);
|
|
mBureauVolume += (-1 * VOLUME_TRANSDUCER_INCREMENT);
|
|
// mBureauChange = 0;
|
|
|
|
sprintf(VolDebug,"Bureau: %d\n",mBureauVolume);
|
|
SyslogNewString(VolDebug);
|
|
// mBureauChange = -1;
|
|
}
|
|
else
|
|
{
|
|
AudioConsoleVolumeUp(AUDIO_CONSOLE_SALON_ZONE);
|
|
mBureauVolume += (VOLUME_TRANSDUCER_INCREMENT);
|
|
// mBureauChange = 0;
|
|
|
|
sprintf(VolDebug,"Bureau: %d\n",mBureauVolume);
|
|
SyslogNewString(VolDebug);
|
|
// mBureauChange = 1;
|
|
}
|
|
if(BUREAU_VOL_POT_CCW_PIN == 1)
|
|
{
|
|
INTCONbits.INT1EP = 0; //Falling edge
|
|
}
|
|
else
|
|
{
|
|
INTCONbits.INT1EP = 1; //Rising edge
|
|
}
|
|
IFS0bits.INT1IF = 0;
|
|
IEC0bits.INT1IE = 1;
|
|
mDebouncingBureau = false;
|
|
}
|
|
}
|
|
|
|
|
|
if(mDebouncingCuisine == true)
|
|
{
|
|
if(IsTimerExpired(CUISINE_VOLUME_TRANSDUCER_TIMER) == 1)
|
|
{
|
|
TimerStop(CUISINE_VOLUME_TRANSDUCER_TIMER);
|
|
if(CUISINE_VOL_POT_CCW_PIN == CUISINE_VOL_POT_CW_PIN)
|
|
{
|
|
AudioConsoleVolumeDown(AUDIO_CONSOLE_CUISINE_ZONE);
|
|
mCuisineVolume += (-1 * VOLUME_TRANSDUCER_INCREMENT);
|
|
// mBureauChange = 0;
|
|
|
|
sprintf(VolDebug,"Cuisine: %d\n",mCuisineVolume);
|
|
SyslogNewString(VolDebug);
|
|
// mBureauChange = -1;
|
|
}
|
|
else
|
|
{
|
|
AudioConsoleVolumeUp(AUDIO_CONSOLE_CUISINE_ZONE);
|
|
mCuisineVolume += (VOLUME_TRANSDUCER_INCREMENT);
|
|
// mBureauChange = 0;
|
|
|
|
sprintf(VolDebug,"Cuisine: %d\n",mCuisineVolume);
|
|
SyslogNewString(VolDebug);
|
|
// mBureauChange = 1;
|
|
}
|
|
if(CUISINE_VOL_POT_CCW_PIN == 1)
|
|
{
|
|
INTCONbits.INT3EP = 0; //Falling edge
|
|
}
|
|
else
|
|
{
|
|
INTCONbits.INT3EP = 1; //Rising edge
|
|
}
|
|
IFS0bits.INT3IF = 0;
|
|
IEC0bits.INT3IE = 1;
|
|
mDebouncingCuisine = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void __ISR(_EXTERNAL_1_VECTOR, ipl2) BureauTransducerInterrupt(void)
|
|
{
|
|
IEC0bits.INT1IE = 0;
|
|
|
|
TimerStart(BUREAU_VOLUME_TRANSDUCER_TIMER,VOLUME_TRANSDUCER_DEBOUNCE_TIMEOUT);
|
|
mDebouncingBureau = true;
|
|
|
|
IFS0bits.INT1IF = 0; //Clear interrupt flag
|
|
}
|
|
|
|
void __ISR(_EXTERNAL_3_VECTOR, ipl2) CuisineTransducerInterrupt(void)
|
|
{
|
|
IEC0bits.INT3IE = 0;
|
|
|
|
TimerStart(CUISINE_VOLUME_TRANSDUCER_TIMER,VOLUME_TRANSDUCER_DEBOUNCE_TIMEOUT);
|
|
mDebouncingCuisine = true;
|
|
|
|
IFS0bits.INT3IF = 0; //Clear interrupt flag
|
|
} |