SimpleLink CC32xx ATCommands Library
Simplifies the implementation of Internet connectivity
Mqtt

Controls MQTT Client programming options and capabilities. More...

Functions

int32_t ATCmdMqtt_createCallback (void *arg)
 Mqtt Client Create callback. More...
 
int32_t ATCmdMqtt_deleteCallback (void *arg)
 Mqtt Client delete callback. More...
 
int32_t ATCmdMqtt_connectCallback (void *arg)
 Mqtt Client Connect callback. More...
 
int32_t ATCmdMqtt_disconnectCallback (void *arg)
 Mqtt Client Disconnect callback. More...
 
int32_t ATCmdMqtt_publishCallback (void *arg)
 Mqtt Client Publish callback. More...
 
int32_t ATCmdMqtt_subscribeCallback (void *arg)
 Mqtt Client Subscribe callback. More...
 
int32_t ATCmdMqtt_unsubscribeCallback (void *arg)
 Mqtt Client Unsubscribe callback. More...
 
int32_t ATCmdMqtt_setCallback (void *arg)
 Mqtt Client Set callback. More...
 

Detailed Description

Controls MQTT Client programming options and capabilities.

Function Documentation

§ ATCmdMqtt_connectCallback()

int32_t ATCmdMqtt_connectCallback ( void *  arg)

Mqtt Client Connect callback.

This routine connect to mqtt broker.

Parameters
arg- Points to command line buffer.
Returns
Zero on success, or negative error code on failure

Definition at line 577 of file atcmd_mqtt.c.

578 {
579  int32_t ret = 0;
580  uint32_t index;
581  MQTTClient_Handle handle;
582 
583  handle = ATCmdMqtt_clientIndexParse((char **)&arg,&index,ATCMD_DELIM_TRM);
584  if (handle == NULL)
585  {
586  ATCmd_errorResult(ATCmd_errorParseStr,STRMPL_ERROR_WRONG_PARAM);
587  return -1;
588  }
589  ret = MQTTClient_connect(handle);
590 
591  if (ret < 0)
592  {
593  ATCmd_errorResult(ATCmd_errorCmdStr,ret);
594  }
595  else
596  {
597  ATCmd_okResult();
598  }
599 
600  return ret;
601 }

§ ATCmdMqtt_createCallback()

int32_t ATCmdMqtt_createCallback ( void *  arg)

Mqtt Client Create callback.

This routine initialize the MQTT client instance.

Parameters
arg- Points to command line buffer.
Returns
Zero on success, or negative error code on failure

Definition at line 474 of file atcmd_mqtt.c.

475 {
476  int32_t ret = 0;
477  pthread_attr_t pAttrs;
478  struct sched_param priParam;
479  pthread_t rxThread = (pthread_t) NULL;
480  MQTTClient_Handle handle;
481  uint8_t index = 0;
482 
483  if (ATCmdMqtt_cb.clientIndex[index] != NULL)
484  {
485  ATCmd_errorResult(ATCmd_errorCmdStr,-1);
486  return -1;
487  }
488  memset(&ATCmdMqtt_cb.attrib, 0x0, sizeof(MQTTClient_Params));
489 
490  ATCmdMqtt_cb.attrib.connParams = malloc(sizeof(MQTTClient_ConnParams));
491  if (ATCmdMqtt_cb.attrib.connParams == NULL)
492  {
493  ATCmd_errorResult(ATCmd_errorAllocStr,0);
494  return -1;
495  }
496  memset(ATCmdMqtt_cb.attrib.connParams,0,sizeof(MQTTClient_ConnParams));
497  ATCmdMqtt_cb.attrib.connParams->secureFiles = malloc(sizeof(char *) * ATCMDMQTT_CREATE_MAX_SECURE_FILES);
498  if (ATCmdMqtt_cb.attrib.connParams->secureFiles == NULL)
499  {
500  ATCmd_errorResult(ATCmd_errorAllocStr,0);
501  return -1;
502  }
503  memset((void *)ATCmdMqtt_cb.attrib.connParams->secureFiles,0,sizeof(char *) * ATCMDMQTT_CREATE_MAX_SECURE_FILES);
504 
505  /* Call the command parser */
506  ret = ATCmdMqtt_createParse((char *)arg,&ATCmdMqtt_cb.attrib);
507 
508  if(ret < 0)
509  {
510  ATCmd_errorResult(ATCmd_errorParseStr,ret);
511  return -1;
512  }
513 
514  /* create mqtt instant */
515  handle = MQTTClient_create(ATCmdMqtt_clientCallback, &ATCmdMqtt_cb.attrib);
516  if(handle == NULL)
517  {
518  ATCmdMqtt_clientFree();
519  ATCmd_errorResult(ATCmd_errorCmdStr,-1);
520  return -1;
521  }
522 
523  /* Open Client Receive Thread start the receive task. Set priority and */
524  /* stack size attributes */
525  pthread_attr_init(&pAttrs);
526  priParam.sched_priority = 2;
527  ret = pthread_attr_setschedparam(&pAttrs, &priParam);
528  ret |= pthread_attr_setstacksize(&pAttrs, ATCMDMQTT_CLIENT_RX_TASK_SIZE);
529  ret |= pthread_attr_setdetachstate(&pAttrs, PTHREAD_CREATE_DETACHED);
530  ret |= pthread_create(&rxThread, &pAttrs, ATCmdMqtt_clientThread, NULL);
531  if (ret != 0)
532  {
533  ATCmdMqtt_clientFree();
534  return -1;
535  }
536  /* insert the handle to list */
537  ATCmdMqtt_cb.clientIndex[index] = handle;
538  ATCmd_commandResult(ATCmdMqtt_createResult,NULL,index);
539  ATCmd_okResult();
540  return 0;
541 }

