LOLI: RX config

This commit is contained in:
Pascal Langer 2021-01-11 16:27:59 +01:00
parent 8338104266
commit 30e3e84066
5 changed files with 55 additions and 21 deletions

View File

@ -180,4 +180,4 @@
79,0,WFLY2,RF20x,0,CH5,CH6,CH7,CH8,CH9,CH10 79,0,WFLY2,RF20x,0,CH5,CH6,CH7,CH8,CH9,CH10
80,0,E016Hv2,E016Hv2,1,TakLan,EmStop,Flip,Calib,HLess,RTH 80,0,E016Hv2,E016Hv2,1,TakLan,EmStop,Flip,Calib,HLess,RTH
81,0,E010r5,E010r5,1,Flip,LED,CALIB,HLess,RTH,UNK 81,0,E010r5,E010r5,1,Flip,LED,CALIB,HLess,RTH,UNK
82,0,LOLI,0,CH5,CH6,CH7,CH8 82,0,LOLI,0,CH5,CH6,CH7,CH8,1SwSePpPw,2SwSePw,3SwSe,4SwSe,5SwSeSb,6SwSe,7SwSePw,8SwSe

View File

@ -57,6 +57,10 @@ static void __attribute__((unused)) LOLI_init()
#define LOLI_FLAG_SW2 0x40 #define LOLI_FLAG_SW2 0x40
#define LOLI_FLAG_SW1 0x80 #define LOLI_FLAG_SW1 0x80
#ifdef LOLI_NRF24L01_INO
uint8_t LOLI_P1, LOLI_P2;
#endif
static void __attribute__((unused)) LOLI_send_packet() static void __attribute__((unused)) LOLI_send_packet()
{ {
if(IS_BIND_IN_PROGRESS) if(IS_BIND_IN_PROGRESS)
@ -68,12 +72,38 @@ static void __attribute__((unused)) LOLI_send_packet()
} }
else else
{ {
if(LOLI_SerialRX) //Check RX config
{// RX config uint8_t P1=0;
uint8_t P2=0;
//ch1: PWM/PPM
if(Channel_data[CH1+8] > CHANNEL_MAX_COMMAND)
P1|=LOLI_FLAG_PWM1;
else if(Channel_data[CH1+8] > CHANNEL_SWITCH)
P1|=LOLI_FLAG_PPM;
//ch2: PWM
if(Channel_data[CH2+8] > CHANNEL_MAX_COMMAND)
P1|=LOLI_FLAG_PWM2;
//ch5: SBUS
if(Channel_data[CH7+8] > CHANNEL_SWITCH)
P1|=LOLI_FLAG_SBUS;
//ch7: PWM
if(Channel_data[CH7+8] > CHANNEL_MAX_COMMAND)
P1|=LOLI_FLAG_PWM7;
//switches
for(uint8_t i=0;i<8;i++)
if(Channel_data[i+8]<CHANNEL_MIN_COMMAND)
P2 |= 1 << (7-i);
if(LOLI_P1!=P1 || LOLI_P2!=P2)
flags=10;
if(flags)
{// Send RX config since P1 or P2 have changed
LOLI_P1=P1;LOLI_P2=P2;
packet[0] = 0xa2; packet[0] = 0xa2;
packet[1] = LOLI_P1; // CH1:LOLI_FLAG_PPM || LOLI_FLAG_PWM1, CH2:LOLI_FLAG_PWM2, CH5:LOLI_FLAG_SBUS, CH7:LOLI_FLAG_PWM7 packet[1] = LOLI_P1; // CH1:LOLI_FLAG_PPM || LOLI_FLAG_PWM1, CH2:LOLI_FLAG_PWM2, CH5:LOLI_FLAG_SBUS, CH7:LOLI_FLAG_PWM7
packet[2] = LOLI_P2; // CHx switch bit(8-x)=1 packet[2] = LOLI_P2; // CHx switch bit(8-x)=1
LOLI_SerialRX=false; flags--;
} }
else else
{// Normal packet {// Normal packet
@ -191,6 +221,8 @@ uint16_t LOLI_callback()
NRF24L01_WriteReg(NRF24L01_07_STATUS, 0x70); NRF24L01_WriteReg(NRF24L01_07_STATUS, 0x70);
NRF24L01_FlushRx(); NRF24L01_FlushRx();
packet_count = 0; packet_count = 0;
//defaut RX config with servo outputs
LOLI_P1=0;LOLI_P2=0;flags=10;
phase++; phase++;
case LOLI_DATA1: case LOLI_DATA1:
@ -206,8 +238,12 @@ uint16_t LOLI_callback()
debugln(""); debugln("");
#endif #endif
RX_RSSI = packet[0]<<1; RX_RSSI = packet[0]<<1;
v_lipo1 = (packet[1] << 8) | packet[2]; uint16_t val=((packet[1] << 8) | packet[2])/10;
v_lipo2 = (packet[3] << 8) | packet[4]; if(val > 255) val=255;
v_lipo1 = val;
val=((packet[3] << 8) | packet[4])/10;
if(val > 255) val=255;
v_lipo2 = val;
telemetry_link = 1; telemetry_link = 1;
telemetry_counter++; // TX LQI counter telemetry_counter++; // TX LQI counter
if(telemetry_lost) if(telemetry_lost)

View File

@ -19,7 +19,7 @@
#define VERSION_MAJOR 1 #define VERSION_MAJOR 1
#define VERSION_MINOR 3 #define VERSION_MINOR 3
#define VERSION_REVISION 2 #define VERSION_REVISION 2
#define VERSION_PATCH_LEVEL 00 #define VERSION_PATCH_LEVEL 1
//****************** //******************
// Protocols // Protocols

View File

@ -263,10 +263,6 @@ uint8_t packet_in[TELEMETRY_BUFFER_SIZE];//telemetry receiving packets
bool DSM_SerialRX=false; bool DSM_SerialRX=false;
#endif #endif
#endif // TELEMETRY #endif // TELEMETRY
#ifdef LOLI_NRF24L01_INO
bool LOLI_SerialRX=false;
uint8_t LOLI_P1=0, LOLI_P2=0;
#endif
// Callback // Callback
typedef uint16_t (*void_function_t) (void);//pointer to a function with no parameters which return an uint16_t integer typedef uint16_t (*void_function_t) (void);//pointer to a function with no parameters which return an uint16_t integer
@ -2074,14 +2070,6 @@ void update_serial_data()
DSM_SerialRX=true; DSM_SerialRX=true;
} }
#endif #endif
#ifdef LOLI_NRF24L01_INO
if(protocol==PROTO_LOLI && rx_len==27+2)
{//Protocol waiting for 2 bytes
LOLI_SerialRX=true;
LOLI_P1=rx_ok_buff[27];
LOLI_P2=rx_ok_buff[28];
}
#endif
} }
RX_DONOTUPDATE_off; RX_DONOTUPDATE_off;

