Skip to content

Configuration

IOWA relies on the compilation flags described below to enable or disable features. These compilation flags can be set in the header file iowa_config.h. Every source file of IOWA includes this header file.

To create your product, a template is provided in the include folder.

Platform Configuration

LWM2M_BIG_ENDIAN and LWM2M_LITTLE_ENDIAN

Define one and only one of these two to specify the endianness of your platform.

IOWA_BUFFER_SIZE

When using a packet switching transport (e.g. UDP), IOWA stores the received data in a static buffer. IOWA_BUFFER_SIZE defines the size in bytes of this static buffer. Note that for the WebSocket transport, IOWA uses a dynamically allocated buffer instead of a static one.

IOWA_USE_SNPRINTF

When using a text content format, IOWA uses snprintf to serialize float which absolute value is greater than INT64_MAX.

IOWA Configuration

Transports

IOWA can support various transports. These transports are enabled by defining the following:

IOWA_UDP_SUPPORT
Support for UDP transport. URI scheme is in the form "coap://" or "coaps://". This transport requires IOWA_BUFFER_SIZE to be defined.
IOWA_TCP_SUPPORT
Support for TCP transport. URI scheme is in the form "coap+tcp://" or "coaps+tcp://".
IOWA_WEBSOCKET_SUPPORT
Support for WebSocket transport. URI scheme is in the form "coap+ws://" or "coaps+ws://". This transport requires IOWA_BUFFER_SIZE to be defined. Note that this transport is not part of the LwM2M standard and may work only with IoTerop's ALASKA device management platform.
IOWA_SMS_SUPPORT
Support for SMS transport. URI scheme is in the form "coap+sms://" for text SMS or "sms://" for binary SMS. This transport requires IOWA_BUFFER_SIZE to be defined.
IOWA_LORAWAN_SUPPORT
Support for LoRaWAN transport. URI scheme is in the form "lorawan://". This transport requires IOWA_BUFFER_SIZE to be defined.
Additional Flags
IOWA_COAP_BLOCK_SUPPORT
Support for full packet fragmentation at CoAP level as defined in RFC 7959 "Block-Wise Transfers in the Constrained Application Protocol (CoAP)".
IOWA_COAP_BLOCK_MINIMAL_SUPPORT
Support for reassembly of fragmented packets at CoAP level. Automatically defined with IOWA_COAP_BLOCK_SUPPORT. Useful for constrained devices using the "Push" method of Device Update.
IOWA_COAP_OSCORE_SUPPORT
Support for security at the CoAP message level using Object Security for Constrained RESTful Environments (RFC 8613).
IOWA_COAP_ACK_MEMORY_LIMIT
Define a limit in bytes for the memory used by CoAP Acknowledgements stored for potential re-transmissions e.g. #define IOWA_COAP_ACK_MEMORY_LIMIT 1024. Useful for memory constrained devices. Note that CoAP Acknowledgements are stored only until MAX_TRANSMIT_WAIT has expired.

IOWA_ABSTRACTION_EXTENSION

IOWA will use the new system abstraction function iowa_system_connection_open_server() instead of iowa_system_connection_open().

IOWA_SECURITY_LAYER

IOWA can use different DTLS/TLS stacks to secure communication between LwM2M Clients and Servers. The possible values for this define are:

IOWA_SECURITY_LAYER_NONE
No security features can be used. This is the default value if IOWA_SECURITY_LAYER is not defined.
IOWA_SECURITY_LAYER_USER
To provide your security stack. Refer to the Providing your security implementation section for details.
IOWA_SECURITY_LAYER_MBEDTLS
Use mbed TLS as the DTLS/TLS stack. The sources of mbed TLS are provided in the externals/mbedtls folder.
IOWA_SECURITY_LAYER_MBEDTLS_OSCORE_ONLY
Use mbed TLS as the cryptographic stack restricted to OSCORE mode. The sources of mbed TLS are provided in the externals/mbedtls folder.
IOWA_SECURITY_LAYER_MBEDTLS_PSK_ONLY
Use mbed TLS as the DTLS/TLS stack restricted to Pre-Shared Key mode. The sources of mbed TLS are provided in the externals/mbedtls folder.
IOWA_SECURITY_LAYER_TINYDTLS
Use tinydtls as the DTLS/TLS stack. The sources of tinydtls are provided in the externals/mbedtls folder. Note that tinydtls does not handle certificate based security modes.

If security is in use, the platform abstraction functions iowa_system_security_data() and iowa_system_random_vector_generator() must be implemented.

Be aware, security increases the ROM/RAM footprints. The mbed TLS or tinyDTLS layer have been configured to keep a good ratio between the ROM/RAM footprints and optimal security. But on constrained devices, the Flash used is small and designed to be optimal (fully used). Thus, if the security layer exceeds the footprints, additional defines can be set depending of the device. These defines are outside of the scope of IOWA.

For mbed TLS layer, the following defines can be set in externals/mbedtls/include/mbedtls/config.h:

  • MBEDTLS_AES_ROM_TABLES: Store the pre-computed AES tables in the ROM instead of the RAM. It can reduce RAM usage by ~8kb, but increase ROM usage by ~8kb.
  • MBEDTLS_AES_FEWER_TABLES: Store a smaller pre-computed AES tables in the ROM/RAM. It can reduce the usage by ~6kb, and thus pre-computed AES tables cost only ~2kb.

IOWA_LOG_LEVEL and IOWA_LOG_PART

These defines configure the traces provided by IOWA. Obviously, having more traces increase the code footprint of IOWA. Note that all traces are provided to the platform abstraction function iowa_system_trace().

