We have a European customer using some of the Bluetooth features for setting up a device and they’re wondering why it only supports ASCII. Is there a way to expand the character set being used?
Is it possible to use utf8 instead of ascii for special characters like é or ë and the like? These are quite common in ssid names in Europe also passwords can have these.
Can you be more specific ? C functions don’t know about character sets, what are you calling, how, and what is your problem ? Is what you want supported in the standard ?
Unfortunately, my router does not support characters such as é or ë so I can’t test this right now.
We have a Bluetooth service that allows the customer to get a list of all the SSID’s in the area, select one and set the username and password. I’m waiting to hear back from them, but I suspect characters like é or ë are not printed when they retrieve the SSID’s and can not be used in passwords. Once I find out more or I figure out how to test it, I’ll provide more information.
Section 22.214.171.124 of the 802.11-2007 specification defines SSIDs as 0-32 bytes with arbitrary contents; there’s no character set associated with the SSID. The 2012 update (Section 126.96.36.199.2) defines the “SSID encoding” field as UNSPECIFIED (arbitrary data as before) or UTF8.
The limitation in passwords is usually set by the vendors, just assume you have to transfer n bytes.
So, in principle, you need to be able to transfer up to 32 bytes “as binary” (just send whatever it is presented to you) and an extra field type indicator, using the BT API.
AFAIK there is no specific BT service to send SSIDs (or is it ?) so you wrote your own service; so, as long as you didn’t use a function/service that is expecting null-terminated strings or will format text, you are safe. The rest depends on what you do with the data wherever you receive that BT message and present to the user, and send back the user’s choice and password.
Now what is your code doing and what is the problem you see ?