[Voice] Slider for the audio volume
[Sky9x] Defaut audio volume is 12 (max is 23) Issue 166 continued
This commit is contained in:
+2
-2
@@ -124,8 +124,6 @@ extern uint16_t sessionTimer;
|
||||
void eeWriteBlockCmp(const void *pointer_ram, uint16_t pointer_eeprom, size_t size);
|
||||
#endif
|
||||
|
||||
#define NUM_VOL_LEVELS 24
|
||||
|
||||
void audioInit( void ) ;
|
||||
void audioEnd( void ) ;
|
||||
|
||||
@@ -145,6 +143,8 @@ inline void dacStop()
|
||||
{
|
||||
}
|
||||
|
||||
#define VOLUME_LEVEL_MAX 23
|
||||
#define VOLUME_LEVEL_DEF 12
|
||||
inline void setVolume( register uint8_t volume )
|
||||
{
|
||||
}
|
||||
|
||||
+36
-28
@@ -79,21 +79,34 @@ const MenuFuncP_PROGMEM menuTabDiag[] PROGMEM = {
|
||||
#define RADIO_SETUP_DATE_COLUMN (FW*15+5)
|
||||
#endif
|
||||
|
||||
#if defined(GRAPHICS)
|
||||
void displaySlider(uint8_t x, uint8_t y, uint8_t value, uint8_t attr)
|
||||
{
|
||||
lcd_putc(RADIO_SETUP_2ND_COLUMN+2*FW+(value*FW), y, '$');
|
||||
lcd_hline(RADIO_SETUP_2ND_COLUMN, y+3, 5*FW-1, SOLID);
|
||||
if (attr && (!(attr & BLINK) || !BLINK_ON_PHASE)) lcd_filled_rect(RADIO_SETUP_2ND_COLUMN, y, 5*FW-1, FH-1);
|
||||
}
|
||||
#define SLIDER(y, value, min, max, label, values, event, attr) { \
|
||||
int8_t tmp = value; \
|
||||
displaySlider(RADIO_SETUP_2ND_COLUMN, y, tmp, attr); \
|
||||
value = selectMenuItem(RADIO_SETUP_2ND_COLUMN, y, label, NULL, tmp, min, max, attr, event); \
|
||||
}
|
||||
#if !defined(CPUM64)
|
||||
void displaySlider(uint8_t x, uint8_t y, uint8_t value, uint8_t max, uint8_t attr)
|
||||
{
|
||||
lcd_putc(RADIO_SETUP_2ND_COLUMN+(value*4*FW)/max, y, '$');
|
||||
lcd_hline(RADIO_SETUP_2ND_COLUMN, y+3, 5*FW-1, SOLID);
|
||||
if (attr && (!(attr & BLINK) || !BLINK_ON_PHASE)) lcd_filled_rect(RADIO_SETUP_2ND_COLUMN, y, 5*FW-1, FH-1);
|
||||
}
|
||||
#define SLIDER_5POS(y, value, label, event, attr) { \
|
||||
int8_t tmp = value; \
|
||||
displaySlider(RADIO_SETUP_2ND_COLUMN, y, 2+tmp, 4, attr); \
|
||||
value = selectMenuItem(RADIO_SETUP_2ND_COLUMN, y, label, NULL, tmp, -2, +2, attr, event); \
|
||||
}
|
||||
#elif defined(GRAPHICS)
|
||||
void display5posSlider(uint8_t x, uint8_t y, uint8_t value, uint8_t attr)
|
||||
{
|
||||
lcd_putc(RADIO_SETUP_2ND_COLUMN+2*FW+(value*FW), y, '$');
|
||||
lcd_hline(RADIO_SETUP_2ND_COLUMN, y+3, 5*FW-1, SOLID);
|
||||
if (attr && (!(attr & BLINK) || !BLINK_ON_PHASE)) lcd_filled_rect(RADIO_SETUP_2ND_COLUMN, y, 5*FW-1, FH-1);
|
||||
}
|
||||
#define SLIDER_5POS(y, value, label, event, attr) { \
|
||||
int8_t tmp = value; \
|
||||
display5posSlider(RADIO_SETUP_2ND_COLUMN, y, tmp, attr); \
|
||||
value = selectMenuItem(RADIO_SETUP_2ND_COLUMN, y, label, NULL, tmp, -2, +2, attr, event); \
|
||||
}
|
||||
#define displaySlider(x, y, value, max, attr) lcd_outdezAtt(x, y, value, attr|LEFT)
|
||||
#else
|
||||
#define SLIDER(y, value, min, max, label, values, event, attr) \
|
||||
value = selectMenuItem(RADIO_SETUP_2ND_COLUMN, y, label, values, value, min, max, attr, event)
|
||||
#define SLIDER_5POS(y, value, label, event, attr) value = selectMenuItem(RADIO_SETUP_2ND_COLUMN, y, label, STR_VBEEPLEN, value, -2, +2, attr, event)
|
||||
#define displaySlider(x, y, value, max, attr) lcd_outdezAtt(x, y, value, attr|LEFT)
|
||||
#endif
|
||||
|
||||
enum menuGeneralSetupItems {
|
||||
@@ -228,7 +241,7 @@ void menuGeneralSetup(uint8_t event)
|
||||
break;
|
||||
|
||||
case ITEM_SETUP_BEEPER_LENGTH:
|
||||
SLIDER(y, g_eeGeneral.beeperLength, -2, 2, STR_LENGTH, STR_VBEEPLEN, event, attr);
|
||||
SLIDER_5POS(y, g_eeGeneral.beeperLength, STR_LENGTH, event, attr);
|
||||
break;
|
||||
|
||||
#if defined(AUDIO)
|
||||
@@ -245,22 +258,17 @@ void menuGeneralSetup(uint8_t event)
|
||||
case ITEM_SETUP_SPEAKER_VOLUME:
|
||||
{
|
||||
lcd_putsLeft(y, STR_SPEAKER_VOLUME);
|
||||
#if defined(CPUARM)
|
||||
lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.speakerVolume, attr|LEFT);
|
||||
uint8_t b = g_eeGeneral.speakerVolume+VOLUME_LEVEL_DEF;
|
||||
displaySlider(RADIO_SETUP_2ND_COLUMN, y, b, VOLUME_LEVEL_MAX, attr);
|
||||
if (attr) {
|
||||
CHECK_INCDEC_GENVAR(event, g_eeGeneral.speakerVolume, 0, NUM_VOL_LEVELS-1);
|
||||
}
|
||||
#else
|
||||
uint8_t b = g_eeGeneral.speakerVolume+7;
|
||||
lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, b, attr|LEFT);
|
||||
if (attr) {
|
||||
CHECK_INCDEC_GENVAR(event, b, 0, 7);
|
||||
CHECK_INCDEC_GENVAR(event, b, 0, VOLUME_LEVEL_MAX);
|
||||
if (checkIncDec_Ret) {
|
||||
g_eeGeneral.speakerVolume = (int8_t)b-7;
|
||||
SET_VOLUME(b);
|
||||
g_eeGeneral.speakerVolume = (int8_t)b-VOLUME_LEVEL_DEF;
|
||||
#if !defined(CPUARM)
|
||||
setVolume(b);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
@@ -275,7 +283,7 @@ void menuGeneralSetup(uint8_t event)
|
||||
break;
|
||||
|
||||
case ITEM_SETUP_HAPTIC_LENGTH:
|
||||
SLIDER(y, g_eeGeneral.hapticLength, -2, 2, STR_LENGTH, STR_VBEEPLEN, event, attr);
|
||||
SLIDER_5POS(y, g_eeGeneral.hapticLength, STR_LENGTH, event, attr);
|
||||
break;
|
||||
|
||||
case ITEM_SETUP_HAPTIC_STRENGTH:
|
||||
|
||||
@@ -46,4 +46,6 @@ extern bool isPlaying(uint8_t id);
|
||||
#define IS_PLAYING(id) isPlaying((id))
|
||||
#define PLAY_VALUE(v, id) playValue((v), (id))
|
||||
|
||||
#define SET_VOLUME(v)
|
||||
#define VOLUME_LEVEL_MAX 7
|
||||
#define VOLUME_LEVEL_DEF 7
|
||||
#define setVolume(v)
|
||||
|
||||
+1
-1
@@ -106,7 +106,7 @@ enum BeeperMode {
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define EXTRA_GENERAL_FIELDS \
|
||||
uint8_t speakerVolume; \
|
||||
int8_t speakerVolume; \
|
||||
uint8_t backlightBright; \
|
||||
int8_t currentCalib; \
|
||||
int8_t temperatureWarn; \
|
||||
|
||||
+6
-5
@@ -2177,7 +2177,7 @@ void evalFunctions()
|
||||
}
|
||||
}
|
||||
else if (sd->func == FUNC_VOLUME) {
|
||||
requiredSpeakerVolume = ((1024 + getValue(FSW_PARAM(sd))) * NUM_VOL_LEVELS) / 2048;
|
||||
requiredSpeakerVolume = ((1024 + getValue(FSW_PARAM(sd))) * VOLUME_LEVEL_MAX) / 2048;
|
||||
}
|
||||
#elif defined(VOICE)
|
||||
else if (sd->func == FUNC_PLAY_TRACK) {
|
||||
@@ -2888,7 +2888,7 @@ void doMixerCalculations()
|
||||
}
|
||||
|
||||
#if defined(CPUARM)
|
||||
requiredSpeakerVolume = g_eeGeneral.speakerVolume;
|
||||
requiredSpeakerVolume = g_eeGeneral.speakerVolume + VOLUME_LEVEL_DEF;
|
||||
#endif
|
||||
|
||||
evalFunctions();
|
||||
@@ -3436,11 +3436,12 @@ inline void open9xInit(OPEN9X_INIT_ARGS)
|
||||
|
||||
eeReadAll();
|
||||
|
||||
#if defined(VOICE)
|
||||
setVolume(g_eeGeneral.speakerVolume+VOLUME_LEVEL_DEF);
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
setVolume(g_eeGeneral.speakerVolume);
|
||||
setBacklight(g_eeGeneral.backlightBright);
|
||||
#elif defined(VOICE)
|
||||
SET_VOLUME(g_eeGeneral.speakerVolume+7);
|
||||
#endif
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
|
||||
@@ -165,7 +165,7 @@ void audioEnd()
|
||||
PMC->PMC_PCER0 &= ~0x40000000L ; // Disable peripheral clock to DAC
|
||||
}
|
||||
|
||||
static const int8_t volumeScale[NUM_VOL_LEVELS] =
|
||||
static const int8_t volumeScale[VOLUME_LEVEL_MAX+1] =
|
||||
{
|
||||
0, 2, 4, 6, 8, 10, 13, 17, 22, 27, 33, 40,
|
||||
64, 82, 96, 105, 112, 117, 120, 122, 124, 125, 126, 127
|
||||
@@ -173,7 +173,7 @@ static const int8_t volumeScale[NUM_VOL_LEVELS] =
|
||||
|
||||
void setVolume(uint8_t volume)
|
||||
{
|
||||
coprocVolumeRequired = volumeScale[min<uint8_t>(volume, NUM_VOL_LEVELS-1)];
|
||||
coprocVolumeRequired = volumeScale[min<uint8_t>(volume, VOLUME_LEVEL_MAX)];
|
||||
__disable_irq() ;
|
||||
coprocCheck() ;
|
||||
__enable_irq() ;
|
||||
|
||||
@@ -35,8 +35,6 @@
|
||||
#ifndef audio_driver_h
|
||||
#define audio_driver_h
|
||||
|
||||
#define NUM_VOL_LEVELS 24
|
||||
|
||||
void audioInit( void ) ;
|
||||
void audioEnd( void ) ;
|
||||
|
||||
@@ -57,6 +55,8 @@ inline void dacStop()
|
||||
DACC->DACC_IDR = DACC_IDR_ENDTX ; // Disable interrupt
|
||||
}
|
||||
|
||||
#define VOLUME_LEVEL_MAX 23
|
||||
#define VOLUME_LEVEL_DEF 12
|
||||
void setVolume(uint8_t volume);
|
||||
|
||||
inline void dacFill(uint16_t *data, uint16_t size)
|
||||
|
||||
+3
-1
@@ -75,7 +75,9 @@ extern void pushPrompt16(uint16_t value);
|
||||
extern struct t_voice *voiceaddress( void ) ;
|
||||
extern struct t_voice Voice ;
|
||||
|
||||
#define SET_VOLUME(v) pushPrompt16((v) | 0xFFF0)
|
||||
#define VOLUME_LEVEL_MAX 7
|
||||
#define VOLUME_LEVEL_DEF 7
|
||||
#define setVolume(v) pushPrompt16((v) | 0xFFF0)
|
||||
|
||||
inline bool isPlaying()
|
||||
{
|
||||
|
||||
+10
-1
@@ -216,7 +216,16 @@
|
||||
#else
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#endif
|
||||
#define TR_VSRCRAW "Sm\203r""V\212\207k""Plyn""K\206id""Pot1""Pot2""Pot3" TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmV" "TrmP" "TrmK" "MAX ""3POS" TR_CYC_VSRCRAW
|
||||
|
||||
#if defined (P13POS)
|
||||
#define TR_VSRCRAW "Sm\203r""V\212\207k""Plyn""K\206id""3PO2""Pot2""Pot3" TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmV" "TrmP" "TrmK" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P23POS)
|
||||
#define TR_VSRCRAW "Sm\203r""V\212\207k""Plyn""K\206id""Pot1""3PO2""Pot3" TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmV" "TrmP" "TrmK" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P33POS)
|
||||
#define TR_VSRCRAW "Sm\203r""V\212\207k""Plyn""K\206id""Pot1""Pot3""3PO2" TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmV" "TrmP" "TrmK" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elseN
|
||||
#define TR_VSRCRAW "Sm\203r""V\212\207k""Plyn""K\206id""Pot1""Pot2""Pot3" TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmV" "TrmP" "TrmK" "MAX ""3POS" TR_CYC_VSRCRAW
|
||||
#endif
|
||||
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "VYP""ABS""THs""TH%""THt"
|
||||
|
||||
+10
-1
@@ -217,7 +217,16 @@
|
||||
#else
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#endif
|
||||
#define TR_VSRCRAW "StR\0""H\203R\0""Gas\0""QuR\0""P1\0 ""P2\0 ""P3\0 " TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmH" "TrmG" "TrmQ" "MAX\0""3POS" TR_CYC_VSRCRAW
|
||||
|
||||
#if defined (P13POS)
|
||||
#define TR_VSRCRAW "StR\0""H\203R\0""Gas\0""QuR\0""3PO2""P2\0 ""P3\0 " TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmH" "TrmG" "TrmQ" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P23POS)
|
||||
#define TR_VSRCRAW "StR\0""H\203R\0""Gas\0""QuR\0""P1\0 ""3PO2""P3\0 " TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmH" "TrmG" "TrmQ" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P33POS)
|
||||
#define TR_VSRCRAW "StR\0""H\203R\0""Gas\0""QuR\0""P1\0 ""P2\0 ""3PO2" TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmH" "TrmG" "TrmQ" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#else
|
||||
#define TR_VSRCRAW "StR\0""H\203R\0""Gas\0""QuR\0""P1\0 ""P2\0 ""P3\0 " TR_ROTARY_ENCODERS_VSRCRAW "TrmS" "TrmH" "TrmG" "TrmQ" "MAX\0""3POS" TR_CYC_VSRCRAW
|
||||
#endif
|
||||
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "AUS""ABS""GSs""GS%""GSt"
|
||||
|
||||
+106
-75
@@ -36,34 +36,39 @@
|
||||
#define TR_VTRIMINC TR("Expo ""ExFine""Fine ""Medium""Coarse","Exponential""Extra Fine ""Fine ""Medium ""Coarse ")
|
||||
|
||||
#define LEN_RETA123 "\001"
|
||||
|
||||
#if defined(PCBGRUVIN9X)
|
||||
#if ROTARY_ENCODERS > 2
|
||||
#define TR_RETA123 "RETA123abcd"
|
||||
#else
|
||||
#define TR_RETA123 "RETA123ab"
|
||||
#endif
|
||||
#if ROTARY_ENCODERS > 2
|
||||
#define TR_RETA123 "RETA123abcd"
|
||||
#else
|
||||
#define TR_RETA123 "RETA123ab"
|
||||
#endif
|
||||
#elif defined(PCBX9D)
|
||||
#define TR_RETA123 "RETA12LR"
|
||||
#define TR_RETA123 "RETA12LR"
|
||||
#else
|
||||
#define TR_RETA123 "RETA123"
|
||||
#define TR_RETA123 "RETA123"
|
||||
#endif
|
||||
|
||||
#define LEN_VPROTOS "\006"
|
||||
#ifdef PXX
|
||||
#define TR_PXX "PXX\0 "
|
||||
|
||||
#if defined(PXX)
|
||||
#define TR_PXX "PXX\0 "
|
||||
#else
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#define TR_PXX "[PXX]\0"
|
||||
#endif
|
||||
#ifdef DSM2
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
|
||||
#if defined(DSM2)
|
||||
#define TR_DSM2 "DSM2\0 "
|
||||
#else
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#define TR_DSM2 "[DSM2]"
|
||||
#endif
|
||||
#ifdef IRPROTOS
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
|
||||
#if defined(IRPROTOS)
|
||||
#define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0"
|
||||
#else
|
||||
#define TR_IRPROTOS
|
||||
#define TR_IRPROTOS
|
||||
#endif
|
||||
|
||||
#define TR_VPROTOS "PPM\0 ""PPM16\0""PPMsim" TR_PXX TR_DSM2 TR_IRPROTOS
|
||||
|
||||
#define LEN_POSNEG "\003"
|
||||
@@ -85,58 +90,65 @@
|
||||
#define TR_VCSWFUNC "---\0 ""v>ofs\0 ""v<ofs\0 ""|v|>ofs\0""|v|<ofs\0""AND\0 ""OR\0 ""XOR\0 ""v1==v2\0 ""v1!=v2\0 ""v1>v2\0 ""v1<v2\0 ""v1>=v2\0 ""v1<=v2\0 ""d>=ofs\0 ""|d|>=ofs"
|
||||
|
||||
#define LEN_VFSWFUNC "\013"
|
||||
|
||||
#if defined(VARIO)
|
||||
#define TR_VVARIO "Vario\0 "
|
||||
#define TR_VVARIO "Vario\0 "
|
||||
#else
|
||||
#define TR_VVARIO "[Vario]\0 "
|
||||
#define TR_VVARIO "[Vario]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(AUDIO)
|
||||
#define TR_SOUND "Play Sound\0"
|
||||
#define TR_SOUND "Play Sound\0"
|
||||
#else
|
||||
#define TR_SOUND "Beep\0 "
|
||||
#define TR_SOUND "Beep\0 "
|
||||
#endif
|
||||
|
||||
#if defined(HAPTIC)
|
||||
#define TR_HAPTIC "Haptic\0 "
|
||||
#define TR_HAPTIC "Haptic\0 "
|
||||
#else
|
||||
#define TR_HAPTIC "[Haptic]\0 "
|
||||
#define TR_HAPTIC "[Haptic]\0 "
|
||||
#endif
|
||||
|
||||
#if defined(VOICE)
|
||||
#define TR_PLAY_TRACK "Play Track\0"
|
||||
#define TR_PLAY_VALUE "Play Value\0"
|
||||
#define TR_PLAY_TRACK "Play Track\0"
|
||||
#define TR_PLAY_VALUE "Play Value\0"
|
||||
#else
|
||||
#define TR_PLAY_TRACK "[PlayTrack]"
|
||||
#define TR_PLAY_VALUE "[PlayValue]"
|
||||
#define TR_PLAY_TRACK "[PlayTrack]"
|
||||
#define TR_PLAY_VALUE "[PlayValue]"
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#if defined(SDCARD)
|
||||
#define TR_SDCLOGS "SD Logs\0 "
|
||||
#else
|
||||
#define TR_SDCLOGS "[SD Logs]\0 "
|
||||
#endif
|
||||
#define TR_FSW_VOLUME "Volume\0 "
|
||||
#define TR_FSW_BG_MUSIC "BgMusic\0 ""BgMusic ||\0"
|
||||
#if defined(SDCARD)
|
||||
#define TR_SDCLOGS "SD Logs\0 "
|
||||
#else
|
||||
#define TR_SDCLOGS "[SD Logs]\0 "
|
||||
#endif
|
||||
#define TR_FSW_VOLUME "Volume\0 "
|
||||
#define TR_FSW_BG_MUSIC "BgMusic\0 ""BgMusic ||\0"
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#if defined(SDCARD)
|
||||
#define TR_SDCLOGS "SD Logs\0 "
|
||||
#if defined(SDCARD)
|
||||
#define TR_SDCLOGS "SD Logs\0 "
|
||||
#else
|
||||
#define TR_SDCLOGS "[SD Logs]\0 "
|
||||
#endif
|
||||
#define TR_FSW_VOLUME
|
||||
#define TR_FSW_BG_MUSIC
|
||||
#else
|
||||
#define TR_SDCLOGS "[SD Logs]\0 "
|
||||
#endif
|
||||
#define TR_FSW_VOLUME
|
||||
#define TR_FSW_BG_MUSIC
|
||||
#else
|
||||
#define TR_SDCLOGS
|
||||
#define TR_FSW_VOLUME
|
||||
#define TR_FSW_BG_MUSIC
|
||||
#define TR_SDCLOGS
|
||||
#define TR_FSW_VOLUME
|
||||
#define TR_FSW_BG_MUSIC
|
||||
#endif
|
||||
|
||||
#ifdef GVARS
|
||||
#define TR_FSW_ADJUST_GVAR "Adjust \0 "
|
||||
#define TR_FSW_ADJUST_GVAR "Adjust \0 "
|
||||
#else
|
||||
#define TR_FSW_ADJUST_GVAR
|
||||
#define TR_FSW_ADJUST_GVAR
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#define TR_FSW_TEST "Test\0"
|
||||
#define TR_FSW_TEST "Test\0"
|
||||
#else
|
||||
#define TR_FSW_TEST
|
||||
#define TR_FSW_TEST
|
||||
#endif
|
||||
|
||||
#define TR_VFSWFUNC "Safety\0 ""Trainer \0 ""Inst. Trim\0" TR_SOUND TR_HAPTIC "Reset\0 " TR_VVARIO TR_PLAY_TRACK TR_PLAY_VALUE TR_SDCLOGS TR_FSW_VOLUME "Backlight\0 " TR_FSW_BG_MUSIC TR_FSW_ADJUST_GVAR TR_FSW_TEST
|
||||
@@ -151,11 +163,11 @@
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""Tx\0 ""Rx\0 ""A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cur+""Acc\0""Time"
|
||||
|
||||
#ifdef IMPERIAL_UNITS
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
#define SPEED_UNIT "kts"
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
#define SPEED_UNIT "kts"
|
||||
#else
|
||||
#define LENGTH_UNIT "m\0 "
|
||||
#define SPEED_UNIT "kmh"
|
||||
#define LENGTH_UNIT "m\0 "
|
||||
#define SPEED_UNIT "kmh"
|
||||
#endif
|
||||
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
@@ -199,37 +211,50 @@
|
||||
|
||||
#define LEN_VSWITCHES "\003"
|
||||
#if defined(PCBX9D)
|
||||
#define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON"
|
||||
#define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON"
|
||||
#elif defined(PCBSKY9X)
|
||||
#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON"
|
||||
#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON"
|
||||
#else
|
||||
#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC"" ON"
|
||||
#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC"" ON"
|
||||
#endif
|
||||
|
||||
#define LEN_VSRCRAW "\004"
|
||||
|
||||
#if defined(PCBX9D)
|
||||
#define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 "
|
||||
#define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 "
|
||||
#define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 "
|
||||
#define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 "
|
||||
#elif defined (P13POS)
|
||||
#define TR_POTS_VSRCRAW "3PO2""P2\0 ""P3\0 "
|
||||
#define TR_SW_VSRCRAW "3PO1"
|
||||
#elif defined (P23POS)
|
||||
#define TR_POTS_VSRCRAW "P1\0 ""3PO2""P3\0 "
|
||||
#define TR_SW_VSRCRAW "3PO1"
|
||||
#elif defined (P33POS)
|
||||
#define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""3PO2"
|
||||
#define TR_SW_VSRCRAW "3PO1"
|
||||
#else
|
||||
#define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 "
|
||||
#define TR_SW_VSRCRAW "3POS"
|
||||
#define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 "
|
||||
#define TR_SW_VSRCRAW "3POS"
|
||||
#endif
|
||||
|
||||
#if defined(PCBX9D)
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW
|
||||
#elif defined(PCBSKY9X)
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW "REa "
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW "REa "
|
||||
#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd "
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd "
|
||||
#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb "
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb "
|
||||
#else
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW
|
||||
#define TR_ROTARY_ENCODERS_VSRCRAW
|
||||
#endif
|
||||
|
||||
#if defined(HELI)
|
||||
#define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3"
|
||||
#define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3"
|
||||
#else
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#endif
|
||||
|
||||
#define TR_VSRCRAW "Rud\0""Ele\0""Thr\0""Ail\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX " TR_SW_VSRCRAW TR_CYC_VSRCRAW
|
||||
|
||||
#define LEN_VTMRMODES "\003"
|
||||
@@ -250,9 +275,9 @@
|
||||
#endif
|
||||
#define OFS_EXIT 7
|
||||
#if defined(PCBX9D)
|
||||
#define TR_MENUWHENDONE CENTER"\006[ENTER] WHEN DONE"
|
||||
#define TR_MENUWHENDONE CENTER"\006[ENTER] WHEN DONE"
|
||||
#else
|
||||
#define TR_MENUWHENDONE CENTER"\006[MENU] WHEN DONE"
|
||||
#define TR_MENUWHENDONE CENTER"\006[MENU] WHEN DONE"
|
||||
#endif
|
||||
#define TR_FREE "free"
|
||||
#define TR_DELETEMODEL "DELETE MODEL"
|
||||
@@ -345,11 +370,13 @@
|
||||
#define TR_CAL "Cal"
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
|
||||
#if defined(PCBX9D)
|
||||
#define TR_MENUTOSTART CENTER"\006[ENTER] TO START"
|
||||
#define TR_MENUTOSTART CENTER"\006[ENTER] TO START"
|
||||
#else
|
||||
#define TR_MENUTOSTART CENTER"\006[MENU] TO START"
|
||||
#define TR_MENUTOSTART CENTER"\006[MENU] TO START"
|
||||
#endif
|
||||
|
||||
#define TR_SETMIDPOINT CENTER"\003SET STICKS MIDPOINT"
|
||||
#define TR_MOVESTICKSPOTS CENTER"\006MOVE STICKS/POTS"
|
||||
#define TR_RXBATT "Rx Batt:"
|
||||
@@ -364,11 +391,13 @@
|
||||
#define STR_US (STR_TMR1LATMAXUS+12)
|
||||
#define TR_TMR1LATMINUS "Tmr1Lat min\006us"
|
||||
#define TR_TMR1JITTERUS "Tmr1 Jitter\006us"
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define TR_TMIXMAXMS "Tmix max\012ms"
|
||||
#define TR_TMIXMAXMS "Tmix max\012ms"
|
||||
#else
|
||||
#define TR_TMIXMAXMS "Tmix max\014ms"
|
||||
#define TR_TMIXMAXMS "Tmix max\014ms"
|
||||
#endif
|
||||
|
||||
#define TR_T10MSUS "T10ms\016us"
|
||||
#define TR_FREESTACKMINB "Free Stack\010b"
|
||||
#define TR_MENUTORESET "[MENU] to reset"
|
||||
@@ -399,13 +428,15 @@
|
||||
#define TR_MENUFLIGHTPHASE "FLIGHT PHASE"
|
||||
#define TR_MENUFLIGHTPHASES "FLIGHT PHASES"
|
||||
#define TR_MENUHELISETUP "HELI SETUP"
|
||||
|
||||
#if defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ...
|
||||
#define TR_MENUDREXPO "STICKS"
|
||||
#define TR_MENULIMITS "OUTPUTS"
|
||||
#define TR_MENUDREXPO "STICKS"
|
||||
#define TR_MENULIMITS "OUTPUTS"
|
||||
#else
|
||||
#define TR_MENUDREXPO "DR/EXPO"
|
||||
#define TR_MENULIMITS "LIMITS"
|
||||
#define TR_MENUDREXPO "DR/EXPO"
|
||||
#define TR_MENULIMITS "LIMITS"
|
||||
#endif
|
||||
|
||||
#define TR_MENUCURVES "CURVES"
|
||||
#define TR_MENUCURVE "CURVE"
|
||||
#define TR_MENUCUSTOMSWITCH "CUSTOM SWITCH"
|
||||
|
||||
+10
-1
@@ -209,7 +209,16 @@
|
||||
#else
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#endif
|
||||
#define TR_VSRCRAW "Dir ""Ele ""Acel""Ail ""P1 ""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3POS" TR_CYC_VSRCRAW
|
||||
|
||||
#if defined (P13POS)
|
||||
#define TR_VSRCRAW "Dir ""Ele ""Acel""Ail ""3PO2""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P23POS)
|
||||
#define TR_VSRCRAW "Dir ""Ele ""Acel""Ail ""P1 ""3PO2""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P33POS)
|
||||
#define TR_VSRCRAW "Dir ""Ele ""Acel""Ail ""P1 ""P2 ""3PO2" TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#else
|
||||
#define TR_VSRCRAW "Dir ""Ele ""Acel""Ail ""P1 ""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3POS" TR_CYC_VSRCRAW
|
||||
#endif
|
||||
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt"
|
||||
|
||||
+11
-1
@@ -217,7 +217,16 @@
|
||||
#else
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#endif
|
||||
#define TR_VSRCRAW "Dir\0""Prf\0""Gaz\0""Ail\0""P1\0 ""P2\0 ""P3\0 " TR_ROTARY_ENCODERS_VSRCRAW "TrmD" "TrmP" "TrmG" "TrmA" "MAX\0""3POS" TR_CYC_VSRCRAW
|
||||
|
||||
#if defined (P13POS)
|
||||
#define TR_VSRCRAW "Dir\0""Prf\0""Gaz\0""Ail\0""3PO2""P2\0 ""P3\0 " TR_ROTARY_ENCODERS_VSRCRAW "TrmD" "TrmP" "TrmG" "TrmA" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P23POS)
|
||||
#define TR_VSRCRAW "Dir\0""Prf\0""Gaz\0""Ail\0""P1\0 ""3PO2""P3\0 " TR_ROTARY_ENCODERS_VSRCRAW "TrmD" "TrmP" "TrmG" "TrmA" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P33POS)
|
||||
#define TR_VSRCRAW "Dir\0""Prf\0""Gaz\0""Ail\0""P1\0 ""P2\0 ""3PO2" TR_ROTARY_ENCODERS_VSRCRAW "TrmD" "TrmP" "TrmG" "TrmA" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#else
|
||||
#define TR_VSRCRAW "Dir\0""Prf\0""Gaz\0""Ail\0""P1\0 ""P2\0 ""P3\0 " TR_ROTARY_ENCODERS_VSRCRAW "TrmD" "TrmP" "TrmG" "TrmA" "MAX\0""3POS" TR_CYC_VSRCRAW
|
||||
#endif
|
||||
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""GZs""GZ%""GZt"
|
||||
@@ -248,6 +257,7 @@
|
||||
#define TR_BEEPCTR "Bips Centr"
|
||||
#define TR_PROTO INDENT"Proto."
|
||||
#define TR_PPMFRAME "Trame PPM"
|
||||
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Inter"
|
||||
#define TR_BITMAP "Bitmap"
|
||||
|
||||
+12
-1
@@ -215,7 +215,18 @@
|
||||
#else
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#endif
|
||||
#define TR_VSRCRAW "Rud ""Ele ""Thr ""Ail ""P1 ""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3POS" TR_CYC_VSRCRAW
|
||||
|
||||
#if defined (P13POS)
|
||||
#define TR_VSRCRAW "Rud ""Ele ""Thr ""Ail ""3PO2""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P23POS)
|
||||
#define TR_VSRCRAW "Rud ""Ele ""Thr ""Ail ""P1 ""3PO2""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P33POS)
|
||||
#define TR_VSRCRAW "Rud ""Ele ""Thr ""Ail ""P1 ""P2 ""3PO2" TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#else
|
||||
#define TR_VSRCRAW "Rud ""Ele ""Thr ""Ail ""P1 ""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" "MAX ""3POS" TR_CYC_VSRCRAW
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt"
|
||||
|
||||
+13
-1
@@ -217,7 +217,18 @@
|
||||
#else
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#endif
|
||||
#define TR_VSRCRAW "Lem\0""Pfd\0""Mot\0""Ail\0""Pot1""Pot2""Pot3" TR_ROTARY_ENCODERS_VSRCRAW "TrmL" "TrmP" "TrmM" "TrmA" "MAX\0""3POS" TR_CYC_VSRCRAW
|
||||
|
||||
#if defined (P13POS)
|
||||
#define TR_VSRCRAW "Lem\0""Pfd\0""Mot\0""Ail\0""3PO2""Pot2""Pot3" TR_ROTARY_ENCODERS_VSRCRAW "TrmL" "TrmP" "TrmM" "TrmA" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P23POS)
|
||||
#define TR_VSRCRAW "Lem\0""Pfd\0""Mot\0""Ail\0""Pot1""3PO2""Pot3" TR_ROTARY_ENCODERS_VSRCRAW "TrmL" "TrmP" "TrmM" "TrmA" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P33POS)
|
||||
#define TR_VSRCRAW "Lem\0""Pfd\0""Mot\0""Ail\0""Pot1""Pot2""3PO2" TR_ROTARY_ENCODERS_VSRCRAW "TrmL" "TrmP" "TrmM" "TrmA" "MAX\0""3PO1" TR_CYC_VSRCRAW
|
||||
#else
|
||||
#define TR_VSRCRAW "Lem\0""Pfd\0""Mot\0""Ail\0""Pot1""Pot2""Pot3" TR_ROTARY_ENCODERS_VSRCRAW "TrmL" "TrmP" "TrmM" "TrmA" "MAX\0""3POS" TR_CYC_VSRCRAW
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""MTs""MT%""MTt"
|
||||
@@ -250,6 +261,7 @@
|
||||
#define TR_PPMFRAME "PPM frame"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Chave"
|
||||
|
||||
#define TR_BITMAP "Bitmap"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Aparecer"
|
||||
|
||||
+12
-1
@@ -220,7 +220,18 @@
|
||||
#else
|
||||
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
|
||||
#endif
|
||||
#define TR_VSRCRAW "ROD ""H\205J ""GAS ""SKE ""P1 ""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmH" "TrmG" "TrmS" "MAX ""3POS" TR_CYC_VSRCRAW
|
||||
|
||||
#if defined (P13POS)
|
||||
#define TR_VSRCRAW "ROD ""H\205J ""GAS ""SKE ""3PO2""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmH" "TrmG" "TrmS" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P23POS)
|
||||
#define TR_VSRCRAW "ROD ""H\205J ""GAS ""SKE ""P1 ""3PO2""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmH" "TrmG" "TrmS" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#elif defined (P33POS)
|
||||
#define TR_VSRCRAW "ROD ""H\205J ""GAS ""SKE ""P1 ""P2 ""3PO2" TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmH" "TrmG" "TrmS" "MAX ""3PO1" TR_CYC_VSRCRAW
|
||||
#else
|
||||
#define TR_VSRCRAW "ROD ""H\205J ""GAS ""SKE ""P1 ""P2 ""P3 " TR_ROTARY_ENCODERS_VSRCRAW "TrmR" "TrmH" "TrmG" "TrmS" "MAX ""3POS" TR_CYC_VSRCRAW
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "AV ""ABS""THs""TH%""THt"
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
extern void audioInit( void ) ;
|
||||
extern void audioEnd( void ) ;
|
||||
|
||||
#define NUM_VOL_LEVELS 24
|
||||
|
||||
extern void setFrequency( uint32_t frequency ) ;
|
||||
extern uint32_t getFrequency();
|
||||
|
||||
@@ -85,14 +83,16 @@ inline uint16_t dacQueue(uint16_t *data, uint16_t size)
|
||||
}
|
||||
}
|
||||
|
||||
static const int8_t volumeScale[NUM_VOL_LEVELS] =
|
||||
#define VOLUME_LEVEL_MAX 23
|
||||
#define VOLUME_LEVEL_DEF 12
|
||||
static const int8_t volumeScale[VOLUME_LEVEL_MAX+1] =
|
||||
{
|
||||
0, 2, 4, 6, 8, 10, 13, 17, 22, 27, 33, 40,
|
||||
64, 82, 96, 105, 112, 117, 120, 122, 124, 125, 126, 127
|
||||
} ;
|
||||
|
||||
#if !defined(SIMU)
|
||||
#define setVolume(v) I2C_set_volume(volumeScale[min<uint8_t>(v, NUM_VOL_LEVELS-1)])
|
||||
#define setVolume(v) I2C_set_volume(volumeScale[min<uint8_t>(v, VOLUME_LEVEL_MAX)])
|
||||
#else
|
||||
#define setVolume(v)
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user