5. 这个时候,先研究下 readme.txt. 在里面找到2个部分,一部分是怎么移植,一部分是怎使用MQTT的函数。
移植部分:
https://github.com/aws/aws-iot-d ... ter/PortingGuide.md
在portguid里面,说到,需要移植3个模块
定时器模块,翻译一下:对处理请求超时来说,定时器是很重要的,比如发送mqtt消息,订阅MQTT消息,还有就是连接与保持连接等。
网络部分,为了使MQTT客户端可以通过TCP/IP底层协议用TLS加密连接
通信,如下的接口需要在你的平台上实现。
现成部分,MQTT使用状态机去控制操作多个线程,然而它需要一个更灵活的实现去保证线程安全。
看来,如果想用MQTT就需要移植这三个部分了。如此到这里要开始移植了。不过这一步难度较大,需要3天搞完。
下一篇打算研究: 怎么去亚马逊云服务器上的操作。
timer FunctionsA timer implementation is necessary to handle request timeouts (sending MQTT connect, subscribe, etc. commands) as well as connection maintenance (MQTT keep-alive pings).
Network FunctionsIn order for the MQTT client stack to be able to communicate via the TCP/IP network protocol stack using a mutually authenticated TLS connection, the following API calls need to be implemented for your platform.
Threading FunctionsThe MQTT client uses a state machine to control operations in multi-threaded situations. However it requires a mutex implementation to guarantee thread safety.
上面3个部分移植完之后:下一步就是研究MQTT的函数。
首先初始化,然后连接上云
AWS_IoT_Client client;rc = aws_iot_mqtt_init(&client, &iotInitParams);rc = aws_iot_mqtt_connect(&client, &iotConnectParams);
订阅一个主题。
AWS_IoT_Client client;rc = aws_iot_mqtt_subscribe(&client, "sdkTest/sub", 11, QOS0, iot_subscribe_callback_handler, NULL);
向一个主题发送消息。
IoT_Error_t aws_iot_mqtt_publish(MQTTPublishParams *pParams);
总结起来,这几个函数用着不难,还是移植难度大,等我移植完再把遇到的问题写出来,这个作为开箱贴吧。
移植部分:以定时器为例,如果移植这个函数,那么需要去看看AM3359提供的什么函数,看样子明天需要研究下AM3359的源码了。
计算多少Ms,类似于定时器之类的。
countdown_ms(Timer* timer, uint32_t timeout)
{ struct timeval now; gettimeofday(&now, NULL); struct timeval interval = { timeout / 1000, (timeout % 1000) * 1000 }; timeradd(&now, &interval, &timer->end_time);}
第一篇帖子先写到这里,如果写的不好,希望多批评,谢谢