IOWA_LOG_LEVEL possible values are:

  • IOWA_LOG_LEVEL_NONE: No traces are generated. This is the default value if IOWA_LOG_LEVEL is not defined.
  • IOWA_LOG_LEVEL_ERROR: Only the most critical errors are reported like calling IOWA APIs with wrong parameters or memory allocation failures.
  • IOWA_LOG_LEVEL_WARNING: Recoverable errors are also reported.
  • IOWA_LOG_LEVEL_INFO: IOWA reports information on major steps of its execution. This is the recommended setting during integration.
  • IOWA_LOG_LEVEL_TRACE: IOWA reports every step of its execution. It is advised to use this value only to provide details when contacting the support.

IOWA_LOG_PART is useful to restrict traces to some components of IOWA. It is a combination of the following:

  • IOWA_PART_BASE IOWA APIs and execution.
  • IOWA_PART_COAP the CoAP layer.
  • IOWA_PART_COMM the communication handling.
  • IOWA_PART_DATA the serialization/deserialization payload packet handling.
  • IOWA_PART_LWM2M the Lightweight M2M layer.
  • IOWA_PART_OBJECT the object layer.
  • IOWA_PART_SECURITY the security layer.
  • IOWA_PART_SYSTEM the platform abstraction layer.

Additionally, IOWA_PART_ALL is defined as enabling traces of all components. This is the default value if IOWA_LOG_PART is not defined.

IOWA_LOG_BUFFER_LIMIT

By default, when logging a buffer, IOWA logs all the content. To limit the outputs, set this define to a numerical value, e.g.

#define IOWA_LOG_BUFFER_LIMIT 512

IOWA_THREAD_SUPPORT

When using IOWA in a multithreaded system, defining IOWA_THREAD_SUPPORT enables thread safety in IOWA.

This feature requires the platform abstraction functions iowa_system_connection_interrupt_select(), iowa_system_mutex_lock(), and iowa_system_mutex_unlock() to be implemented.

IOWA_STORAGE_CONTEXT_SUPPORT

IOWA can save and restore its context through the APIs iowa_save_context(), iowa_save_context_snapshot() and iowa_load_context(). This feature requires this compilation flag to be set.

This feature allows external data to be saved and restored with the context through callback. Callbacks can be added and deleted through the APIs iowa_backup_register_callback() and iowa_backup_deregister_callback().

This feature requires the platform abstraction functions iowa_system_store_context() and iowa_system_retrieve_context() to be implemented.

IOWA_STORAGE_CONTEXT_AUTOMATIC_BACKUP

When this flag is set, IOWA would save the LwM2M Client context after every modification by a LwM2M Server or LwM2M Bootstrap Server. This feature does not save the server's runtime information. This is only relevant when IOWA is in Client mode and requires IOWA_STORAGE_CONTEXT_SUPPORT to be set.

IOWA_STORAGE_CONTEXT_MANUAL_HEARTBEAT_ON_LOAD

By default, iowa_load_context() automatically sends a Registration Update to loaded LwM2M Servers the Client is registered to. When this flag is enabled, iowa_load_context() only opens the connection to the registered LwM2M Servers. The application can decide to call either iowa_client_send_heartbeat() or iowa_clock_reset().

IOWA_CONFIG_SKIP_SYSTEM_FUNCTION_CHECK

This define allows disabling system function checks such as memory allocation. It assumes that system functions can not fail. This define is useful to reduce the code footprint.

IOWA_CONFIG_SKIP_ARGS_CHECK

This define allows disabling check functions' arguments. It assumes that the functions' arguments are valid. This define is useful to reduce the code footprint.

IOWA_LOGGER_USER

This define allows implementing your Logger's functions. If not defined, use the IOWA Logger implementation.

If this define is set, the platform abstraction functions iowa_log(), iowa_log_arg(), iowa_log_buffer() and iowa_log_arg_buffer() must be implemented.

IOWA_PEER_IDENTIFIER_SIZE

This is only relevant when IOWA is in Server and/or Bootstrap Server mode. This define is used to set the maximum size of the peer identifier on the network. This is used when the endpoint name is not found in the registration payload and the stack calls iowa_system_connection_get_peer_identifier.

LwM2M Configuration

LwM2M Role

Lightweight M2M defines three possible roles for the elements of a LwM2M system: Client, Server, or Bootstrap Server. You can define the role of your device by defining one of LWM2M_CLIENT_MODE, LWM2M_SERVER_MODE, or LWM2M_BOOTSTRAP_SERVER_MODE.

LwM2M Version

LWM2M_VERSION_1_0_REMOVE

This disables the default Lightweight M2M version of this stack: LwM2M version 1.0.

LWM2M_VERSION_1_1_SUPPORT

This enables the support of the LwM2M version 1.1.

LWM2M_BOOTSTRAP

This is only relevant when IOWA is in Client mode. This allows the LwM2M Client to be configured by a LwM2M Bootstrap Server.

LWM2M_BOOTSTRAP_PACK_SUPPORT

This is only relevant when IOWA is Bootstrap Server mode, or in Client mode with LWM2M_BOOTSTRAP set. This enables the Bootstrap-Pack operation defined in the LightweightM2M 1.2 specification. The Bootstrap-Pack operation allows to configure a LwM2M Client in a single exchange. In Client mode, when bootstrapping, IOWA will first send a Bootstrap-Pack request. If the request fails, IOWA will then initiate a Bootstrap sequence.

LwM2M Data Encoding

LWM2M_SUPPORT_JSON

This enables the support of JSON encoding for LwM2M payload. This support is optional for LwM2M Clients and mandatory for LwM2M Servers. Thus, the feature is enabled automatically when LWM2M_SERVER_MODE or LWM2M_BOOTSTRAP_SERVER_MODE are set. Note that JSON is a verbose encoding in LwM2M.

Note that JSON encoding is deprecated in LwM2M 1.1.

LWM2M_SUPPORT_SENML_JSON

