We have a device that needs to be configured in the field to establish what SSID and passphrase it should connect to by default. The default AP that a client connects to in the SDK (3.2.2) is hard coded, and there does not seem to be a mechanism to set the default SSD as the connection logic uses the hard coded values or looks in the stored_app_list information in the wifi config dct to select the AP to autoconnect with.
So to do what we need to do, the plan is to do a wifi scan and look for the SSID of interest so we can collect the access point details.
We could then save this information and when the device resets, do a manual wiced_wifi_join call to establish our connection.
It would seem structurally better to populate the stored_app_list in the dct with the information we get from the scan, and let the default behavior of bringing up the services do its job, so that in future releases of the SDK if there are additional requirements to establish the connection, we don't have to re-code our app to deal with it if the change is not completely encapsulated in the wiced_wifi_join call.
But I don't like hacking on SDK internal data structures that are also subject to change that would percolate upstream and cause us rework.
Is there a better way to implement this feature that gives us better isolation from SDK changes?
We got around this issue by storing the SSID + Passkeys that we want to look for in an external NAND flash. You could also store them in an unused page in the ROM of your Micro.
When you boot up, you can call wwd_wifi_scan with the SSID of interest, and then call wwd_wifi_join_specific with the information from your scan result.
We pretty much only use WWD (the lower layer to WICED) because using all of WICED was too heavy for our application. We also do not use the DCT at all.
You will have to make some sort of tool or interface so that your devices can have their new SSID configurations configured after compile time.