WL865E4-P  36.07.001
M2MB MQTT

This section describes the M2MB APIs to perform various MQTT operations. More...

#define M2MB_MQTT_MAX_SUBSCRIBE_HANDLERS   16
 
typedef VOIDM2MB_MQTT_CTXT_HANDLE
 MQTT context handle.
This is obtained from m2mb_mqtt_connect API and then used in subsequent MQTT APIs. More...
 
typedef HANDLE M2MB_MQTT_CONN_PARAMS_HANDLE
 MQTT connection parameters handle.
This is obtained from m2mb_mqtt_con_params_create API and then used in subsequent MQTT APIs. More...
 
typedef VOID(* M2MB_MQTT_CONNECT_CB_T) (M2MB_MQTT_CTXT_HANDLE handle, INT32 status)
 MQTT connect call back prototype. More...
 
typedef VOID(* M2MB_MQTT_MSG_HNDLR_CB_T) (M2MB_MQTT_CTXT_HANDLE handle, void *arg, INT32 reason, const char *topic, UINT16 topic_Length, const char *msg, UINT32 msg_Length, UINT32 QOS)
 MQTT message handler call back prototype. More...
 
INT32 m2mb_mqtt_con_params_create (M2MB_MQTT_CONN_PARAMS_HANDLE *connect_params, const char *client_id, const char *host, long port, unsigned short keepalive_in_sec)
 m2mb_mqtt_con_params_create is called to create the connection parameters. More...
 
INT32 m2mb_mqtt_conn_params_set_username (M2MB_MQTT_CONN_PARAMS_HANDLE connect_params, const char *username, const char *password)
 m2mb_mqtt_conn_params_set_username is called to set the username. More...
 
M2MB_STATUS_T m2mb_mqtt_conn_params_set_timeout_in_sec (M2MB_MQTT_CONN_PARAMS_HANDLE connect_params, unsigned short timeout_in_sec)
 m2mb_mqtt_conn_params_set_timeout_in_sec is called to set timeout. More...
 
M2MB_STATUS_T m2mb_mqtt_conn_params_set_ssl_cfg (M2MB_MQTT_CONN_PARAMS_HANDLE connect_params, void *ssl_cfg)
 m2mb_mqtt_conn_params_set_ssl_cfg is called to set ssl config. More...
 
M2MB_STATUS_T m2mb_mqtt_conn_params_set_connectCallback (M2MB_MQTT_CONN_PARAMS_HANDLE connect_params, void *callback, void *callback_args)
 m2mb_mqtt_conn_params_set_connectCallback is called to to set call back API. More...
 
M2MB_STATUS_T m2mb_mqtt_conn_params_use_ssl (M2MB_MQTT_CONN_PARAMS_HANDLE connect_params, char *ca_file, char *cert_file)
 m2mb_mqtt_con_params_create is called to create the connection parameters. More...
 
INT32 m2mb_mqtt_conn_params_delete (M2MB_MQTT_CONN_PARAMS_HANDLE connect_params)
 m2mb_mqtt_conn_params_delete is called to delete all configured parameters. More...
 
INT32 m2mb_mqtt_connect (M2MB_MQTT_CTXT_HANDLE *mqtt_handle, M2MB_MQTT_CONN_PARAMS_HANDLE connect_params)
 m2mb_mqtt_connect is called to connect to the server. More...
 
int m2mb_mqtt_disconnect (M2MB_MQTT_CTXT_HANDLE mqtt_handle)
 m2mb_mqtt_disconnect is called to disconnect to the server. More...
 
int m2mb_mqtt_publish (M2MB_MQTT_CTXT_HANDLE mqtt_handle, int qos, int retain, unsigned short message_id, const char *topic, const char *data, int data_len)
 m2mb_mqtt_publish is called to Publishes a message. More...
 
int m2mb_mqtt_subscribe (M2MB_MQTT_CTXT_HANDLE mqtt_handle, unsigned short msg_id, const char *topic, int qos)
 m2mb_mqtt_subscribe is called to Subscribe. More...
 
int m2mb_mqtt_unsubscribe (M2MB_MQTT_CTXT_HANDLE mqtt_handle, unsigned short msg_id, const char *topic)
 m2mb_mqtt_unsubscribe is called to unsubscribe. More...
 
INT32 m2mb_mqtt_subscribe_handler_register (M2MB_MQTT_CTXT_HANDLE mqtt_handle, const char *topic, M2MB_MQTT_MSG_HNDLR_CB_T cbk, VOID *arg)
 m2mb_mqtt_subscribe_handler_register is called to unsubscribe. More...
 

Detailed Description

This section describes the M2MB APIs to perform various MQTT operations.

Macro Definition Documentation

◆ M2MB_MQTT_MAX_SUBSCRIBE_HANDLERS

#define M2MB_MQTT_MAX_SUBSCRIBE_HANDLERS   16

Macro for maximum subscribe handlers

Definition at line 44 of file m2mb_mqtt.h.

Typedef Documentation

◆ M2MB_MQTT_CONN_PARAMS_HANDLE

MQTT connection parameters handle.
This is obtained from m2mb_mqtt_con_params_create API and then used in subsequent MQTT APIs.

Definition at line 52 of file m2mb_mqtt.h.

◆ M2MB_MQTT_CONNECT_CB_T

typedef VOID(* M2MB_MQTT_CONNECT_CB_T) (M2MB_MQTT_CTXT_HANDLE handle, INT32 status)

MQTT connect call back prototype.

Callback to return the client status.

Definition at line 59 of file m2mb_mqtt.h.

◆ M2MB_MQTT_CTXT_HANDLE

MQTT context handle.
This is obtained from m2mb_mqtt_connect API and then used in subsequent MQTT APIs.

Definition at line 48 of file m2mb_mqtt.h.

◆ M2MB_MQTT_MSG_HNDLR_CB_T

typedef VOID(* M2MB_MQTT_MSG_HNDLR_CB_T) (M2MB_MQTT_CTXT_HANDLE handle, void *arg, INT32 reason, const char *topic, UINT16 topic_Length, const char *msg, UINT32 msg_Length, UINT32 QOS)

MQTT message handler call back prototype.

Subscribe callback.

Definition at line 65 of file m2mb_mqtt.h.

Function Documentation

◆ m2mb_mqtt_con_params_create()

INT32 m2mb_mqtt_con_params_create ( M2MB_MQTT_CONN_PARAMS_HANDLE connect_params,
const char *  client_id,
const char *  host,
long  port,
unsigned short  keepalive_in_sec 
)

m2mb_mqtt_con_params_create is called to create the connection parameters.

m2mb_mqtt_con_params_create stores the configuration set by user. This configuration is used when mqtt connect API is called.

Parameters
[out]connect_paramspointer to connection parameters to be used in subsequent MQTT APIs.
[in]client_idclient id.
[in]hosthost name.
[in]portport number.
[in]keepalive_in_seckeep alive time in seconds.
Returns
returns M2MB_OK on success, M2MB_ERR_NO_MEMORY value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
//mb_ssl_delete_config(s2w_mqtt_handle->pSslCfgHndl);
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_conn_params_delete()

INT32 m2mb_mqtt_conn_params_delete ( M2MB_MQTT_CONN_PARAMS_HANDLE  connect_params)

m2mb_mqtt_conn_params_delete is called to delete all configured parameters.

m2mb_mqtt_conn_params_delete is called to delete all configured parameters.

Parameters
[in]connect_paramspointer to connection parameters obtained from m2mb_mqtt_con_params_create API.
Returns
returns M2MB_OK on success, M2MB_ERROR value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_conn_params_set_connectCallback()

M2MB_STATUS_T m2mb_mqtt_conn_params_set_connectCallback ( M2MB_MQTT_CONN_PARAMS_HANDLE  connect_params,
void *  callback,
void *  callback_args 
)

m2mb_mqtt_conn_params_set_connectCallback is called to to set call back API.

m2mb_mqtt_conn_params_set_connectCallback stores the configuration set by user. THis call back API gets called for asynchronous connection events.

Parameters
[in]connect_paramsPointer to connection parameters obtained from m2mb_mqtt_con_params_create API.
[in]callbackCall back API.
[in]callback_argsCallback arguments.
Returns
Returns M2MB_OK on success, M2MB_ERROR value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
//mb_ssl_delete_config(s2w_mqtt_handle->pSslCfgHndl);
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_conn_params_set_ssl_cfg()

M2MB_STATUS_T m2mb_mqtt_conn_params_set_ssl_cfg ( M2MB_MQTT_CONN_PARAMS_HANDLE  connect_params,
void *  ssl_cfg 
)

m2mb_mqtt_conn_params_set_ssl_cfg is called to set ssl config.

m2mb_mqtt_conn_params_set_ssl_cfg sets ssl configuration.

Parameters
[in]connect_paramspointer to connection parameters obtained from m2mb_mqtt_con_params_create API.
[in]ssl_cfgssl config.
Returns
returns M2MB_OK on success, M2MB_ERROR value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
//mb_ssl_delete_config(s2w_mqtt_handle->pSslCfgHndl);
return M2MB_ERROR;
}
}>

◆ m2mb_mqtt_conn_params_set_timeout_in_sec()

M2MB_STATUS_T m2mb_mqtt_conn_params_set_timeout_in_sec ( M2MB_MQTT_CONN_PARAMS_HANDLE  connect_params,
unsigned short  timeout_in_sec 
)

m2mb_mqtt_conn_params_set_timeout_in_sec is called to set timeout.

m2mb_mqtt_conn_params_set_timeout_in_sec stores the configuration set by user. THis configuration is used when mqtt connect API is called.

Parameters
[in]connect_paramspointer to connection parameters obtained from m2mb_mqtt_con_params_create API.
[in]timeout_in_sectimeout in seconds.
Returns
returns M2MB_OK on success, M2MB_ERROR value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
//mb_ssl_delete_config(s2w_mqtt_handle->pSslCfgHndl);
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_conn_params_set_username()

INT32 m2mb_mqtt_conn_params_set_username ( M2MB_MQTT_CONN_PARAMS_HANDLE  connect_params,
const char *  username,
const char *  password 
)

m2mb_mqtt_conn_params_set_username is called to set the username.

m2mb_mqtt_conn_params_set_username stores the username set by user. This configuration is used when mqtt connect API is called.

Parameters
[in]connect_paramspointer to connection parameters obtained from m2mb_mqtt_con_params_create API.
[in]usernameusername
[in]passwordpassword
Returns
returns M2MB_OK on success, M2MB_ERR_NO_MEMORY value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
//mb_ssl_delete_config(s2w_mqtt_handle->pSslCfgHndl);
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_conn_params_use_ssl()

M2MB_STATUS_T m2mb_mqtt_conn_params_use_ssl ( M2MB_MQTT_CONN_PARAMS_HANDLE  connect_params,
char *  ca_file,
char *  cert_file 
)

m2mb_mqtt_con_params_create is called to create the connection parameters.

m2mb_mqtt_con_params_create stores the configuration set by user. This configuration is used when MQTT connect API is called.

Parameters
[in]connect_paramsPointer to connection parameters obtained from m2mb_mqtt_con_params_create API.
[in]ca_fileca file name.
[in]cert_filecertificate file name.
Returns
returns M2MB_OK on success, M2MB_ERROR value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
//mb_ssl_delete_config(s2w_mqtt_handle->pSslCfgHndl);
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_connect()

INT32 m2mb_mqtt_connect ( M2MB_MQTT_CTXT_HANDLE mqtt_handle,
M2MB_MQTT_CONN_PARAMS_HANDLE  connect_params 
)

m2mb_mqtt_connect is called to connect to the server.

m2mb_mqtt_connect is called connect to the server.

Parameters
[out]mqtt_handlemqtt handle obtained from m2mb_mqtt_connect API.
[in]connect_paramspointer to connection parameters obtained from m2mb_mqtt_con_params_create API.
Returns
returns M2MB_OK on success, M2MB_ERROR value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_disconnect()

int m2mb_mqtt_disconnect ( M2MB_MQTT_CTXT_HANDLE  mqtt_handle)

m2mb_mqtt_disconnect is called to disconnect to the server.

m2mb_mqtt_disconnect is called disconnect to the server.

Parameters
[in]mqtt_handlemqtt handle obtained from m2mb_mqtt_connect API.
Returns
returns 0 on success, -1 value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
return M2MB_ERROR;
}
ret_val = m2mb_mqtt_disconnect(s2w_mqtt_handle->handle);
if(ret_val < 0)
{
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_publish()

int m2mb_mqtt_publish ( M2MB_MQTT_CTXT_HANDLE  mqtt_handle,
int  qos,
int  retain,
unsigned short  message_id,
const char *  topic,
const char *  data,
int  data_len 
)

m2mb_mqtt_publish is called to Publishes a message.

m2mb_mqtt_publish Publishes a message on a given topic.

Parameters
[out]mqtt_handlemqtt handle obtained from m2mb_mqtt_connect API.
[in]qosInteger value 0, 1, or 2 indicating the QOS to be used for msg.
[in]retainSet to TRUE to make the message retained.
[in]message_idMessage ID
[in]topicTopic name
[in]dataData
[in]data_lenData length.
Returns
Returns 0 on success, -1 value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 retainFlag;
UINT32 message_id;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
int ret_val;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
return M2MB_ERROR;
}
//PUBLISH data
ret_val = m2mb_mqtt_publish(s2w_mqtt_handle->handle, QOS, retainFlag, message_id, topic,
data, data_tlen);
if(ret_val < 0)
{
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_subscribe()

int m2mb_mqtt_subscribe ( M2MB_MQTT_CTXT_HANDLE  mqtt_handle,
unsigned short  msg_id,
const char *  topic,
int  qos 
)

m2mb_mqtt_subscribe is called to Subscribe.

m2mb_mqtt_subscribe Subscribes to one topic.

Parameters
[out]mqtt_handlemqtt handle obtained from m2mb_mqtt_connect API.
[in]msg_idmessage id
[in]topictopic name
[in]qosInteger value 0, 1, or 2 indicating the QOS to be used for msg.
Returns
returns 0 on success, error value on error.
Note

Example

VOID m2m_s2w_mqtt_message_handler_cbk (INT32 handle, void* arg, INT32 reason, const char* topic,
UINT16 topic_Length, const char* msg, UINT32 msg_Length, UINT32 QOS )
{
UINT32 data_len;
M2M_S2W_MQTT_T * s2w_mqtt_handle_ptr = (M2M_S2W_MQTT_T *)arg;
if(0 == s2w_mqtt_handle_ptr->receive_request_present)
{
return;
}
m2m_s2w_mqtt_message_set(s2w_mqtt_handle_ptr,
reason, topic,
topic_Length,
msg,
msg_Length,
QOS );
data_len = MSG_TO_HOST_LEN(topic_Length, msg_Length);
//indicate to the user.
}
void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
return M2MB_ERROR;
}
ret_val = m2mb_mqtt_subscribe(s2w_mqtt_handle->handle, message_id, topic, QOS);
if(ret_val < 0)
{
return M2MB_ERROR;
}
ret_val = m2mb_mqtt_subscribe_handler_register(s2w_mqtt_handle->handle, topic, m2m_s2w_mqtt_message_handler_cbk, s2w_mqtt_handle);
if(ret_val == M2MB_ERROR)
{
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_subscribe_handler_register()

INT32 m2mb_mqtt_subscribe_handler_register ( M2MB_MQTT_CTXT_HANDLE  mqtt_handle,
const char *  topic,
M2MB_MQTT_MSG_HNDLR_CB_T  cbk,
VOID arg 
)

m2mb_mqtt_subscribe_handler_register is called to unsubscribe.

m2mb_mqtt_subscribe_handler_register unsubscribe to one topic.

Parameters
[out]mqtt_handlemqtt handle obtained from m2mb_mqtt_connect API.
[in]topicTopic name
[in]cbkCall back API
[in]argCall back arguments
Returns
Returns M2MB_OK on success, M2MB_ERROR value on error.
Note

Example

VOID m2m_s2w_mqtt_message_handler_cbk (INT32 handle, void* arg, INT32 reason, const char* topic,
UINT16 topic_Length, const char* msg, UINT32 msg_Length, UINT32 QOS )
{
UINT32 data_len;
M2M_S2W_MQTT_T * s2w_mqtt_handle_ptr = (M2M_S2W_MQTT_T *)arg;
if(0 == s2w_mqtt_handle_ptr->receive_request_present)
{
return;
}
m2m_s2w_mqtt_message_set(s2w_mqtt_handle_ptr,
reason, topic,
topic_Length,
msg,
msg_Length,
QOS );
data_len = MSG_TO_HOST_LEN(topic_Length, msg_Length);
//indicate to the user.
}
void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
return M2MB_ERROR;
}
ret_val = m2mb_mqtt_subscribe(s2w_mqtt_handle->handle, message_id, topic, QOS);
if(ret_val < 0)
{
return M2MB_ERROR;
}
ret_val = m2mb_mqtt_subscribe_handler_register(s2w_mqtt_handle->handle, topic, m2m_s2w_mqtt_message_handler_cbk, s2w_mqtt_handle);
if(ret_val == M2MB_ERROR)
{
return M2MB_ERROR;
}
}

◆ m2mb_mqtt_unsubscribe()

int m2mb_mqtt_unsubscribe ( M2MB_MQTT_CTXT_HANDLE  mqtt_handle,
unsigned short  msg_id,
const char *  topic 
)

m2mb_mqtt_unsubscribe is called to unsubscribe.

m2mb_mqtt_unsubscribe unsubscribe to one topic.

Parameters
[out]mqtt_handlemqtt handle obtained from m2mb_mqtt_connect API.
[in]msg_idmessage id
[in]topictopic name
Returns
returns 0 on success, error value on error.
Note

Example

void main(void)
{
void *connect_params;
INT8* HOST;
INT32 PORT;
INT8* client_id;
INT8* username;
INT8* password;
UINT32 keepalive_in_sec;
M2M_S2W_MQTT_T *s2w_mqtt_handle = NULL;
INT32 api_ret_code;
VOID* pCid = NULL;
s2w_mqtt_handle = (M2M_S2W_MQTT_T *)MALLOC(sizeof(M2M_S2W_MQTT_T));
memset(s2w_mqtt_handle, 0, sizeof(M2M_S2W_MQTT_T));
s2w_mqtt_handle->use_ssl = 1;
if(s2w_mqtt_handle->use_ssl == 1)
{
s2w_mqtt_handle->pSslcfg = (M2MB_SSL_CONFIG_T *)MALLOC(sizeof(M2MB_SSL_CONFIG_T));
if(NULL == s2w_mqtt_handle->pSslcfg)
{
FREE(s2w_mqtt_handle);
return M2MB_ERROR;
}
memset(s2w_mqtt_handle->pSslcfg, 0, sizeof(M2MB_SSL_CONFIG_T));
}
m2mb_mqtt_con_params_create(&connect_params, client_id, HOST, PORT, keepalive_in_sec );
m2mb_mqtt_conn_params_set_username(connect_params, username, password);
if(s2w_mqtt_handle->use_ssl == 1)
{
m2mb_mqtt_conn_params_use_ssl(connect_params, ca_file, NULL);
//s2w_mqtt_handle->pSslCfgHndl= m2mb_ssl_create_config((s2w_mqtt_handle->pSslcfg), &api_ret_code);
if(s2w_mqtt_handle->pSslCfgHndl == NULL)
{
return M2MB_ERROR;
}
m2mb_mqtt_conn_params_set_ssl_cfg(connect_params, s2w_mqtt_handle->pSslCfgHndl);
}
m2mb_mqtt_conn_params_set_timeout_in_sec(connect_params, timeout_in_sec);
m2mb_mqtt_conn_params_set_connectCallback(connect_params,m2m_mqtt_connect_callback, pCid);
api_ret_code = m2mb_mqtt_connect(&s2w_mqtt_handle->handle, connect_params);
if(api_ret_code != M2MB_OK)
{
return M2MB_ERROR;
}
ret_val = m2mb_mqtt_subscribe(s2w_mqtt_handle->handle, message_id, topic, QOS);
if(ret_val < 0)
{
return M2MB_ERROR;
}
ret_val = m2mb_mqtt_unsubscribe(s2w_mqtt_handle->handle, message_id, topic);
if(ret_val < 0)
{
return M2MB_ERROR;
}
}