This enables the support of SenML JSON encoding for LwM2M 1.1 payload. This support is optional for LwM2M Clients and mandatory for LwM2M Servers:

  • For LwM2M Clients, at least one of the following format must be supported: SenML CBOR or SenML JSON if LWM2M_VERSION_1_1_SUPPORT is set.
  • For LwM2M Servers, the support is enabled automatically when LWM2M_SERVER_MODE or LWM2M_BOOTSTRAP_SERVER_MODE are set.

Note that SenML JSON is a verbose encoding in LwM2M.

LWM2M_SUPPORT_CBOR

This enables the support of CBOR encoding for LwM2M 1.1 payloads containing a single resource value. This support is optional for LwM2M Clients and mandatory for LwM2M Servers. This support is enabled automatically when LWM2M_SERVER_MODE or LWM2M_BOOTSTRAP_SERVER_MODE are set.

LWM2M_SUPPORT_SENML_CBOR

This enables the support of SenML CBOR encoding for LwM2M 1.1 payload. This support is optional for LwM2M Clients and mandatory for LwM2M Servers:

  • For LwM2M Clients, at least one of the following format must be supported: SenML CBOR or SenML JSON if LWM2M_VERSION_1_1_SUPPORT is set.
  • For LwM2M Servers, the support is enabled automatically when LWM2M_SERVER_MODE or LWM2M_BOOTSTRAP_SERVER_MODE are set.

LWM2M_SUPPORT_LWM2M_CBOR

This enables the support of LwM2M CBOR encoding for LwM2M 1.2 payload. This support is optional for LwM2M Clients and mandatory for LwM2M Servers. For LwM2M Servers, the support is enabled automatically when LWM2M_SERVER_MODE or LWM2M_BOOTSTRAP_SERVER_MODE are set.

LWM2M_SUPPORT_TLV

This enables the support of TLV encoding for LwM2M payload.

This support is mandatory in LwM2M 1.0, this means that this feature is automatically set if LWM2M_VERSION_1_0_REMOVE is NOT set.

In LwM2M 1.1 and later, this support is optional for LwM2M Clients and mandatory for LwM2M Servers. Thus, the feature is enabled automatically when LWM2M_SERVER_MODE or LWM2M_BOOTSTRAP_SERVER_MODE are set if LWM2M_VERSION_1_0_REMOVE is set.

Note that TLV encoding is deprecated in LwM2M 1.1.

LWM2M_STORAGE_QUEUE_SUPPORT

When a LwM2M Server observing some resources is not reachable, the LwM2M Client stores the notifications until the connectivity is restored. By default, IOWA stores the last notifications in memory. When this flag is set, IOWA discharges the storage of these notifications to the platform.

This feature requires the system abstraction functions iowa_system_queue_create(), iowa_system_queue_enqueue(), iowa_system_queue_dequeue(), and iowa_system_queue_delete() to be implemented.

LWM2M_STORAGE_QUEUE_PEEK_SUPPORT

When a LwM2M Server observing some resources is not reachable, the LwM2M Client stores the notifications until the connectivity is restored. By default, IOWA stores the last notifications in memory. When this flag is set, IOWA discharges the storage of these notifications to the platform. New version using a peek/remove mechanism instead of a dequeue mechanism.

This feature requires the system abstraction functions iowa_system_queue_create(), iowa_system_queue_enqueue(), iowa_system_queue_peek(), iowa_system_queue_remove(), and iowa_system_queue_delete() to be implemented.

LWM2M_SUPPORT_TIMESTAMP

This enables the support of the timestamp for notifications. Timestamp can only be used with the following Content format:

LWM2M_ALTPATH_SUPPORT

By default, the LwM2M Objects are located under the root path. However, devices might be hosting other CoAP Resources on an endpoint, and there may be the need to place LwM2M Objects under an alternate path.

This define allows the use of the Alternate Path. For LwM2M Servers, the support is enabled automatically when LWM2M_SERVER_MODE is set.

LWM2M_CLIENT_INCOMING_CONNECTION_SUPPORT

This is only relevant when IOWA is in Client mode. When set, this define enables the iowa_client_new_incoming_connection() API.

LWM2M_CLIENT_ASYNCHRONOUS_OPERATION_SUPPORT

This is only relevant when IOWA is in Client mode. When this compilation flag is activated, operations on LwM2M Objects can be declared as asynchronous. See iowa_client_object_set_mode().

Composite operations

The composite operations are automatically enabled when LWM2M_SERVER_MODE and LWM2M_VERSION_1_1_SUPPORT are set.

Those features require that either LWM2M_SUPPORT_SENML_JSON, LWM2M_SUPPORT_SENML_CBOR, or LWM2M_SUPPORT_LWM2M_CBOR are set.

LWM2M_READ_COMPOSITE_SUPPORT

This enables the support of the Read-Composite operation defined in LwM2M 1.1.

LWM2M_OBSERVE_COMPOSITE_SUPPORT

This enables the support of Observe-Composite operation and Read-Composite operation defined in LwM2M 1.1. This means that LWM2M_READ_COMPOSITE_SUPPORT will be automatically set.

LWM2M_WRITE_COMPOSITE_SUPPORT

This enables the support of the Write-Composite operation defined in LwM2M 1.1.

LWM2M_DATA_PUSH_SUPPORT

This enables the support of data push operation defined in LwM2M 1.1. This feature requires that either LWM2M_SUPPORT_SENML_JSON, LWM2M_SUPPORT_SENML_CBOR, or LWM2M_SUPPORT_LWM2M_CBOR are set.

Non-Standard Features Configuration

IOWA_VERIZON_OPERATOR_SUPPORT

