[ARM] Support of s16le wav files

[ACT] New GVARS menu started
[X9D] Volume control added
This commit is contained in:
bsongis
2013-01-17 19:02:15 +00:00
parent 0287369be2
commit 5a11cf03cb
18 changed files with 244 additions and 142 deletions
+88 -12
View File
@@ -47,6 +47,9 @@ enum EnumTabModel {
e_MixAll,
e_Limits,
IF_CURVES(e_CurvesAll)
#if LCD_W >= 260
IF_GVARS(e_GVars)
#endif
e_CustomSwitches,
e_CustomFunctions,
IF_FRSKY(e_Telemetry)
@@ -55,24 +58,17 @@ enum EnumTabModel {
void menuModelSelect(uint8_t event);
void menuModelSetup(uint8_t event);
#ifdef HELI
void menuModelHeli(uint8_t event);
#endif
#ifdef FLIGHT_PHASES
void menuModelPhasesAll(uint8_t event);
#endif
void menuModelExposAll(uint8_t event);
void menuModelMixAll(uint8_t event);
void menuModelLimits(uint8_t event);
void menuModelCurvesAll(uint8_t event);
void menuModelGVars(uint8_t event);
void menuModelCustomSwitches(uint8_t event);
void menuModelCustomFunctions(uint8_t event);
#ifdef FRSKY
void menuModelTelemetry(uint8_t event);
#endif
#ifdef TEMPLATES
void menuModelTemplates(uint8_t event);
#endif
void menuModelExpoOne(uint8_t event);
const MenuFuncP_PROGMEM menuTabModel[] PROGMEM = {
@@ -84,6 +80,9 @@ const MenuFuncP_PROGMEM menuTabModel[] PROGMEM = {
menuModelMixAll,
menuModelLimits,
IF_CURVES(menuModelCurvesAll)
#if LCD_W >= 260
IF_GVARS(menuModelGVars)
#endif
menuModelCustomSwitches,
menuModelCustomFunctions,
IF_FRSKY(menuModelTelemetry)
@@ -579,23 +578,39 @@ void editName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, boo
}
switch (event) {
#if defined(PCBX9D) || defined(PCBACT)
case EVT_KEY_BREAK(KEY_ENTER):
if (next<size-1) {
next++;
}
else {
s_editMode = 0;
next = 0;
}
break;
#else
case EVT_KEY_BREAK(KEY_LEFT):
if (next>0) next--;
break;
case EVT_KEY_BREAK(KEY_RIGHT):
if (next<size-1) next++;
break;
#endif
#if defined(ROTARY_ENCODER_NAVIGATION)
#if defined(ROTARY_ENCODERS)
case EVT_KEY_LONG(BTN_REa):
case EVT_KEY_LONG(BTN_REb):
if (!navigationRotaryEncoder(event))
break;
// no break
#endif
#if defined(PCBX9D) || defined(PCBACT)
case EVT_KEY_LONG(KEY_ENTER):
#endif
if (v==0) {
s_editMode = 0;
next = 0;
killEvents(event);
break;
}
@@ -1137,12 +1152,12 @@ void menuModelPhaseOne(uint8_t event)
case ITEM_MODEL_PHASE_FADE_IN:
phase->fadeIn = editDelay(y, event, attr, STR_FADEIN, phase->fadeIn);
break;
case ITEM_MODEL_PHASE_FADE_OUT:
phase->fadeOut = editDelay(y, event, attr, STR_FADEOUT, phase->fadeOut);
break;
#if defined(GVARS) && !defined(CPUM64)
case ITEM_MODEL_PHASE_GVARS_LABEL:
lcd_putsLeft(y, STR_GLOBAL_VARS);
break;
@@ -1151,10 +1166,15 @@ void menuModelPhaseOne(uint8_t event)
{
uint8_t idx = i-ITEM_MODEL_PHASE_GV1;
if (editingName)
if (editingName) {
#if defined(PCBX9D) || defined(PCBACT)
if (attr) s_editMode = 1;
#endif
editName(4*FW, y, g_model.gvarsNames[idx], sizeof(gvar_name_t), event, attr, m_posHorz);
else
}
else {
lcd_putsnAtt(4*FW, y, g_model.gvarsNames[idx], sizeof(gvar_name_t), ZCHAR|(m_posHorz==0 ? attr : 0));
}
lcd_putsLeft(y, PSTR(" "));
putsStrIdx(INDENT_WIDTH, y, STR_GV, idx+1);
@@ -1180,7 +1200,7 @@ void menuModelPhaseOne(uint8_t event)
uint8_t p = getGVarFlightPhase(s_currIdx, idx);
lcd_outdezAtt(21*FW, y, GVAR_VALUE(idx, p), !editingName && m_posHorz==2 ? attr : 0);
if (attr && !editingName && m_posHorz==2 && ((editMode>0) || p1valdiff))
GVAR_VALUE(idx, p) = checkIncDec(event, GVAR_VALUE(idx, p), -1024, +1024, EE_MODEL);
GVAR_VALUE(idx, p) = checkIncDec(event, GVAR_VALUE(idx, p), -GVAR_MAX, GVAR_MAX, EE_MODEL);
break;
}
@@ -2558,6 +2578,62 @@ void menuModelCurvesAll(uint8_t event)
}
#endif
#if LCD_W >= 260 && defined(GVARS)
void menuModelGVars(uint8_t event)
{
MENU(PSTR("GLOBAL VARIABLES"), menuTabModel, e_GVars, 1+MAX_GVARS, {0, MAX_PHASES, MAX_PHASES, MAX_PHASES, MAX_PHASES, MAX_PHASES, MAX_PHASES, MAX_PHASES, MAX_PHASES, MAX_PHASES});
uint8_t sub = m_posVert - 1;
static bool editingName = false;
if (editingName && s_editMode <= 0) editingName = false;
if (!editingName && s_editMode > 0 && m_posHorz == 0) editingName = true;
for (uint8_t i=0; i<MAX_GVARS; i++) {
uint8_t y = 1 + 2*FH + i*FH;
for (uint8_t j=0; j<1+MAX_PHASES; j++) {
uint8_t attr = ((sub==i && m_posHorz==j) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0);
switch(j)
{
case 0:
if (editingName && sub==i)
editName(4*FW-3, y, g_model.gvarsNames[i], sizeof(gvar_name_t), event, attr, m_posHorz);
else
lcd_putsnAtt(4*FW-3, y, g_model.gvarsNames[i], sizeof(gvar_name_t), ZCHAR|(m_posHorz==0 ? attr : 0));
// lcd_putsLeft(y, PSTR(" "));
putsStrIdx(0, y, STR_GV, i+1);
break;
default:
{
PhaseData *phase = &g_model.phaseData[j-1];
int16_t v = phase->gvars[i];
xcoord_t x = 14*FW + (j-1)*(2+4*FWNUM) - 1;
int16_t vmin, vmax;
if (v > GVAR_MAX) {
uint8_t p = v - GVAR_MAX - 1;
if (p >= s_currIdx) p++;
putsFlightPhase(x, y, p+1, !editingName ? attr : 0);
vmin = GVAR_MAX+1; vmax = GVAR_MAX+MAX_PHASES;
}
else {
if (abs(v) >= 1000)
lcd_outdezAtt(x, y+1, v, (editingName ? 0 : attr) | TINSIZE);
else
lcd_outdezAtt(x, y, v, (editingName ? 0 : attr));
vmin = -GVAR_MAX; vmax = GVAR_MAX;
}
if (attr && !editingName && ((s_editMode>0) || p1valdiff)) {
phase->gvars[i] = checkIncDec(event, v, vmin, vmax, EE_MODEL);
}
break;
}
}
}
}
}
#endif
#if defined(CPUARM)
enum CustomSwitchFields {
CSW_FIELD_FUNCTION,