Which Transport to Use

The V2 SDK introduces a new UDP transport, but that's not to say you should stop using USSD. The choice comes down to the types of network that your Thing needs to operate on, and in some cases the size of your payloads.


The diagram below explains the decision process:



USSD / UDP


The SDK includes a modem driver (implemented as a ThingstreamTransport instance) that supports both USSD and UDP communication. This driver is used with a hardware specific modem configuration.

Each SDK includes examples which demonstrate how this can be easily incorporated into a sample application.

One such approach might be:

define a gsm buffer...

#define GSM_BUFFER_LENGTH 2000

static uint8_t gsmBuffer[GSM_BUFFER_LENGTH];

creating a ring or line buffer for callbacks as appropriate...

UDP

transport = Thingstream_createRingBufferTransport(transport,

gsmBuffer, GSM_BUFFER_LENGTH);

USSD

transport = Thingstream_createLineBufferTransport(transport,

gsmBuffer, GSM_BUFFER_LENGTH);

create the appropriate modem transport....

UDP

Define the modem buffer

#define MODEM2_BUFFER_LENGTH 1100

static uint8_t modemBuf[MODEM2_BUFFER_LENGTH];

When creating the transport remember to specify the initialisation routine for a particular UDP modem in this case it's the U-blox Lara-R211 modem.

The full list of supported modem initialisers can be found within the API Documentation provided in the download bundle.

transport = Thingstream_createModem2Transport(transport, 0, modemBuf, sizeof(modemBuf), Thingstream_uBloxLaraR2Init, Platform_debug_printf);

USSD

transport = Thingstream_createModemUssdTransport(transport, 0);

Still need help?

If you need more help or have any questions, please send an email to support@thingstream.io.