DMS data types. More...

Data Structures

struct  gos_dms_messsage_config_t
 DMS Message Configuration. More...
 

Typedefs

typedef gos_result_t(* gos_dms_telemetry_callback_t) (gos_msgpack_context_t *msgpack, uint32_t *pair_count_ptr)
 Callback to be invoked before device posts telemetry to DMS. More...
 

Enumerations

enum  gos_dms_query_status_t {
  GOS_DMS_QUERY_STATUS_ERROR = 0,
  GOS_DMS_QUERY_STATUS_AVAILABLE = 1,
  GOS_DMS_QUERY_STATUS_UP_TO_DATE = 2
}
 Status of query DMS for firmware update. More...
 
enum  gos_dfu_status_t {
  GOS_DFU_STATUS_NONE = 0,
  GOS_DFU_STATUS_SUCCESS = 1,
  GOS_DFU_STATUS_FIRST_PASS_SUCCESS = 2,
  GOS_DFU_STATUS_UP_TO_DATE = 3,
  GOS_DFU_STATUS_PENDING = 4,
  GOS_DFU_STATUS_ERRORS_START = 10,
  GOS_DFU_STATUS_RECOVERABLE_ERRORS_START = 10,
  GOS_DFU_STATUS_DMS_CONNECTION_ERROR = 11,
  GOS_DFU_STATUS_DMS_READ_TIMEOUT_ERROR = 12,
  GOS_DFU_STATUS_NETWORK_NOT_FOUND = 13,
  GOS_DFU_STATUS_NETWORK_JOIN_FAILED = 14,
  GOS_DFU_STATUS_MAX_REQUEST_ATTEMPTS = 15,
  GOS_DFU_STATUS_XMODEM_INIT_TIMEOUT = 16,
  GOS_DFU_STATUS_XMODEM_READ_TIMEOUT = 17,
  GOS_DFU_STATUS_XMODEM_MAX_RETRIES = 18,
  GOS_DFU_STATUS_MAX_FAULTS = 19,
  GOS_DFU_STATUS_RECOVERABLE_ERRORS_END,
  GOS_DFU_STATUS_KERNEL_ERROR = 100,
  GOS_DFU_STATUS_APPLICATION_FILE_INVALID = 102,
  GOS_DFU_STATUS_DMS_PRODUCT_AUTH_KEY_SIG_INVALID = 103,
  GOS_DFU_STATUS_APPLICATION_SIGNATURE_INVALID = 105 ,
  GOS_DFU_STATUS_NETWORK_SSID_NOT_SET = 107,
  GOS_DFU_STATUS_NETWORK_PASSKEY_NOT_SET = 108,
  GOS_DFU_STATUS_NETWORK_SECURITY_NOT_SUPPORTED = 109,
  GOS_DFU_STATUS_MAX_UPDATE_ATTEMPTS = 110,
  GOS_DFU_STATUS_NO_DEVICE_CERTIFICATE = 111,
  GOS_DFU_STATUS_DEVCREDS_FINALIZE_FAILED = 116,
  GOS_DFU_STATUS_DMS_NO_AUTHORIZATION = 117,
  GOS_DFU_STATUS_APPLICATION_SIGNATURE_CHECK_FAILED = 118,
  GOS_DFU_STATUS_DFU_COUNTER_EXCEEDED = 119,
  GOS_DFU_STATUS_DEVCREDS_CORRUPT = 120,
  GOS_DFU_STATUS_SECOND_STAGE_BOOTLOADER_ERROR = 121,
  GOS_DFU_STATUS_EXTENDED_FLASH_INIT_FAILED = 122,
  GOS_DFU_STATUS_EXTENDED_FLASH_NOT_ENABLED = 123,
  GOS_DFU_STATUS_FLASH_ERASE_ERROR = 124,
  GOS_DFU_STATUS_FLASH_WRITE_ERROR = 125,
  GOS_DFU_STATUS_FLASH_READ_ERROR = 126,
  GOS_DFU_STATUS_CACHE_VERIFY_FAILED = 127,
  GOS_DFU_STATUS_DECRYPT_VERIFY_FAILED = 128,
  GOS_DFU_STATUS_DMS_BUNDLE_NOT_FOUND = 129,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_COPY_FAILED = 130,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_SIG_INVALID = 131,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_CRC_SIG_INVALID = 132,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_DMS_SERVER_CERT_INVALID = 133,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_DMS_DEVICE_CERT_INVALID = 134,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_DMS_DEVICE_KEY_INVALID = 135,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_BUNDLE_VERSION_INVALID = 136,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_PRODUCT_KEY_SIG_INVALID = 137,
  GOS_DFU_STATUS_UPDATE_DEVCREDS_MISSING_ENTRY = 138,
  GOS_DFU_STATUS_UPDATE_KERNEL_SIG_INVALID = 139,
  GOS_DFU_STATUS_UPDATE_KERNEL_COPY_FAILED = 140,
  GOS_DFU_STATUS_UPDATE_SSB_CRC_INVALID = 141,
  GOS_DFU_STATUS_UPDATE_SSB_SIG_INVALID = 142,
  GOS_DFU_STATUS_UPDATE_SSB_COPY_FAILED = 143,
  GOS_DFU_STATUS_UPDATE_APPLICATION_SIG_INVALID = 144,
  GOS_DFU_STATUS_UPDATE_APPLICATION_COPY_FAILED = 145,
  GOS_DFU_STATUS_PACKAGE_PROCESSING_ERROR = 146,
  GOS_DFU_STATUS_NOT_PROVISIONED = 147,
  GOS_DFU_STATUS_PROVISIONING_FAILED = 148,
  GOS_DFU_STATUS_NO_PRODUCT_AES_KEY = 149,
  GOS_DFU_STATUS_PACKAGE_CODES_START = 150,
  GOS_DFU_STATUS_MALFORMED_PACKAGE = 150,
  GOS_DFU_STATUS_INVALID_PACKAGE_SIGNATURE = 151,
  GOS_DFU_STATUS_INVALID_PACKAGE_CRC = 152,
  GOS_DFU_STATUS_MALFORMED_PACKAGE_MANIFEST = 153,
  GOS_DFU_STATUS_MALFORMED_PACKAGE_METADATA = 153,
  GOS_DFU_STATUS_IS_PRODUCTION_DEVICE = 154,
  GOS_DFU_STATUS_IS_DEVELOPMENT_DEVICE = 155,
  GOS_DFU_STATUS_PACKAGE_VERSION_NOT_ALLOWED = 156,
  GOS_DFU_STATUS_PACKAGE_PRODUCT_NOT_ALLOWED = 157 ,
  GOS_DFU_STATUS_PACKAGE_UUID_NOT_ALLOWED = 159,
  GOS_DFU_STATUS_BULK_FS_NOT_ENABLED = 160,
  GOS_DFU_STATUS_BULK_FS_INIT_FAILED = 161,
  GOS_DFU_STATUS_NO_ROOM = 162,
  GOS_DFU_STATUS_NO_MULTI_PASS_UPDATES = 163,
  GOS_DFU_STATUS_PACKAGE_DATA_OVERFLOW = 164,
  GOS_DFU_STATUS_PACKAGE_HEADER_INVALID = 165,
  GOS_DFU_STATUS_PACKAGE_INVALID_PRODUCT_AES_KEY = 166,
  GOS_DFU_STATUS_PACKAGE_BAD_FILE_ATTRIBUTE = 167
}
 Status of DFU. More...
 

