diff --git a/project/example/ble/ble_peripheral/app/src/Rf433.c b/project/example/ble/ble_peripheral/app/src/Rf433.c index 41d735e..219bad4 100644 --- a/project/example/ble/ble_peripheral/app/src/Rf433.c +++ b/project/example/ble/ble_peripheral/app/src/Rf433.c @@ -112,17 +112,24 @@ static uint8_t Pairing_Address_IsEmpty(uint8_t high, uint8_t low) (high == 0xffU && low == 0xffU)); } -static void Pairing_Address_Touch(uint8_t high, uint8_t low) +static uint8_t Pairing_Address_AddNew(uint8_t high, uint8_t low) { uint8_t next_h[5]; uint8_t next_l[5]; uint8_t count = 0U; uint8_t i; + for(i = 0U; i < 5U; i++) + { + if(adress_H_array[i] == high && adress_L_array[i] == low) + { + return 0U; + } + } + for(i = 0U; i < 5U; i++) { if(Pairing_Address_IsEmpty(adress_H_array[i], adress_L_array[i])) continue; - if(adress_H_array[i] == high && adress_L_array[i] == low) continue; next_h[count] = adress_H_array[i]; next_l[count] = adress_L_array[i]; @@ -156,6 +163,8 @@ static void Pairing_Address_Touch(uint8_t high, uint8_t low) adress_L_array[i] = 0xffU; } } + + return 1U; } static void Pairing_Feedback_Apply(uint8_t on) { @@ -247,6 +256,7 @@ static void Pairing_Candidate_Reset(void) static void Encoder_key_NoCode(){ uint16_t times_s=0; + uint8_t pairing_data_changed=0U; if(pair_frame_silence_ticks < 0xffU) pair_frame_silence_ticks++; if(pair_frame_silence_ticks > PAIR_FRAME_SILENCE_TICKS) @@ -313,12 +323,20 @@ static void Encoder_key_NoCode(){ adress=receive_data >>8; adress_H = (receive_data >> 16) & 0xff; adress_L = (receive_data >> 8) & 0xff; - Pairing_Address_Touch(adress_H, adress_L); + if(Pairing_Address_AddNew(adress_H, adress_L)) + { + pairing_data_changed=1U; + } + else if(match_success==0U) + { + pairing_data_changed=1U; + } times_s=300; match_success=1; Pairing_Feedback_Start(times_s); } else if(res_data==Brightness_L||res_data==B_Brightness_L||res_data==F_Brightness_100){ + pairing_data_changed=1U; adress_H_array[0] = 0xff; adress_L_array[0] = 0xff; adress_H_array[1] = 0xff; @@ -337,7 +355,7 @@ static void Encoder_key_NoCode(){ } ssse=1; - set_TaskComps_timer(2,2000); + if(pairing_data_changed) set_TaskComps_timer(2,2000); } }