From 2233f6f86279329a0cdd0436db1ee858aa024c9f Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Sun, 21 Feb 2021 16:05:25 +0100 Subject: [PATCH] SX1276: RF power adjustment for DIY & Jumper T-Lite --- Multiprotocol/E129_cyrf6936.ino | 2 +- Multiprotocol/FrSkyR9_sx1276.ino | 19 +++- Multiprotocol/Multi_Protos.ino | 169 ++++++++++++++++--------------- Multiprotocol/Multiprotocol.h | 27 +++-- Multiprotocol/SX1276_SPI.ino | 7 +- Multiprotocol/Validate.h | 1 + Multiprotocol/_Config.h | 5 +- 7 files changed, 130 insertions(+), 100 deletions(-) diff --git a/Multiprotocol/E129_cyrf6936.ino b/Multiprotocol/E129_cyrf6936.ino index 4e27645..8800a97 100644 --- a/Multiprotocol/E129_cyrf6936.ino +++ b/Multiprotocol/E129_cyrf6936.ino @@ -51,7 +51,7 @@ static void __attribute__((unused)) E129_build_data_packet() packet[ 6] = val; // channel (0x000...0x200...0x3FF) val = convert_channel_10b(ELEVATOR,false); trim = convert_channel_8b(CH8) & 0xFC; - packet[ 7] = trim | (val >>8); // Trim (0x00..0x1F..0x3E) << 2 | channel >> 8 + packet[ 7] = trim | (val >>8); // Trim (0x00..0x1F..0x3E) << 2 | channel >> 8 packet[ 8] = val; // channel (0x000...0x200...0x3FF) if(packet_count>200) val = convert_channel_10b(THROTTLE,false); diff --git a/Multiprotocol/FrSkyR9_sx1276.ino b/Multiprotocol/FrSkyR9_sx1276.ino index 4c4c6a2..f8bb5f5 100644 --- a/Multiprotocol/FrSkyR9_sx1276.ino +++ b/Multiprotocol/FrSkyR9_sx1276.ino @@ -205,7 +205,14 @@ void FRSKYR9_init() SX1276_SetDetectionThreshold(SX1276_MODEM_DETECTION_THRESHOLD_SF6); SX1276_SetLna(1, true); SX1276_SetHopPeriod(0); // 0 = disabled, we hop frequencies manually - SX1276_SetPaDac(true); + //RF Power + SX1276_SetPaDac(false); // Disable 20dBm mode + #if MULTI_5IN1_INTERNAL == JP_T18 + SX1276_SetPaConfig(true, 7, 0); // Lowest power for the T18: 2dBm + #else + SX1276_SetPaConfig(true, 7, option); // Use PA_HP on PA_BOOST, power=17-(15-option) dBm with option equal or lower to 15 + #endif + SX1276_SetOcp(true,27); // Set OCP to max 240mA SX1276_SetTxRxMode(TX_EN); // Set RF switch to TX //Enable all IRQ flags SX1276_WriteReg(SX1276_11_IRQFLAGSMASK,0x00); @@ -226,8 +233,14 @@ uint16_t FRSKYR9_callback() FrSkyR9_set_frequency(); // Set current center frequency //Set power // max power: 15dBm (10.8 + 0.6 * MaxPower [dBm]) - // output_power: 2 dBm (17-(15-OutputPower) (if pa_boost_pin == true)) - SX1276_SetPaConfig(true, 7, 0); // Lowest power for the T18 + // output_power: 2 dBm ( (if pa_boost_pin == true)) + #if MULTI_5IN1_INTERNAL != JP_T18 + if(option != prev_option) + { // Set RF power if it has changed + SX1276_SetPaConfig(true, 7, option); // Use PA_HP on PA_BOOST, power=17-(15-option) dBm with option equal or lower to 15 + prev_option = option; + } + #endif //Build packet if( packet_length == 26 ) FrSkyR9_build_packet(); diff --git a/Multiprotocol/Multi_Protos.ino b/Multiprotocol/Multi_Protos.ino index 260f685..f5a1a0e 100644 --- a/Multiprotocol/Multi_Protos.ino +++ b/Multiprotocol/Multi_Protos.ino @@ -166,6 +166,7 @@ enum OPTION_MAXTHR, OPTION_RFCHAN, OPTION_RFPOWER, + OPTION_WBUS, }; #define NO_SUBTYPE nullptr @@ -175,252 +176,256 @@ const mm_protocol_definition multi_protocols[] = { #if defined(ASSAN_NRF24L01_INO) {PROTO_ASSAN, STR_ASSAN, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, ASSAN_init, ASSAN_callback }, #endif - #if defined(BAYANG_NRF24L01_INO) + #if defined(BAYANG_NRF24L01_INO) {PROTO_BAYANG, STR_BAYANG, STR_SUBTYPE_BAYANG, 6, OPTION_TELEM, 0, 0, SW_NRF, BAYANG_init, BAYANG_callback }, #endif - #if defined(BAYANG_RX_NRF24L01_INO) + #if defined(BAYANG_RX_NRF24L01_INO) {PROTO_BAYANG_RX, STR_BAYANG_RX, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, BAYANG_RX_init, BAYANG_RX_callback }, #endif - #if defined(BUGS_A7105_INO) + #if defined(BUGS_A7105_INO) {PROTO_BUGS, STR_BUGS, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_A7105, BUGS_init, BUGS_callback }, #endif - #if defined(BUGSMINI_NRF24L01_INO) + #if defined(BUGSMINI_NRF24L01_INO) {PROTO_BUGSMINI, STR_BUGSMINI, STR_SUBTYPE_BUGS_MINI, 2, OPTION_NONE, 0, 0, SW_NRF, BUGSMINI_init, BUGSMINI_callback }, #endif - #if defined(CABELL_NRF24L01_INO) + #if defined(CABELL_NRF24L01_INO) {PROTO_CABELL, STR_CABELL, STR_SUBTYPE_CABELL, 8, OPTION_OPTION, 0, 0, SW_NRF, CABELL_init, CABELL_callback }, #endif - #if defined(CFLIE_NRF24L01_INO) + #if defined(CFLIE_NRF24L01_INO) {PROTO_CFLIE, STR_CFLIE, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, CFLIE_init, CFLIE_callback }, // review protocol #endif - #if defined(CG023_NRF24L01_INO) + #if defined(CG023_NRF24L01_INO) {PROTO_CG023, STR_CG023, STR_SUBTYPE_CG023, 2, OPTION_NONE, 0, 0, SW_NRF, CG023_init, CG023_callback }, #endif - #if defined(CORONA_CC2500_INO) + #if defined(CORONA_CC2500_INO) {PROTO_CORONA, STR_CORONA, STR_SUBTYPE_CORONA, 3, OPTION_RFTUNE, 0, 0, SW_CC2500, CORONA_init, CORONA_callback }, #endif - #if defined(CX10_NRF24L01_INO) + #if defined(CX10_NRF24L01_INO) {PROTO_CX10, STR_CX10, STR_SUBTYPE_CX10, 7, OPTION_NONE, 0, 0, SW_NRF, CX10_init, CX10_callback }, #endif - #if defined(DEVO_CYRF6936_INO) + #if defined(DEVO_CYRF6936_INO) {PROTO_DEVO, STR_DEVO, STR_SUBTYPE_DEVO, 5, OPTION_FIXEDID, 1, 1, SW_CYRF, DEVO_init, DEVO_callback }, #endif - #if defined(DM002_NRF24L01_INO) + #if defined(DM002_NRF24L01_INO) {PROTO_DM002, STR_DM002, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, DM002_init, DM002_callback }, #endif - #if defined(DSM_CYRF6936_INO) + #if defined(DSM_CYRF6936_INO) {PROTO_DSM, STR_DSM, STR_SUBTYPE_DSM, 5, OPTION_MAXTHR, 0, 1, SW_CYRF, DSM_init, DSM_callback }, #endif - #if defined(DSM_RX_CYRF6936_INO) + #if defined(DSM_RX_CYRF6936_INO) {PROTO_DSM_RX, STR_DSM_RX, NO_SUBTYPE, 0, OPTION_NONE, 0, 1, SW_CYRF, DSM_RX_init, DSM_RX_callback }, #endif - #if defined(E010R5_CYRF6936_INO) + #if defined(E010R5_CYRF6936_INO) {PROTO_E010R5, STR_E010R5, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CYRF, E010R5_init, E010R5_callback }, #endif - #if defined(E016HV2_CC2500_INO) + #if defined(E016HV2_CC2500_INO) {PROTO_E016HV2, STR_E016HV2, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_CC2500, E016HV2_init, E016HV2_callback }, #endif - #if defined(E01X_NRF24L01_INO) + #if defined(E01X_NRF24L01_INO) {PROTO_E01X, STR_E01X, STR_SUBTYPE_E01X, 3, OPTION_OPTION, 0, 0, SW_NRF, E01X_init, E01X_callback }, #endif - #if defined(E129_CYRF6936_INO) + #if defined(E129_CYRF6936_INO) {PROTO_E129, STR_E129, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CYRF, E129_init, E129_callback }, #endif - #if defined(ESKY_NRF24L01_INO) + #if defined(ESKY_NRF24L01_INO) {PROTO_ESKY, STR_ESKY, STR_SUBTYPE_ESKY, 2, OPTION_NONE, 0, 1, SW_NRF, ESKY_init, ESKY_callback }, #endif - #if defined(ESKY150_NRF24L01_INO) + #if defined(ESKY150_NRF24L01_INO) {PROTO_ESKY150, STR_ESKY150, STR_SUBTYPE_ESKY150, 2, OPTION_NONE, 0, 0, SW_NRF, ESKY150_init, ESKY150_callback }, #endif - #if defined(ESKY150V2_CC2500_INO) + #if defined(ESKY150V2_CC2500_INO) {PROTO_ESKY150V2, STR_ESKY150V2, STR_SUBTYPE_ESKY150V2, 1, OPTION_RFTUNE, 0, 1, SW_CC2500, ESKY150V2_init, ESKY150V2_callback }, #endif - #if defined(FLYSKY_A7105_INO) + #if defined(FLYSKY_A7105_INO) {PROTO_FLYSKY, STR_FLYSKY, STR_SUBTYPE_FLYSKY, 5, OPTION_NONE, 0, 1, SW_A7105, FLYSKY_init, FLYSKY_callback }, #endif - #if defined(AFHDS2A_A7105_INO) + #if defined(AFHDS2A_A7105_INO) {PROTO_AFHDS2A, STR_AFHDS2A, STR_SUBTYPE_AFHDS2A, 8, OPTION_SRVFREQ, 1, 1, SW_A7105, AFHDS2A_init, AFHDS2A_callback }, #endif - #if defined(AFHDS2A_RX_A7105_INO) + #if defined(AFHDS2A_RX_A7105_INO) {PROTO_AFHDS2A_RX, STR_AFHDS2A_RX,NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_A7105, AFHDS2A_RX_init, AFHDS2A_RX_callback }, #endif - #if defined(FQ777_NRF24L01_INO) + #if defined(FQ777_NRF24L01_INO) {PROTO_FQ777, STR_FQ777, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, FQ777_init, FQ777_callback }, #endif //OpenTX 2.3.x issue: DO NOT CHANGE ORDER below - #if defined(FRSKY_RX_CC2500_INO) + #if defined(FRSKY_RX_CC2500_INO) {PROTO_FRSKY_RX, STR_FRSKY_RX, STR_SUBTYPE_FRSKY_RX, 3, OPTION_RFTUNE, 0, 0, SW_CC2500, FRSKY_RX_init, FRSKY_RX_callback }, #endif - #if defined(FRSKYD_CC2500_INO) + #if defined(FRSKYD_CC2500_INO) {PROTO_FRSKYD, STR_FRSKYD, STR_SUBTYPE_FRSKYD, 2, OPTION_RFTUNE, 0, 0, SW_CC2500, FRSKYD_init, FRSKYD_callback }, #endif - #if defined(FRSKYV_CC2500_INO) + #if defined(FRSKYV_CC2500_INO) {PROTO_FRSKYV, STR_FRSKYV, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_CC2500, FRSKYV_init, FRSKYV_callback }, #endif - #if defined(FRSKYX_CC2500_INO) + #if defined(FRSKYX_CC2500_INO) {PROTO_FRSKYX, STR_FRSKYX, STR_SUBTYPE_FRSKYX, 6, OPTION_RFTUNE, 1, 0, SW_CC2500, FRSKYX_init, FRSKYX_callback }, {PROTO_FRSKYX2, STR_FRSKYX2, STR_SUBTYPE_FRSKYX, 6, OPTION_RFTUNE, 1, 0, SW_CC2500, FRSKYX_init, FRSKYX_callback }, #endif //OpenTX 2.3.x issue: DO NOT CHANGE ORDER above - #if defined(FRSKYL_CC2500_INO) + #if defined(FRSKYL_CC2500_INO) {PROTO_FRSKYL, STR_FRSKYL, STR_SUBTYPE_FRSKYL, 2, OPTION_RFTUNE, 0, 0, SW_CC2500, FRSKYL_init, FRSKYL_callback }, #endif - #if defined(FRSKYR9_SX1276_INO) + #if defined(FRSKYR9_SX1276_INO) + #if MULTI_5IN1_INTERNAL == T18 {PROTO_FRSKY_R9, STR_FRSKYR9, STR_SUBTYPE_FRSKYR9, 8, OPTION_NONE, 1, 0, 0, FRSKYR9_init, FRSKYR9_callback }, + #else // DIY & T-Lite + {PROTO_FRSKY_R9, STR_FRSKYR9, STR_SUBTYPE_FRSKYR9, 8, OPTION_RFPOWER, 1, 0, 0, FRSKYR9_init, FRSKYR9_callback }, + #endif #endif - #if defined(FUTABA_CC2500_INO) + #if defined(FUTABA_CC2500_INO) {PROTO_FUTABA, STR_FUTABA, STR_SUBTYPE_FUTABA, 1, OPTION_RFTUNE, 1, 1, SW_CC2500, SFHSS_init, SFHSS_callback }, #endif - #if defined(FX816_NRF24L01_INO) + #if defined(FX816_NRF24L01_INO) {PROTO_FX816, STR_FX816, STR_SUBTYPE_FX816, 1, OPTION_NONE, 0, 0, SW_NRF, FX816_init, FX816_callback }, #endif - #if defined(FY326_NRF24L01_INO) + #if defined(FY326_NRF24L01_INO) {PROTO_FY326, STR_FY326, STR_SUBTYPE_FY326, 2, OPTION_NONE, 0, 0, SW_NRF, FY326_init, FY326_callback }, #endif - #if defined(GD00X_CCNRF_INO) + #if defined(GD00X_CCNRF_INO) {PROTO_GD00X, STR_GD00X, STR_SUBTYPE_GD00X, 2, OPTION_RFTUNE, 0, 0, SW_NRF, GD00X_init, GD00X_callback }, #endif - #if defined(GW008_NRF24L01_INO) + #if defined(GW008_NRF24L01_INO) {PROTO_GW008, STR_GW008, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, GW008_init, GW008_callback }, #endif - #if defined(H8_3D_NRF24L01_INO) + #if defined(H8_3D_NRF24L01_INO) {PROTO_H8_3D, STR_H8_3D, STR_SUBTYPE_H83D, 4, OPTION_NONE, 0, 0, SW_NRF, H8_3D_init, H8_3D_callback }, #endif - #if defined(HEIGHT_A7105_INO) + #if defined(HEIGHT_A7105_INO) {PROTO_HEIGHT, STR_HEIGHT, STR_SUBTYPE_HEIGHT, 2, OPTION_NONE, 0, 0, SW_A7105, HEIGHT_init, HEIGHT_callback }, #endif - #if defined(HISKY_NRF24L01_INO) + #if defined(HISKY_NRF24L01_INO) {PROTO_HISKY, STR_HISKY, STR_SUBTYPE_HISKY, 2, OPTION_NONE, 1, 1, SW_NRF, HISKY_init, HISKY_callback }, #endif - #if defined(HITEC_CC2500_INO) + #if defined(HITEC_CC2500_INO) {PROTO_HITEC, STR_HITEC, STR_SUBTYPE_HITEC, 3, OPTION_RFTUNE, 0, 0, SW_CC2500, HITEC_init, HITEC_callback }, #endif - #if defined(HONTAI_NRF24L01_INO) + #if defined(HONTAI_NRF24L01_INO) {PROTO_HONTAI, STR_HONTAI, STR_SUBTYPE_HONTAI, 4, OPTION_NONE, 0, 0, SW_NRF, HONTAI_init, HONTAI_callback }, #endif - #if defined(HOTT_CC2500_INO) + #if defined(HOTT_CC2500_INO) {PROTO_HOTT, STR_HOTT, STR_SUBTYPE_HOTT, 2, OPTION_RFTUNE, 1, 0, SW_CC2500, HOTT_init, HOTT_callback }, #endif - #if defined(HUBSAN_A7105_INO) + #if defined(HUBSAN_A7105_INO) {PROTO_HUBSAN, STR_HUBSAN, STR_SUBTYPE_HUBSAN, 3, OPTION_VIDFREQ, 0, 0, SW_A7105, HUBSAN_init, HUBSAN_callback }, #endif - #if defined(J6PRO_CYRF6936_INO) + #if defined(J6PRO_CYRF6936_INO) {PROTO_J6PRO, STR_J6PRO, NO_SUBTYPE, 0, OPTION_NONE, 0, 1, SW_CYRF, J6PRO_init, J6PRO_callback }, #endif - #if defined(JJRC345_NRF24L01_INO) + #if defined(JJRC345_NRF24L01_INO) {PROTO_JJRC345, STR_JJRC345, STR_SUBTYPE_JJRC345, 2, OPTION_NONE, 0, 0, SW_NRF, JJRC345_init, JJRC345_callback }, #endif - #if defined(KF606_CCNRF_INO) + #if defined(KF606_CCNRF_INO) {PROTO_KF606, STR_KF606, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, KF606_init, KF606_callback }, #endif - #if defined(KN_NRF24L01_INO) + #if defined(KN_NRF24L01_INO) {PROTO_KN, STR_KN, STR_SUBTYPE_KN, 2, OPTION_NONE, 0, 0, SW_NRF, KN_init, KN_callback }, #endif - #if defined(KYOSHO_A7105_INO) + #if defined(KYOSHO_A7105_INO) {PROTO_KYOSHO, STR_KYOSHO, STR_SUBTYPE_KYOSHO, 2, OPTION_NONE, 0, 1, SW_A7105, KYOSHO_init, KYOSHO_callback }, #endif - #if defined(LOLI_NRF24L01_INO) + #if defined(LOLI_NRF24L01_INO) {PROTO_LOLI, STR_LOLI, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_NRF, LOLI_init, LOLI_callback }, #endif - #if defined(MJXQ_NRF24L01_INO) + #if defined(MJXQ_NRF24L01_INO) {PROTO_MJXQ, STR_MJXQ, STR_SUBTYPE_MJXQ, 7, OPTION_RFTUNE, 0, 0, SW_NRF, MJXQ_init, MJXQ_callback }, #endif - #if defined(MLINK_CYRF6936_INO) + #if defined(MLINK_CYRF6936_INO) {PROTO_MLINK, STR_MLINK, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_CYRF, MLINK_init, MLINK_callback }, #endif - #if defined(MT99XX_NRF24L01_INO) + #if defined(MT99XX_NRF24L01_INO) {PROTO_MT99XX, STR_MT99XX, STR_SUBTYPE_MT99, 7, OPTION_NONE, 0, 0, SW_NRF, MT99XX_init, MT99XX_callback }, #endif - #if defined(NCC1701_NRF24L01_INO) + #if defined(NCC1701_NRF24L01_INO) {PROTO_NCC1701, STR_NCC1701, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, NCC_init, NCC_callback }, #endif - #if defined(OMP_CC2500_INO) + #if defined(OMP_CC2500_INO) {PROTO_OMP, STR_OMP, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, OMP_init, OMP_callback }, #endif - #if defined(PELIKAN_A7105_INO) + #if defined(PELIKAN_A7105_INO) {PROTO_PELIKAN, STR_PELIKAN, STR_SUBTYPE_PELIKAN, 2, OPTION_NONE, 0, 1, SW_A7105, PELIKAN_init, PELIKAN_callback }, #endif - #if defined(POTENSIC_NRF24L01_INO) + #if defined(POTENSIC_NRF24L01_INO) {PROTO_POTENSIC, STR_POTENSIC, STR_SUBTYPE_POTENSIC, 1, OPTION_NONE, 0, 0, SW_NRF, POTENSIC_init, POTENSIC_callback }, #endif - #if defined(PROPEL_NRF24L01_INO) + #if defined(PROPEL_NRF24L01_INO) {PROTO_PROPEL, STR_PROPEL, STR_SUBTYPE_PROPEL, 1, OPTION_NONE, 0, 0, SW_NRF, PROPEL_init, PROPEL_callback }, #endif - #if defined(CX10_NRF24L01_INO) + #if defined(CX10_NRF24L01_INO) {PROTO_Q2X2, STR_Q2X2, STR_SUBTYPE_Q2X2, 3, OPTION_NONE, 0, 0, SW_NRF, CX10_init, CX10_callback }, #endif - #if defined(Q303_NRF24L01_INO) + #if defined(Q303_NRF24L01_INO) {PROTO_Q303, STR_Q303, STR_SUBTYPE_Q303, 4, OPTION_NONE, 0, 0, SW_NRF, Q303_init, Q303_callback }, #endif - #if defined(Q90C_CCNRF_INO) + #if defined(Q90C_CCNRF_INO) {PROTO_Q90C, STR_Q90C, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, Q90C_init, Q90C_callback }, #endif - #if defined(RLINK_CC2500_INO) + #if defined(RLINK_CC2500_INO) {PROTO_RLINK, STR_RLINK, STR_SUBTYPE_RLINK, 3, OPTION_RFTUNE, 0, 0, SW_CC2500, RLINK_init, RLINK_callback }, #endif - #if defined(REALACC_NRF24L01_INO) + #if defined(REALACC_NRF24L01_INO) {PROTO_REALACC, STR_REALACC, STR_SUBTYPE_REALACC, 1, OPTION_NONE, 0, 0, SW_NRF, REALACC_init, REALACC_callback }, #endif - #if defined(REDPINE_CC2500_INO) + #if defined(REDPINE_CC2500_INO) {PROTO_REDPINE, STR_REDPINE, STR_SUBTYPE_REDPINE, 2, OPTION_RFTUNE, 0, 0, SW_CC2500, REDPINE_init, REDPINE_callback }, #endif - #if defined(SCANNER_CC2500_INO) + #if defined(SCANNER_CC2500_INO) {PROTO_SCANNER, STR_SCANNER, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CC2500, SCANNER_init, SCANNER_callback }, #endif - #if defined(SHENQI_NRF24L01_INO) + #if defined(SHENQI_NRF24L01_INO) {PROTO_SHENQI, STR_SHENQI, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, SHENQI_init, SHENQI_callback }, #endif - #if defined(SKYARTEC_CC2500_INO) + #if defined(SKYARTEC_CC2500_INO) {PROTO_SKYARTEC, STR_SKYARTEC, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 1, SW_CC2500, SKYARTEC_init, SKYARTEC_callback }, #endif - #if defined(SLT_CCNRF_INO) + #if defined(SLT_CCNRF_INO) {PROTO_SLT, STR_SLT, STR_SUBTYPE_SLT, 5, OPTION_RFTUNE, 0, 1, SW_NRF, SLT_init, SLT_callback }, #endif - #if defined(SYMAX_NRF24L01_INO) + #if defined(SYMAX_NRF24L01_INO) {PROTO_SYMAX, STR_SYMAX, STR_SUBTYPE_SYMAX, 2, OPTION_NONE, 0, 0, SW_NRF, SYMAX_init, SYMAX_callback }, #endif - #if defined(TIGER_NRF24L01_INO) + #if defined(TIGER_NRF24L01_INO) {PROTO_TIGER, STR_TIGER, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, TIGER_init, TIGER_callback }, #endif - #if defined(TRAXXAS_CYRF6936_INO) + #if defined(TRAXXAS_CYRF6936_INO) {PROTO_TRAXXAS, STR_TRAXXAS, STR_SUBTYPE_TRAXXAS, 1, OPTION_NONE, 0, 0, SW_CYRF, TRAXXAS_init, TRAXXAS_callback }, #endif - #if defined(V2X2_NRF24L01_INO) + #if defined(V2X2_NRF24L01_INO) {PROTO_V2X2, STR_V2X2, STR_SUBTYPE_V2X2, 3, OPTION_NONE, 0, 0, SW_NRF, V2X2_init, V2X2_callback }, #endif - #if defined(V761_NRF24L01_INO) + #if defined(V761_NRF24L01_INO) {PROTO_V761, STR_V761, STR_SUBTYPE_V761, 2, OPTION_NONE, 0, 0, SW_NRF, V761_init, V761_callback }, #endif - #if defined(V911S_CCNRF_INO) + #if defined(V911S_CCNRF_INO) {PROTO_V911S, STR_V911S, STR_SUBTYPE_V911S, 2, OPTION_RFTUNE, 0, 0, SW_NRF, V911S_init, V911S_callback }, #endif - #if defined(WK2x01_CYRF6936_INO) + #if defined(WK2x01_CYRF6936_INO) {PROTO_WK2x01, STR_WK2x01, STR_SUBTYPE_WK2x01, 6, OPTION_NONE, 1, 1, SW_CYRF, WK_init, WK_callback }, #endif - #if defined(WFLY_CYRF6936_INO) + #if defined(WFLY_CYRF6936_INO) {PROTO_WFLY, STR_WFLY, STR_SUBTYPE_WFLY, 1, OPTION_NONE, 0, 0, SW_CYRF, WFLY_init, WFLY_callback }, #endif - #if defined(WFLY2_A7105_INO) + #if defined(WFLY2_A7105_INO) {PROTO_WFLY2, STR_WFLY2, STR_SUBTYPE_WFLY2, 1, OPTION_OPTION, 1, 0, SW_A7105, WFLY2_init, WFLY2_callback }, +// {PROTO_WFLY2, STR_WFLY2, STR_SUBTYPE_WFLY2, 1, OPTION_WBUS, 1, 0, SW_A7105, WFLY2_init, WFLY2_callback },// crash OpenTX... #endif - #if defined(XK_NRF24L01_INO) + #if defined(XK_NRF24L01_INO) {PROTO_XK, STR_XK, STR_SUBTYPE_XK, 2, OPTION_RFTUNE, 0, 0, SW_NRF, XK_init, XK_callback }, #endif - #if defined(XN297DUMP_NRF24L01_INO) + #if defined(XN297DUMP_NRF24L01_INO) {PROTO_XN297DUMP, STR_XN297DUMP, STR_SUBTYPE_XN297DUMP, 5, OPTION_RFCHAN, 0, 0, SW_NRF, XN297Dump_init, XN297Dump_callback }, #endif - #if defined(YD717_NRF24L01_INO) + #if defined(YD717_NRF24L01_INO) {PROTO_YD717, STR_YD717, STR_SUBTYPE_YD717, 5, OPTION_NONE, 0, 0, SW_NRF, YD717_init, YD717_callback }, #endif - #if defined(ZSX_NRF24L01_INO) + #if defined(ZSX_NRF24L01_INO) {PROTO_ZSX, STR_ZSX, STR_SUBTYPE_ZSX, 1, OPTION_NONE, 0, 0, SW_NRF, ZSX_init, ZSX_callback }, #endif - #if defined(TEST_CC2500_INO) + #if defined(TEST_CC2500_INO) {PROTO_TEST, STR_TEST, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, TEST_init, TEST_callback }, #endif - #if defined(NANORF_NRF24L01_INO) + #if defined(NANORF_NRF24L01_INO) {PROTO_NANORF, STR_NANORF, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, NANORF_init, NANORF_callback }, #endif {0x00, nullptr, nullptr, 0, 0, 0, 0, 0, nullptr, nullptr } }; - diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index 6d29bc5..09ddb57 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 3 #define VERSION_REVISION 2 -#define VERSION_PATCH_LEVEL 47 +#define VERSION_PATCH_LEVEL 48 //****************** // Protocols @@ -734,6 +734,10 @@ enum CYRF_POWER #define CYRF_RANGE_POWER CYRF_POWER_1 // 1/30 of the full power distance #define CYRF_BIND_POWER CYRF_POWER_0 +// SX1276 +#define JP_T18 0 +#define JP_TLite 1 + enum TXRX_State { TXRX_OFF, TX_EN, @@ -1152,16 +1156,17 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p -- [11] Prev valid protocol number, can be used to skip invalid protocols [12..18] Protocol name [7], not null terminated if prototcol len == 7 [19>>4] Option text to be displayed: - OPTION_NONE 0 - OPTION_OPTION 1 - OPTION_RFTUNE 2 - OPTION_VIDFREQ 3 - OPTION_FIXEDID 4 - OPTION_TELEM 5 - OPTION_SRVFREQ 6 - OPTION_MAXTHR 7 - OPTION_RFCHAN 8 - OPTION_RFPOWER 9 + OPTION_NONE 0 Hidden field + OPTION_OPTION 1 "Option:" value=-128..0(default)..127 + OPTION_RFTUNE 2 "RF freq tune:" value=-128..0(default)..127 + OPTION_VIDFREQ 3 "Video freq:" value=-128..0(default)..127 + OPTION_FIXEDID 4 "ID type:" value="Auto":0(default), "Fixed":1 + OPTION_TELEM 5 "Telem:" value="Off":0(default), "On":1, "Off+Aux":2, "On+Aux":3 + OPTION_SRVFREQ 6 "Servo freq(Hz):" value="50":0(default).."400":70 => display=50+5*option with option=0..70 + OPTION_MAXTHR 7 "Max throw:" value="Disabled":0, "Enabled":1 + OPTION_RFCHAN 8 "Select RF chan:" value=-128..0(default)..127 + OPTION_RFPOWER 9 "RF power:" "1.6mW":0(default),"2.0mW":1,"2.5mW":2,"3.2mW":3,"4.0mW":4,"5.0mW":5,"6.3mW":6,"7.9mW":7,"10mW\0":8,"13mW\0":9,"16mW\0":10,"20mW\0":11,"25mW\0":12,"32mW\0":13,"40mW\0":14,"50mW\0":15 + OPTION_WBUS 10 "Output:" "WBUS":0(default),"PPM":1 [19&0x0F] Number of sub protocols [20..27] Sub protocol name [8], not null terminated if sub prototcol len == 8 If the current protocol is invalid [12..27] are all 0x00. diff --git a/Multiprotocol/SX1276_SPI.ino b/Multiprotocol/SX1276_SPI.ino index b0fbf2b..2938c44 100644 --- a/Multiprotocol/SX1276_SPI.ino +++ b/Multiprotocol/SX1276_SPI.ino @@ -230,11 +230,16 @@ void SX1276_SetPaConfig(bool pa_boost_pin, uint8_t max_power, uint8_t output_pow uint8_t data = 0x00; data = data | (pa_boost_pin << 7); data = data | (max_power << 4); - data = data | output_power; + data = data | (output_power & 0x0F); SX1276_WriteReg(SX1276_09_PACONFIG, data); } +void SX1276_SetOcp(bool OcpOn, uint8_t OcpTrim) +{ + SX1276_WriteReg(SX1276_0B_OCP, (OcpOn << 5) | OcpTrim); +} + void SX1276_WritePayloadToFifo(uint8_t* payload, uint8_t length) { SX1276_WriteReg(SX1276_22_PAYLOAD_LENGTH, length); diff --git a/Multiprotocol/Validate.h b/Multiprotocol/Validate.h index acf035f..d68214a 100644 --- a/Multiprotocol/Validate.h +++ b/Multiprotocol/Validate.h @@ -423,6 +423,7 @@ #endif #if not defined(DSM_CYRF6936_INO) #undef DSM_TELEMETRY + #undef DSM_FWD_PGM #endif #if not defined(MLINK_CYRF6936_INO) #undef MLINK_HUB_TELEMETRY diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index 4109f8b..eeef2fa 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -80,9 +80,10 @@ #define NRF24L01_INSTALLED //#define SX1276_INSTALLED // only supported on STM32 modules -//Uncomment (remove //) if you have an internal 5-in-1 Multi module. +//Uncomment (remove //) if you have an internal 5-in-1 Multi module in a Jumper T18 or T-Lite. //All components are considered to be installed and specifics to that module are automatically configured -//#define MULTI_5IN1_INTERNAL +//#define MULTI_5IN1_INTERNAL JP_T18 +//#define MULTI_5IN1_INTERNAL JP_TLite /** OrangeRX TX **/ //If you compile for the OrangeRX TX module you need to select the correct board type.