1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-23 08:15:17 +03:00

Input scale now added in Companion. I have broken all getStep / getMin /

getMax / getOffset used for custom switches and telemetry bars.
Everything needs to be tested again ...
This commit is contained in:
Bertrand Songis 2014-01-28 15:43:52 +01:00
parent 30b8a7e14b
commit f41f1a3f7b
16 changed files with 308 additions and 495 deletions

View file

@ -37,146 +37,124 @@ void getEEPROMString(char *dst, const char *src, int size)
}
}
int RawSource::getDecimals(const ModelData & Model)
RawSourceRange RawSource::getRange()
{
if(type==SOURCE_TYPE_TELEMETRY) {
switch (index) {
case TELEMETRY_SOURCE_A1:
case TELEMETRY_SOURCE_A2:
return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0 ? 2: 0);
case TELEMETRY_SOURCE_CELL:
return 2;
case TELEMETRY_SOURCE_CELLS_SUM:
case TELEMETRY_SOURCE_VFAS:
case TELEMETRY_SOURCE_CURRENT:
return 1;
default:
return 0;
}
}
return 0;
}
RawSourceRange result;
int board = GetEepromInterface()->getBoard();
double RawSource::getMin(const ModelData & Model)
{
switch (type) {
case SOURCE_TYPE_TELEMETRY:
switch (index) {
/*case TELEMETRY_SOURCE_NONE:
case TELEMETRY_SOURCE_TX_BATT:
result.step = 0.1;
result.decimals = 1;
result.max = 25.5;
break;
case TELEMETRY_SOURCE_TIMER1:
case TELEMETRY_SOURCE_TIMER2:
return 0; */
case TELEMETRY_SOURCE_A1:
case TELEMETRY_SOURCE_A2:
if (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) {
return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/2550.0;
}
else {
return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/255.0;
}
case TELEMETRY_SOURCE_ALT:
case TELEMETRY_SOURCE_GPS_ALT:
return -500;
case TELEMETRY_SOURCE_T1:
case TELEMETRY_SOURCE_T2:
return -30;
default:
return 0;
}
break;
default:
return (Model.extendedLimits ? -125 :-100);
}
}
double RawSource::getMax(const ModelData & Model)
{
switch (type) {
case SOURCE_TYPE_TELEMETRY:
switch (index) {
case TELEMETRY_SOURCE_TIMER1:
case TELEMETRY_SOURCE_TIMER2:
return 765;
result.step = IS_TARANIS(board) ? 1 : 3;
result.max = 765;
break;
case TELEMETRY_SOURCE_RSSI_TX:
case TELEMETRY_SOURCE_RSSI_RX:
return 100;
result.max = 100;
break;
case TELEMETRY_SOURCE_A1:
case TELEMETRY_SOURCE_A2:
if (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) {
return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio-(Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/255.0)/10;
} else {
return Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio-(Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/255.0;
if (model) {
if (model->frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) {
result.step = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio / 2550.0);
result.min = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 2550.0;
result.max = model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio - (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 2550.0;
result.decimals = 2;
// result.offset = result.min;
}
else {
result.step = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio / 255.0);
result.min = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset *model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 255.0;
result.max = model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio - (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 255.0;
result.decimals = 0;
// result.offset = result.min;
}
}
break;
case TELEMETRY_SOURCE_ALT:
case TELEMETRY_SOURCE_GPS_ALT:
return 1540;
case TELEMETRY_SOURCE_RPM:
return 12750;
case TELEMETRY_SOURCE_FUEL:
return 100;
result.step = IS_TARANIS(board) ? 1 : 8;
result.min = -500;
result.max = 1540;
// result.offset = 524;
break;
case TELEMETRY_SOURCE_T1:
case TELEMETRY_SOURCE_T2:
return 225;
result.min = -30;
result.max = 225;
// result.offset = 98;
break;
case TELEMETRY_SOURCE_RPM:
result.step = IS_TARANIS(board) ? 1 : 50;
result.max = 12750;
// result.offset = 6400;
break;
case TELEMETRY_SOURCE_FUEL:
result.max = 100;
break;
case TELEMETRY_SOURCE_SPEED:
return 944;
result.step = IS_TARANIS(board) ? 1 : 4;
result.max = 944;
// result.offset = 474;
if (model && !model->frsky.imperial) {
result.step *= 1.852;
result.max *= 1.852;
}
break;
case TELEMETRY_SOURCE_DIST:
return 2040;
result.step = IS_TARANIS(board) ? 1 : 8;
result.max = 2040;
// result.offset = 1024;
break;
case TELEMETRY_SOURCE_CELL:
return 5.1;
result.step = IS_TARANIS(board) ? 0.01 : 0.02;
result.max = 5.1;
result.decimals = 2;
// result.offset = 2.56;
break;
case TELEMETRY_SOURCE_CELLS_SUM:
case TELEMETRY_SOURCE_VFAS:
return 25.5;
result.step = 0.1;
result.max = 25.5;
result.decimals = 1;
break;
case TELEMETRY_SOURCE_CURRENT:
return 127.5;
result.step = IS_TARANIS(board) ? 0.1 : 0.5;
result.max = 127.5;
result.decimals = 1;
break;
case TELEMETRY_SOURCE_CONSUMPTION:
return 5100;
result.step = IS_TARANIS(board) ? 1 : 20;
result.max = 5100;
break;
case TELEMETRY_SOURCE_POWER:
return 1275;
result.step = IS_TARANIS(board) ? 1 : 5;
result.max = 1275;
break;
default:
return 125;
result.max = 125;
break;
}
break;
default:
return (Model.extendedLimits ? 125 :100);
result.max = (model && model->extendedLimits ? 125 : 100);
result.min = - result.max;
break;
}
return result;
}
double RawSource::getOffset(const ModelData & Model)
{
if (type==SOURCE_TYPE_TELEMETRY) {
switch (index) {
case TELEMETRY_SOURCE_A1:
case TELEMETRY_SOURCE_A2:
if (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) {
return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/2550.0;
}
else {
return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].offset*Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio)/255.0;
}
case TELEMETRY_SOURCE_ALT:
case TELEMETRY_SOURCE_GPS_ALT:
return 524;
case TELEMETRY_SOURCE_RPM:
return 6400;
case TELEMETRY_SOURCE_FUEL:
return 0;
case TELEMETRY_SOURCE_T1:
case TELEMETRY_SOURCE_T2:
return 98;
case TELEMETRY_SOURCE_SPEED:
return 474;
case TELEMETRY_SOURCE_DIST:
return 1024;
case TELEMETRY_SOURCE_CELL:
return 2.56;
default:
return 0;
}
}
return 0;
}
#if 0
int RawSource::getRawOffset(const ModelData & Model)
{
switch (type) {
@ -202,51 +180,7 @@ int RawSource::getRawOffset(const ModelData & Model)
return 0;
}
}
double RawSource::getStep(const ModelData & Model)
{
switch (type) {
case SOURCE_TYPE_TELEMETRY:
switch (index) {
case TELEMETRY_SOURCE_TIMER1:
case TELEMETRY_SOURCE_TIMER2:
return 3;
case TELEMETRY_SOURCE_A1:
case TELEMETRY_SOURCE_A2:
if (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) {
return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio/2550.0);
}
else {
return (Model.frsky.channels[index-TELEMETRY_SOURCE_A1].ratio/255.0);
}
case TELEMETRY_SOURCE_ALT:
case TELEMETRY_SOURCE_GPS_ALT:
return 8;
case TELEMETRY_SOURCE_RPM:
return 50;
case TELEMETRY_SOURCE_SPEED:
return 4;
case TELEMETRY_SOURCE_DIST:
return 8;
case TELEMETRY_SOURCE_CELL:
return 0.02;
case TELEMETRY_SOURCE_CELLS_SUM:
case TELEMETRY_SOURCE_VFAS:
return 0.1;
case TELEMETRY_SOURCE_CURRENT:
return 0.5;
case TELEMETRY_SOURCE_CONSUMPTION:
return 20;
case TELEMETRY_SOURCE_POWER:
return 5;
default:
return 1;
}
break;
default:
return 1;
}
}
#endif
QString AnalogString(int index)
{