§ ATCmdMqtt_deleteCallback()

int32_t ATCmdMqtt_deleteCallback ( void *  arg)

Mqtt Client delete callback.

This routine delete mqtt client instance.

Parameters
arg- Points to command line buffer.
Returns
Zero on success, or negative error code on failure

Definition at line 546 of file atcmd_mqtt.c.

547 {
548  int32_t ret = 0;
549  uint32_t index;
550  MQTTClient_Handle handle;
551 
552  handle = ATCmdMqtt_clientIndexParse((char **)&arg,&index,ATCMD_DELIM_TRM);
553  if (handle == NULL)
554  {
555  ATCmd_errorResult(ATCmd_errorParseStr,STRMPL_ERROR_WRONG_PARAM);
556  return -1;
557  }
558 
559  ATCmdMqtt_cb.delRequest = 1;
560  ret = MQTTClient_delete(handle);
561  ATCmdMqtt_clientFree();
562 
563  if (ret < 0)
564  {
565  ATCmd_errorResult(ATCmd_errorCmdStr,ret);
566  }
567  else
568  {
569  ATCmd_okResult();
570  }
571  return ret;
572 }

§ ATCmdMqtt_disconnectCallback()

int32_t ATCmdMqtt_disconnectCallback ( void *  arg)

Mqtt Client Disconnect callback.

This routine disconnect from mqtt broker.

Parameters
arg- Points to command line buffer.
Returns
Zero on success, or negative error code on failure

Definition at line 606 of file atcmd_mqtt.c.

607 {
608  int32_t ret = 0;
609  uint32_t index;
610  MQTTClient_Handle handle;
611 
612  /* parse the client index */
613  handle = ATCmdMqtt_clientIndexParse((char **)&arg,&index,ATCMD_DELIM_TRM);
614  if (handle == NULL)
615  {
616  ATCmd_errorResult(ATCmd_errorParseStr,STRMPL_ERROR_WRONG_PARAM);
617  return -1;
618  }
619  /* mqtt client disconnect */
620  ret = MQTTClient_disconnect(handle);
621 
622  if (ret < 0)
623  {
624  ATCmd_errorResult(ATCmd_errorCmdStr,ret);
625  }
626  else
627  {
628  ATCmd_okResult();
629  }
630 
631  return ret;
632 }

§ ATCmdMqtt_publishCallback()

int32_t ATCmdMqtt_publishCallback ( void *  arg)

Mqtt Client Publish callback.

This routine send message to specific topic

Parameters
arg- Points to command line buffer.
Returns
Zero on success, or negative error code on failure

Definition at line 725 of file atcmd_mqtt.c.

726 {
727  int32_t ret = 0;
728  ATCmdMqtt_Publish_t params;
729  uint32_t index;
730  MQTTClient_Handle handle;
731 
732  /* parse client index */
733  handle = ATCmdMqtt_clientIndexParse((char **)&arg,&index,ATCMD_DELIM_ARG);
734  if (handle == NULL)
735  {
736  ATCmd_errorResult(ATCmd_errorParseStr,STRMPL_ERROR_WRONG_PARAM);
737  return -1;
738  }
739 
740  memset(&params, 0x0, sizeof(ATCmdMqtt_Publish_t));
741 
742  /* Call the command parser */
743  ret = ATCmdMqtt_publishParse((char *)arg,&params);
744 
745  if(ret < 0)
746  {
747  ATCmd_errorResult(ATCmd_errorParseStr,ret);
748  ATCmdMqtt_publishFree(&params);
749  return -1;
750  }
751  ret = MQTTClient_publish(handle,params.topic,params.topicLen,params.msg,params.msgLen,params.flags);
752 
753  if (ret < 0)
754  {
755  ATCmd_errorResult(ATCmd_errorCmdStr,ret);
756  }
757  else
758  {
759  ATCmd_okResult();
760  }
761 
762  ATCmdMqtt_publishFree(&params);
763 
764  return ret;
765 }

§ ATCmdMqtt_setCallback()

int32_t ATCmdMqtt_setCallback ( void *  arg)

Mqtt Client Set callback.

This routine set mqtt client configuration

Parameters
arg- Points to command line buffer.
Returns
Zero on success, or negative error code on failure

Definition at line 1142 of file atcmd_mqtt.c.

