diff --git a/Multiprotocol/DSM2_cyrf6936.ino b/Multiprotocol/DSM2_cyrf6936.ino index 66b582a..ab1e781 100644 --- a/Multiprotocol/DSM2_cyrf6936.ino +++ b/Multiprotocol/DSM2_cyrf6936.ino @@ -110,7 +110,6 @@ uint16_t cyrf_state; uint8_t crcidx; uint8_t binding; uint16_t crc; -uint8_t model; /* #ifdef USE_FIXED_MFGID @@ -128,7 +127,7 @@ static void build_bind_packet() packet[0] = crc >> 8; packet[1] = crc & 0xff; packet[2] = 0xff ^ cyrfmfg_id[2]; - packet[3] = (0xff ^ cyrfmfg_id[3]) + model; + packet[3] = (0xff ^ cyrfmfg_id[3]) + RX_num; packet[4] = packet[0]; packet[5] = packet[1]; packet[6] = packet[2]; @@ -187,13 +186,13 @@ static void build_data_packet(uint8_t upper)// if (sub_protocol==DSMX) { packet[0] = cyrfmfg_id[2]; - packet[1] = cyrfmfg_id[3] + model; + packet[1] = cyrfmfg_id[3] + RX_num; bits=11; } else { packet[0] = (0xff ^ cyrfmfg_id[2]); - packet[1] = (0xff ^ cyrfmfg_id[3]) + model; + packet[1] = (0xff ^ cyrfmfg_id[3]) + RX_num; bits=10; } // @@ -513,8 +512,6 @@ uint16_t initDsm2() sop_col = (cyrfmfg_id[0] + cyrfmfg_id[1] + cyrfmfg_id[2] + 2) & 0x07;//Ok data_col = 7 - sop_col;//ok - model=MProtocol_id-MProtocol_id_master; // RxNum for serial or 0 for ppm - CYRF_SetTxRxMode(TX_EN); // if(IS_AUTOBIND_FLAG_on) diff --git a/Multiprotocol/FrSky_cc2500.ino b/Multiprotocol/FrSky_cc2500.ino index 40b0f6c..ac61452 100644 --- a/Multiprotocol/FrSky_cc2500.ino +++ b/Multiprotocol/FrSky_cc2500.ino @@ -18,9 +18,11 @@ #include "iface_cc2500.h" //##########Variables######## -uint32_t state; -uint8_t len; +//uint32_t state; +//uint8_t len; +uint8_t telemetry_counter=0; +/* enum { FRSKY_BIND = 0, FRSKY_BIND_DONE = 1000, @@ -30,6 +32,7 @@ enum { FRSKY_DATA4, FRSKY_DATA5 }; +*/ uint16_t initFrSky_2way() { @@ -124,6 +127,8 @@ static void check_telemetry(uint8_t *pkt,uint8_t len) for (uint8_t i=3;i0) + telemetry_counter=(telemetry_counter+1)%32; } } @@ -231,7 +236,7 @@ static void frsky2way_build_bind_packet() packet[17] = 0x01; } -uint8_t telemetry_counter=0; + static void frsky2way_data_frame() {//pachet[4] is telemetry user frame counter(hub) @@ -241,7 +246,8 @@ static void frsky2way_data_frame() packet[1] = rx_tx_addr[3]; packet[2] = rx_tx_addr[2]; packet[3] = counter;// - packet[4] = pkt[6]?(telemetry_counter++)%32:0; + packet[4]=telemetry_counter; + packet[5] = 0x01; // packet[10] = 0; diff --git a/Multiprotocol/Multiprotocol.ino b/Multiprotocol/Multiprotocol.ino index 89084f1..5299ef4 100644 --- a/Multiprotocol/Multiprotocol.ino +++ b/Multiprotocol/Multiprotocol.ino @@ -65,6 +65,10 @@ uint8_t hopping_frequency_no=0; uint8_t rf_ch_num; uint8_t throttle, rudder, elevator, aileron; uint8_t flags; +// +uint32_t state; +uint8_t len; +uint8_t RX_num; // Mode_select variables uint8_t mode_select; @@ -159,7 +163,8 @@ void setup() mode_select--; cur_protocol[0] = PPM_prot[mode_select].protocol; sub_protocol = PPM_prot[mode_select].sub_proto; - MProtocol_id = PPM_prot[mode_select].rx_num + MProtocol_id_master; + RX_num = PPM_prot[mode_select].rx_num; + MProtocol_id = RX_num + MProtocol_id_master; option = PPM_prot[mode_select].option; if(PPM_prot[mode_select].power) POWER_FLAG_on; if(PPM_prot[mode_select].autobind) AUTOBIND_FLAG_on; @@ -208,7 +213,7 @@ void loop() } update_led_status(); #if defined(TELEMETRY) - if(((cur_protocol[0]&0x1F)==MODE_FRSKY)||((cur_protocol[0]&0x1F)==MODE_HUBSAN)) + if( ((cur_protocol[0]&0x1F)==MODE_FRSKY) || ((cur_protocol[0]&0x1F)==MODE_HUBSAN) || ((cur_protocol[0]&0x1F)==MODE_FRSKYX) ) frskyUpdate(); #endif if (remote_callback != 0) @@ -445,7 +450,8 @@ static void update_serial_data() cur_protocol[1] = rx_ok_buff[1]&0x7F; //store current protocol CHANGE_PROTOCOL_FLAG_on; //change protocol sub_protocol=(rx_ok_buff[1]>>4)& 0x07; //subprotocol no (0-7) bits 4-6 - MProtocol_id=MProtocol_id_master+(rx_ok_buff[1]& 0x0F); //personalized RX bind + rx num // rx_num bits 0---3 + RX_num=rx_ok_buff[1]& 0x0F; + MProtocol_id=MProtocol_id_master+RX_num; //personalized RX bind + rx num // rx_num bits 0---3 } else if( ((rx_ok_buff[0]&0x80)!=0) && ((cur_protocol[0]&0x80)==0) ) // Bind flag has been set diff --git a/Multiprotocol/iface_cc2500.h b/Multiprotocol/iface_cc2500.h index 8bcd506..cb7b623 100644 --- a/Multiprotocol/iface_cc2500.h +++ b/Multiprotocol/iface_cc2500.h @@ -16,6 +16,16 @@ #ifndef _IFACE_CC2500_H_ #define _IFACE_CC2500_H_ +enum { + FRSKY_BIND = 0, + FRSKY_BIND_DONE = 1000, + FRSKY_DATA1, + FRSKY_DATA2, + FRSKY_DATA3, + FRSKY_DATA4, + FRSKY_DATA5 +}; + enum { CC2500_00_IOCFG2 = 0x00, // GDO2 output pin configuration CC2500_01_IOCFG1 = 0x01, // GDO1 output pin configuration