This enables the non-standard features required to interact with the Verizon LwM2M Servers. Namely:

  • The out-of-band message (SMS Registration Update Trigger) can trigger a reboot or a factory reset in addition to the standard registration update.
  • If a LwM2M Server performs a Write operation on the Package URI Resource (ID: 1) of the Firmware Update object (ID: 5) while the state is Downloading or Updating, IOWA will reply with a 4.00 (Bad Request) error code.
  • IOWA will accept Write operations on the LwM2M Server Object's Resource Binding (/1/x/7).
  • The Server Object (ID: 1) presents a Resource with ID 30000 with two Resource Instances:
Name Resource ID Resource Instance ID Operations Default value Type Description
IsRegistered 30000 0 R/W 0 Integer After the successful registration with the DM server, the device shall set IsRegistered = 1 to indicate the device is registered with the DM server.
ClientHoldOffTimer 30000 1 R 30 Sec Integer The time the device must wait before attempting registration with the DM server

Note that a LwM2M Client with this flag set will wait for the "ClientHoldOffTimer" to expire before trying to register to a LwM2M Server.

Objects Configuration

OMA Objects

IOWA_SUPPORT_ACCESS_CONTROL_LIST_OBJECT

This enables the support of Access Control List OMA Object. Refer to the Access Control List Object for details.

IOWA_SUPPORT_BEARER_SELECTION_OBJECT

This enables the support of Bearer Selection OMA Object. Refer to the Bearer selection Object for details.

IOWA_SUPPORT_FIRMWARE_UPDATE_OBJECT

This enables the support of Firmware Update OMA Object. Refer to the Firmware Update Object for details.

IOWA_FIRMWARE_UPDATE_MAX_BLOCK_INTERVAL

When the LwM2M Client supports the "Push" method of Device Update, and IOWA_COAP_BLOCK_MINIMAL_SUPPORT, this defines the maximum time in seconds to wait between blocks before considering the connection as lost.

IOWA_SUPPORT_SOFTWARE_COMPONENT_OBJECT

This enables the support of Software Component OMA Object. Refer to the Software Component Object for details.

IOWA_SUPPORT_SOFTWARE_MANAGEMENT_OBJECT

This enables the support of Software Management OMA Object. Refer to the Software Management Object for details.

Object Resources

By default, all the resources of an IOWA-implemented Object are enabled. The optional Resources can be removed by using the compilation flags in the form IOWA_<OBJECT>_RSC_<RESOURCE>_REMOVE.

IOWA_REMOVE_ALL_OPTIONAL_RESOURCES

This flag removes all the optional Resources in the IOWA-implemented Objects. Optional Ressources can be enabled by using the compilation flags in the form IOWA_<OBJECT>_SUPPORT_RSC_<RESOURCE>.

APN Connection Profile

Default Mode
  • IOWA_APN_CONNECTION_PROFILE_RSC_APN_REMOVE: Disable the resource "APN" (Id: 1)
  • IOWA_APN_CONNECTION_PROFILE_RSC_AUTO_SELECT_APN_DEVICE_REMOVE: Disable the resource "Auto select APN by device" (Id: 2)
  • IOWA_APN_CONNECTION_PROFILE_RSC_ENABLE_STATUS_REMOVE: Disable the resource "Enable status" (Id: 3)
  • IOWA_APN_CONNECTION_PROFILE_RSC_USER_NAME_REMOVE: Disable the resource "User Name" (Id: 5)
  • IOWA_APN_CONNECTION_PROFILE_RSC_SECRET_REMOVE: Disable the resource "Secret" (Id: 6)
  • IOWA_APN_CONNECTION_PROFILE_RSC_RECONNECT_SCHEDULE_REMOVE: Disable the resource "Reconnect Schedule" (Id: 7)
  • IOWA_APN_CONNECTION_PROFILE_RSC_VALIDITY_REMOVE: Disable the resource "Validity (MCC, MNC)" (Id: 8)
  • IOWA_APN_CONNECTION_PROFILE_RSC_CONN_ESTABLISHMENT_TIME_REMOVE: Disable the resource "Connection establishment time" (Id: 9)
  • IOWA_APN_CONNECTION_PROFILE_RSC_CONN_ESTABLISHMENT_RESULT_REMOVE: Disable the resource "Connection establishment result" (Id: 10)
  • IOWA_APN_CONNECTION_PROFILE_RSC_CONN_ESTABLISHMENT_REJECT_CAUSE_REMOVE: Disable the resource "Connection establishment reject cause" (Id: 11)
  • IOWA_APN_CONNECTION_PROFILE_RSC_CONNECTION_END_TIME_REMOVE: Disable the resource "Connection end time" (Id: 12)
  • IOWA_APN_CONNECTION_PROFILE_RSC_TOTAL_BYTES_SENT_REMOVE: Disable the resource "TotalBytesSent" (Id: 13)
  • IOWA_APN_CONNECTION_PROFILE_RSC_TOTAL_BYTES_RECEIVED_REMOVE: Disable the resource "TotalBytesReceived" (Id: 14)
  • IOWA_APN_CONNECTION_PROFILE_RSC_IP_ADDRESS_REMOVE: Disable the resource "IP address" (Id: 15)
  • IOWA_APN_CONNECTION_PROFILE_RSC_PREFIX_LENGTH_REMOVE: Disable the resource "Prefix length" (Id: 16)
  • IOWA_APN_CONNECTION_PROFILE_RSC_SUBNET_MASK_REMOVE: Disable the resource "Subnet mask" (Id: 17)
  • IOWA_APN_CONNECTION_PROFILE_RSC_GATEWAY_REMOVE: Disable the resource "Gateway" (Id: 18)
  • IOWA_APN_CONNECTION_PROFILE_RSC_PRIMARY_DNS_ADDRESS_REMOVE: Disable the resource "Primary DNS address" (Id: 19)
  • IOWA_APN_CONNECTION_PROFILE_RSC_SECONDARY_DNS_ADDRESS_REMOVE: Disable the resource "Secondary DNS address" (Id: 20)
  • IOWA_APN_CONNECTION_PROFILE_RSC_QCI_REMOVE: Disable the resource "QCI" (Id: 21)
  • IOWA_APN_CONNECTION_PROFILE_RSC_TOTAL_PACKETS_SENT_REMOVE: Disable the resource "TotalPacketsSent" (Id: 23)
  • IOWA_APN_CONNECTION_PROFILE_RSC_PDN_TYPE_REMOVE: Disable the resource "PDN Type" (Id: 24)
  • IOWA_APN_CONNECTION_PROFILE_RSC_APN_RATE_CONTROL_REMOVE: Disable the resource "APN Rate Control" (Id: 25)
