mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 21:58:10 +00:00
Hitec: new sub_protocol to support forward telemetry
OPT_FW (0) : OPTIMA + forward telemetry packets to TX to be decoded OPT_HUB (1) : OPTIMA + basic telemetry using FrSky Hub format MINIMA (2) : Minima/Micro/RED
This commit is contained in:
parent
eb89b5be1b
commit
2f5252ab88
@ -150,10 +150,10 @@ static void __attribute__((unused)) HITEC_build_packet()
|
|||||||
packet[5]=hopping_frequency[13]>>1; // if not there the Optima link is jerky...
|
packet[5]=hopping_frequency[13]>>1; // if not there the Optima link is jerky...
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(sub_protocol==OPTIMA)
|
if(sub_protocol==MINIMA)
|
||||||
packet[4] = bind_phase; // increments based on RX answer
|
|
||||||
else
|
|
||||||
packet[4] = bind_phase+0x10;
|
packet[4] = bind_phase+0x10;
|
||||||
|
else
|
||||||
|
packet[4] = bind_phase; // Optima: increments based on RX answer
|
||||||
packet[19] = 0x08; // packet sequence
|
packet[19] = 0x08; // packet sequence
|
||||||
offset=20; // packet[20] and [21]
|
offset=20; // packet[20] and [21]
|
||||||
}
|
}
|
||||||
@ -327,6 +327,8 @@ uint16_t ReadHITEC()
|
|||||||
// 0C,1C,A1,2B,00,18,00,00,00,00,00,18,00,50,92
|
// 0C,1C,A1,2B,00,18,00,00,00,00,00,18,00,50,92
|
||||||
debug(",telem");
|
debug(",telem");
|
||||||
#if defined(HITEC_FW_TELEMETRY)
|
#if defined(HITEC_FW_TELEMETRY)
|
||||||
|
if(sub_protocol==OPT_FW)
|
||||||
|
{
|
||||||
// 8 bytes telemetry packets => see at the end of this file how to fully decode it
|
// 8 bytes telemetry packets => see at the end of this file how to fully decode it
|
||||||
pkt[0]=pkt[13]; // TX RSSI
|
pkt[0]=pkt[13]; // TX RSSI
|
||||||
pkt[1]=pkt[14]&0x7F; // TX LQI
|
pkt[1]=pkt[14]&0x7F; // TX LQI
|
||||||
@ -334,14 +336,18 @@ uint16_t ReadHITEC()
|
|||||||
for(uint8_t i=5;i < 11; i++)
|
for(uint8_t i=5;i < 11; i++)
|
||||||
pkt[i-3]=pkt[i+offset]; // frame number followed by 5 bytes of data
|
pkt[i-3]=pkt[i+offset]; // frame number followed by 5 bytes of data
|
||||||
telemetry_link=2; // telemetry forward available
|
telemetry_link=2; // telemetry forward available
|
||||||
#elif defined(HITEC_HUB_TELEMETRY)
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(HITEC_HUB_TELEMETRY)
|
||||||
|
if(sub_protocol==OPT_HUB)
|
||||||
|
{
|
||||||
switch(pkt[5]) // telemetry frame number
|
switch(pkt[5]) // telemetry frame number
|
||||||
{
|
{
|
||||||
case 0x00:
|
case 0x00:
|
||||||
v_lipo1 = (pkt[12])<<5 | (pkt[11])>>3; // calculation in float is volt=(pkt[12]<<8+pkt[11])/28
|
v_lipo1 = (pkt[10])<<5 | (pkt[11])>>3; // calculation in float is volt=(pkt[10]<<8+pkt[11])/28
|
||||||
break;
|
break;
|
||||||
case 0x11:
|
case 0x11:
|
||||||
v_lipo1 = (pkt[11])<<5 | (pkt[10])>>3; // calculation in float is volt=(pkt[11]<<8+pkt[10])/28
|
v_lipo1 = (pkt[9])<<5 | (pkt[10])>>3; // calculation in float is volt=(pkt[9]<<8+pkt[10])/28
|
||||||
break;
|
break;
|
||||||
case 0x18:
|
case 0x18:
|
||||||
v_lipo2 = (pkt[6])<<5 | (pkt[7])>>3; // calculation in float is volt=(pkt[6]<<8+pkt[7])/10
|
v_lipo2 = (pkt[6])<<5 | (pkt[7])>>3; // calculation in float is volt=(pkt[6]<<8+pkt[7])/10
|
||||||
@ -354,6 +360,7 @@ uint16_t ReadHITEC()
|
|||||||
TX_RSSI += 128;
|
TX_RSSI += 128;
|
||||||
TX_LQI = pkt[14]&0x7F;
|
TX_LQI = pkt[14]&0x7F;
|
||||||
telemetry_link=1; // telemetry hub available
|
telemetry_link=1; // telemetry hub available
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
debugln("");
|
debugln("");
|
||||||
@ -385,6 +392,7 @@ uint16_t initHITEC()
|
|||||||
memcpy((void *)hopping_frequency,(void *)"\x00\x3A\x4A\x32\x0C\x58\x2A\x10\x26\x20\x08\x60\x68\x70\x78\x80\x88\x56\x5E\x66\x6E",HITEC_NUM_FREQUENCE);
|
memcpy((void *)hopping_frequency,(void *)"\x00\x3A\x4A\x32\x0C\x58\x2A\x10\x26\x20\x08\x60\x68\x70\x78\x80\x88\x56\x5E\x66\x6E",HITEC_NUM_FREQUENCE);
|
||||||
#endif
|
#endif
|
||||||
#if defined(HITEC_HUB_TELEMETRY)
|
#if defined(HITEC_HUB_TELEMETRY)
|
||||||
|
if(sub_protocol==OPT_HUB)
|
||||||
init_frskyd_link_telemetry();
|
init_frskyd_link_telemetry();
|
||||||
#endif
|
#endif
|
||||||
phase = HITEC_START;
|
phase = HITEC_START;
|
||||||
|
@ -36,4 +36,4 @@
|
|||||||
36,H8_3D,H8_3D,H20H,H20Mini,H30Mini
|
36,H8_3D,H8_3D,H20H,H20Mini,H30Mini
|
||||||
37,CORONA,COR_V1,COR_V2,FD_V3
|
37,CORONA,COR_V1,COR_V2,FD_V3
|
||||||
38,CFlie
|
38,CFlie
|
||||||
39,Hitec,Optima,Minima
|
39,Hitec,OPT_FW,OPT_HUB,MINIMA
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_REVISION 0
|
#define VERSION_REVISION 0
|
||||||
#define VERSION_PATCH_LEVEL 30
|
#define VERSION_PATCH_LEVEL 31
|
||||||
|
|
||||||
//******************
|
//******************
|
||||||
// Protocols
|
// Protocols
|
||||||
@ -234,8 +234,9 @@ enum CORONA
|
|||||||
};
|
};
|
||||||
enum HITEC
|
enum HITEC
|
||||||
{
|
{
|
||||||
OPTIMA = 0,
|
OPT_FW = 0,
|
||||||
MINIMA = 1,
|
OPT_HUB = 1,
|
||||||
|
MINIMA = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NONE 0
|
#define NONE 0
|
||||||
@ -689,8 +690,9 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p --
|
|||||||
COR_V2 1
|
COR_V2 1
|
||||||
FD_V3 2
|
FD_V3 2
|
||||||
sub_protocol==HITEC
|
sub_protocol==HITEC
|
||||||
OPTIMA 0
|
OPT_FW 0
|
||||||
MINIMA 1
|
OPT_HUB 1
|
||||||
|
MINIMA 2
|
||||||
|
|
||||||
Power value => 0x80 0=High/1=Low
|
Power value => 0x80 0=High/1=Low
|
||||||
Stream[3] = option_protocol;
|
Stream[3] = option_protocol;
|
||||||
|
@ -217,9 +217,6 @@
|
|||||||
#undef HITEC_HUB_TELEMETRY
|
#undef HITEC_HUB_TELEMETRY
|
||||||
#undef HITEC_FW_TELEMETRY
|
#undef HITEC_FW_TELEMETRY
|
||||||
#endif
|
#endif
|
||||||
#if defined(HITEC_HUB_TELEMETRY) && defined(HITEC_FW_TELEMETRY)
|
|
||||||
#error You need to choose between HITEC HUB or HITEC FW telemetry but not both.
|
|
||||||
#endif
|
|
||||||
#if not defined(FRSKYD_CC2500_INO)
|
#if not defined(FRSKYD_CC2500_INO)
|
||||||
#undef HUB_TELEMETRY
|
#undef HUB_TELEMETRY
|
||||||
#endif
|
#endif
|
||||||
|
@ -249,7 +249,7 @@
|
|||||||
#define HUBSAN_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define HUBSAN_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define CABELL_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
#define CABELL_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||||
#define HITEC_HUB_TELEMETRY // Use FrSkyD Hub format to send basic telemetry to the radios which can decode it like er9x, ersky9x and OpenTX
|
#define HITEC_HUB_TELEMETRY // Use FrSkyD Hub format to send basic telemetry to the radios which can decode it like er9x, ersky9x and OpenTX
|
||||||
//#define HITEC_FW_TELEMETRY // Under development: Forward received telemetry packets to be decoded by ersky9x and OpenTX
|
#define HITEC_FW_TELEMETRY // Under development: Forward received telemetry packets to be decoded by ersky9x and OpenTX
|
||||||
|
|
||||||
//SPORT_POLLING is an implementation of the same polling routine as XJT module for sport telemetry bidirectional communication.
|
//SPORT_POLLING is an implementation of the same polling routine as XJT module for sport telemetry bidirectional communication.
|
||||||
//This is useful for passing sport control frames from TX to RX(ex: changing Betaflight PID or VTX channels on the fly using LUA scripts with OpentX).
|
//This is useful for passing sport control frames from TX to RX(ex: changing Betaflight PID or VTX channels on the fly using LUA scripts with OpentX).
|
||||||
@ -551,7 +551,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
PROTO_CFLIE
|
PROTO_CFLIE
|
||||||
NONE
|
NONE
|
||||||
PROTO_HITEC
|
PROTO_HITEC
|
||||||
OPTIMA
|
OPT_FW
|
||||||
|
OPT_HUB
|
||||||
MINIMA
|
MINIMA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user