249 lines
8.0 KiB
C
249 lines
8.0 KiB
C
/*
|
|
* Copyright (C) EdgeTX
|
|
*
|
|
* Based on code named
|
|
* opentx - https://github.com/opentx/opentx
|
|
* th9x - http://code.google.com/p/th9x
|
|
* er9x - http://code.google.com/p/er9x
|
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
|
*
|
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
//
|
|
// Data based on MPM firmware version 1.3.3.33 multi.txt
|
|
//
|
|
|
|
#if defined(MULTIMODULE) or defined(SIMU)
|
|
|
|
#pragma once
|
|
|
|
//
|
|
// Common list of supported Multi protocols
|
|
//
|
|
enum ModuleSubtypeMulti {
|
|
MODULE_SUBTYPE_MULTI_FIRST = 0,
|
|
MODULE_SUBTYPE_MULTI_FLYSKY = MODULE_SUBTYPE_MULTI_FIRST,
|
|
MODULE_SUBTYPE_MULTI_HUBSAN, //1
|
|
MODULE_SUBTYPE_MULTI_FRSKY, //2
|
|
MODULE_SUBTYPE_MULTI_HISKY, //3
|
|
MODULE_SUBTYPE_MULTI_V2X2, //4
|
|
MODULE_SUBTYPE_MULTI_DSM2, //5
|
|
MODULE_SUBTYPE_MULTI_DEVO,
|
|
MODULE_SUBTYPE_MULTI_YD717,
|
|
MODULE_SUBTYPE_MULTI_KN,
|
|
MODULE_SUBTYPE_MULTI_SYMAX,
|
|
MODULE_SUBTYPE_MULTI_SLT, //10
|
|
MODULE_SUBTYPE_MULTI_CX10,
|
|
MODULE_SUBTYPE_MULTI_CG023,
|
|
MODULE_SUBTYPE_MULTI_BAYANG,
|
|
MODULE_SUBTYPE_MULTI_FRSKYX,
|
|
MODULE_SUBTYPE_MULTI_ESky, //15
|
|
MODULE_SUBTYPE_MULTI_MT99XX,
|
|
MODULE_SUBTYPE_MULTI_MJXQ,
|
|
MODULE_SUBTYPE_MULTI_SHENQI,
|
|
MODULE_SUBTYPE_MULTI_FY326,
|
|
MODULE_SUBTYPE_MULTI_FUTABA, //20
|
|
MODULE_SUBTYPE_MULTI_J6PRO,
|
|
MODULE_SUBTYPE_MULTI_FQ777,
|
|
MODULE_SUBTYPE_MULTI_ASSAN,
|
|
MODULE_SUBTYPE_MULTI_FRSKYV,
|
|
MODULE_SUBTYPE_MULTI_HONTAI, //25
|
|
MODULE_SUBTYPE_MULTI_OLRS,
|
|
MODULE_SUBTYPE_MULTI_FS_AFHDS2A,
|
|
MODULE_SUBTYPE_MULTI_Q2X2,
|
|
MODULE_SUBTYPE_MULTI_WK_2X01,
|
|
MODULE_SUBTYPE_MULTI_Q303, //30
|
|
MODULE_SUBTYPE_MULTI_GW008,
|
|
MODULE_SUBTYPE_MULTI_DM002,
|
|
MODULE_SUBTYPE_MULTI_CABELL,
|
|
MODULE_SUBTYPE_MULTI_ESKY150,
|
|
MODULE_SUBTYPE_MULTI_H83D, //35
|
|
MODULE_SUBTYPE_MULTI_CORONA,
|
|
MODULE_SUBTYPE_MULTI_CFLIE,
|
|
MODULE_SUBTYPE_MULTI_HITEC,
|
|
MODULE_SUBTYPE_MULTI_WFLY,
|
|
MODULE_SUBTYPE_MULTI_BUGS, //40
|
|
MODULE_SUBTYPE_MULTI_BUGS_MINI,
|
|
MODULE_SUBTYPE_MULTI_TRAXXAS,
|
|
MODULE_SUBTYPE_MULTI_NCC1701,
|
|
MODULE_SUBTYPE_MULTI_E01X,
|
|
MODULE_SUBTYPE_MULTI_V911S, //45
|
|
MODULE_SUBTYPE_MULTI_GD00X,
|
|
MODULE_SUBTYPE_MULTI_V761,
|
|
MODULE_SUBTYPE_MULTI_KF606,
|
|
MODULE_SUBTYPE_MULTI_REDPINE,
|
|
MODULE_SUBTYPE_MULTI_POTENSIC, //50
|
|
MODULE_SUBTYPE_MULTI_ZSX,
|
|
MODULE_SUBTYPE_MULTI_HEIGHT,
|
|
MODULE_SUBTYPE_MULTI_SCANNER,
|
|
MODULE_SUBTYPE_MULTI_FRSKYX_RX,
|
|
MODULE_SUBTYPE_MULTI_AFHDS2A_RX, //55
|
|
MODULE_SUBTYPE_MULTI_HOTT,
|
|
MODULE_SUBTYPE_MULTI_FX,
|
|
MODULE_SUBTYPE_MULTI_BAYANG_RX,
|
|
MODULE_SUBTYPE_MULTI_PELIKAN,
|
|
MODULE_SUBTYPE_MULTI_TIGER, //60
|
|
MODULE_SUBTYPE_MULTI_XK,
|
|
MODULE_SUBTYPE_MULTI_XN297DUMP,
|
|
MODULE_SUBTYPE_MULTI_FRSKYX2,
|
|
MODULE_SUBTYPE_MULTI_FRSKY_R9,
|
|
MODULE_SUBTYPE_MULTI_PROPEL, //65
|
|
MODULE_SUBTYPE_MULTI_FRSKYL,
|
|
MODULE_SUBTYPE_MULTI_SKYARTEC,
|
|
MODULE_SUBTYPE_MULTI_ESKY150V2,
|
|
MODULE_SUBTYPE_MULTI_DSM_RX,
|
|
MODULE_SUBTYPE_MULTI_JJRC345, //70
|
|
MODULE_SUBTYPE_MULTI_Q90C,
|
|
MODULE_SUBTYPE_MULTI_KYOSHO,
|
|
MODULE_SUBTYPE_MULTI_RLINK,
|
|
MODULE_SUBTYPE_MULTI_ELRS,
|
|
MODULE_SUBTYPE_MULTI_REALACC, //75
|
|
MODULE_SUBTYPE_MULTI_OMP,
|
|
MODULE_SUBTYPE_MULTI_MLINK,
|
|
MODULE_SUBTYPE_MULTI_WFLY2,
|
|
MODULE_SUBTYPE_MULTI_E016HV2,
|
|
MODULE_SUBTYPE_MULTI_E010R5, //80
|
|
MODULE_SUBTYPE_MULTI_LOLI,
|
|
MODULE_SUBTYPE_MULTI_E129,
|
|
MODULE_SUBTYPE_MULTI_JOYSWAY,
|
|
MODULE_SUBTYPE_MULTI_E016H,
|
|
MODULE_SUBTYPE_MULTI_CONFIG, //85
|
|
MODULE_SUBTYPE_MULTI_IKEAANSLUTA,
|
|
MODULE_SUBTYPE_MULTI_WILLIFM,
|
|
MODULE_SUBTYPE_MULTI_LOSI,
|
|
MODULE_SUBTYPE_MULTI_MOULDKG,
|
|
MODULE_SUBTYPE_MULTI_XERALL, //90
|
|
MODULE_SUBTYPE_MULTI_MT99XX2,
|
|
MODULE_SUBTYPE_MULTI_KYOSHO2,
|
|
MODULE_SUBTYPE_MULTI_SCORPIO,
|
|
//
|
|
// spare entries - don't touch,
|
|
// just add to known protocols
|
|
//
|
|
MODULE_SUBTYPE_MULTI_NN1,
|
|
MODULE_SUBTYPE_MULTI_NN2,
|
|
MODULE_SUBTYPE_MULTI_NN3,
|
|
MODULE_SUBTYPE_MULTI_NN4,
|
|
MODULE_SUBTYPE_MULTI_NN5,
|
|
MODULE_SUBTYPE_MULTI_NN6,
|
|
MODULE_SUBTYPE_MULTI_NN7,
|
|
MODULE_SUBTYPE_MULTI_NN8,
|
|
MODULE_SUBTYPE_MULTI_NN9,
|
|
MODULE_SUBTYPE_MULTI_NN10,
|
|
MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_NN10,
|
|
//
|
|
// Sentinel
|
|
//
|
|
MODULE_SUBTYPE_MULTI_SENTINEL = 0xfe,
|
|
//
|
|
// most likely no longer required
|
|
//
|
|
MM_RF_CUSTOM_SELECTED = 0xff
|
|
};
|
|
|
|
//
|
|
// Common list of Multi protocol names. Needs to match enum ModuleSubtypeMulti
|
|
//
|
|
#define KNOWN_PROTO_NAMES \
|
|
"FlySky","Hubsan","FrSky D","Hisky","V2x2","DSM","Devo","YD717","KN","SymaX",\
|
|
"SLT","CX10","CG023","Bayang","FrSky X","ESky","MT99XX","MJXq","Shenqi","FY326",\
|
|
"Futaba","J6 Pro","FQ777","Assan","FrSky V","Hontai","OpenLrs","FlSky2A","Q2x2","Walkera", \
|
|
"Q303","GW008","DM002","Cabell","Esky150","H8 3D","Corona","CFlie","Hitec","WFLY",\
|
|
"Bugs","BugMini","Traxxas","NCC1701","E01X","V911S","GD00X","V761","KF606","Redpine",\
|
|
"Potensi","ZSX","Height","Scanner","FrSkyRX","FS2A_RX","HoTT","FX","BayanRX","Pelikan",\
|
|
"Tiger", "XK","XN297DU","FrSkyX2","FrSkyR9","Propel","FrSky L","Skyartc","ESkyV2","DSM_RX",\
|
|
"JJRC345","Q90C","Kyosho","RadLink","ExpLRS","Realacc","OMP","M-Link","WFLY2","E016Hv2",\
|
|
"E010r5","LOLI","E129","JOYSWAY","E016H","Config","IKEA","WILLIFM","Losi","MouldKg",\
|
|
"Xerall","MT99XX2", "Kyosho2", "Scorpio"
|
|
#define SPARE_PROTO_NAMES \
|
|
"NN 1","NN 2","NN 3","NN 4","NN 5","NN 6","NN 7","NN 8","NN 9","NN 10"
|
|
#define SPARE_SUBTYPE_NAMES \
|
|
"SUB 1","SUB 2","SUB 3","SUB 4","SUB 5","SUB 6","SUB 7","SUB 8"
|
|
#define PROTO_NAMES KNOWN_PROTO_NAMES,SPARE_PROTO_NAMES
|
|
|
|
//
|
|
// Common list of option names. Needs to match inline void getMultiOptionValues cases.
|
|
//
|
|
#define BAYANG_OPTION_TELEMETRY_NAMES "Off","On","Off+Aux","On+Aux"
|
|
#define DSM2_OPTION_SERVOFREQ_NAMES "22ms","11ms"
|
|
#define DSM_CLONE_NAMES "Normal","Cloned"
|
|
|
|
//
|
|
// Common list of protocols the MPM doesn't allow to be selected (not sent by MPM protocol scan)
|
|
//
|
|
inline bool isMultiProtocolSelectable(int protocol)
|
|
{
|
|
return (protocol != MODULE_SUBTYPE_MULTI_CONFIG &&
|
|
protocol != MODULE_SUBTYPE_MULTI_SCANNER &&
|
|
protocol != MODULE_SUBTYPE_MULTI_OLRS &&
|
|
protocol != MODULE_SUBTYPE_MULTI_WILLIFM &&
|
|
protocol != MODULE_SUBTYPE_MULTI_ELRS &&
|
|
protocol != MODULE_SUBTYPE_MULTI_IKEAANSLUTA &&
|
|
protocol != MODULE_SUBTYPE_MULTI_CFLIE &&
|
|
// protocol != MODULE_SUBTYPE_MULTI_XN297DUMP && // XN297_DUMP is available with MPM debug fw only
|
|
protocol != MODULE_SUBTYPE_MULTI_MOULDKG
|
|
);
|
|
}
|
|
|
|
//
|
|
// Common protocol specific option values
|
|
//
|
|
inline void getMultiOptionValues(int8_t multi_proto, int8_t &min, int8_t &max) {
|
|
switch (multi_proto) {
|
|
case MODULE_SUBTYPE_MULTI_DSM2:
|
|
min = 0; // STR_MULTI_SERVOFREQ: 22ms, 11ms
|
|
max = 1;
|
|
break;
|
|
case MODULE_SUBTYPE_MULTI_BAYANG:
|
|
min = 0; // STR_MULTI_TELEMETRY: Off, On, Off+AUX, On+Aux
|
|
max = 3;
|
|
break;
|
|
case MODULE_SUBTYPE_MULTI_OLRS:
|
|
min = -1;
|
|
max = 7;
|
|
break;
|
|
case MODULE_SUBTYPE_MULTI_FS_AFHDS2A:
|
|
min = 0; // STR_MULTI_SERVOFREQ: (50+optionvalue*5)ms
|
|
max = 70;
|
|
break;
|
|
case MODULE_SUBTYPE_MULTI_XN297DUMP:
|
|
min = -1;
|
|
max = 84;
|
|
break;
|
|
default:
|
|
min = -128; // all other option types, e.g STR_MULTI_RFTUNE
|
|
max = 127;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Out of the ordinary max. numbers of model IDs
|
|
//
|
|
#define MODULE_SUBTYPE_MULTI_OLRS_RXNUM 4
|
|
#define MODULE_SUBTYPE_MULTI_BUGS_RXNUM 15
|
|
#define MODULE_SUBTYPE_MULTI_BUGS_MINI_RXNUM 15
|
|
|
|
//
|
|
// subtypes for Radiomaster T8 bind key and Radiomaster RTF use.
|
|
// see defines RTF, BIND_KEY and the protocol subtype list STRLIST()
|
|
// in MultiSubTypeDefs.h
|
|
//
|
|
#define MULTI_FRSKYD_SUBTYPE_D8 0
|
|
#define MULTI_FRSKYX_SUBTYPE_D16_FCC 0
|
|
#define MULTI_FRSKYX_SUBTYPE_D16_LBT 2
|
|
#define MULTI_FRSKYX2_SUBTYPE_D16_FCC 0
|
|
#define MULTI_FRSKYX2_SUBTYPE_D16_LBT 2
|
|
|
|
#endif // MULTIMODULE
|