Remove All Mode

When IOWA_REMOVE_ALL_OPTIONAL_RESOURCES is defined.

  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_APN: Enable the resource "APN" (Id: 1)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_AUTO_SELECT_APN_DEVICE: Enable the resource "Auto select APN by device" (Id: 2)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_ENABLE_STATUS: Enable the resource "Enable status" (Id: 3)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_USER_NAME: Enable the resource "User Name" (Id: 5)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_SECRET: Enable the resource "Secret" (Id: 6)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_RECONNECT_SCHEDULE: Enable the resource "Reconnect Schedule" (Id: 7)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_VALIDITY: Enable the resource "Validity (MCC, MNC)" (Id: 8)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_CONN_ESTABLISHMENT_TIME: Enable the resource "Connection establishment time" (Id: 9)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_CONN_ESTABLISHMENT_RESULT: Enable the resource "Connection establishment result" (Id: 10)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_CONN_ESTABLISHMENT_REJECT_CAUSE: Enable the resource "Connection establishment reject cause" (Id: 11)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_CONNECTION_END_TIME: Enable the resource "Connection end time" (Id: 12)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_TOTAL_BYTES_SENT: Enable the resource "TotalBytesSent" (Id: 13)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_TOTAL_BYTES_RECEIVED: Enable the resource "TotalBytesReceived" (Id: 14)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_IP_ADDRESS: Enable the resource "IP address" (Id: 15)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_PREFIX_LENGTH: Enable the resource "Prefix length" (Id: 16)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_SUBNET_MASK: Enable the resource "Subnet mask" (Id: 17)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_GATEWAY: Enable the resource "Gateway" (Id: 18)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_PRIMARY_DNS_ADDRESS: Enable the resource "Primary DNS address" (Id: 19)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_SECONDARY_DNS_ADDRESS: Enable the resource "Secondary DNS address" (Id: 20)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_QCI: Enable the resource "QCI" (Id: 21)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_TOTAL_PACKETS_SENT: Enable the resource "TotalPacketsSent" (Id: 23)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_PDN_TYPE: Enable the resource "PDN Type" (Id: 24)
  • IOWA_APN_CONNECTION_PROFILE_SUPPORT_RSC_APN_RATE_CONTROL: Enable the resource "APN Rate Control" (Id: 25)

Bearer Selection

Those defines are only relevant if IOWA_SUPPORT_BEARER_SELECTION_OBJECT is set.

Default Mode
  • IOWA_BEARER_SELECTION_RSC_PREFERRED_COMM_BEARER_REMOVE: Disable the resource "Preferred Communications Bearer" (Id: 0)
  • IOWA_BEARER_SELECTION_RSC_ACCEPTABLE_RSSI_GSM_REMOVE: Disable the resource "Acceptable RSSI (GSM)" (Id: 1)
  • IOWA_BEARER_SELECTION_RSC_ACCEPTABLE_RSCP_UMTS_REMOVE: Disable the resource "Acceptable RSCP (UMTS)" (Id: 2)
  • IOWA_BEARER_SELECTION_RSC_ACCEPTABLE_RSRP_LTE_REMOVE: Disable the resource "Acceptable RSRP (LTE)" (Id: 3)
  • IOWA_BEARER_SELECTION_RSC_ACCEPTABLE_RSSI_EV_DO_REMOVE: Disable the resource "Acceptable RSSI (1xEV-DO)" (Id: 4)
  • IOWA_BEARER_SELECTION_RSC_CELL_LOCK_LIST_REMOVE: Disable the resource "Cell lock list" (Id: 5)
  • IOWA_BEARER_SELECTION_RSC_OPERATOR_LIST_REMOVE: Disable the resource "Operator list" (Id: 6)
  • IOWA_BEARER_SELECTION_RSC_OPERATOR_LIST_MODE_REMOVE: Disable the resource "Operator list mode" (Id: 7)
  • IOWA_BEARER_SELECTION_RSC_AVAILABLE_PLMNS_REMOVE: Disable the resource "List of available PLMNs" (Id: 8)
  • IOWA_BEARER_SELECTION_RSC_ACCEPTABLE_RSRP_NB_IOT_REMOVE: Disable the resource "Acceptable RSRP (NB-IoT" (Id: 10)
  • IOWA_BEARER_SELECTION_RSC_PLMN_SEARCH_TIMER_REMOVE: Disable the resource "Higher Priority PLMN Search Timer" (Id: 11)
  • IOWA_BEARER_SELECTION_RSC_ATTACH_WO_PDN_CONNECTION_REMOVE: Disable the resource "Attach without PDN connection" (Id: 12)
Remove All Mode

When IOWA_REMOVE_ALL_OPTIONAL_RESOURCES is defined.

