Smart Traffic
WISEAgent.cpp@0:f0ae089c9363, 2015-08-12 (annotated)
- Committer:
- ericliang
- Date:
- Wed Aug 12 02:44:16 2015 +0000
- Revision:
- 0:f0ae089c9363
SmartTraffic
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ericliang | 0:f0ae089c9363 | 1 | #include "WISEAgent.h" |
ericliang | 0:f0ae089c9363 | 2 | |
ericliang | 0:f0ae089c9363 | 3 | void messageCbf(MQTT::MessageData& md) |
ericliang | 0:f0ae089c9363 | 4 | { |
ericliang | 0:f0ae089c9363 | 5 | MQTT::Message &message = md.message; |
ericliang | 0:f0ae089c9363 | 6 | printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id); |
ericliang | 0:f0ae089c9363 | 7 | printf("Payload %.*s\n", message.payloadlen, (char*)message.payload); |
ericliang | 0:f0ae089c9363 | 8 | } |
ericliang | 0:f0ae089c9363 | 9 | |
ericliang | 0:f0ae089c9363 | 10 | MQTT::Client<MQTTEthernet, Countdown> *pMQTTClient; |
ericliang | 0:f0ae089c9363 | 11 | |
ericliang | 0:f0ae089c9363 | 12 | void Init(MQTTEthernet ipstack) |
ericliang | 0:f0ae089c9363 | 13 | { |
ericliang | 0:f0ae089c9363 | 14 | if( !pMQTTClient ) |
ericliang | 0:f0ae089c9363 | 15 | pMQTTClient = new MQTT::Client<MQTTEthernet, Countdown>(ipstack); |
ericliang | 0:f0ae089c9363 | 16 | } |
ericliang | 0:f0ae089c9363 | 17 | |
ericliang | 0:f0ae089c9363 | 18 | int WISEAgentConnect(const char *ip, char *uid) |
ericliang | 0:f0ae089c9363 | 19 | { |
ericliang | 0:f0ae089c9363 | 20 | int rc = 0; |
ericliang | 0:f0ae089c9363 | 21 | MQTT::Message message; |
ericliang | 0:f0ae089c9363 | 22 | |
ericliang | 0:f0ae089c9363 | 23 | // Register |
ericliang | 0:f0ae089c9363 | 24 | char topic[128]={0}; |
ericliang | 0:f0ae089c9363 | 25 | char buf[256]={0}; |
ericliang | 0:f0ae089c9363 | 26 | |
ericliang | 0:f0ae089c9363 | 27 | //snprintf(buf,sizeof(topic),RegistJson,uid, uid, uid, 0, uid, 1436160081000); |
ericliang | 0:f0ae089c9363 | 28 | |
ericliang | 0:f0ae089c9363 | 29 | MQTTPacket_connectData data = MQTTPacket_connectData_initializer; |
ericliang | 0:f0ae089c9363 | 30 | data.MQTTVersion = 3; |
ericliang | 0:f0ae089c9363 | 31 | data.clientID.cstring= uid;//mac; |
ericliang | 0:f0ae089c9363 | 32 | data.username.cstring = "ral"; |
ericliang | 0:f0ae089c9363 | 33 | data.password.cstring = "123"; |
ericliang | 0:f0ae089c9363 | 34 | // willmessage |
ericliang | 0:f0ae089c9363 | 35 | data.will.topicName.cstring = DEF_WILLMSG_TOPIC; |
ericliang | 0:f0ae089c9363 | 36 | data.will.message.cstring = buf; |
ericliang | 0:f0ae089c9363 | 37 | |
ericliang | 0:f0ae089c9363 | 38 | memset(topic, 0, sizeof(topic)); |
ericliang | 0:f0ae089c9363 | 39 | memset(buf, 0, sizeof(buf)); |
ericliang | 0:f0ae089c9363 | 40 | |
ericliang | 0:f0ae089c9363 | 41 | if ((rc = pMQTTClient->connect(data)) != 0) { |
ericliang | 0:f0ae089c9363 | 42 | printf("rc from MQTT connect is %d\n", rc); |
ericliang | 0:f0ae089c9363 | 43 | return rc; |
ericliang | 0:f0ae089c9363 | 44 | } |
ericliang | 0:f0ae089c9363 | 45 | |
ericliang | 0:f0ae089c9363 | 46 | snprintf(topic,sizeof(topic),WA_PUB_CONNECT_TOPIC,uid); |
ericliang | 0:f0ae089c9363 | 47 | //snprintf(buf,sizeof(topic),RegistJson,uid, uid, uid, 1, uid, 1436160081020); |
ericliang | 0:f0ae089c9363 | 48 | |
ericliang | 0:f0ae089c9363 | 49 | message.qos = MQTT::QOS0; |
ericliang | 0:f0ae089c9363 | 50 | message.retained = false; |
ericliang | 0:f0ae089c9363 | 51 | message.dup = false; |
ericliang | 0:f0ae089c9363 | 52 | message.payload = (void*)buf; |
ericliang | 0:f0ae089c9363 | 53 | message.payloadlen = strlen(buf)+1; |
ericliang | 0:f0ae089c9363 | 54 | |
ericliang | 0:f0ae089c9363 | 55 | if( rc = pMQTTClient->publish(topic, message) != 0 ) { |
ericliang | 0:f0ae089c9363 | 56 | printf("rc from MQTT publish topic=%s rc= %d\n", topic, rc); |
ericliang | 0:f0ae089c9363 | 57 | return rc; |
ericliang | 0:f0ae089c9363 | 58 | } |
ericliang | 0:f0ae089c9363 | 59 | |
ericliang | 0:f0ae089c9363 | 60 | memset(topic, 0, sizeof(topic)); |
ericliang | 0:f0ae089c9363 | 61 | memset(buf, 0, sizeof(buf)); |
ericliang | 0:f0ae089c9363 | 62 | |
ericliang | 0:f0ae089c9363 | 63 | snprintf(topic,sizeof(topic),WA_PUB_ACTION_TOPIC,uid); |
ericliang | 0:f0ae089c9363 | 64 | //snprintf(buf,sizeof(topic),OSInfoJson,ip, uid, 1436160081030); |
ericliang | 0:f0ae089c9363 | 65 | |
ericliang | 0:f0ae089c9363 | 66 | message.payloadlen = strlen(buf)+1; |
ericliang | 0:f0ae089c9363 | 67 | |
ericliang | 0:f0ae089c9363 | 68 | if( rc = pMQTTClient->publish(topic, message) != 0 ) { |
ericliang | 0:f0ae089c9363 | 69 | printf("rc from MQTT publish topic=%s rc= %d\n", topic, rc); |
ericliang | 0:f0ae089c9363 | 70 | return rc; |
ericliang | 0:f0ae089c9363 | 71 | } |
ericliang | 0:f0ae089c9363 | 72 | |
ericliang | 0:f0ae089c9363 | 73 | memset(topic, 0, sizeof(topic)); |
ericliang | 0:f0ae089c9363 | 74 | memset(buf, 0, sizeof(buf)); |
ericliang | 0:f0ae089c9363 | 75 | snprintf(topic,sizeof(topic),WA_SUB_CBK_TOPIC,uid); |
ericliang | 0:f0ae089c9363 | 76 | |
ericliang | 0:f0ae089c9363 | 77 | if ((rc = pMQTTClient->subscribe(topic, MQTT::QOS1, messageCbf)) != 0) { |
ericliang | 0:f0ae089c9363 | 78 | printf("rc from MQTT subscribe is %d\n", rc); |
ericliang | 0:f0ae089c9363 | 79 | return rc; |
ericliang | 0:f0ae089c9363 | 80 | } |
ericliang | 0:f0ae089c9363 | 81 | |
ericliang | 0:f0ae089c9363 | 82 | return rc; |
ericliang | 0:f0ae089c9363 | 83 | } |