Configuration

This is the default configuration of the middleware. When any of the settings shall be modified, it shall be done in dedicated application config lwcell_opts.h file.

Note

Check Getting started for guidelines on how to create and use configuration file.

group LWCELL_OPT

LwCELL options.

Defines

LWCELL_CFG_OS

Enables 1 or disables 0 operating system support for GSM library.

Note

Value must be set to 1 in the current revision

Note

Check OS configuration group for more configuration related to operating system

LWCELL_CFG_MEM_CUSTOM

Enables 1 or disables 0 custom memory management functions.

When set to 1, Memory manager block must be provided manually. This includes implementation of functions lwcell_mem_malloc, lwcell_mem_calloc, lwcell_mem_realloc and lwcell_mem_free

Note

Function declaration follows standard C functions malloc, calloc, realloc, free. Declaration is available in lwcell/lwcell_mem.h file. Include this file to final implementation file

Note

When implementing custom memory allocation, it is necessary to take care of multiple threads accessing same resource for custom allocator

LWCELL_CFG_MEM_ALIGNMENT

Memory alignment for dynamic memory allocations.

Note

Some CPUs can work faster if memory is aligned, usually to 4 or 8 bytes. To speed up this possibilities, you can set memory alignment and library will try to allocate memory on aligned boundaries.

Note

Some CPUs such ARM Cortex-M0 don’t support unaligned memory access. This CPUs must have set correct memory alignment value.

Note

This value must be power of 2

LWCELL_CFG_USE_API_FUNC_EVT

Enables 1 or disables 0 callback function and custom parameter for API functions.

When enabled, 2 additional parameters are available in API functions. When command is executed, callback function with its parameter could be called when not set to NULL.

LWCELL_CFG_AT_PORT_BAUDRATE

Default baudrate used for AT port.

Note

Later, user may call API function to change to desired baudrate if necessary

LWCELL_CFG_RCV_BUFF_SIZE

Buffer size for received data waiting to be processed.

Note

When server mode is active and a lot of connections are in queue this should be set high otherwise your buffer may overflow

Note

Buffer size also depends on TX user driver if it uses DMA or blocking mode In case of DMA (CPU can work other tasks), buffer may be smaller as CPU will have more time to process all the incoming bytes

Note

This parameter has no meaning when LWCELL_CFG_INPUT_USE_PROCESS is enabled

LWCELL_CFG_RESET_ON_INIT

Enables 1 or disables 0 reset sequence after lwcell_init call.

Note

When this functionality is disabled, user must manually call lwcell_reset to send reset sequence to GSM device.

LWCELL_CFG_RESET_ON_DEVICE_PRESENT

Enables 1 or disables 0 reset sequence after lwcell_device_set_present call.

Note

When this functionality is disabled, user must manually call lwcell_reset to send reset sequence to GSM device.

LWCELL_CFG_RESET_DELAY_DEFAULT

Default delay (milliseconds unit) before sending first AT command on reset sequence.

LWCELL_CFG_RESET_DELAY_AFTER

Default delay (milliseconds unit) after reset sequence.

LWCELL_CFG_KEEP_ALIVE

Enables 1 or disables 0 periodic keep-alive events to registered callbacks.

LWCELL_CFG_KEEP_ALIVE_TIMEOUT

Timeout periodic time to trigger keep alive events to registered callbacks.

Feature must be enabled with LWCELL_CFG_KEEP_ALIVE

LWCELL_CFG_CONN_POLL_INTERVAL

Poll interval for connections in units of milliseconds.

Value indicates interval time to call poll event on active connections.

Note

Single poll interval applies for all connections

Connection settings.

Defines

LWCELL_CFG_MAX_CONNS

Maximal number of connections AT software can support on GSM device.

LWCELL_CFG_CONN_MAX_DATA_LEN

Maximal number of bytes we can send at single command to GSM.

Note

Value can not exceed 1460 bytes or no data will be ever send

Note

This is limitation of GSM AT commands and on systems where RAM is not an issue, it should be set to maximal value (1460) to optimize data transfer speed performance

LWCELL_CFG_CONN_MIN_DATA_LEN

Minimal buffer in bytes for connection receive allocation.

             Allocation will always start with (up to) \ref LWCELL_CFG_CONN_MAX_DATA_LEN
             and will continue with trial down to this setting up until allocating is successful.
LWCELL_CFG_MAX_SEND_RETRIES

Set number of retries for send data command.

Sometimes it may happen that AT+SEND command fails due to different problems. Trying to send the same data multiple times can raise chances we are successful.

Debugging configurations.

Defines

LWCELL_CFG_DBG

Set global debug support.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

Note

Set to LWCELL_DBG_OFF to globally disable all debugs

LWCELL_CFG_DBG_OUT(fmt, ...)

Debugging output function.

             Called with format and optional parameters for printf style debug
LWCELL_CFG_DBG_LVL_MIN

Minimal debug level.

             Check \ref LWCELL_DBG_LVL for possible values
LWCELL_CFG_DBG_TYPES_ON

Enabled debug types.

When debug is globally enabled with LWCELL_CFG_DBG parameter, user must enable debug types such as TRACE or STATE messages.

Check LWCELL_DBG_TYPE for possible options. Separate values with bitwise OR operator

LWCELL_CFG_DBG_INIT

Set debug level for init function.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_MEM

Set debug level for memory manager.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_INPUT

Set debug level for input module.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_THREAD

Set debug level for GSM threads.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_ASSERT

Set debug level for asserting of input variables.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_IPD

Set debug level for incoming data received from device.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_PBUF

Set debug level for packet buffer manager.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_CONN

Set debug level for connections.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_VAR

Set debug level for dynamic variable allocations.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_NETCONN

Set debug level for netconn sequential API.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_AT_ECHO

