mirror of
https://github.com/opentx/opentx.git
synced 2025-07-19 06:15:10 +03:00
parent
f4c3610a8c
commit
eb6ba88f5a
18 changed files with 109 additions and 57 deletions
|
@ -1366,7 +1366,7 @@ void ModelData::setDefaultValues(unsigned int id, const GeneralSettings & settin
|
||||||
clear();
|
clear();
|
||||||
used = true;
|
used = true;
|
||||||
sprintf(name, "MODEL%02d", id+1);
|
sprintf(name, "MODEL%02d", id+1);
|
||||||
modelId = id+1;
|
moduleData[0].modelId = id+1;
|
||||||
setDefaultMixes(settings);
|
setDefaultMixes(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -814,6 +814,7 @@ enum Protocol {
|
||||||
class ModuleData {
|
class ModuleData {
|
||||||
public:
|
public:
|
||||||
ModuleData() { clear(); }
|
ModuleData() { clear(); }
|
||||||
|
unsigned int modelId;
|
||||||
int protocol;
|
int protocol;
|
||||||
unsigned int channelsStart;
|
unsigned int channelsStart;
|
||||||
int channelsCount; // 0=8 channels
|
int channelsCount; // 0=8 channels
|
||||||
|
@ -973,7 +974,6 @@ class ModelData {
|
||||||
CustomFunctionData customFn[C9X_MAX_CUSTOM_FUNCTIONS];
|
CustomFunctionData customFn[C9X_MAX_CUSTOM_FUNCTIONS];
|
||||||
SwashRingData swashRingData;
|
SwashRingData swashRingData;
|
||||||
unsigned int thrTraceSrc;
|
unsigned int thrTraceSrc;
|
||||||
unsigned int modelId;
|
|
||||||
uint64_t switchWarningStates;
|
uint64_t switchWarningStates;
|
||||||
unsigned int switchWarningEnable;
|
unsigned int switchWarningEnable;
|
||||||
unsigned int potsWarningMode;
|
unsigned int potsWarningMode;
|
||||||
|
|
|
@ -501,7 +501,7 @@ t_Open9xGruvin9xModelData_v207::operator ModelData ()
|
||||||
c9x.frsky = frsky;
|
c9x.frsky = frsky;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
for (int line=0; line<4; line++) {
|
for (int line=0; line<4; line++) {
|
||||||
for (int col=0; col<2; col++) {
|
for (int col=0; col<2; col++) {
|
||||||
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
||||||
|
@ -587,7 +587,7 @@ t_Open9xGruvin9xModelData_v208::operator ModelData ()
|
||||||
c9x.frsky.varioCenterMin = varioSpeedDownMin;
|
c9x.frsky.varioCenterMin = varioSpeedDownMin;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
for (int line=0; line<4; line++) {
|
for (int line=0; line<4; line++) {
|
||||||
for (int col=0; col<2; col++) {
|
for (int col=0; col<2; col++) {
|
||||||
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
||||||
|
@ -677,7 +677,7 @@ t_Open9xGruvin9xModelData_v209::operator ModelData ()
|
||||||
c9x.switchWarningStates = switchWarningStates;
|
c9x.switchWarningStates = switchWarningStates;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
for (int line=0; line<4; line++) {
|
for (int line=0; line<4; line++) {
|
||||||
for (int col=0; col<2; col++) {
|
for (int col=0; col<2; col++) {
|
||||||
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
||||||
|
@ -767,7 +767,7 @@ t_Open9xGruvin9xModelData_v210::operator ModelData ()
|
||||||
c9x.switchWarningStates = switchWarningStates;
|
c9x.switchWarningStates = switchWarningStates;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
for (int i=0; i<16; i++) {
|
for (int i=0; i<16; i++) {
|
||||||
c9x.limitData[i].ppmCenter = servoCenter[i];
|
c9x.limitData[i].ppmCenter = servoCenter[i];
|
||||||
}
|
}
|
||||||
|
@ -854,6 +854,6 @@ t_Open9xGruvin9xModelData_v211::operator ModelData ()
|
||||||
c9x.switchWarningStates = switchWarningStates;
|
c9x.switchWarningStates = switchWarningStates;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
return c9x;
|
return c9x;
|
||||||
}
|
}
|
||||||
|
|
|
@ -808,7 +808,7 @@ t_Open9xArmModelData_v208::operator ModelData ()
|
||||||
c9x.frsky.varioCenterMin = varioSpeedDownMin;
|
c9x.frsky.varioCenterMin = varioSpeedDownMin;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
for (int line=0; line<4; line++) {
|
for (int line=0; line<4; line++) {
|
||||||
for (int col=0; col<2; col++) {
|
for (int col=0; col<2; col++) {
|
||||||
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
||||||
|
@ -898,7 +898,7 @@ t_Open9xArmModelData_v209::operator ModelData ()
|
||||||
c9x.switchWarningStates = switchWarningStates;
|
c9x.switchWarningStates = switchWarningStates;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
for (int line=0; line<4; line++) {
|
for (int line=0; line<4; line++) {
|
||||||
for (int col=0; col<2; col++) {
|
for (int col=0; col<2; col++) {
|
||||||
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
c9x.frsky.screens[1].body.lines[line].source[col] = (col==0 ? (frskyLines[line] & 0x0f) : ((frskyLines[line] & 0xf0) / 16));
|
||||||
|
@ -988,7 +988,7 @@ t_Open9xArmModelData_v210::operator ModelData ()
|
||||||
c9x.switchWarningStates = switchWarningStates;
|
c9x.switchWarningStates = switchWarningStates;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
for (int i=0; i<16; i++) {
|
for (int i=0; i<16; i++) {
|
||||||
c9x.limitData[i].ppmCenter = servoCenter[i];
|
c9x.limitData[i].ppmCenter = servoCenter[i];
|
||||||
}
|
}
|
||||||
|
@ -1072,7 +1072,7 @@ t_Open9xArmModelData_v211::operator ModelData ()
|
||||||
c9x.switchWarningStates = switchWarningStates;
|
c9x.switchWarningStates = switchWarningStates;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
for (int i=0; i<16; i++) {
|
for (int i=0; i<16; i++) {
|
||||||
c9x.limitData[i].ppmCenter = servoCenter[i];
|
c9x.limitData[i].ppmCenter = servoCenter[i];
|
||||||
}
|
}
|
||||||
|
@ -1159,6 +1159,6 @@ t_Open9xArmModelData_v212::operator ModelData ()
|
||||||
c9x.switchWarningStates = switchWarningStates;
|
c9x.switchWarningStates = switchWarningStates;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
return c9x;
|
return c9x;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1060,7 +1060,7 @@ t_Open9xModelData_v202::operator ModelData ()
|
||||||
c9x.frsky = frsky;
|
c9x.frsky = frsky;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId=modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
return c9x;
|
return c9x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1134,7 +1134,7 @@ t_Open9xModelData_v203::operator ModelData ()
|
||||||
c9x.frsky = frsky;
|
c9x.frsky = frsky;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
return c9x;
|
return c9x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1210,7 +1210,7 @@ t_Open9xModelData_v204::operator ModelData ()
|
||||||
c9x.frsky.rssiAlarms[1] = frskyRssiAlarms[1].get(1);
|
c9x.frsky.rssiAlarms[1] = frskyRssiAlarms[1].get(1);
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
return c9x;
|
return c9x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1287,7 +1287,7 @@ t_Open9xModelData_v205::operator ModelData ()
|
||||||
c9x.frsky = frsky;
|
c9x.frsky = frsky;
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0]. modelId = modelId;
|
||||||
c9x.frsky.screens[1].type = 0;
|
c9x.frsky.screens[1].type = 0;
|
||||||
for (int line=0; line<4; line++) {
|
for (int line=0; line<4; line++) {
|
||||||
for (int col=0; col<2; col++) {
|
for (int col=0; col<2; col++) {
|
||||||
|
@ -1377,7 +1377,7 @@ t_Open9xModelData_v208::operator ModelData ()
|
||||||
|
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
c9x.frsky.screens[1].type = 0;
|
c9x.frsky.screens[1].type = 0;
|
||||||
for (int line=0; line<4; line++) {
|
for (int line=0; line<4; line++) {
|
||||||
for (int col=0; col<2; col++) {
|
for (int col=0; col<2; col++) {
|
||||||
|
@ -1471,7 +1471,7 @@ t_Open9xModelData_v209::operator ModelData ()
|
||||||
|
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
c9x.frsky.screens[1].type = 0;
|
c9x.frsky.screens[1].type = 0;
|
||||||
for (int line=0; line<4; line++) {
|
for (int line=0; line<4; line++) {
|
||||||
for (int col=0; col<2; col++) {
|
for (int col=0; col<2; col++) {
|
||||||
|
@ -1565,7 +1565,7 @@ t_Open9xModelData_v210::operator ModelData ()
|
||||||
|
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
|
|
||||||
for (int i=0; i<16; i++) {
|
for (int i=0; i<16; i++) {
|
||||||
c9x.limitData[i].ppmCenter=servoCenter[i];
|
c9x.limitData[i].ppmCenter=servoCenter[i];
|
||||||
|
@ -1653,7 +1653,7 @@ t_Open9xModelData_v211::operator ModelData ()
|
||||||
|
|
||||||
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
c9x.moduleData[0].ppmFrameLength = ppmFrameLength;
|
||||||
c9x.thrTraceSrc = thrTraceSrc;
|
c9x.thrTraceSrc = thrTraceSrc;
|
||||||
c9x.modelId = modelId;
|
c9x.moduleData[0].modelId = modelId;
|
||||||
|
|
||||||
return c9x;
|
return c9x;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2781,8 +2781,12 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
|
|
||||||
bool afterrelease21March2013 = IS_AFTER_RELEASE_21_MARCH_2013(board, version);
|
bool afterrelease21March2013 = IS_AFTER_RELEASE_21_MARCH_2013(board, version);
|
||||||
|
|
||||||
if (afterrelease21March2013)
|
if (afterrelease21March2013) {
|
||||||
internalField.Append(new UnsignedField<8>(modelData.modelId));
|
internalField.Append(new UnsignedField<8>(modelData.moduleData[0].modelId));
|
||||||
|
}
|
||||||
|
if (IS_ARM(board) && version >= 217) {
|
||||||
|
internalField.Append(new UnsignedField<8>(modelData.moduleData[1].modelId));
|
||||||
|
}
|
||||||
|
|
||||||
if (IS_TARANIS(board) && version >= 215) {
|
if (IS_TARANIS(board) && version >= 215) {
|
||||||
internalField.Append(new CharField<10>(modelData.bitmap));
|
internalField.Append(new CharField<10>(modelData.bitmap));
|
||||||
|
@ -2902,7 +2906,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
internalField.Append(new ConversionField< UnsignedField<8> >(modelData.thrTraceSrc, &throttleSourceConversionTable, "Throttle Source"));
|
internalField.Append(new ConversionField< UnsignedField<8> >(modelData.thrTraceSrc, &throttleSourceConversionTable, "Throttle Source"));
|
||||||
|
|
||||||
if (!afterrelease21March2013) {
|
if (!afterrelease21March2013) {
|
||||||
internalField.Append(new UnsignedField<8>(modelData.modelId));
|
internalField.Append(new UnsignedField<8>(modelData.moduleData[0].modelId));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_TARANIS_X9E(board) && version >= 217)
|
if (IS_TARANIS_X9E(board) && version >= 217)
|
||||||
|
|
|
@ -73,7 +73,6 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData * model,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
qDebug() << tracksSet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_TARANIS(firmware->getBoard())) {
|
if (IS_TARANIS(firmware->getBoard())) {
|
||||||
|
@ -86,7 +85,6 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData * model,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
qDebug() << scriptsSet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CompanionIcon playIcon("play.png");
|
CompanionIcon playIcon("play.png");
|
||||||
|
|
|
@ -249,7 +249,7 @@ void ModulePanel::update()
|
||||||
ui->label_rxNumber->setVisible(mask & MASK_RX_NUMBER);
|
ui->label_rxNumber->setVisible(mask & MASK_RX_NUMBER);
|
||||||
ui->rxNumber->setVisible(mask & MASK_RX_NUMBER);
|
ui->rxNumber->setVisible(mask & MASK_RX_NUMBER);
|
||||||
ui->rxNumber->setMaximum(max_rx_num);
|
ui->rxNumber->setMaximum(max_rx_num);
|
||||||
ui->rxNumber->setValue(model->modelId);
|
ui->rxNumber->setValue(module.modelId);
|
||||||
ui->label_channelsStart->setVisible(mask & MASK_CHANNELS_RANGE);
|
ui->label_channelsStart->setVisible(mask & MASK_CHANNELS_RANGE);
|
||||||
ui->channelsStart->setVisible(mask & MASK_CHANNELS_RANGE);
|
ui->channelsStart->setVisible(mask & MASK_CHANNELS_RANGE);
|
||||||
ui->channelsStart->setValue(module.channelsStart+1);
|
ui->channelsStart->setValue(module.channelsStart+1);
|
||||||
|
@ -348,7 +348,7 @@ void ModulePanel::on_ppmDelay_editingFinished()
|
||||||
|
|
||||||
void ModulePanel::on_rxNumber_editingFinished()
|
void ModulePanel::on_rxNumber_editingFinished()
|
||||||
{
|
{
|
||||||
model->modelId = ui->rxNumber->value();
|
module.modelId = ui->rxNumber->value();
|
||||||
emit modified();
|
emit modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ WizMix::operator ModelData()
|
||||||
|
|
||||||
ModelData model;
|
ModelData model;
|
||||||
model.used = true;
|
model.used = true;
|
||||||
model.modelId = modelId;
|
model.moduleData[0].modelId = modelId;
|
||||||
model.setDefaultInputs(settings);
|
model.setDefaultInputs(settings);
|
||||||
|
|
||||||
int mixIndex = 0;
|
int mixIndex = 0;
|
||||||
|
|
|
@ -601,16 +601,16 @@ void menuModelSetup(uint8_t event)
|
||||||
lcd_putsLeft(y, STR_RXNUM);
|
lcd_putsLeft(y, STR_RXNUM);
|
||||||
}
|
}
|
||||||
if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx)) {
|
if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx)) {
|
||||||
if (xOffsetBind) lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
|
if (xOffsetBind) lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
|
||||||
if (attr && l_posHorz==0) {
|
if (attr && l_posHorz==0) {
|
||||||
if (editMode>0 || p1valdiff) {
|
if (editMode>0 || p1valdiff) {
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId, IS_MODULE_DSM2(moduleIdx) ? 20 : 63);
|
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], IS_MODULE_DSM2(moduleIdx) ? 20 : 63);
|
||||||
if (checkIncDec_Ret) {
|
if (checkIncDec_Ret) {
|
||||||
modelHeaders[g_eeGeneral.currModel].modelId = g_model.header.modelId;
|
modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER)) {
|
if (editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER)) {
|
||||||
checkModelIdUnique(g_eeGeneral.currModel);
|
checkModelIdUnique(g_eeGeneral.currModel, moduleIdx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0);
|
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0);
|
||||||
|
@ -771,11 +771,10 @@ void menuModelSetup(uint8_t event)
|
||||||
if (attr && m_posHorz > 1) {
|
if (attr && m_posHorz > 1) {
|
||||||
REPEAT_LAST_CURSOR_MOVE(); // limit 3 column row to 2 colums (Rx_Num and RANGE fields)
|
REPEAT_LAST_CURSOR_MOVE(); // limit 3 column row to 2 colums (Rx_Num and RANGE fields)
|
||||||
}
|
}
|
||||||
|
|
||||||
lcd_putsLeft(y, STR_RXNUM);
|
lcd_putsLeft(y, STR_RXNUM);
|
||||||
lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (m_posHorz<=0 ? attr : 0) | LEADING0|LEFT, 2);
|
lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[0], (m_posHorz<=0 ? attr : 0) | LEADING0|LEFT, 2);
|
||||||
if (attr && (m_posHorz==0 && (editMode>0 || p1valdiff))) {
|
if (attr && (m_posHorz==0 && (editMode>0 || p1valdiff))) {
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId, 99);
|
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[0], 99);
|
||||||
}
|
}
|
||||||
#if defined(PXX)
|
#if defined(PXX)
|
||||||
if (protocol == PROTO_PXX) {
|
if (protocol == PROTO_PXX) {
|
||||||
|
|
|
@ -700,16 +700,16 @@ void menuModelSetup(uint8_t event)
|
||||||
lcd_putsLeft(y, STR_RXNUM);
|
lcd_putsLeft(y, STR_RXNUM);
|
||||||
}
|
}
|
||||||
if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx)) {
|
if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx)) {
|
||||||
if (xOffsetBind) lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
|
if (xOffsetBind) lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
|
||||||
if (attr && l_posHorz==0) {
|
if (attr && l_posHorz==0) {
|
||||||
if (s_editMode>0) {
|
if (s_editMode>0) {
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId, IS_MODULE_DSM2(moduleIdx) ? 20 : 63);
|
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], IS_MODULE_DSM2(moduleIdx) ? 20 : 63);
|
||||||
if (checkIncDec_Ret) {
|
if (checkIncDec_Ret) {
|
||||||
modelHeaders[g_eeGeneral.currModel].modelId = g_model.header.modelId;
|
modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (s_editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER)) {
|
if (s_editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER)) {
|
||||||
checkModelIdUnique(g_eeGeneral.currModel);
|
checkModelIdUnique(g_eeGeneral.currModel, moduleIdx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0);
|
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0);
|
||||||
|
|
|
@ -584,7 +584,6 @@ static int luaModelGetInfo(lua_State *L)
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
lua_pushtablezstring(L, "name", g_model.header.name);
|
lua_pushtablezstring(L, "name", g_model.header.name);
|
||||||
lua_pushtablenzstring(L, "bitmap", g_model.header.bitmap);
|
lua_pushtablenzstring(L, "bitmap", g_model.header.bitmap);
|
||||||
lua_pushtableinteger(L, "id", g_model.header.modelId);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -603,15 +602,56 @@ static int luaModelSetInfo(lua_State *L)
|
||||||
const char * name = luaL_checkstring(L, -1);
|
const char * name = luaL_checkstring(L, -1);
|
||||||
strncpy(g_model.header.bitmap, name, sizeof(g_model.header.bitmap));
|
strncpy(g_model.header.bitmap, name, sizeof(g_model.header.bitmap));
|
||||||
}
|
}
|
||||||
else if (!strcmp(key, "id")) {
|
|
||||||
g_model.header.modelId = luaL_checkinteger(L, -1);
|
|
||||||
modelHeaders[g_eeGeneral.currModel].modelId = g_model.header.modelId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
eeDirty(EE_MODEL);
|
eeDirty(EE_MODEL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int luaModelGetModule(lua_State *L)
|
||||||
|
{
|
||||||
|
unsigned int idx = luaL_checkunsigned(L, 1);
|
||||||
|
if (idx < NUM_MODULES) {
|
||||||
|
ModuleData & module = g_model.moduleData[idx];
|
||||||
|
lua_newtable(L);
|
||||||
|
lua_pushtableinteger(L, "rfProtocol", module.rfProtocol);
|
||||||
|
lua_pushtableinteger(L, "modelId", g_model.header.modelId[idx]);
|
||||||
|
lua_pushtableinteger(L, "firstChannel", module.channelsStart);
|
||||||
|
lua_pushtableinteger(L, "channelsCount", module.channelsCount + 8);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lua_pushnil(L);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int luaModelSetModule(lua_State *L)
|
||||||
|
{
|
||||||
|
unsigned int idx = luaL_checkunsigned(L, 1);
|
||||||
|
|
||||||
|
if (idx < NUM_MODULES) {
|
||||||
|
ModuleData & module = g_model.moduleData[idx];
|
||||||
|
luaL_checktype(L, -1, LUA_TTABLE);
|
||||||
|
for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) {
|
||||||
|
luaL_checktype(L, -2, LUA_TSTRING); // key is string
|
||||||
|
const char * key = luaL_checkstring(L, -2);
|
||||||
|
if (!strcmp(key, "rfProtocol")) {
|
||||||
|
module.rfProtocol = luaL_checkinteger(L, -1);
|
||||||
|
}
|
||||||
|
else if (!strcmp(key, "modelId")) {
|
||||||
|
g_model.header.modelId[idx] = luaL_checkinteger(L, -1);
|
||||||
|
}
|
||||||
|
else if (!strcmp(key, "firstChannel")) {
|
||||||
|
module.channelsStart = luaL_checkinteger(L, -1);
|
||||||
|
}
|
||||||
|
else if (!strcmp(key, "channelsCount")) {
|
||||||
|
module.channelsCount = luaL_checkinteger(L, -1) - 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eeDirty(EE_MODEL);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int luaModelGetTimer(lua_State *L)
|
static int luaModelGetTimer(lua_State *L)
|
||||||
{
|
{
|
||||||
unsigned int idx = luaL_checkunsigned(L, 1);
|
unsigned int idx = luaL_checkunsigned(L, 1);
|
||||||
|
@ -1401,6 +1441,8 @@ const luaR_value_entry opentxConstants[] = {
|
||||||
const luaL_Reg modelLib[] = {
|
const luaL_Reg modelLib[] = {
|
||||||
{ "getInfo", luaModelGetInfo },
|
{ "getInfo", luaModelGetInfo },
|
||||||
{ "setInfo", luaModelSetInfo },
|
{ "setInfo", luaModelSetInfo },
|
||||||
|
{ "getModule", luaModelGetModule },
|
||||||
|
{ "setModule", luaModelSetModule },
|
||||||
{ "getTimer", luaModelGetTimer },
|
{ "getTimer", luaModelGetTimer },
|
||||||
{ "setTimer", luaModelSetTimer },
|
{ "setTimer", luaModelSetTimer },
|
||||||
{ "resetTimer", luaModelResetTimer },
|
{ "resetTimer", luaModelResetTimer },
|
||||||
|
|
|
@ -2067,7 +2067,7 @@ enum FailsafeModes {
|
||||||
|
|
||||||
PACK(typedef struct {
|
PACK(typedef struct {
|
||||||
char name[LEN_MODEL_NAME]; // must be first for eeLoadModelName
|
char name[LEN_MODEL_NAME]; // must be first for eeLoadModelName
|
||||||
uint8_t modelId;
|
uint8_t modelId[NUM_MODULES];
|
||||||
MODELDATA_BITMAP
|
MODELDATA_BITMAP
|
||||||
}) ModelHeader;
|
}) ModelHeader;
|
||||||
|
|
||||||
|
|
|
@ -374,12 +374,20 @@ void applyDefaultTemplate()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
void checkModelIdUnique(uint8_t id)
|
void checkModelIdUnique(uint8_t index, uint8_t module)
|
||||||
{
|
{
|
||||||
for (uint8_t i=0; i<MAX_MODELS; i++) {
|
uint8_t modelId = g_model.header.modelId[module];
|
||||||
if (i!=id && g_model.header.modelId!=0 && g_model.header.modelId==modelHeaders[i].modelId) {
|
if (modelId != 0) {
|
||||||
POPUP_WARNING(STR_MODELIDUSED);
|
for (uint8_t i=0; i<MAX_MODELS; i++) {
|
||||||
break;
|
for (uint8_t j=0; j<NUM_MODULES; j++) {
|
||||||
|
if (i == index && module == j) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (modelId == modelHeaders[i].modelId[j]) {
|
||||||
|
POPUP_WARNING(STR_MODELIDUSED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -414,8 +422,9 @@ void modelDefault(uint8_t id)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PXX) && defined(CPUARM)
|
#if defined(PXX) && defined(CPUARM)
|
||||||
modelHeaders[id].modelId = g_model.header.modelId = id+1;
|
modelHeaders[id].modelId[1] = g_model.header.modelId[1] = 0;
|
||||||
checkModelIdUnique(id);
|
modelHeaders[id].modelId[0] = g_model.header.modelId[0] = id+1;
|
||||||
|
checkModelIdUnique(id, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CPUARM) && defined(FLIGHT_MODES) && defined(GVARS)
|
#if defined(CPUARM) && defined(FLIGHT_MODES) && defined(GVARS)
|
||||||
|
|
|
@ -1048,7 +1048,7 @@ void modelDefault(uint8_t id);
|
||||||
|
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
bool isFileAvailable(const char * filename);
|
bool isFileAvailable(const char * filename);
|
||||||
void checkModelIdUnique(uint8_t id);
|
void checkModelIdUnique(uint8_t index, uint8_t module);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
|
|
|
@ -175,7 +175,7 @@ void setupPulsesDSM2(unsigned int port)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dsmDat[1] = g_model.header.modelId; // DSM2 Header second byte for model match
|
dsmDat[1] = g_model.header.modelId[port]; // DSM2 Header second byte for model match
|
||||||
|
|
||||||
for (int i=0; i<DSM2_CHANS; i++) {
|
for (int i=0; i<DSM2_CHANS; i++) {
|
||||||
uint16_t pulse = limit(0, ((channelOutputs[g_model.moduleData[port].channelsStart+i]*13)>>5)+512, 1023);
|
uint16_t pulse = limit(0, ((channelOutputs[g_model.moduleData[port].channelsStart+i]*13)>>5)+512, 1023);
|
||||||
|
|
|
@ -338,7 +338,7 @@ void setupPulsesPXX()
|
||||||
PcmBitCount = PcmByte = 0 ;
|
PcmBitCount = PcmByte = 0 ;
|
||||||
PcmOnesCount = 0 ;
|
PcmOnesCount = 0 ;
|
||||||
putPcmHead() ;
|
putPcmHead() ;
|
||||||
putPcmByte( g_model.header.modelId ) ; // putPcmByte( g_model.rxnum ) ; //
|
putPcmByte(g_model.header.modelId[0]);
|
||||||
uint8_t flag1 = 0;
|
uint8_t flag1 = 0;
|
||||||
if (moduleFlag[0] == MODULE_BIND)
|
if (moduleFlag[0] == MODULE_BIND)
|
||||||
flag1 |= (g_eeGeneral.countryCode << 1) | PXX_SEND_BIND;
|
flag1 |= (g_eeGeneral.countryCode << 1) | PXX_SEND_BIND;
|
||||||
|
@ -554,7 +554,7 @@ void setupPulsesDSM2()
|
||||||
moduleFlag[0] = 0;
|
moduleFlag[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dsmDat[1] = g_model.header.modelId; // DSM2 Header second byte for model match
|
dsmDat[1] = g_model.header.modelId[0];
|
||||||
|
|
||||||
for (uint8_t i=0; i<DSM2_CHANS; i++) {
|
for (uint8_t i=0; i<DSM2_CHANS; i++) {
|
||||||
uint16_t pulse = limit(0, ((channelOutputs[i]*13)>>5)+512, 1023);
|
uint16_t pulse = limit(0, ((channelOutputs[i]*13)>>5)+512, 1023);
|
||||||
|
|
|
@ -190,7 +190,7 @@ void setupPulsesPXX(unsigned int port)
|
||||||
putPcmHead(port);
|
putPcmHead(port);
|
||||||
|
|
||||||
/* Rx Number */
|
/* Rx Number */
|
||||||
putPcmByte(g_model.header.modelId, port);
|
putPcmByte(g_model.header.modelId[port], port);
|
||||||
|
|
||||||
/* FLAG1 */
|
/* FLAG1 */
|
||||||
uint8_t flag1 = (g_model.moduleData[port].rfProtocol << 6);
|
uint8_t flag1 = (g_model.moduleData[port].rfProtocol << 6);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue