We provide a library for the LTEIoT5 Click as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
lteiot5_cfg_t lteiot5_cfg; /**< Click config object. */
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
Delay_ms ( 1000 );
// Click initialization.
lteiot5_cfg_setup( <eiot5_cfg );
LTEIOT5_MAP_MIKROBUS( lteiot5_cfg, MIKROBUS_1 );
err_t init_flag = lteiot5_init( <eiot5, <eiot5_cfg );
if ( init_flag == UART_ERROR )
{
log_error( &logger, " Application Init Error. " );
log_info( &logger, " Please, run program again... " );
for ( ; ; );
}
log_info( &logger, " Power on device... " );
lteiot5_reset( <eiot5 );
lteiot5_power_on( <eiot5 );
lteiot5_send_cmd( <eiot5, LTEIOT5_CMD_AT );
Delay_ms ( 500 );
lteiot5_process( );
lteiot5_clear_app_buf( );
//AT
lteiot5_send_cmd( <eiot5, LTEIOT5_CMD_AT );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//ATI
lteiot5_send_cmd( <eiot5, LTEIOT5_CMD_ATI );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//ATI
lteiot5_send_cmd( <eiot5, LTEIOT5_CMD_CGMR );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//CFUN
lteiot5_send_cmd_with_parameter( <eiot5, LTEIOT5_CMD_CFUN, "0" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//COPS
lteiot5_send_cmd_with_parameter( <eiot5, LTEIOT5_CMD_COPS, "2" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//CGDCONT
lteiot5_set_sim_apn( <eiot5, SIM_APN );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//URAT
lteiot5_send_cmd_with_parameter( <eiot5, LTEIOT5_CMD_URAT, "7" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//UBANDMASK,
lteiot5_send_cmd_with_parameter( <eiot5, LTEIOT5_CMD_UBANDMASK, "0,185473183" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//CFUN
lteiot5_send_cmd_with_parameter( <eiot5, LTEIOT5_CMD_CFUN, "1" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 1000 );
//CFUN
lteiot5_send_cmd_with_parameter( <eiot5, LTEIOT5_CMD_CFUN, "16" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
lteiot5_send_cmd_check( <eiot5, LTEIOT5_CMD_CFUN );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//COPS
lteiot5_send_cmd_check( <eiot5, LTEIOT5_CMD_COPS );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//UANTR
lteiot5_send_cmd_with_parameter( <eiot5, LTEIOT5_CMD_UANTR, "0" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//CEREG
lteiot5_send_cmd_with_parameter( <eiot5, LTEIOT5_CMD_CEREG, "2" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
//CIMI
lteiot5_send_cmd( <eiot5, LTEIOT5_CMD_CIMI );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
app_buf_len = 0;
app_buf_cnt = 0;
app_connection_status = WAIT_FOR_CONNECTION;
log_info( &logger, " Application Task " );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
Waits for device to connect to network and then sends SMS to selected phone number.
void application_task ( void )
{
if ( app_connection_status == WAIT_FOR_CONNECTION )
{
lteiot5_send_cmd_check( <eiot5, LTEIOT5_CMD_CGATT );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
lteiot5_send_cmd_check( <eiot5, LTEIOT5_CMD_CEREG );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 500 );
lteiot5_send_cmd( <eiot5, LTEIOT5_CMD_CSQ );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
else
{
log_info( &logger, "CONNECTED TO NETWORK" );
lteiot5_send_cmd_with_parameter( <eiot5, "AT+CMGF", "1" );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
for( ; ; )
{
log_printf( &logger, "> Sending message to phone number...\r\n" );
lteiot5_send_text_message( <eiot5, PHONE_NUMBER_TO_MESSAGE, MESSAGE_CONTENT );
app_error_flag = lteiot5_rsp_check();
lteiot5_error_check( app_error_flag );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
}
}
The full application code, and ready to use projects can be installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on mikroE github account.