增强遥控对码容错

This commit is contained in:
2026-07-27 11:45:07 +08:00
parent 0add5422ac
commit faa3a1bdc1
@@ -79,6 +79,10 @@ static uint8_t ssse=0;
static volatile uint16_t rf_frame_sequence;
static uint16_t pair_last_frame_sequence;
static uint32_t pair_candidate_data;
static uint32_t pair_alternate_data;
static uint8_t pair_candidate_valid;
static uint8_t pair_alternate_count;
static uint8_t pair_frame_silence_ticks;
static uint8_t pairing_feedback_active;
@@ -94,8 +98,8 @@ static uint16_t pairing_saved_c;
static uint16_t pairing_saved_w_duty;
static uint16_t pairing_saved_c_duty;
#define PAIR_HOLD_FRAME_COUNT 8U
#define PAIR_FRAME_SILENCE_TICKS 50U
#define PAIR_HOLD_FRAME_COUNT 4U
#define PAIR_FRAME_SILENCE_TICKS 100U
uint8_t long_flag_s=0;
// 在固定大小数组中添加新元素(滑动窗口)
@@ -197,35 +201,70 @@ static void Pairing_Feedback_Task(void)
pairing_feedback_on = pairing_feedback_on ? 0U : 1U;
Pairing_Feedback_Apply(pairing_feedback_on);
}
static void Pairing_Candidate_Reset(void)
{
long_press_cnt = 0U;
pair_candidate_data = 0U;
pair_alternate_data = 0U;
pair_candidate_valid = 0U;
pair_alternate_count = 0U;
pair_frame_silence_ticks = 0U;
}
static void Encoder_key_NoCode(){
uint8_t i=0,j=0,isok=0,updata=0;
uint16_t times_s=0;
if(rf_frame_sequence == pair_last_frame_sequence){
if(pair_frame_silence_ticks < 0xffU) pair_frame_silence_ticks++;
if(pair_frame_silence_ticks > PAIR_FRAME_SILENCE_TICKS){
long_press_cnt = 0U;
pair_candidate_data = 0U;
}
return;
}
if(pair_frame_silence_ticks > PAIR_FRAME_SILENCE_TICKS)
Pairing_Candidate_Reset();
if(rf_frame_sequence == pair_last_frame_sequence) return;
pair_last_frame_sequence = rf_frame_sequence;
pair_frame_silence_ticks = 0U;
if(!((res_data==Brightness_H||res_data==Brightness_L||res_data==B_Brightness_H||res_data==B_Brightness_L||res_data==F_Brightness_10||res_data==F_Brightness_100)&&time_5s<=50000&&ssse==0)){
long_press_cnt = 0U;
pair_candidate_data = 0U;
if(ssse != 0U || time_5s > 50000U) return;
if(!(res_data==Brightness_H||res_data==Brightness_L||
res_data==B_Brightness_H||res_data==B_Brightness_L||
res_data==F_Brightness_10||res_data==F_Brightness_100))
{
return;
}
if(pair_candidate_data == receive_data){
long_press_cnt++;
}else{
if(!pair_candidate_valid)
{
pair_candidate_data = receive_data;
pair_candidate_valid = 1U;
long_press_cnt = 1U;
pair_alternate_count = 0U;
pair_frame_silence_ticks = 0U;
}
else if(pair_candidate_data == receive_data)
{
long_press_cnt++;
pair_alternate_count = 0U;
pair_frame_silence_ticks = 0U;
}
else
{
if(pair_alternate_data == receive_data)
{
pair_alternate_count++;
}
else
{
pair_alternate_data = receive_data;
pair_alternate_count = 1U;
}
if(pair_alternate_count >= 2U)
{
pair_candidate_data = pair_alternate_data;
long_press_cnt = pair_alternate_count;
pair_alternate_count = 0U;
pair_frame_silence_ticks = 0U;
}
}
if(long_press_cnt>=PAIR_HOLD_FRAME_COUNT){