Browse Source

change name scaner to name fuzzy scaner

master
zhaohe 1 year ago
parent
commit
fe92ba7e68
  1. 55
      components/ble/common/ble_advdata.c
  2. 4
      components/ble/common/ble_advdata.h

55
components/ble/common/ble_advdata.c

@ -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,

4
components/ble/common/ble_advdata.h

@ -263,7 +263,9 @@ uint8_t * ble_advdata_parse(uint8_t * p_encoded_data,
bool ble_advdata_name_find(uint8_t const * p_encoded_data, bool ble_advdata_name_find(uint8_t const * p_encoded_data,
uint16_t data_len, uint16_t data_len,
char const * p_target_name); char const * p_target_name);
bool ble_advdata_name_fuzzy_find(uint8_t const * p_encoded_data,
uint16_t data_len,
char const * p_target_name)
/**@brief Function for searching through encoded Advertising data for a device shortened name. /**@brief Function for searching through encoded Advertising data for a device shortened name.
* *

Loading…
Cancel
Save