|
@ -703,6 +703,61 @@ bool ble_advdata_name_find(uint8_t const * p_encoded_data, |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool str_fuzzy_find(const char * target_name,const char* name,int namelen) |
|
|
|
|
|
{ |
|
|
|
|
|
if (name == NULL || target_name == NULL) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
int len = namelen; |
|
|
|
|
|
int target_len = strlen(target_name); |
|
|
|
|
|
if (len < target_len) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
for (int i = 0; i < len - target_len + 1; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
if (memcmp(name + i, target_name, target_len) == 0) |
|
|
|
|
|
{ |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool ble_advdata_name_fuzzy_find(uint8_t const * p_encoded_data, |
|
|
|
|
|
uint16_t data_len, |
|
|
|
|
|
char const * p_target_name) |
|
|
|
|
|
{ |
|
|
|
|
|
uint16_t parsed_name_len; |
|
|
|
|
|
uint8_t const * p_parsed_name; |
|
|
|
|
|
uint16_t data_offset = 0; |
|
|
|
|
|
|
|
|
|
|
|
if (p_target_name == NULL) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
parsed_name_len = ble_advdata_search(p_encoded_data, |
|
|
|
|
|
data_len, |
|
|
|
|
|
&data_offset, |
|
|
|
|
|
BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME); |
|
|
|
|
|
|
|
|
|
|
|
p_parsed_name = &p_encoded_data[data_offset]; |
|
|
|
|
|
|
|
|
|
|
|
if ( (data_offset != 0) |
|
|
|
|
|
&& (parsed_name_len != 0) |
|
|
|
|
|
&& (str_fuzzy_find(p_target_name,p_parsed_name,parsed_name_len))) |
|
|
|
|
|
{ |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool ble_advdata_short_name_find(uint8_t const * p_encoded_data, |
|
|
bool ble_advdata_short_name_find(uint8_t const * p_encoded_data, |
|
|
uint16_t data_len, |
|
|
uint16_t data_len, |
|
|