Hello,
In ble_advdata_short_name_find,
&& (parsed_name_len < strlen(p_target_name))
should be
&& (parsed_name_len <= strlen(p_target_name))
Right now, if the short name happens to match what is passed, it will actually fail.
Thanks!
James
Hello,
In ble_advdata_short_name_find,
&& (parsed_name_len < strlen(p_target_name))
should be
&& (parsed_name_len <= strlen(p_target_name))
Right now, if the short name happens to match what is passed, it will actually fail.
Thanks!
James
Hi James
Thank you for reporting this to us! I will pass this on.
Best regards,
Simon
Hi James
I just got word from the developer regarding this bug you found. It wasn't prioritized very highly which is why it took so long, but here's the explanation:
It was implemented this way on purpose because if p_target_name is the complete name and we find a short name with the same length, it implies that the complete name of the peer is longer than p_target_name and therefore not the name we're looking for.
Best regards,
Simon
Hi Simonr,
A short name and actual name actually have different "types" in the encoded data and it's not guaranteed that both are present in an advertising packet.
If I specify the short name which is advertised on the peripheral and configure central to filter to that exact same short name, then I would expect the filter to be satisfied.