Device Client Architecture
The client library allows developers to use the Thingstream communications library in their own devices and also to integrate with their own hardware or modem implementations if required. The library is written in portable C. Developers are expected to be interfacing to this library in either C or C++. Support for other languages is outside of the scope of this guide.
The diagram below shows how the client is structured:
Developers write code against a platform independent developer API defined in a header file called client_api.h. Deliberately, this API has many similarities with MQTT - server-side Thingstream contains an MQTT broker/server for message passing and to interface with other server systems. Details of the API can be found in the Client API section.
The platform-independent code contained in the client library is responsible for marshalling and unmarshalling data passed in by 3rd party applications into messages that are sent over the air to the Thingstream server. It handles breaking messages up into multiple packets, and send/acknowledge handshaking.
Below this, the client library communicates with the device hardware through a modem transport API. This can be implemented by developers who are building their own hardware or can be based on examples provided by Thingstream for modem hardware that is compatible with 3GPP TS 27.007.