Detailed Description

DMS data types.

Typedef Documentation

◆ gos_dms_telemetry_callback_t

typedef gos_result_t(* gos_dms_telemetry_callback_t) (gos_msgpack_context_t *msgpack, uint32_t *pair_count_ptr)

Callback to be invoked before device posts telemetry to DMS.

This callback is registered by gos_dms_set_telemetry_callback()

When this callback executes, the supplied msgpack_context argument should be populated with custom information using the MessagePack APIs.

If the callback returns GOS_SUCCESS, the telemetry information will be posted to the DMS.

Note
A root 'dictionary' marker is prepended to the context. The callback should simply add key/values to the root dictionary. i.e. An initial gos_msgpack_write_dict_marker() is NOT required
Parameters
[in]msgpackmsgpack context to populate, see gos_msgpack_context_t
[out]pair_count_ptrNumber of key/value pairs added to root directory

Enumeration Type Documentation

◆ gos_dfu_status_t

Status of DFU.

Enumerator
GOS_DFU_STATUS_NONE 

No status, default value on power-up.

GOS_DFU_STATUS_SUCCESS 

DFU successfully completed.

GOS_DFU_STATUS_FIRST_PASS_SUCCESS 

DFU successfully completed the 'first pass'.

GOS_DFU_STATUS_UP_TO_DATE 

DFU successfully completed, firmware already up-to-date.

GOS_DFU_STATUS_PENDING 

DFU currently active.

GOS_DFU_STATUS_ERRORS_START 

All codes below here are considered DFU failures.

GOS_DFU_STATUS_RECOVERABLE_ERRORS_START 

Start of codes that if occurred, the device will NOT abort DFU mode.

GOS_DFU_STATUS_DMS_CONNECTION_ERROR 

Error while issuing DMS HTTP request.

GOS_DFU_STATUS_DMS_READ_TIMEOUT_ERROR 

Timed-out while receiving DMS HTTP response.

GOS_DFU_STATUS_NETWORK_NOT_FOUND 

The configured network was not found.

