Thanks this is a good start also I already had the original BRCM app but this iOS code doesn't include any Wiced OTA client class
while the Wiced sense APP implement the OTA upgrade service. It looked like this requires a specific state machine
to push the FW over the air. Merging the state machine completed on Android to iOS would be great...
I am sure someone did it for some of your customers.
The Windows Client is available here
Merging WsOtaDownloader.cpp to WICED-Sensor.m would be one way to do it..
// Handle 0xff00: Broadcom vendor specific WICED Smart Secure Upgrade Service.
// The service has 2 characteristics. The first is the control point. Client
// sends commands, and sensor sends status notifications. Note that
// UUID of the vendor specific service is 16 bytes, unlike standard Bluetooth
// UUIDs which are 2 bytes. _UUID128 version of the macro should be used.
PRIMARY_SERVICE_UUID128 (HANDLE_WS_UPGRADE_SERVICE, UUID_WS_SECURE_UPGRADE_SERVICE),
// Handle 0xff01: characteristic WS Control Point, handle 0xff02 characteristic value.
// This characteristic can be used by the client to send commands to this device
// and to send status notifications back to the client. Client has to enable
// notifications by updating Characteristic Client Configuration Descriptor
// (see handle ff03 below). Note that UUID of the vendor specific characteristic is
// 16 bytes, unlike standard Bluetooth UUIDs which are 2 bytes. _UUID128 version
// of the macro should be used. Also note that characteristic has to be _WRITABLE
// to correctly enable writes from the client.
LEGATTDB_CHAR_PROP_WRITE | LEGATTDB_CHAR_PROP_NOTIFY,
// Handle 0xff03: Characteristic Client Configuration Descriptor.
// This is a standard GATT characteristic descriptor. 2 byte value 0 means that
// message to the client is disabled. Peer can write value 1 to enable
// notifications or respectively. Note _WRITABLE in the macro. This
// means that attribute can be written by the peer.
LEGATTDB_PERM_READABLE | LEGATTDB_PERM_WRITE_REQ, 2),
// Handle 0xff04: characteristic WS Data, handle 0xff05 characteristic value
// This characteristic is used to send next portion of the FW. Similar to the
// control point, characteristic should be _WRITABLE and 128bit version of UUID is used.
LEGATTDB_PERM_VARIABLE_LENGTH | LEGATTDB_PERM_WRITE_REQ, 20),
// Handle 0xff06: characteristic Application Info, handle 0xff07 characteristic value
// Client can read value of this characteristic to figure out which application id is
// running as well as version information. Characteristic UUID is 128 bits.
LEGATTDB_CHAR_PROP_READ, LEGATTDB_PERM_READABLE, 4),
WICED_SENSE_APP_ID & 0xff, (WICED_SENSE_APP_ID >> 8) & 0xff, WICED_SENSE_APP_VERSION_MAJOR, WICED_SENSE_APP_VERSION_MINOR,