At least one of these defines must be set as this Object composed of only optional Resources.

  • IOWA_BEARER_SELECTION_SUPPORT_RSC_PREFERRED_COMM_BEARER: Enable the resource "Preferred Communications Bearer" (Id: 0)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_ACCEPTABLE_RSSI_GSM: Enable the resource "Acceptable RSSI (GSM)" (Id: 1)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_ACCEPTABLE_RSCP_UMTS: Enable the resource "Acceptable RSCP (UMTS)" (Id: 2)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_ACCEPTABLE_RSRP_LTE: Enable the resource "Acceptable RSRP (LTE)" (Id: 3)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_ACCEPTABLE_RSSI_EV_DO: Enable the resource "Acceptable RSSI (1xEV-DO)" (Id: 4)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_CELL_LOCK_LIST: Enable the resource "Cell lock list" (Id: 5)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_OPERATOR_LIST: Enable the resource "Operator list" (Id: 6)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_OPERATOR_LIST_MODE: Enable the resource "Operator list mode" (Id: 7)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_AVAILABLE_PLMNS: Enable the resource "List of available PLMNs" (Id: 8)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_ACCEPTABLE_RSRP_NB_IOT: Enable the resource "Acceptable RSRP (NB-IoT" (Id: 10)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_PLMN_SEARCH_TIMER: Enable the resource "Higher Priority PLMN Search Timer" (Id: 11)
  • IOWA_BEARER_SELECTION_SUPPORT_RSC_ATTACH_WO_PDN_CONNECTION: Enable the resource "Attach without PDN connection" (Id: 12)

Cellular Connectivity

Default Mode
  • IOWA_CELLULAR_CONNECTIVITY_RSC_SMSC_ADDRESS_REMOVE: Disable the resource "SMSC address" (Id: 0)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_DISABLE_RADIO_PERIOD_REMOVE: Disable the resource "Disable radio period" (Id: 1)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_MODULE_ACTIVATION_CODE_REMOVE: Disable the resource "Module activation code" (Id: 2)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_PSM_TIMER_REMOVE: Disable the resource "PSM Timer" (Id: 4)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_ACTIVE_TIMER_REMOVE: Disable the resource "Active Timer" (Id: 5)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_PLMN_RATE_CONTROL_REMOVE: Disable the resource "Serving PLMN Rate control" (Id: 6)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_EDRX_PARAM_IU_MODE_REMOVE: Disable the resource "eDRX parameters for Iu mode" (Id: 7)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_EDRX_PARAM_WB_S1_MODE_REMOVE: Disable the resource "eDRX parameters for WB-S1 mode" (Id: 8)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_EDRX_PARAM_NB_S1_MODE_REMOVE: Disable the resource "eDRX parameters for NB-S1 mode" (Id: 9)
  • IOWA_CELLULAR_CONNECTIVITY_RSC_EDRX_PARAM_A_GB_MODE_REMOVE: Disable the resource "eDRX parameters for A/Gb mode" (Id: 10)
Remove All Mode

When IOWA_REMOVE_ALL_OPTIONAL_RESOURCES is defined.

  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_SMSC_ADDRESS: Enable the resource "SMSC address" (Id: 0)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_DISABLE_RADIO_PERIOD: Enable the resource "Disable radio period" (Id: 1)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_MODULE_ACTIVATION_CODE: Enable the resource "Module activation code" (Id: 2)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_PSM_TIMER: Enable the resource "PSM Timer" (Id: 4)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_ACTIVE_TIMER: Enable the resource "Active Timer" (Id: 5)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_PLMN_RATE_CONTROL: Enable the resource "Serving PLMN Rate control" (Id: 6)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_EDRX_PARAM_IU_MODE: Enable the resource "eDRX parameters for Iu mode" (Id: 7)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_EDRX_PARAM_WB_S1_MODE: Enable the resource "eDRX parameters for WB-S1 mode" (Id: 8)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_EDRX_PARAM_NB_S1_MODE: Enable the resource "eDRX parameters for NB-S1 mode" (Id: 9)
  • IOWA_CELLULAR_CONNECTIVITY_SUPPORT_RSC_EDRX_PARAM_A_GB_MODE: Enable the resource "eDRX parameters for A/Gb mode" (Id: 10)

Connectivity Monitoring

Default Mode
  • IOWA_CONNECTIVITY_MONITORING_RSC_LINK_QUALITY_REMOVE: Disable the resource "Link Quality" (Id: 3)
  • IOWA_CONNECTIVITY_MONITORING_RSC_ROUTER_IP_ADDR_REMOVE: Disable the resource "Router IP Addresses" (Id: 5)
  • IOWA_CONNECTIVITY_MONITORING_RSC_LINK_USAGE_REMOVE: Disable the resource "Link Utilization" (Id: 6)
  • IOWA_CONNECTIVITY_MONITORING_RSC_APN_REMOVE: Disable the resource "APN" (Id: 7)
  • IOWA_CONNECTIVITY_MONITORING_RSC_CELL_ID_REMOVE: Disable the resource "Cell ID" (Id: 8)
  • IOWA_CONNECTIVITY_MONITORING_RSC_SMNC_REMOVE: Disable the resource "SMNC" (Id: 9)
  • IOWA_CONNECTIVITY_MONITORING_RSC_SMCC_REMOVE: Disable the resource "SMCC" (Id: 10)
Remove All Mode