GOS_DFU_STATUS_NETWORK_JOIN_FAILED 

Failed to connect to network.

GOS_DFU_STATUS_MAX_REQUEST_ATTEMPTS 

Max attempts at issuing OTA DFU requests to DMS exceeded.

GOS_DFU_STATUS_XMODEM_INIT_TIMEOUT 

Max attempts at initializing Xmodem interface exceeded.

GOS_DFU_STATUS_XMODEM_READ_TIMEOUT 

Timeout out while trying to receive Xmodem packet.

GOS_DFU_STATUS_XMODEM_MAX_RETRIES 

Max attempts at retransmitting an Xmodem packet exceeded.

GOS_DFU_STATUS_MAX_FAULTS 

Max system faults exceeded.

GOS_DFU_STATUS_RECOVERABLE_ERRORS_END 

All error codes below here abort DFU mode on occurrence.

GOS_DFU_STATUS_KERNEL_ERROR 

Unknown Kernel error occurred.

GOS_DFU_STATUS_APPLICATION_FILE_INVALID 

The application file on internal flash is invalid.

GOS_DFU_STATUS_DMS_PRODUCT_AUTH_KEY_SIG_INVALID 

The product auth key was improperly signed by the current platform auth key.

GOS_DFU_STATUS_APPLICATION_SIGNATURE_INVALID 

The application's signature on bootload is not valid against the product auth key.

GOS_DFU_STATUS_NETWORK_SSID_NOT_SET 

No network SSID is set.

GOS_DFU_STATUS_NETWORK_PASSKEY_NOT_SET 

No network password is set.

GOS_DFU_STATUS_NETWORK_SECURITY_NOT_SUPPORTED 

The configured network security is not supported.

GOS_DFU_STATUS_MAX_UPDATE_ATTEMPTS 

Max Kernel attempts of updating firmware exceeded.

GOS_DFU_STATUS_NO_DEVICE_CERTIFICATE 

No device DMS certificate was found on the device's internal memory.

GOS_DFU_STATUS_DEVCREDS_FINALIZE_FAILED 

Failed to finalize the device credentials update on internal memory.

GOS_DFU_STATUS_DMS_NO_AUTHORIZATION 

The device does not have access to the firmware on the DMS.

GOS_DFU_STATUS_APPLICATION_SIGNATURE_CHECK_FAILED 

Application signature on internal memory is not valid during DFU.

GOS_DFU_STATUS_DFU_COUNTER_EXCEEDED 

The DFU NVM counter has been exceeded, serial DFUs are now prohibited.

GOS_DFU_STATUS_DEVCREDS_CORRUPT 

Device credential memory corrupted.

GOS_DFU_STATUS_SECOND_STAGE_BOOTLOADER_ERROR 

Unknown error in SSB.

GOS_DFU_STATUS_EXTENDED_FLASH_INIT_FAILED 

Failed to initialize flash in SSB.

GOS_DFU_STATUS_EXTENDED_FLASH_NOT_ENABLED 

Extended flash is required but not enabled in SSB, likely a chip select was not specified in the DFU package.

GOS_DFU_STATUS_FLASH_ERASE_ERROR 

Error while erasing flash in SSB.

GOS_DFU_STATUS_FLASH_WRITE_ERROR 

Error while writing flash in SSB.

GOS_DFU_STATUS_FLASH_READ_ERROR 

Error while reading flash in SSB.

GOS_DFU_STATUS_CACHE_VERIFY_FAILED 

Failed to verify CRC of encrypted image in SSB.

GOS_DFU_STATUS_DECRYPT_VERIFY_FAILED 

Failed to verify CRC of decrypted image in SSB.

GOS_DFU_STATUS_DMS_BUNDLE_NOT_FOUND 

Requested bundle not found on DMS.

GOS_DFU_STATUS_UPDATE_DEVCREDS_COPY_FAILED 

Failed to copy device credentials from extended to internal flash.

GOS_DFU_STATUS_UPDATE_DEVCREDS_SIG_INVALID 

Device credentials signature is invalid against current product auth key.

GOS_DFU_STATUS_UPDATE_DEVCREDS_CRC_SIG_INVALID 

Failed to verify CRC when copying device credentials from extended to internal flash.

GOS_DFU_STATUS_UPDATE_DEVCREDS_DMS_SERVER_CERT_INVALID 

Server cert in device credentials is invalid.

GOS_DFU_STATUS_UPDATE_DEVCREDS_DMS_DEVICE_CERT_INVALID 

Device cert in device credentials is invalid.

GOS_DFU_STATUS_UPDATE_DEVCREDS_DMS_DEVICE_KEY_INVALID 

Device cert key in device credentials is invalid.

GOS_DFU_STATUS_UPDATE_DEVCREDS_BUNDLE_VERSION_INVALID 

Bundle version is invalid in device credentials.

