3 Replies Latest reply on Oct 23, 2017 7:42 PM by ThYo_2228536 Branched from an earlier discussion.

    Need sample app for iOS using Cocoa

    ThYo_2228536

      Hi is there an OTA sample app for iOS using Cocoa ?

      Or has anyone started to translate com.broadcom.wicedsmart.OtaUpgrader and

      com.broadcom.wicedsmart.OtaNoSecureUpgrader ?

       

      I confirm that OTA work with 20736 module (internal eprom) in un-secure mode

      In my case app was build using  WICED-Smart-SDK-2.2.0 on Mac.

      Didn't see the error reported in this thread requiring to use older SDK.

        • 1. Re: Need sample app for iOS using Cocoa
          MichaelF_56

          ThYo_2228536

           

          I will check internally to see if something already exists.  Unfortunately, if it does not, we will not be able to create.

          • 2. Re: Need sample app for iOS using Cocoa
            MichaelF_56

            WICED Sense iOS source with the updated CY branding is here: https://community.cypress.com/docs/DOC-1648

            • 3. Re: Need sample app for iOS using Cocoa
              ThYo_2228536

              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

              /WICED-Smart-SDK/Apps/ota_firmware_upgrade/peerapps/Windows/WsOtaUpgrade/WsOtaDownloader.cpp

               

              Merging WsOtaDownloader.cpp to  WICED-Sensor.m  would be one way to do it..

               

               

               

              #ifdef OTA_SECURE_UPGRADE

                 // 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.

                 CHARACTERISTIC_UUID128_WRITABLE (HANDLE_WS_UPGRADE_CHARACTERISTIC_CONTROL_POINT,

                   HANDLE_WS_UPGRADE_CONTROL_POINT, UUID_WS_SECURE_UPGRADE_CHARACTERISTIC_CONTROL_POINT,

                   LEGATTDB_CHAR_PROP_WRITE | LEGATTDB_CHAR_PROP_NOTIFY,

                   LEGATTDB_PERM_WRITE_REQ, 5),

                 0x00,0x00,0x00,0x00,0x00,

               

                 // 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.

                 CHAR_DESCRIPTOR_UUID16_WRITABLE (HANDLE_WS_UPGRADE_CLIENT_CONFIGURATION_DESCRIPTOR,

                   UUID_DESCRIPTOR_CLIENT_CHARACTERISTIC_CONFIGURATION,

                   LEGATTDB_PERM_READABLE | LEGATTDB_PERM_WRITE_REQ, 2),

                 0x00,0x00,

               

                 // 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.

                 CHARACTERISTIC_UUID128_WRITABLE (HANDLE_WS_UPGRADE_CHARACTERISTIC_DATA,

                   HANDLE_WS_UPGRADE_DATA, UUID_WS_SECURE_UPGRADE_CHARACTERISTIC_DATA,

                   LEGATTDB_CHAR_PROP_WRITE,

                   LEGATTDB_PERM_VARIABLE_LENGTH | LEGATTDB_PERM_WRITE_REQ,  20),

                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

                 0x00,0x00,0x00,0x00,

               

                 // 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.

                 CHARACTERISTIC_UUID128 (HANDLE_WS_UPGRADE_CHARACTERISTIC_APP_INFO,

                 HANDLE_WS_UPGRADE_APP_INFO, UUID_WS_SECURE_UPGRADE_CHARACTERISTIC_APP_INFO,

                 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,

              #endif