View File

@ -1290,7 +1290,7 @@ LOLI3 receivers: https://github.com/wooddoor/Loli3
Failsafe supported. Once failsafe values for the 8 channels have been configured in Custom mode, wait for the RX to learn them, then set Failsafe to Receiver. Failsafe supported. Once failsafe values for the 8 channels have been configured in Custom mode, wait for the RX to learn them, then set Failsafe to Receiver.
Telemetry supported: RX RSSI, TX LQI (percentage of received telemetry packets), A1 and A2. Telemetry supported: RX RSSI, TX LQI (percentage of received telemetry packets), A1 and A2 with a Ratio=25.5 and Offset=0.
Extended limits supported. Extended limits supported.
@ -1298,7 +1298,17 @@ CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
---|---|---|---|---|---|---|--- ---|---|---|---|---|---|---|---
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8 CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
Assigning functions to outputs is not supported yet. Features:
Config on | For channel | Switch | Servo | PPM | SBUS | PWM
----|-----|-------|----|------|---|------
CH9 | CH1 | -100% | 0% | +50% | - | +100%
CH10| CH2 | -100% | 0% | - | - | -
CH11| CH3 | -100% | 0% | - | - | -
CH12| CH4 | -100% | 0% | - | - | -
CH13| CH5 | -100% | 0% | - | +50% | +100%
CH14| CH6 | -100% | 0% | | - | -
CH15| CH7 | -100% | 0% | - | - | +100%
CH16| CH8 | -100% | 0% | - | - | -
## MJXQ - *18* ## MJXQ - *18*
Autobind protocol Autobind protocol