When IOWA_REMOVE_ALL_OPTIONAL_RESOURCES is defined.

  • IOWA_CONNECTIVITY_MONITORING_SUPPORT_RSC_LINK_QUALITY: Disable the resource "Link Quality" (Id: 3)
  • IOWA_CONNECTIVITY_MONITORING_SUPPORT_RSC_ROUTER_IP_ADDR: Disable the resource "Router IP Addresses" (Id: 5)
  • IOWA_CONNECTIVITY_MONITORING_SUPPORT_RSC_LINK_USAGE: Disable the resource "Link Utilization" (Id: 6)
  • IOWA_CONNECTIVITY_MONITORING_SUPPORT_RSC_APN: Disable the resource "APN" (Id: 7)
  • IOWA_CONNECTIVITY_MONITORING_SUPPORT_RSC_CELL_ID: Disable the resource "Cell ID" (Id: 8)
  • IOWA_CONNECTIVITY_MONITORING_SUPPORT_RSC_SMNC: Disable the resource "SMNC" (Id: 9)
  • IOWA_CONNECTIVITY_MONITORING_SUPPORT_RSC_SMCC: Disable the resource "SMCC" (Id: 10)

Device

Default Mode
  • IOWA_DEVICE_RSC_MANUFACTURER_REMOVE: Disable the resource "Manufacturer" (Id: 0)
  • IOWA_DEVICE_RSC_MODEL_NUMBER_REMOVE: Disable the resource "Model Number" (Id: 1)
  • IOWA_DEVICE_RSC_SERIAL_NUMBER_REMOVE: Disable the resource "Serial Number" (Id: 2)
  • IOWA_DEVICE_RSC_FIRMWARE_VERSION_REMOVE: Disable the resource "Firmware Version" (Id: 3)
  • IOWA_DEVICE_RSC_FACTORY_RESET_REMOVE: Disable the resource "Factory Reset" (Id: 5)
  • IOWA_DEVICE_RSC_POWER_SOURCE_REMOVE: Disable the resources "Available Power Sources" (Id: 6), "Power Source Voltage" (Id: 7) and "Power Source Current" (Id: 8)
  • IOWA_DEVICE_RSC_BATTERY_REMOVE: Disable the resources "Battery Level" (Id: 9) and "Battery Status" (Id: 20)
  • IOWA_DEVICE_RSC_RESET_ERROR_REMOVE: Disable the resource "Reset Error Code" (Id: 12)
  • IOWA_DEVICE_RSC_CURRENT_TIME_REMOVE: Disable the resource "Current Time" (Id: 13)
  • IOWA_DEVICE_RSC_UTC_OFFSET_REMOVE: Disable the resource "UTC Offset" (Id: 14)
  • IOWA_DEVICE_RSC_TIMEZONE_REMOVE: Disable the resource "Timezone" (Id: 15)
  • IOWA_DEVICE_RSC_DEVICE_TYPE_REMOVE: Disable the resource "Device Type" (Id: 17)
  • IOWA_DEVICE_RSC_HARDWARE_VERSION_REMOVE: Disable the resource "Hardware Version" (Id: 18)
  • IOWA_DEVICE_RSC_SOFTWARE_VERSION_REMOVE: Disable the resource "Software Version" (Id: 19)
  • IOWA_DEVICE_RSC_MEMORY_TOTAL_REMOVE: Disable the resource "Memory Total" (Id: 21)
  • IOWA_DEVICE_RSC_MEMORY_FREE_REMOVE: Disable the resource "Memory Free" (Id: 10)
  • IOWA_DEVICE_RSC_EXTERNAL_INFO_REMOVE: Disable the resource "ExtDevInfo" (Id: 22)
Remove All Mode

When IOWA_REMOVE_ALL_OPTIONAL_RESOURCES is defined.

  • IOWA_DEVICE_SUPPORT_RSC_MANUFACTURER: Enable the resource "Manufacturer" (Id: 0)
  • IOWA_DEVICE_SUPPORT_RSC_MODEL_NUMBER: Enable the resource "Model Number" (Id: 1)
  • IOWA_DEVICE_SUPPORT_RSC_SERIAL_NUMBER: Enable the resource "Serial Number" (Id: 2)
  • IOWA_DEVICE_SUPPORT_RSC_FIRMWARE_VERSION: Enable the resource "Firmware Version" (Id: 3)
  • IOWA_DEVICE_SUPPORT_RSC_FACTORY_RESET: Enable the resource "Factory Reset" (Id: 5)
  • IOWA_DEVICE_SUPPORT_RSC_POWER_SOURCE: Enable the resources "Available Power Sources" (Id: 6), "Power Source Voltage" (Id: 7) and "Power Source Current" (Id: 8)
  • IOWA_DEVICE_SUPPORT_RSC_BATTERY: Enable the resources "Battery Level" (Id: 9) and "Battery Status" (Id: 20)
  • IOWA_DEVICE_SUPPORT_RSC_RESET_ERROR: Enable the resource "Reset Error Code" (Id: 12)
  • IOWA_DEVICE_SUPPORT_RSC_CURRENT_TIME: Enable the resource "Current Time" (Id: 13)
  • IOWA_DEVICE_SUPPORT_RSC_UTC_OFFSET: Enable the resource "UTC Offset" (Id: 14)
  • IOWA_DEVICE_SUPPORT_RSC_TIMEZONE: Enable the resource "Timezone" (Id: 15)
  • IOWA_DEVICE_SUPPORT_RSC_DEVICE_TYPE: Enable the resource "Device Type" (Id: 17)
  • IOWA_DEVICE_SUPPORT_RSC_HARDWARE_VERSION: Enable the resource "Hardware Version" (Id: 18)
  • IOWA_DEVICE_SUPPORT_RSC_SOFTWARE_VERSION: Enable the resource "Software Version" (Id: 19)
  • IOWA_DEVICE_SUPPORT_RSC_MEMORY_TOTAL: Enaable the resource "Memory Total" (Id: 21)
  • IOWA_DEVICE_SUPPORT_RSC_MEMORY_FREE: Enable the resource "Memory Free" (Id: 10)
  • IOWA_DEVICE_SUPPORT_RSC_EXTERNAL_INFO: Enable the resource "ExtDevInfo" (Id: 22)

Server