1143 {
1144  int32_t ret = 0;
1145  uint32_t index;
1146  MQTTClient_Handle handle;
1147 
1148  handle = ATCmdMqtt_clientIndexParse((char **)&arg,&index,ATCMD_DELIM_ARG);
1149  if (handle == NULL)
1150  {
1151  ATCmd_errorResult(ATCmd_errorParseStr,STRMPL_ERROR_WRONG_PARAM);
1152  return -1;
1153  }
1154 
1155  ATCmdMqtt_cb.set = malloc(sizeof(ATCmdMqtt_Set_t));
1156  if (ATCmdMqtt_cb.set == NULL)
1157  {
1158  ATCmd_errorResult(ATCmd_errorAllocStr,0);
1159  return -1;
1160  }
1161  memset(ATCmdMqtt_cb.set, 0x0, sizeof(ATCmdMqtt_Set_t));
1162 
1163  /* Call the command parser */
1164  ret = ATCmdMqtt_setParse((char *)arg, ATCmdMqtt_cb.set);
1165 
1166  if (ret < 0)
1167  {
1168  ATCmd_errorResult(ATCmd_errorParseStr,ret);
1169  ATCmdMqtt_setFree(ATCmdMqtt_cb.set);
1170  return -1;
1171  }
1172 
1173  ret = MQTTClient_set(handle,ATCmdMqtt_cb.set->option,ATCmdMqtt_cb.set->value,0);
1174 
1175  if (ret < 0)
1176  {
1177  ATCmdMqtt_setFree(ATCmdMqtt_cb.set);
1178  ATCmd_errorResult(ATCmd_errorCmdStr,ret);
1179  }
1180  else
1181  {
1182  ATCmd_okResult();
1183  }
1184  /* allocation shoud be freed in ATCmdMqtt_clientFree */
1185 
1186  return ret;
1187 }

§ ATCmdMqtt_subscribeCallback()

int32_t ATCmdMqtt_subscribeCallback ( void *  arg)

Mqtt Client Subscribe callback.

This routine subscribe a topic for retrieving published messages

Parameters
arg- Points to command line buffer.
Returns
Zero on success, or negative error code on failure

Definition at line 850 of file atcmd_mqtt.c.

851 {
852  int32_t ret = 0;
853  ATCmdMqtt_Subscribe_t params;
854  uint32_t index;
855  MQTTClient_Handle handle;
856 
857  handle = ATCmdMqtt_clientIndexParse((char **)&arg,&index,ATCMD_DELIM_ARG);
858  if (handle == NULL)
859  {
860  ATCmd_errorResult(ATCmd_errorParseStr,STRMPL_ERROR_WRONG_PARAM);
861  return -1;
862  }
863 
864  memset(&params, 0x0, sizeof(ATCmdMqtt_Subscribe_t));
865 
866  /* Call the command parser */
867  ret = ATCmdMqtt_subscribeParse((char *)arg,&params);
868 
869  if(ret < 0)
870  {
871  ATCmd_errorResult(ATCmd_errorParseStr,ret);
872  ATCmdMqtt_subscribeFree(&params);
873  return -1;
874  }
875  ret = MQTTClient_subscribe(handle,params.value,params.numberOfTopics);
876 
877  if (ret < 0)
878  {
879  ATCmd_errorResult(ATCmd_errorCmdStr,ret);
880  }
881  else
882  {
883  ATCmd_okResult();
884  }
885 
886  ATCmdMqtt_subscribeFree(&params);
887 
888  return ret;
889 }

§ ATCmdMqtt_unsubscribeCallback()

int32_t ATCmdMqtt_unsubscribeCallback ( void *  arg)

Mqtt Client Unsubscribe callback.

This routine unsubscribe a topic

Parameters
arg- Points to command line buffer.
Returns
Zero on success, or negative error code on failure

Definition at line 968 of file atcmd_mqtt.c.

969 {
970  int32_t ret = 0;
971  ATCmdMqtt_Unsubscribe_t params;
972  uint32_t index;
973  MQTTClient_Handle handle;
974 
975  handle = ATCmdMqtt_clientIndexParse((char **)&arg,&index,ATCMD_DELIM_ARG);
976  if (handle == NULL)
977  {
978  ATCmd_errorResult(ATCmd_errorParseStr,STRMPL_ERROR_WRONG_PARAM);
979  return -1;
980  }
981 
982  memset(&params, 0x0, sizeof(ATCmdMqtt_Unsubscribe_t));
983 
984  /* Call the command parser */
985  ret = ATCmdMqtt_unsubscribeParse((char *)arg,&params);
986 
987  if(ret < 0)
988  {
989  ATCmd_errorResult(ATCmd_errorParseStr,ret);
990  ATCmdMqtt_unsubscribeFree(&params);
991  return -1;
992  }
993  ret = MQTTClient_unsubscribe(handle,params.value,params.numberOfTopics);
994 
995  if (ret < 0)
996  {
997  ATCmd_errorResult(ATCmd_errorCmdStr,ret);
998  }
999  else
1000  {
1001  ATCmd_okResult();
1002  }
1003 
1004  ATCmdMqtt_unsubscribeFree(&params);
1005 
1006  return ret;
1007 }