GOS_DFU_STATUS_UPDATE_DEVCREDS_PRODUCT_KEY_SIG_INVALID 

Product auth key signature in device credentials is not valid against platform auth key.

GOS_DFU_STATUS_UPDATE_DEVCREDS_MISSING_ENTRY 

Device credentials is missing one or more required entries.

GOS_DFU_STATUS_UPDATE_KERNEL_SIG_INVALID 

Kernel's signature is invalid against platform auth key.

GOS_DFU_STATUS_UPDATE_KERNEL_COPY_FAILED 

Failed to copy kernel from extended to internal flash.

GOS_DFU_STATUS_UPDATE_SSB_CRC_INVALID 

CRC verification of SSB failed (i.e. CRC appended to SSB binary does not match calculated value)

GOS_DFU_STATUS_UPDATE_SSB_SIG_INVALID 

SSB's signature is invalid against current product auth key.

GOS_DFU_STATUS_UPDATE_SSB_COPY_FAILED 

Error while copying SSB from extended to internal flash.

GOS_DFU_STATUS_UPDATE_APPLICATION_SIG_INVALID 

Application's signature is invalid against product auth key.

GOS_DFU_STATUS_UPDATE_APPLICATION_COPY_FAILED 

Error while copying application from extended to internal flash.

GOS_DFU_STATUS_PACKAGE_PROCESSING_ERROR 

General error while processing the DFU package.

GOS_DFU_STATUS_NOT_PROVISIONED 

The device has NOT been provisioned and does NOT have a provisioning token.

GOS_DFU_STATUS_PROVISIONING_FAILED 

Error occurred while attempting to provision device.

GOS_DFU_STATUS_NO_PRODUCT_AES_KEY 

The device does not have a product AES, likely because it was provisioned incorrectly.

GOS_DFU_STATUS_PACKAGE_CODES_START 

The following codes are errors in the given DFU package.

GOS_DFU_STATUS_MALFORMED_PACKAGE 

The sections within the package are not valid.

GOS_DFU_STATUS_INVALID_PACKAGE_SIGNATURE 

The signature of the package data is not valid against the product auth key.

GOS_DFU_STATUS_INVALID_PACKAGE_CRC 

The package's CRC is not valid.

GOS_DFU_STATUS_MALFORMED_PACKAGE_MANIFEST 

The package's manifest is not valid.

GOS_DFU_STATUS_MALFORMED_PACKAGE_METADATA 

The package's metadata field is not valid.

GOS_DFU_STATUS_IS_PRODUCTION_DEVICE 

Given package with 'development' credentials, but device has 'production' credentials.

GOS_DFU_STATUS_IS_DEVELOPMENT_DEVICE 

Given package with 'production' credentials, but device has 'development' credentials.

GOS_DFU_STATUS_PACKAGE_VERSION_NOT_ALLOWED 

The device's current version is not allowed by the package's 'allowed versions' field.

GOS_DFU_STATUS_PACKAGE_PRODUCT_NOT_ALLOWED 

The device's current product is not allowed by the package's 'allowed product' field.

GOS_DFU_STATUS_PACKAGE_UUID_NOT_ALLOWED 

The device's UUID does not match the package's 'uuid' field.

GOS_DFU_STATUS_BULK_FS_NOT_ENABLED 

The package's has files destined to bulk flash, but the manifest does not specify the bulk flash chip select configuration.

GOS_DFU_STATUS_BULK_FS_INIT_FAILED 

Failed to initialize the bulk flash based on the chip select configuration in the package manifest.

GOS_DFU_STATUS_NO_ROOM 

There isn't enough room on extended/bulk flash to cache the package (even with multi-pass updates enabled)

GOS_DFU_STATUS_NO_MULTI_PASS_UPDATES 

The package requires 'multi-pass' updates to perform the update, but 'multi-pass' was not enabled.

GOS_DFU_STATUS_PACKAGE_DATA_OVERFLOW 

The package body contains more files than what was specified in the manifest.

GOS_DFU_STATUS_PACKAGE_HEADER_INVALID 

The factory DFU image contains an invalid header.

GOS_DFU_STATUS_PACKAGE_INVALID_PRODUCT_AES_KEY 

Cannot decrypt the package with the device's current product AES key.

GOS_DFU_STATUS_PACKAGE_BAD_FILE_ATTRIBUTE 

A file in the DFU package manifest has an invalid attribute.

◆ gos_dms_query_status_t

Status of query DMS for firmware update.

Enumerator
GOS_DMS_QUERY_STATUS_ERROR 

There was an error querying DMS for firmware update.

GOS_DMS_QUERY_STATUS_AVAILABLE 

Newer firmware is available on the DMS.

GOS_DMS_QUERY_STATUS_UP_TO_DATE 

The current firmware is up-to-date.