Default Mode
  • IOWA_SERVER_RSC_DISABLE_TIMEOUT_REMOVE: Disable resources "Disable" (Id: 4) and "Disable Timeout" (Id: 5)
  • IOWA_SERVER_RSC_DEFAULT_PERIODS_REMOVE: Disable resources "Default Minimum Period" (Id: 2) and "Default Maximum Period" (Id: 3)
  • IOWA_SERVER_RSC_BOOTSTRAP_TRIGGER_REMOVE: Disable the resource "Bootstrap-Request Trigger" (Id: 9). This resource is also disabled when LWM2M_BOOTSTRAP is not defined.
  • IOWA_SERVER_RSC_REGISTRATION_BEHAVIOUR_REMOVE: Disable resources "Registration Priority Order" (Id: 13), "Initial Registration Delay Timer" (Id: 14), "Registration Failure Block" (Id: 15) and "Bootstrap on Registration Failure" (Id: 16). These resources are also disabled when LWM2M_VERSION_1_1_SUPPORT is not defined.
  • IOWA_SERVER_RSC_COMMUNICATION_ATTEMPTS_REMOVE: Disable resources "Communication Retry Count" (Id: 17), "Communication Retry Timer" (Id: 18), "Communication Sequence Delay Timer" (Id: 19) and "Communication Sequence Retry Count" (Id: 20). These resources are also disabled when LWM2M_VERSION_1_1_SUPPORT is not defined.
  • IOWA_SERVER_RSC_MUTE_SEND_REMOVE: Disable resources "Mute Send" (Id: 23). Only relevant when LWM2M_DATA_PUSH_SUPPORT is set.
Remove All Mode

When IOWA_REMOVE_ALL_OPTIONAL_RESOURCES is defined.

  • IOWA_SERVER_SUPPORT_RSC_DISABLE_TIMEOUT: Enable resources "Disable" (Id: 4) and "Disable Timeout" (Id: 5)
  • IOWA_SERVER_SUPPORT_RSC_DEFAULT_PERIODS: Enable resources "Default Minimum Period" (Id: 2) and "Default Maximum Period" (Id: 3)
  • IOWA_SERVER_SUPPORT_RSC_BOOTSTRAP_TRIGGER: Enable the resource "Bootstrap-Request Trigger" (Id: 9). This resource is available only if LWM2M_BOOTSTRAP is defined.
  • IOWA_SERVER_SUPPORT_RSC_REGISTRATION_BEHAVIOUR: Enable resources "Registration Priority Order" (Id: 13), "Initial Registration Delay Timer" (Id: 14), "Registration Failure Block" (Id: 15) and "Bootstrap on Registration Failure" (Id: 16). These resources are available only if LWM2M_VERSION_1_1_SUPPORT is defined.
  • IOWA_SERVER_SUPPORT_RSC_COMMUNICATION_ATTEMPTS: Enable resources "Communication Retry Count" (Id: 17), "Communication Retry Timer" (Id: 18), "Communication Sequence Delay Timer" (Id: 19) and "Communication Sequence Retry Count" (Id: 20). These resources are available only if LWM2M_VERSION_1_1_SUPPORT is defined.
  • IOWA_SERVER_SUPPORT_RSC_MUTE_SEND: Enable resources "Mute Send" (Id: 23). This resource is available only if LWM2M_DATA_PUSH_SUPPORT is defined.
Default Values

As well, some resources contain default value which can be updated using the following defines:

  • IOWA_SERVER_RSC_DISABLE_TIMEOUT_DEFAULT_VALUE: Update default resource value of "Disable Timeout" (Id: 5). Only relevant if IOWA_SERVER_SUPPORT_RSC_DISABLE_TIMEOUT is defined.
  • IOWA_SERVER_RSC_STORING_DEFAULT_VALUE: Update default resource value of "Notification Storing When Disabled or Offline" (Id: 6)
  • IOWA_SERVER_RSC_MUTE_SEND_DEFAULT_VALUE: Update default resource value of "Mute Send" (Id: 23). Only relevant if IOWA_SERVER_SUPPORT_RSC_MUTE_SEND is defined.

Light Control

Default Mode
  • IOWA_LIGHT_CONTROL_RSC_DIMMER_REMOVE: Disable the resource "Dimmer" (Id: 5851)
  • IOWA_LIGHT_CONTROL_RSC_ON_TIME_REMOVE: Disable the resource "On time" (Id: 5852)
  • IOWA_LIGHT_CONTROL_RSC_CUMULATIVE_ACTIVE_POWER_REMOVE: Disable the resource "Cumulative active power" (Id: 5805)
  • IOWA_LIGHT_CONTROL_RSC_POWER_FACTOR_REMOVE: Disable the resource "Power factor" (Id: 5820)
  • IOWA_LIGHT_CONTROL_RSC_COLOUR_REMOVE: Disable the resources "Colour" (Id: 5706) and "Sensor Units" (Id: 5701)
Remove All Mode

When IOWA_REMOVE_ALL_OPTIONAL_RESOURCES is defined.

  • IOWA_LIGHT_CONTROL_SUPPORT_RSC_DIMMER: Enable the resource "Dimmer" (Id: 5851)
  • IOWA_LIGHT_CONTROL_SUPPORT_RSC_ON_TIME: Enable the resource "On time" (Id: 5852)
  • IOWA_LIGHT_CONTROL_SUPPORT_RSC_CUMULATIVE_ACTIVE_POWER: Enable the resource "Cumulative active power" (Id: 5805)
  • IOWA_LIGHT_CONTROL_SUPPORT_RSC_POWER_FACTOR: Enable the resource "Power factor" (Id: 5820)
  • IOWA_LIGHT_CONTROL_SUPPORT_RSC_COLOUR: Enable the resources "Colour" (Id: 5706) and "Sensor Units" (Id: 5701)