From 840a583a0b9e0978d63357e9f8fa60e57df89789 Mon Sep 17 00:00:00 2001 From: pascallanger Date: Thu, 25 Aug 2016 14:48:48 +0200 Subject: [PATCH] Devo fix --- Multiprotocol/Devo_cyrf6936.ino | 21 +++++++++++---------- Multiprotocol/Multiprotocol.ino | 4 +--- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Multiprotocol/Devo_cyrf6936.ino b/Multiprotocol/Devo_cyrf6936.ino index d2ed525..24c91e9 100644 --- a/Multiprotocol/Devo_cyrf6936.ino +++ b/Multiprotocol/Devo_cyrf6936.ino @@ -78,7 +78,12 @@ static void __attribute__((unused)) DEVO_scramble_pkt() static void __attribute__((unused)) DEVO_add_pkt_suffix() { uint8_t bind_state; - if (option) + if(prev_option!=option) + { + MProtocol_id = RX_num + MProtocol_id_master; + bind_counter=DEVO_BIND_COUNT; + } + if (option) { if (bind_counter > 0) bind_state = 0xc0; @@ -90,9 +95,9 @@ static void __attribute__((unused)) DEVO_add_pkt_suffix() packet[10] = bind_state | (DEVO_PKTS_PER_CHANNEL - packet_count - 1); packet[11] = *(hopping_frequency_ptr + 1); packet[12] = *(hopping_frequency_ptr + 2); - packet[13] = fixed_id & 0xff; - packet[14] = (fixed_id >> 8) & 0xff; - packet[15] = (fixed_id >> 16) & 0xff; + packet[13] = MProtocol_id & 0xff; + packet[14] = (MProtocol_id >> 8) & 0xff; + packet[15] = (MProtocol_id >> 16) & 0xff; } static void __attribute__((unused)) DEVO_build_beacon_pkt(uint8_t upper) @@ -303,11 +308,13 @@ uint16_t DevoInit() packet_count = 0; + prev_option=option; if(option==0) { MProtocol_id = ((uint32_t)(hopping_frequency[0] ^ cyrfmfg_id[0] ^ cyrfmfg_id[3]) << 16) | ((uint32_t)(hopping_frequency[1] ^ cyrfmfg_id[1] ^ cyrfmfg_id[4]) << 8) | ((uint32_t)(hopping_frequency[2] ^ cyrfmfg_id[2] ^ cyrfmfg_id[5]) << 0); + MProtocol_id %= 1000000; bind_counter = DEVO_BIND_COUNT; phase = DEVO_BIND; BIND_IN_PROGRESS; @@ -318,12 +325,6 @@ uint16_t DevoInit() bind_counter = 0; DEVO_cyrf_set_bound_sop_code(); } - MProtocol_id %= 1000000; - - if(IS_AUTOBIND_FLAG_on) - { - bind_counter = DEVO_BIND_COUNT; - } return 2400; } diff --git a/Multiprotocol/Multiprotocol.ino b/Multiprotocol/Multiprotocol.ino index 67729aa..e4fde0b 100644 --- a/Multiprotocol/Multiprotocol.ino +++ b/Multiprotocol/Multiprotocol.ino @@ -33,9 +33,6 @@ //Global constants/variables uint32_t MProtocol_id;//tx id, uint32_t MProtocol_id_master; -uint32_t Model_fixed_id=0; -uint32_t fixed_id; -uint8_t cyrfmfg_id[6];//for dsm2 and devo uint32_t blink=0; uint8_t prev_option; uint8_t prev_power=0xFD; // unused power value @@ -51,6 +48,7 @@ uint8_t Servo_AUX; uint16_t servo_max_100,servo_min_100,servo_max_125,servo_min_125; // Protocol variables +uint8_t cyrfmfg_id[6];//for dsm2 and devo uint8_t rx_tx_addr[5]; uint8_t phase; uint16_t bind_counter;