Enables 1 or disables 0 echo mode on AT commands sent to GSM device.

Note

This mode is useful when debugging GSM communication

Operating system dependant configuration.

Defines

LWCELL_CFG_THREAD_PRODUCER_MBOX_SIZE

Set number of message queue entries for procuder thread.

Message queue is used for storing memory address to command data

LWCELL_CFG_THREAD_PROCESS_MBOX_SIZE

Set number of message queue entries for processing thread.

Message queue is used to notify processing thread about new received data on AT port

LWCELL_CFG_INPUT_USE_PROCESS

Enables 1 or disables 0 direct support for processing input data.

When this mode is enabled, no overhead is included for copying data to receive buffer because bytes are processed directly.

Note

This mode can only be used when LWCELL_CFG_OS is enabled

Note

When using this mode, separate thread must be dedicated only for reading data on AT port

Note

Best case for using this mode is if DMA receive is supported by host device

LWCELL_THREAD_PRODUCER_HOOK()

Producer thread hook, called each time thread wakes-up and does the processing.

It can be used to check if thread is alive.

LWCELL_THREAD_PROCESS_HOOK()

Process thread hook, called each time thread wakes-up and does the processing.

It can be used to check if thread is alive.

LWCELL_CFG_THREADX_CUSTOM_MEM_BYTE_POOL

Enables 1 or disables 0 custom memory byte pool extension for ThreadX port.

When enabled, user must manually set byte pool at run-time, before lwcell_init is called

LWCELL_CFG_THREADX_IDLE_THREAD_EXTENSION

Enables 1 or disables 0 idle thread extensions feature of ThreadX.

When enabled, user must manually configure idle thread and setup additional thread handle extension fields. By default ThreadX doesn’t support self-thread cleanup when thread memory is dynamically allocated & thread terminated, hence another thread is mandatory to do the cleanup process instead.

This configuration does not create idle-thread, rather only sets additional TX_THREAD fields, indicating thread handle and thread stack are dynamically allocated.

Have a look at System-ThreadX port for implementation

Configuration of specific modules.

Defines

LWCELL_CFG_NETWORK

Enables 1 or disables 0 network functionality used for TCP/IP communication.

Network must be enabled to use all GPRS/LTE functions such as connection API, FTP, HTTP, etc.

LWCELL_CFG_NETWORK_IGNORE_CGACT_RESULT

Ignores 1 or not 0 result from AT+CGACT command.

Note

This may be used for data-only SIM cards where command might fail when trying to attach to network for data transfer

LWCELL_CFG_CONN

Enables 1 or disables 0 connection API.

Note

LWCELL_CFG_NETWORK must be enabled to use connection feature

LWCELL_CFG_SMS

Enables 1 or disables 0 SMS API.

LWCELL_CFG_CALL

Enables 1 or disables 0 call API.

LWCELL_CFG_PHONEBOOK

Enables 1 or disables 0 phonebook API.

LWCELL_CFG_HTTP

Enables 1 or disables 0 HTTP API.

Note

LWCELL_CFG_NETWORK must be enabled to use connection feature

LWCELL_CFG_FTP

Enables 1 or disables 0 FTP API.

Note

LWCELL_CFG_NETWORK must be enabled to use connection feature

LWCELL_CFG_PING

Enables 1 or disables 0 PING API.

Note

LWCELL_CFG_NETWORK must be enabled to use connection feature

LWCELL_CFG_USSD

Enables 1 or disables 0 USSD API.

Configuration of netconn API module.

Defines

LWCELL_CFG_NETCONN

Enables 1 or disables 0 NETCONN sequential API support for OS systems.

See also

LWCELL_CFG_OS

Note

To use this feature, OS support is mandatory.

LWCELL_CFG_NETCONN_RECEIVE_TIMEOUT

Enables 1 or disables 0 receive timeout feature.

When this option is enabled, user will get an option to set timeout value for receive data on netconn, before function returns timeout error.

Note

Even if this option is enabled, user must still manually set timeout, by default time will be set to 0 which means no timeout.

LWCELL_CFG_NETCONN_ACCEPT_QUEUE_LEN

Accept queue length for new client when netconn server is used.

Defines number of maximal clients waiting in accept queue of server connection

LWCELL_CFG_NETCONN_RECEIVE_QUEUE_LEN

Receive queue length for pbuf entries.

Defines maximal number of pbuf data packet references for receive

Configuration of MQTT and MQTT API client modules.

Defines

LWCELL_CFG_MQTT_MAX_REQUESTS

Maximal number of open MQTT requests at a time.

LWCELL_CFG_MQTT_API_MBOX_SIZE

Size of MQTT API message queue for received messages.

LWCELL_CFG_DBG_MQTT

Set debug level for MQTT client module.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

LWCELL_CFG_DBG_MQTT_API

Set debug level for MQTT API client module.

Possible values are LWCELL_DBG_ON or LWCELL_DBG_OFF

Standard C library configuration.

Configuration allows you to overwrite default C language function in case of better implementation with hardware (for example DMA for data copy).

Defines

LWCELL_MEMCPY(dst, src, len)

Memory copy function declaration.

User is able to change the memory function, in case hardware supports copy operation, it may implement its own

Function prototype must be similar to:

void *  my_memcpy(void* dst, const void* src, size_t len);
Parameters
  • dst[in] Destination memory start address

  • src[in] Source memory start address

  • len[in] Number of bytes to copy

Returns

Destination memory start address

LWCELL_MEMSET(dst, b, len)

Memory set function declaration.

Function prototype must be similar to:

void *  my_memset(void* dst, int b, size_t len);
Parameters
  • dst[in] Destination memory start address

  • b[in] Value (byte) to set in memory

  • len[in] Number of bytes to set

Returns

Destination memory start address