mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 16:25:16 +03:00
9XR support n companion, still not finished
This commit is contained in:
parent
d396e85fe0
commit
ee1b51b214
12 changed files with 86 additions and 40 deletions
|
@ -276,7 +276,7 @@ QString avrOutputDialog::getProgrammer()
|
||||||
EEPROMInterface *eepromInterface = GetEepromInterface();
|
EEPROMInterface *eepromInterface = GetEepromInterface();
|
||||||
if (IS_TARANIS(eepromInterface->getBoard())) {
|
if (IS_TARANIS(eepromInterface->getBoard())) {
|
||||||
return "DFU Util";
|
return "DFU Util";
|
||||||
} else if (eepromInterface->getBoard()==BOARD_SKY9X) {
|
} else if IS_SKY9X(eepromInterface->getBoard()) {
|
||||||
return "SAM-BA";
|
return "SAM-BA";
|
||||||
} else {
|
} else {
|
||||||
return "AVRDUDE";
|
return "AVRDUDE";
|
||||||
|
|
|
@ -36,7 +36,7 @@ burnConfigDialog::burnConfigDialog(QWidget *parent) :
|
||||||
ui->samba_location->hide();
|
ui->samba_location->hide();
|
||||||
ui->samba_port->hide();
|
ui->samba_port->hide();
|
||||||
ui->sb_browse->hide();
|
ui->sb_browse->hide();
|
||||||
} else if (eepromInterface->getBoard()==BOARD_SKY9X) {
|
} else if (IS_SKY9X(eepromInterface->getBoard())) {
|
||||||
setWindowTitle(tr("SAM-BA Configuration"));
|
setWindowTitle(tr("SAM-BA Configuration"));
|
||||||
ui->avrArgs->hide();
|
ui->avrArgs->hide();
|
||||||
ui->avrdude_location->hide();
|
ui->avrdude_location->hide();
|
||||||
|
@ -388,7 +388,7 @@ void burnConfigDialog::on_advCtrChkB_toggled(bool checked)
|
||||||
if (IS_TARANIS(eepromInterface->getBoard())) {
|
if (IS_TARANIS(eepromInterface->getBoard())) {
|
||||||
ui->label_dfu2->show();
|
ui->label_dfu2->show();
|
||||||
ui->dfuArgs->show();
|
ui->dfuArgs->show();
|
||||||
} else if (eepromInterface->getBoard()==BOARD_SKY9X) {
|
} else if (IS_SKY9X(eepromInterface->getBoard())) {
|
||||||
ui->label_sb2->show();
|
ui->label_sb2->show();
|
||||||
ui->arm_mcu->show();
|
ui->arm_mcu->show();
|
||||||
} else {
|
} else {
|
||||||
|
@ -402,7 +402,7 @@ void burnConfigDialog::on_advCtrChkB_toggled(bool checked)
|
||||||
if (IS_TARANIS(eepromInterface->getBoard())) {
|
if (IS_TARANIS(eepromInterface->getBoard())) {
|
||||||
ui->label_dfu2->hide();
|
ui->label_dfu2->hide();
|
||||||
ui->dfuArgs->hide();
|
ui->dfuArgs->hide();
|
||||||
} else if (eepromInterface->getBoard()==BOARD_SKY9X) {
|
} else if (IS_SKY9X(eepromInterface->getBoard())) {
|
||||||
ui->label_sb2->hide();
|
ui->label_sb2->hide();
|
||||||
ui->arm_mcu->hide();
|
ui->arm_mcu->hide();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -384,10 +384,10 @@ QString RawSwitch::toString()
|
||||||
break;
|
break;
|
||||||
case SWITCH_TYPE_REA:
|
case SWITCH_TYPE_REA:
|
||||||
if (index==0) {
|
if (index==0) {
|
||||||
if (GetEepromInterface()->getBoard() == BOARD_SKY9X)
|
if (IS_SKY9X(eepromInterface->getBoard()))
|
||||||
return QObject::tr("REAs");
|
return QObject::tr("REAs");
|
||||||
} else if (index==1) {
|
} else if (index==1) {
|
||||||
if (GetEepromInterface()->getBoard() == BOARD_SKY9X)
|
if (IS_SKY9X(eepromInterface->getBoard()))
|
||||||
return QObject::tr("REAl");
|
return QObject::tr("REAl");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -638,6 +638,7 @@ void RegisterEepromInterfaces()
|
||||||
eepromInterfaces.push_back(new Open9xInterface(BOARD_M128));
|
eepromInterfaces.push_back(new Open9xInterface(BOARD_M128));
|
||||||
eepromInterfaces.push_back(new Open9xInterface(BOARD_GRUVIN9X));
|
eepromInterfaces.push_back(new Open9xInterface(BOARD_GRUVIN9X));
|
||||||
eepromInterfaces.push_back(new Open9xInterface(BOARD_SKY9X));
|
eepromInterfaces.push_back(new Open9xInterface(BOARD_SKY9X));
|
||||||
|
eepromInterfaces.push_back(new Open9xInterface(BOARD_9XRPRO));
|
||||||
eepromInterfaces.push_back(new Open9xInterface(BOARD_TARANIS));
|
eepromInterfaces.push_back(new Open9xInterface(BOARD_TARANIS));
|
||||||
if (rev4a)
|
if (rev4a)
|
||||||
eepromInterfaces.push_back(new Open9xInterface(BOARD_TARANIS_REV4a));
|
eepromInterfaces.push_back(new Open9xInterface(BOARD_TARANIS_REV4a));
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#define EESIZE_TARANIS (32*1024)
|
#define EESIZE_TARANIS (32*1024)
|
||||||
#define EESIZE_TARANIS_REV4a (64*1024)
|
#define EESIZE_TARANIS_REV4a (64*1024)
|
||||||
#define EESIZE_SKY9X (128*4096)
|
#define EESIZE_SKY9X (128*4096)
|
||||||
|
#define EESIZE_9XRPRO (128*4096)
|
||||||
#define EESIZE_RLC_MAX EESIZE_TARANIS_REV4a
|
#define EESIZE_RLC_MAX EESIZE_TARANIS_REV4a
|
||||||
|
|
||||||
template<class t> t LIMIT(t mi, t x, t ma) { return std::min(std::max(mi, x), ma); }
|
template<class t> t LIMIT(t mi, t x, t ma) { return std::min(std::max(mi, x), ma); }
|
||||||
|
@ -46,11 +47,13 @@ enum BoardEnum {
|
||||||
BOARD_M128,
|
BOARD_M128,
|
||||||
BOARD_GRUVIN9X,
|
BOARD_GRUVIN9X,
|
||||||
BOARD_SKY9X,
|
BOARD_SKY9X,
|
||||||
|
BOARD_9XRPRO,
|
||||||
BOARD_TARANIS,
|
BOARD_TARANIS,
|
||||||
BOARD_TARANIS_REV4a
|
BOARD_TARANIS_REV4a
|
||||||
};
|
};
|
||||||
#define IS_STOCK(board) (board==BOARD_STOCK || board==BOARD_M128)
|
#define IS_STOCK(board) (board==BOARD_STOCK || board==BOARD_M128)
|
||||||
#define IS_ARM(board) (board==BOARD_SKY9X || board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a)
|
#define IS_ARM(board) (board==BOARD_SKY9X || board==BOARD_9XRPRO || board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a)
|
||||||
|
#define IS_SKY9X(board) (board==BOARD_SKY9X || board==BOARD_9XRPRO)
|
||||||
#define IS_TARANIS(board) (board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a)
|
#define IS_TARANIS(board) (board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a)
|
||||||
|
|
||||||
const uint8_t modn12x3[4][4]= {
|
const uint8_t modn12x3[4][4]= {
|
||||||
|
|
|
@ -37,7 +37,7 @@ void EFile::EeFsCreate(uint8_t *eeprom, int size, BoardEnum board)
|
||||||
this->eeprom_size = size;
|
this->eeprom_size = size;
|
||||||
this->board = board;
|
this->board = board;
|
||||||
|
|
||||||
if (board == BOARD_SKY9X) {
|
if (IS_SKY9X(board)) {
|
||||||
memset(eeprom, 0xFF, size);
|
memset(eeprom, 0xFF, size);
|
||||||
}
|
}
|
||||||
else if (IS_TARANIS(board)) {
|
else if (IS_TARANIS(board)) {
|
||||||
|
@ -101,7 +101,7 @@ bool EFile::EeFsOpen(uint8_t *eeprom, int size, BoardEnum board)
|
||||||
this->eeprom_size = size;
|
this->eeprom_size = size;
|
||||||
this->board = board;
|
this->board = board;
|
||||||
|
|
||||||
if (board == BOARD_SKY9X) {
|
if (IS_SKY9X(board)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (IS_TARANIS(board)) {
|
else if (IS_TARANIS(board)) {
|
||||||
|
@ -254,7 +254,7 @@ unsigned int EFile::size(unsigned int id)
|
||||||
|
|
||||||
unsigned int EFile::openRd(unsigned int i_fileId)
|
unsigned int EFile::openRd(unsigned int i_fileId)
|
||||||
{
|
{
|
||||||
if (board == BOARD_SKY9X) {
|
if (IS_SKY9X(board)) {
|
||||||
m_fileId = get_current_block_number(i_fileId * 2, &m_size);
|
m_fileId = get_current_block_number(i_fileId * 2, &m_size);
|
||||||
m_pos = sizeof(t_eeprom_header);
|
m_pos = sizeof(t_eeprom_header);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -298,7 +298,7 @@ unsigned int EFile::readRlc12(uint8_t *buf, unsigned int i_len, bool rlc2)
|
||||||
{
|
{
|
||||||
memset(buf, 0, i_len);
|
memset(buf, 0, i_len);
|
||||||
|
|
||||||
if (board == BOARD_SKY9X) {
|
if (IS_SKY9X(board)) {
|
||||||
int len = std::min((int)i_len, (int)m_size + (int)sizeof(t_eeprom_header) - (int)m_pos);
|
int len = std::min((int)i_len, (int)m_size + (int)sizeof(t_eeprom_header) - (int)m_pos);
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
eeprom_read_block(buf, (m_fileId << 12) + m_pos, len);
|
eeprom_read_block(buf, (m_fileId << 12) + m_pos, len);
|
||||||
|
@ -461,7 +461,7 @@ unsigned int EFile::writeRlc1(unsigned int i_fileId, unsigned int typ, const uin
|
||||||
*/
|
*/
|
||||||
unsigned int EFile::writeRlc2(unsigned int i_fileId, unsigned int typ, const uint8_t *buf, unsigned int i_len)
|
unsigned int EFile::writeRlc2(unsigned int i_fileId, unsigned int typ, const uint8_t *buf, unsigned int i_len)
|
||||||
{
|
{
|
||||||
if (board == BOARD_SKY9X) {
|
if (IS_SKY9X(board)) {
|
||||||
openRd(i_fileId);
|
openRd(i_fileId);
|
||||||
eeprom_write_block(buf, (m_fileId << 12) + m_pos, i_len);
|
eeprom_write_block(buf, (m_fileId << 12) + m_pos, i_len);
|
||||||
t_eeprom_header header;
|
t_eeprom_header header;
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#define MAX_POTS(board) (IS_TARANIS(board) ? 4 : 3)
|
#define MAX_POTS(board) (IS_TARANIS(board) ? 4 : 3)
|
||||||
#define MAX_SWITCHES(board) (IS_TARANIS(board) ? 8 : 7)
|
#define MAX_SWITCHES(board) (IS_TARANIS(board) ? 8 : 7)
|
||||||
#define MAX_SWITCHES_POSITION(board) (IS_TARANIS(board) ? 22 : 9)
|
#define MAX_SWITCHES_POSITION(board) (IS_TARANIS(board) ? 22 : 9)
|
||||||
#define MAX_ROTARY_ENCODERS(board) (board==BOARD_GRUVIN9X ? 2 : (board==BOARD_SKY9X ? 1 : 0))
|
#define MAX_ROTARY_ENCODERS(board) (board==BOARD_GRUVIN9X ? 2 : (IS_SKY9X(board) ? 1 : 0))
|
||||||
#define MAX_PHASES(board, version) (IS_ARM(board) ? 9 : (IS_DBLRAM(board, version) ? 6 : 5))
|
#define MAX_PHASES(board, version) (IS_ARM(board) ? 9 : (IS_DBLRAM(board, version) ? 6 : 5))
|
||||||
#define MAX_MIXERS(board, version) (IS_ARM(board) ? 64 : 32)
|
#define MAX_MIXERS(board, version) (IS_ARM(board) ? 64 : 32)
|
||||||
#define MAX_CHANNELS(board, version) (IS_ARM(board) ? 32 : 16)
|
#define MAX_CHANNELS(board, version) (IS_ARM(board) ? 32 : 16)
|
||||||
|
@ -963,7 +963,7 @@ class CustomSwitchesAndSwitchesConversionTable: public ConversionTable {
|
||||||
addConversion(RawSwitch(SWITCH_TYPE_VIRTUAL, i), val++);
|
addConversion(RawSwitch(SWITCH_TYPE_VIRTUAL, i), val++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (board == BOARD_SKY9X) {
|
else if (IS_SKY9X(board)) {
|
||||||
for (int i=1; i<=8; i++) {
|
for (int i=1; i<=8; i++) {
|
||||||
int s = switchIndex(i, board, version);
|
int s = switchIndex(i, board, version);
|
||||||
addConversion(RawSwitch(SWITCH_TYPE_SWITCH, -s), -val);
|
addConversion(RawSwitch(SWITCH_TYPE_SWITCH, -s), -val);
|
||||||
|
|
|
@ -72,6 +72,8 @@ const char * Open9xInterface::getName()
|
||||||
return "openTx for FrSky Taranis Rev4a";
|
return "openTx for FrSky Taranis Rev4a";
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
return "openTx for Sky9x board / 9X";
|
return "openTx for Sky9x board / 9X";
|
||||||
|
case BOARD_9XRPRO:
|
||||||
|
return "openTx for 9XR-PRO";
|
||||||
default:
|
default:
|
||||||
return "openTx for an unknown board";
|
return "openTx for an unknown board";
|
||||||
}
|
}
|
||||||
|
@ -88,6 +90,8 @@ const int Open9xInterface::getEEpromSize()
|
||||||
return EESIZE_GRUVIN9X;
|
return EESIZE_GRUVIN9X;
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
return EESIZE_SKY9X;
|
return EESIZE_SKY9X;
|
||||||
|
case BOARD_9XRPRO:
|
||||||
|
return EESIZE_9XRPRO;
|
||||||
case BOARD_TARANIS:
|
case BOARD_TARANIS:
|
||||||
return EESIZE_TARANIS;
|
return EESIZE_TARANIS;
|
||||||
case BOARD_TARANIS_REV4a:
|
case BOARD_TARANIS_REV4a:
|
||||||
|
@ -194,7 +198,7 @@ bool Open9xInterface::loadModel(uint8_t version, ModelData &model, uint8_t *data
|
||||||
if (board == BOARD_GRUVIN9X) {
|
if (board == BOARD_GRUVIN9X) {
|
||||||
return loadModel<Open9xGruvin9xModelData_v208>(model, data, index, 0 /*no more stick mode messed*/);
|
return loadModel<Open9xGruvin9xModelData_v208>(model, data, index, 0 /*no more stick mode messed*/);
|
||||||
}
|
}
|
||||||
else if (board == BOARD_SKY9X) {
|
else if (IS_SKY9X(board)) {
|
||||||
return loadModel<Open9xArmModelData_v208>(model, data, index, 0 /*no more stick mode messed*/);
|
return loadModel<Open9xArmModelData_v208>(model, data, index, 0 /*no more stick mode messed*/);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -205,7 +209,7 @@ bool Open9xInterface::loadModel(uint8_t version, ModelData &model, uint8_t *data
|
||||||
if (board == BOARD_GRUVIN9X) {
|
if (board == BOARD_GRUVIN9X) {
|
||||||
return loadModel<Open9xGruvin9xModelData_v209>(model, data, index, 0 /*no more stick mode messed*/);
|
return loadModel<Open9xGruvin9xModelData_v209>(model, data, index, 0 /*no more stick mode messed*/);
|
||||||
}
|
}
|
||||||
else if (board == BOARD_SKY9X) {
|
else if (IS_SKY9X(board)) {
|
||||||
return loadModel<Open9xArmModelData_v209>(model, data, index, 0 /*no more stick mode messed*/);
|
return loadModel<Open9xArmModelData_v209>(model, data, index, 0 /*no more stick mode messed*/);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -216,7 +220,7 @@ bool Open9xInterface::loadModel(uint8_t version, ModelData &model, uint8_t *data
|
||||||
if (board == BOARD_GRUVIN9X) {
|
if (board == BOARD_GRUVIN9X) {
|
||||||
return loadModel<Open9xGruvin9xModelData_v210>(model, data, index, 0 /*no more stick mode messed*/);
|
return loadModel<Open9xGruvin9xModelData_v210>(model, data, index, 0 /*no more stick mode messed*/);
|
||||||
}
|
}
|
||||||
else if (board == BOARD_SKY9X) {
|
else if (IS_SKY9X(board)) {
|
||||||
return loadModel<Open9xArmModelData_v210>(model, data, index, 0 /*no more stick mode messed*/);
|
return loadModel<Open9xArmModelData_v210>(model, data, index, 0 /*no more stick mode messed*/);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -227,7 +231,7 @@ bool Open9xInterface::loadModel(uint8_t version, ModelData &model, uint8_t *data
|
||||||
if (board == BOARD_GRUVIN9X) {
|
if (board == BOARD_GRUVIN9X) {
|
||||||
return loadModel<Open9xGruvin9xModelData_v211>(model, data, index, 0 /*no more stick mode messed*/);
|
return loadModel<Open9xGruvin9xModelData_v211>(model, data, index, 0 /*no more stick mode messed*/);
|
||||||
}
|
}
|
||||||
else if (board == BOARD_SKY9X) {
|
else if (IS_SKY9X(board)) {
|
||||||
return loadModel<Open9xArmModelData_v211>(model, data, index, 0 /*no more stick mode messed*/);
|
return loadModel<Open9xArmModelData_v211>(model, data, index, 0 /*no more stick mode messed*/);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -235,7 +239,7 @@ bool Open9xInterface::loadModel(uint8_t version, ModelData &model, uint8_t *data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (version == 212) {
|
else if (version == 212) {
|
||||||
if (board == BOARD_SKY9X) {
|
if (IS_SKY9X(board)) {
|
||||||
return loadModel<Open9xArmModelData_v212>(model, data, index);
|
return loadModel<Open9xArmModelData_v212>(model, data, index);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -373,6 +377,9 @@ int Open9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t varian
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
version = 215;
|
version = 215;
|
||||||
break;
|
break;
|
||||||
|
case BOARD_9XRPRO:
|
||||||
|
version = 215;
|
||||||
|
break;
|
||||||
case BOARD_GRUVIN9X:
|
case BOARD_GRUVIN9X:
|
||||||
version = 214;
|
version = 214;
|
||||||
break;
|
break;
|
||||||
|
@ -423,7 +430,7 @@ int Open9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t varian
|
||||||
case 208:
|
case 208:
|
||||||
if (board == BOARD_GRUVIN9X)
|
if (board == BOARD_GRUVIN9X)
|
||||||
result = saveModel<Open9xGruvin9xModelData_v208>(i, radioData.models[i]);
|
result = saveModel<Open9xGruvin9xModelData_v208>(i, radioData.models[i]);
|
||||||
else if (board == BOARD_SKY9X)
|
else if (IS_SKY9X(board))
|
||||||
result = saveModel<Open9xArmModelData_v208>(i, radioData.models[i]);
|
result = saveModel<Open9xArmModelData_v208>(i, radioData.models[i]);
|
||||||
else
|
else
|
||||||
result = saveModel<Open9xModelData_v208>(i, radioData.models[i]);
|
result = saveModel<Open9xModelData_v208>(i, radioData.models[i]);
|
||||||
|
@ -431,7 +438,7 @@ int Open9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t varian
|
||||||
case 209:
|
case 209:
|
||||||
if (board == BOARD_GRUVIN9X)
|
if (board == BOARD_GRUVIN9X)
|
||||||
result = saveModel<Open9xGruvin9xModelData_v209>(i, radioData.models[i]);
|
result = saveModel<Open9xGruvin9xModelData_v209>(i, radioData.models[i]);
|
||||||
else if (board == BOARD_SKY9X)
|
else if (IS_SKY9X(board))
|
||||||
result = saveModel<Open9xArmModelData_v209>(i, radioData.models[i]);
|
result = saveModel<Open9xArmModelData_v209>(i, radioData.models[i]);
|
||||||
else
|
else
|
||||||
result = saveModel<Open9xModelData_v209>(i, radioData.models[i]);
|
result = saveModel<Open9xModelData_v209>(i, radioData.models[i]);
|
||||||
|
@ -439,7 +446,7 @@ int Open9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t varian
|
||||||
case 210:
|
case 210:
|
||||||
if (board == BOARD_GRUVIN9X)
|
if (board == BOARD_GRUVIN9X)
|
||||||
result = saveModel<Open9xGruvin9xModelData_v210>(i, radioData.models[i]);
|
result = saveModel<Open9xGruvin9xModelData_v210>(i, radioData.models[i]);
|
||||||
else if (board == BOARD_SKY9X)
|
else if (IS_SKY9X(board))
|
||||||
result = saveModel<Open9xArmModelData_v210>(i, radioData.models[i]);
|
result = saveModel<Open9xArmModelData_v210>(i, radioData.models[i]);
|
||||||
else
|
else
|
||||||
result = saveModel<Open9xModelData_v210>(i, radioData.models[i]);
|
result = saveModel<Open9xModelData_v210>(i, radioData.models[i]);
|
||||||
|
@ -447,13 +454,13 @@ int Open9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t varian
|
||||||
case 211:
|
case 211:
|
||||||
if (board == BOARD_GRUVIN9X)
|
if (board == BOARD_GRUVIN9X)
|
||||||
result = saveModel<Open9xGruvin9xModelData_v211>(i, radioData.models[i]);
|
result = saveModel<Open9xGruvin9xModelData_v211>(i, radioData.models[i]);
|
||||||
else if (board == BOARD_SKY9X)
|
else if (IS_SKY9X(board))
|
||||||
result = saveModel<Open9xArmModelData_v211>(i, radioData.models[i]);
|
result = saveModel<Open9xArmModelData_v211>(i, radioData.models[i]);
|
||||||
else
|
else
|
||||||
result = saveModel<Open9xModelData_v211>(i, radioData.models[i]);
|
result = saveModel<Open9xModelData_v211>(i, radioData.models[i]);
|
||||||
break;
|
break;
|
||||||
case 212:
|
case 212:
|
||||||
if (board == BOARD_SKY9X)
|
if (IS_SKY9X(board))
|
||||||
result = saveModel<Open9xArmModelData_v212>(i, radioData.models[i]);
|
result = saveModel<Open9xArmModelData_v212>(i, radioData.models[i]);
|
||||||
else
|
else
|
||||||
result = saveModelVariant<Open9xModelDataNew>(i, radioData.models[i], version, variant);
|
result = saveModelVariant<Open9xModelDataNew>(i, radioData.models[i], version, variant);
|
||||||
|
@ -477,7 +484,7 @@ int Open9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t varian
|
||||||
|
|
||||||
int Open9xInterface::getSize(ModelData &model)
|
int Open9xInterface::getSize(ModelData &model)
|
||||||
{
|
{
|
||||||
if (board == BOARD_SKY9X)
|
if (IS_SKY9X(board))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (model.isempty())
|
if (model.isempty())
|
||||||
|
@ -501,7 +508,7 @@ int Open9xInterface::getSize(ModelData &model)
|
||||||
|
|
||||||
int Open9xInterface::getSize(GeneralSettings &settings)
|
int Open9xInterface::getSize(GeneralSettings &settings)
|
||||||
{
|
{
|
||||||
if (board == BOARD_SKY9X)
|
if (IS_SKY9X(board))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
uint8_t tmp[EESIZE_RLC_MAX];
|
uint8_t tmp[EESIZE_RLC_MAX];
|
||||||
|
@ -580,7 +587,7 @@ int Open9xInterface::getCapability(const Capability capability)
|
||||||
case Timers:
|
case Timers:
|
||||||
return 2;
|
return 2;
|
||||||
case PermTimers:
|
case PermTimers:
|
||||||
if (board == BOARD_GRUVIN9X || board == BOARD_SKY9X || IS_TARANIS(board) )
|
if (board == BOARD_GRUVIN9X || IS_ARM(board))
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -618,7 +625,7 @@ int Open9xInterface::getCapability(const Capability capability)
|
||||||
case RotaryEncoders:
|
case RotaryEncoders:
|
||||||
if (board == BOARD_GRUVIN9X)
|
if (board == BOARD_GRUVIN9X)
|
||||||
return 2;
|
return 2;
|
||||||
else if (board == BOARD_SKY9X)
|
else if (IS_SKY9X(board))
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -754,13 +761,13 @@ int Open9xInterface::getCapability(const Capability capability)
|
||||||
case HasFailsafe:
|
case HasFailsafe:
|
||||||
if (IS_TARANIS(board))
|
if (IS_TARANIS(board))
|
||||||
return 32; //
|
return 32; //
|
||||||
return (board==BOARD_SKY9X ? 16 : 0);
|
return (IS_SKY9X(board) ? 16 : 0);
|
||||||
case NumModules:
|
case NumModules:
|
||||||
return (IS_ARM(board) ? 2 : 1);
|
return (IS_ARM(board) ? 2 : 1);
|
||||||
case HasPPMStart:
|
case HasPPMStart:
|
||||||
return (IS_ARM(board) ? true : false);
|
return (IS_ARM(board) ? true : false);
|
||||||
case HasCurrentCalibration:
|
case HasCurrentCalibration:
|
||||||
return (board==BOARD_SKY9X ? true : false);
|
return (IS_SKY9X(board) ? true : false);
|
||||||
case HasVolume:
|
case HasVolume:
|
||||||
return (IS_ARM(board) ? true : false);
|
return (IS_ARM(board) ? true : false);
|
||||||
case HasBrightness:
|
case HasBrightness:
|
||||||
|
@ -831,7 +838,7 @@ int Open9xInterface::isAvailable(Protocol proto, int port)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (board==BOARD_SKY9X) {
|
else if (IS_SKY9X(board)) {
|
||||||
switch (port) {
|
switch (port) {
|
||||||
case 0:
|
case 0:
|
||||||
switch (proto) {
|
switch (proto) {
|
||||||
|
@ -884,6 +891,8 @@ SimulatorInterface * Open9xInterface::getSimulator()
|
||||||
return new Open9xGruvin9xSimulator(this);
|
return new Open9xGruvin9xSimulator(this);
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
return new Open9xSky9xSimulator(this);
|
return new Open9xSky9xSimulator(this);
|
||||||
|
case BOARD_9XRPRO:
|
||||||
|
return new Open9xSky9xSimulator(this);
|
||||||
case BOARD_TARANIS:
|
case BOARD_TARANIS:
|
||||||
return new OpentxTaranisSimulator(this);
|
return new OpentxTaranisSimulator(this);
|
||||||
case BOARD_TARANIS_REV4a:
|
case BOARD_TARANIS_REV4a:
|
||||||
|
@ -1041,6 +1050,7 @@ QString geturl( int board)
|
||||||
url.append("/getfw.php?fw=%1.hex");
|
url.append("/getfw.php?fw=%1.hex");
|
||||||
break;
|
break;
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
|
case BOARD_9XRPRO:
|
||||||
case BOARD_TARANIS:
|
case BOARD_TARANIS:
|
||||||
case BOARD_TARANIS_REV4a:
|
case BOARD_TARANIS_REV4a:
|
||||||
url.append("/getfw.php?fw=%1.bin");
|
url.append("/getfw.php?fw=%1.bin");
|
||||||
|
@ -1073,6 +1083,7 @@ QString getstamp( int board)
|
||||||
case BOARD_GRUVIN9X:
|
case BOARD_GRUVIN9X:
|
||||||
url.append("v4.txt");
|
url.append("v4.txt");
|
||||||
break;
|
break;
|
||||||
|
case BOARD_9XRPRO:
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
url.append("arm.txt");
|
url.append("arm.txt");
|
||||||
break;
|
break;
|
||||||
|
@ -1102,6 +1113,7 @@ QString getrnurl( int board)
|
||||||
case BOARD_STOCK:
|
case BOARD_STOCK:
|
||||||
case BOARD_M128:
|
case BOARD_M128:
|
||||||
case BOARD_GRUVIN9X:
|
case BOARD_GRUVIN9X:
|
||||||
|
case BOARD_9XRPRO:
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
url.append("9x.txt");
|
url.append("9x.txt");
|
||||||
break;
|
break;
|
||||||
|
@ -1309,6 +1321,31 @@ void RegisterOpen9xFirmwares()
|
||||||
open9x->addOption("bluetooth", QObject::tr("Bluetooth interface"));
|
open9x->addOption("bluetooth", QObject::tr("Bluetooth interface"));
|
||||||
open9x->addOptions(fai_options);
|
open9x->addOptions(fai_options);
|
||||||
firmwares.push_back(open9x);
|
firmwares.push_back(open9x);
|
||||||
|
|
||||||
|
/* SKY9X board */
|
||||||
|
open9x = new Open9xFirmware("opentx-9xrpro", QObject::tr("openTx for 9xr-pro board / 9X"), new Open9xInterface(BOARD_SKY9X), geturl(BOARD_SKY9X), getstamp(BOARD_SKY9X),getrnurl(BOARD_SKY9X), true);
|
||||||
|
open9x->setVariantBase(FRSKY_VARIANT);
|
||||||
|
open9x->addOption("heli", QObject::tr("Enable HELI menu and cyclic mix support"));
|
||||||
|
open9x->addOption("templates", QObject::tr("Enable TEMPLATES menu"));
|
||||||
|
open9x->addOption("nofp", QObject::tr("No flight modes"));
|
||||||
|
open9x->addOption("nocurves", QObject::tr("Disable curves menus"));
|
||||||
|
open9x->addOption("ppmca", QObject::tr("PPM center adjustment in limits"));
|
||||||
|
open9x->addOption("ppmus", QObject::tr("PPM values displayed in us"));
|
||||||
|
open9x->addOption("gvars", QObject::tr("Global variables"), GVARS_VARIANT);
|
||||||
|
open9x->addOption("symlimits", QObject::tr("Symetrical Limits"));
|
||||||
|
open9x->addOption("potscroll", QObject::tr("Pots use in menus navigation"));
|
||||||
|
open9x->addOption("autosource", QObject::tr("In model setup menus automatically set source by moving some of them"));
|
||||||
|
open9x->addOption("autoswitch", QObject::tr("In model setup menus automatically set switch by moving some of them"));
|
||||||
|
open9x->addOption("dblkeys", QObject::tr("Enable resetting values by pressing up and down at the same time"));
|
||||||
|
open9x->addOption("nographics", QObject::tr("No graphical check boxes and sliders"));
|
||||||
|
open9x->addOption("battgraph", QObject::tr("Battery graph"));
|
||||||
|
open9x->addOption("nobold", QObject::tr("Don't use bold font for highlighting active items"));
|
||||||
|
open9x->addOption("sqt5font", QObject::tr("Use alternative SQT5 font"));
|
||||||
|
open9x->addOption("tsticks", QObject::tr("Use FrSky Taranis sticks in a 9X/9XR"));
|
||||||
|
open9x->addOption("bluetooth", QObject::tr("Bluetooth interface"));
|
||||||
|
open9x->addOptions(fai_options);
|
||||||
|
firmwares.push_back(open9x);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Taranis board */
|
/* Taranis board */
|
||||||
|
|
|
@ -109,6 +109,7 @@ class Open9xFirmware: public FirmwareInfo {
|
||||||
|
|
||||||
virtual unsigned int getEepromVersion(unsigned int revision) {
|
virtual unsigned int getEepromVersion(unsigned int revision) {
|
||||||
switch(this->eepromInterface->getBoard()) {
|
switch(this->eepromInterface->getBoard()) {
|
||||||
|
case BOARD_9XRPRO:
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
if (revision == 0)
|
if (revision == 0)
|
||||||
return 212;
|
return 212;
|
||||||
|
|
|
@ -847,7 +847,7 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, unsigned long attr,
|
||||||
if (item == value) b->setCurrentIndex(b->count()-1);
|
if (item == value) b->setCurrentIndex(b->count()-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (GetEepromInterface()->getBoard()==BOARD_SKY9X) {
|
if (IS_SKY9X(GetEepromInterface()->getBoard())) {
|
||||||
item = RawSwitch(SWITCH_TYPE_REA,0);
|
item = RawSwitch(SWITCH_TYPE_REA,0);
|
||||||
if (GetEepromInterface()->isAvailable(item, context)) {
|
if (GetEepromInterface()->isAvailable(item, context)) {
|
||||||
b->addItem(item.toString(), item.toValue());
|
b->addItem(item.toString(), item.toValue());
|
||||||
|
|
|
@ -833,7 +833,7 @@ QString MainWindow::GetAvrdudeLocation()
|
||||||
EEPROMInterface *eepromInterface = GetEepromInterface();
|
EEPROMInterface *eepromInterface = GetEepromInterface();
|
||||||
if (IS_TARANIS(eepromInterface->getBoard())) {
|
if (IS_TARANIS(eepromInterface->getBoard())) {
|
||||||
return bcd.getDFU();
|
return bcd.getDFU();
|
||||||
} else if (eepromInterface->getBoard()==BOARD_SKY9X) {
|
} else if (IS_SKY9X(GetEepromInterface()->getBoard())) {
|
||||||
return bcd.getSAMBA();
|
return bcd.getSAMBA();
|
||||||
} else {
|
} else {
|
||||||
return bcd.getAVRDUDE();
|
return bcd.getAVRDUDE();
|
||||||
|
@ -920,7 +920,7 @@ QStringList MainWindow::GetReceiveEEpromCommand(const QString &filename)
|
||||||
EEPROMInterface *eepromInterface = GetEepromInterface();
|
EEPROMInterface *eepromInterface = GetEepromInterface();
|
||||||
if (IS_TARANIS(eepromInterface->getBoard())) {
|
if (IS_TARANIS(eepromInterface->getBoard())) {
|
||||||
// return NULL; // to be implemented
|
// return NULL; // to be implemented
|
||||||
} else if (eepromInterface->getBoard() == BOARD_SKY9X) {
|
} else if (IS_SKY9X(eepromInterface->getBoard())) {
|
||||||
ret=GetSambaArguments(QString("SERIALFLASH::Init 0\n") + "receive_file {SerialFlash AT25} \"" + filename + "\" 0x0 0x80000 0\n");
|
ret=GetSambaArguments(QString("SERIALFLASH::Init 0\n") + "receive_file {SerialFlash AT25} \"" + filename + "\" 0x0 0x80000 0\n");
|
||||||
} else {
|
} else {
|
||||||
ret=GetAvrdudeArguments("eeprom:r:", filename);
|
ret=GetAvrdudeArguments("eeprom:r:", filename);
|
||||||
|
@ -934,7 +934,7 @@ QStringList MainWindow::GetSendEEpromCommand(const QString &filename)
|
||||||
EEPROMInterface *eepromInterface = GetEepromInterface();
|
EEPROMInterface *eepromInterface = GetEepromInterface();
|
||||||
if (IS_TARANIS(eepromInterface->getBoard())) {
|
if (IS_TARANIS(eepromInterface->getBoard())) {
|
||||||
// return NULL; // to be implemented
|
// return NULL; // to be implemented
|
||||||
} else if (eepromInterface->getBoard() == BOARD_SKY9X) {
|
} else if (IS_SKY9X(eepromInterface->getBoard())) {
|
||||||
ret=GetSambaArguments(QString("SERIALFLASH::Init 0\n") + "send_file {SerialFlash AT25} \"" + filename + "\" 0x0 0\n");
|
ret=GetSambaArguments(QString("SERIALFLASH::Init 0\n") + "send_file {SerialFlash AT25} \"" + filename + "\" 0x0 0\n");
|
||||||
} else {
|
} else {
|
||||||
ret=GetAvrdudeArguments("eeprom:w:", filename);
|
ret=GetAvrdudeArguments("eeprom:w:", filename);
|
||||||
|
@ -950,6 +950,8 @@ QStringList MainWindow::GetSendFlashCommand(const QString &filename)
|
||||||
ret=GetDFUUtilArguments("-D", filename);
|
ret=GetDFUUtilArguments("-D", filename);
|
||||||
} else if (eepromInterface->getBoard() == BOARD_SKY9X) {
|
} else if (eepromInterface->getBoard() == BOARD_SKY9X) {
|
||||||
ret=GetSambaArguments(QString("send_file {Flash} \"") + filename + "\" 0x400000 0\n" + "FLASH::ScriptGPNMV 2\n");
|
ret=GetSambaArguments(QString("send_file {Flash} \"") + filename + "\" 0x400000 0\n" + "FLASH::ScriptGPNMV 2\n");
|
||||||
|
} else if (eepromInterface->getBoard() == BOARD_9XRPRO) {
|
||||||
|
ret=GetSambaArguments(QString("send_file {Flash} \"") + filename + "\" 0x400000 0\n" + "FLASH::ScriptGPNMV 2\n");
|
||||||
} else {
|
} else {
|
||||||
ret=GetAvrdudeArguments("flash:w:", filename);
|
ret=GetAvrdudeArguments("flash:w:", filename);
|
||||||
}
|
}
|
||||||
|
@ -963,6 +965,8 @@ QStringList MainWindow::GetReceiveFlashCommand(const QString &filename)
|
||||||
return GetDFUUtilArguments("-U", filename);
|
return GetDFUUtilArguments("-U", filename);
|
||||||
} else if (eepromInterface->getBoard() == BOARD_SKY9X) {
|
} else if (eepromInterface->getBoard() == BOARD_SKY9X) {
|
||||||
return GetSambaArguments(QString("receive_file {Flash} \"") + filename + "\" 0x400000 0x40000 0\n");
|
return GetSambaArguments(QString("receive_file {Flash} \"") + filename + "\" 0x400000 0x40000 0\n");
|
||||||
|
} else if (eepromInterface->getBoard() == BOARD_9XRPRO) {
|
||||||
|
return GetSambaArguments(QString("receive_file {Flash} \"") + filename + "\" 0x400000 0x40000 0\n");
|
||||||
} else {
|
} else {
|
||||||
return GetAvrdudeArguments("flash:r:", filename);
|
return GetAvrdudeArguments("flash:r:", filename);
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ bool MdiChild::hasSelection()
|
||||||
void MdiChild::updateTitle()
|
void MdiChild::updateTitle()
|
||||||
{
|
{
|
||||||
QString title = userFriendlyCurrentFile() + "[*]"+" ("+GetEepromInterface()->getName()+QString(")");
|
QString title = userFriendlyCurrentFile() + "[*]"+" ("+GetEepromInterface()->getName()+QString(")");
|
||||||
if (GetEepromInterface()->getBoard() != BOARD_SKY9X)
|
if (!IS_SKY9X(GetEepromInterface()->getBoard()))
|
||||||
title += QString(" - %1 ").arg(EEPromAvail) + tr("free bytes");
|
title += QString(" - %1 ").arg(EEPromAvail) + tr("free bytes");
|
||||||
setWindowTitle(title);
|
setWindowTitle(title);
|
||||||
}
|
}
|
||||||
|
@ -345,7 +345,7 @@ bool MdiChild::saveAs(bool isNew)
|
||||||
{
|
{
|
||||||
QSettings settings("companion9x", "companion9x");
|
QSettings settings("companion9x", "companion9x");
|
||||||
QString fileName;
|
QString fileName;
|
||||||
if (GetEepromInterface()->getBoard() == BOARD_SKY9X) {
|
if (IS_SKY9X(GetEepromInterface()->getBoard())) {
|
||||||
curFile.replace(".eepe", ".bin");
|
curFile.replace(".eepe", ".bin");
|
||||||
QFileInfo fi(curFile);
|
QFileInfo fi(curFile);
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
@ -381,7 +381,7 @@ bool MdiChild::saveFile(const QString &fileName, bool setCurrent)
|
||||||
{
|
{
|
||||||
QString myFile;
|
QString myFile;
|
||||||
myFile = fileName;
|
myFile = fileName;
|
||||||
if (GetEepromInterface()->getBoard() == BOARD_SKY9X) {
|
if (IS_SKY9X(GetEepromInterface()->getBoard())) {
|
||||||
myFile.replace(".eepe", ".bin");
|
myFile.replace(".eepe", ".bin");
|
||||||
}
|
}
|
||||||
QFile file(myFile);
|
QFile file(myFile);
|
||||||
|
|
|
@ -286,7 +286,7 @@ void ModelsListWidget::refreshList()
|
||||||
QString item = QString().sprintf("%02d: ", i+1);
|
QString item = QString().sprintf("%02d: ", i+1);
|
||||||
|
|
||||||
if (!radioData->models[i].isempty()) {
|
if (!radioData->models[i].isempty()) {
|
||||||
if (eepromInterface && eepromInterface->getBoard() == BOARD_SKY9X) {
|
if (eepromInterface && IS_SKY9X(eepromInterface->getBoard())) {
|
||||||
if (radioData->models[i].name[0]==0) {
|
if (radioData->models[i].name[0]==0) {
|
||||||
QString modelname="Model";
|
QString modelname="Model";
|
||||||
modelname.append(QString().sprintf("%02d", i+1));
|
modelname.append(QString().sprintf("%02d", i+1));
|
||||||
|
@ -330,7 +330,7 @@ void ModelsListWidget::refreshList()
|
||||||
this->item(radioData->generalSettings.currModel+1)->setFont(f);
|
this->item(radioData->generalSettings.currModel+1)->setFont(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eepromInterface && eepromInterface->getBoard() != BOARD_SKY9X) {
|
if (eepromInterface && !IS_SKY9X(eepromInterface->getBoard())) {
|
||||||
((MdiChild*)parent())->setEEpromAvail((availableEEpromSize/16)*15);
|
((MdiChild*)parent())->setEEpromAvail((availableEEpromSize/16)*15);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue