增强遥控对码容错
This commit is contained in:
@@ -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){
|
||||
|
||||
Reference in New Issue
Block a user