ATT example code
Dependencies: WNCInterface mbed-rtos mbed
main.cpp@0:2bfa06d10e28, 2017-05-22 (annotated)
- Committer:
- surajdagar
- Date:
- Mon May 22 19:50:26 2017 +0000
- Revision:
- 0:2bfa06d10e28
Wireless solution ATT kit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
surajdagar | 0:2bfa06d10e28 | 1 | #include "mbed.h" |
surajdagar | 0:2bfa06d10e28 | 2 | #include "MQTTClient.h" |
surajdagar | 0:2bfa06d10e28 | 3 | #include "MQTTFormat.h" |
surajdagar | 0:2bfa06d10e28 | 4 | #include "MQTTWNCInterface.h" |
surajdagar | 0:2bfa06d10e28 | 5 | #include "rtos.h" |
surajdagar | 0:2bfa06d10e28 | 6 | #include "k64f.h" |
surajdagar | 0:2bfa06d10e28 | 7 | #include "HTS221.h" |
surajdagar | 0:2bfa06d10e28 | 8 | #include "MODSERIAL.h" |
surajdagar | 0:2bfa06d10e28 | 9 | |
surajdagar | 0:2bfa06d10e28 | 10 | I2C i2c(PTC11, PTC10); //SDA, SCL -- define the I2C pins being used |
surajdagar | 0:2bfa06d10e28 | 11 | MODSERIAL pc(USBTX, USBRX); |
surajdagar | 0:2bfa06d10e28 | 12 | MODSERIAL pump(PTC15, PTC14);//TX, RX to connect pump |
surajdagar | 0:2bfa06d10e28 | 13 | |
surajdagar | 0:2bfa06d10e28 | 14 | #include "hardware.h" |
surajdagar | 0:2bfa06d10e28 | 15 | /* |
surajdagar | 0:2bfa06d10e28 | 16 | #define ORG_ID "44a8w4" |
surajdagar | 0:2bfa06d10e28 | 17 | #define DEVICE_TYPE "IoT-Moog-1" |
surajdagar | 0:2bfa06d10e28 | 18 | #define DEVICE_NAME "IoT-Moog-Device1" |
surajdagar | 0:2bfa06d10e28 | 19 | #define USERNAME "use-token-auth" |
surajdagar | 0:2bfa06d10e28 | 20 | #define PASSWORD "ih*SKz2AyUSt+I*L0N" |
surajdagar | 0:2bfa06d10e28 | 21 | */ |
surajdagar | 0:2bfa06d10e28 | 22 | |
surajdagar | 0:2bfa06d10e28 | 23 | #define ORG_ID "hpy42p" |
surajdagar | 0:2bfa06d10e28 | 24 | #define DEVICE_TYPE "PumpTest" |
surajdagar | 0:2bfa06d10e28 | 25 | #define DEVICE_NAME "SomethingOtherThanPumpTest" |
surajdagar | 0:2bfa06d10e28 | 26 | #define USERNAME "use-token-auth" |
surajdagar | 0:2bfa06d10e28 | 27 | #define PASSWORD "SLD21utaPZP7TE8Vgk" |
surajdagar | 0:2bfa06d10e28 | 28 | |
surajdagar | 0:2bfa06d10e28 | 29 | #define URL ORG_ID ".messaging.internetofthings.ibmcloud.com" |
surajdagar | 0:2bfa06d10e28 | 30 | #define CLIENTSTR "d:" ORG_ID ":" DEVICE_TYPE ":%s" |
surajdagar | 0:2bfa06d10e28 | 31 | |
surajdagar | 0:2bfa06d10e28 | 32 | #define PORT 1883 // MQTT broker port number |
surajdagar | 0:2bfa06d10e28 | 33 | #define PUBLISH_TOPIC "iot-2/evt/status/fmt/json" // MQTT topic |
surajdagar | 0:2bfa06d10e28 | 34 | #define SUBSCRIBTOPIC "iot-2/cmd/+/fmt/+" |
surajdagar | 0:2bfa06d10e28 | 35 | /// Largest msg possible is 111 bytes - header, 99 data bytes, CheckSum, LF/CR |
surajdagar | 0:2bfa06d10e28 | 36 | #define PDMS_MAX_COMMAND_SIZE 111 |
surajdagar | 0:2bfa06d10e28 | 37 | Thread serial_thread; |
surajdagar | 0:2bfa06d10e28 | 38 | volatile int key_reader =0; |
surajdagar | 0:2bfa06d10e28 | 39 | volatile int old_Key =0; |
surajdagar | 0:2bfa06d10e28 | 40 | char command_str[PDMS_MAX_COMMAND_SIZE]; |
surajdagar | 0:2bfa06d10e28 | 41 | unsigned char AIL_Enable=0; |
surajdagar | 0:2bfa06d10e28 | 42 | Queue<uint32_t, 6> messageQ; |
surajdagar | 0:2bfa06d10e28 | 43 | |
surajdagar | 0:2bfa06d10e28 | 44 | // LED color control function |
surajdagar | 0:2bfa06d10e28 | 45 | void controlLED(color_t led_color) { |
surajdagar | 0:2bfa06d10e28 | 46 | switch(led_color) { |
surajdagar | 0:2bfa06d10e28 | 47 | case red : |
surajdagar | 0:2bfa06d10e28 | 48 | greenLED = blueLED = 1; |
surajdagar | 0:2bfa06d10e28 | 49 | redLED = 0.7; |
surajdagar | 0:2bfa06d10e28 | 50 | break; |
surajdagar | 0:2bfa06d10e28 | 51 | case green : |
surajdagar | 0:2bfa06d10e28 | 52 | redLED = blueLED = 1; |
surajdagar | 0:2bfa06d10e28 | 53 | greenLED = 0.7; |
surajdagar | 0:2bfa06d10e28 | 54 | break; |
surajdagar | 0:2bfa06d10e28 | 55 | case blue : |
surajdagar | 0:2bfa06d10e28 | 56 | redLED = greenLED = 1; |
surajdagar | 0:2bfa06d10e28 | 57 | blueLED = 0.7; |
surajdagar | 0:2bfa06d10e28 | 58 | break; |
surajdagar | 0:2bfa06d10e28 | 59 | case off : |
surajdagar | 0:2bfa06d10e28 | 60 | redLED = greenLED = blueLED = 1; |
surajdagar | 0:2bfa06d10e28 | 61 | break; |
surajdagar | 0:2bfa06d10e28 | 62 | } |
surajdagar | 0:2bfa06d10e28 | 63 | } |
surajdagar | 0:2bfa06d10e28 | 64 | |
surajdagar | 0:2bfa06d10e28 | 65 | // Switch 2 interrupt handler |
surajdagar | 0:2bfa06d10e28 | 66 | void sw2_ISR(void) { |
surajdagar | 0:2bfa06d10e28 | 67 | messageQ.put((uint32_t*)22); |
surajdagar | 0:2bfa06d10e28 | 68 | } |
surajdagar | 0:2bfa06d10e28 | 69 | |
surajdagar | 0:2bfa06d10e28 | 70 | // Switch3 interrupt handler |
surajdagar | 0:2bfa06d10e28 | 71 | void sw3_ISR(void) { |
surajdagar | 0:2bfa06d10e28 | 72 | messageQ.put((uint32_t*)33); |
surajdagar | 0:2bfa06d10e28 | 73 | } |
surajdagar | 0:2bfa06d10e28 | 74 | |
surajdagar | 0:2bfa06d10e28 | 75 | // MQTT message arrived callback function |
surajdagar | 0:2bfa06d10e28 | 76 | void messageArrived(MQTT::MessageData& md) { |
surajdagar | 0:2bfa06d10e28 | 77 | MQTT::Message &message = md.message; |
surajdagar | 0:2bfa06d10e28 | 78 | PRINTF("Receiving MQTT message: %.*s\r\n", message.payloadlen, (char*)message.payload); |
surajdagar | 0:2bfa06d10e28 | 79 | |
surajdagar | 0:2bfa06d10e28 | 80 | if (message.payloadlen == 3) { |
surajdagar | 0:2bfa06d10e28 | 81 | if (strncmp((char*)message.payload, "red", 3) == 0) |
surajdagar | 0:2bfa06d10e28 | 82 | controlLED(red); |
surajdagar | 0:2bfa06d10e28 | 83 | |
surajdagar | 0:2bfa06d10e28 | 84 | else if(strncmp((char*)message.payload, "grn", 3) == 0) |
surajdagar | 0:2bfa06d10e28 | 85 | controlLED(green); |
surajdagar | 0:2bfa06d10e28 | 86 | |
surajdagar | 0:2bfa06d10e28 | 87 | else if(strncmp((char*)message.payload, "blu", 3) == 0) |
surajdagar | 0:2bfa06d10e28 | 88 | controlLED(blue); |
surajdagar | 0:2bfa06d10e28 | 89 | |
surajdagar | 0:2bfa06d10e28 | 90 | else if(strncmp((char*)message.payload, "off", 3) == 0) |
surajdagar | 0:2bfa06d10e28 | 91 | controlLED(off); |
surajdagar | 0:2bfa06d10e28 | 92 | } |
surajdagar | 0:2bfa06d10e28 | 93 | } |
surajdagar | 0:2bfa06d10e28 | 94 | |
surajdagar | 0:2bfa06d10e28 | 95 | void alla_serial() |
surajdagar | 0:2bfa06d10e28 | 96 | { |
surajdagar | 0:2bfa06d10e28 | 97 | printf("Enter Thread alla_serial"); |
surajdagar | 0:2bfa06d10e28 | 98 | while(1) |
surajdagar | 0:2bfa06d10e28 | 99 | { |
surajdagar | 0:2bfa06d10e28 | 100 | memset(command_str, 0x00,PDMS_MAX_COMMAND_SIZE); |
surajdagar | 0:2bfa06d10e28 | 101 | pump.gets(command_str, PDMS_MAX_COMMAND_SIZE); |
surajdagar | 0:2bfa06d10e28 | 102 | printf("%s", command_str); //print data received from Pump |
surajdagar | 0:2bfa06d10e28 | 103 | if(strstr(command_str, "Standby")) |
surajdagar | 0:2bfa06d10e28 | 104 | { |
surajdagar | 0:2bfa06d10e28 | 105 | key_reader=8; |
surajdagar | 0:2bfa06d10e28 | 106 | } |
surajdagar | 0:2bfa06d10e28 | 107 | else if(strstr(command_str, "Paused")) |
surajdagar | 0:2bfa06d10e28 | 108 | { |
surajdagar | 0:2bfa06d10e28 | 109 | if(AIL_Enable == 0) |
surajdagar | 0:2bfa06d10e28 | 110 | key_reader=1; |
surajdagar | 0:2bfa06d10e28 | 111 | else |
surajdagar | 0:2bfa06d10e28 | 112 | AIL_Enable--; |
surajdagar | 0:2bfa06d10e28 | 113 | } |
surajdagar | 0:2bfa06d10e28 | 114 | else if(strstr(command_str, "AIR IN LINE")) |
surajdagar | 0:2bfa06d10e28 | 115 | { |
surajdagar | 0:2bfa06d10e28 | 116 | key_reader=2; |
surajdagar | 0:2bfa06d10e28 | 117 | AIL_Enable=2; |
surajdagar | 0:2bfa06d10e28 | 118 | } |
surajdagar | 0:2bfa06d10e28 | 119 | else if(strstr(command_str, "Run Interval")) |
surajdagar | 0:2bfa06d10e28 | 120 | { |
surajdagar | 0:2bfa06d10e28 | 121 | key_reader=3; |
surajdagar | 0:2bfa06d10e28 | 122 | } |
surajdagar | 0:2bfa06d10e28 | 123 | else if(strstr(command_str, "Run Continous")) |
surajdagar | 0:2bfa06d10e28 | 124 | { |
surajdagar | 0:2bfa06d10e28 | 125 | key_reader=4; |
surajdagar | 0:2bfa06d10e28 | 126 | } |
surajdagar | 0:2bfa06d10e28 | 127 | else if(strstr(command_str, "DOOR OPEN")) |
surajdagar | 0:2bfa06d10e28 | 128 | { |
surajdagar | 0:2bfa06d10e28 | 129 | key_reader=5; |
surajdagar | 0:2bfa06d10e28 | 130 | AIL_Enable=2; |
surajdagar | 0:2bfa06d10e28 | 131 | } |
surajdagar | 0:2bfa06d10e28 | 132 | else if(strstr(command_str, "Priming")) |
surajdagar | 0:2bfa06d10e28 | 133 | { |
surajdagar | 0:2bfa06d10e28 | 134 | key_reader=6; |
surajdagar | 0:2bfa06d10e28 | 135 | } |
surajdagar | 0:2bfa06d10e28 | 136 | else if(strstr(command_str, "PUMP WAITING")) |
surajdagar | 0:2bfa06d10e28 | 137 | { |
surajdagar | 0:2bfa06d10e28 | 138 | key_reader=7; |
surajdagar | 0:2bfa06d10e28 | 139 | } |
surajdagar | 0:2bfa06d10e28 | 140 | else if(strstr(command_str, "Cleared")) |
surajdagar | 0:2bfa06d10e28 | 141 | { |
surajdagar | 0:2bfa06d10e28 | 142 | key_reader=9; |
surajdagar | 0:2bfa06d10e28 | 143 | } |
surajdagar | 0:2bfa06d10e28 | 144 | else |
surajdagar | 0:2bfa06d10e28 | 145 | { |
surajdagar | 0:2bfa06d10e28 | 146 | printf("\n %s", command_str); |
surajdagar | 0:2bfa06d10e28 | 147 | } |
surajdagar | 0:2bfa06d10e28 | 148 | } |
surajdagar | 0:2bfa06d10e28 | 149 | } |
surajdagar | 0:2bfa06d10e28 | 150 | int main() { |
surajdagar | 0:2bfa06d10e28 | 151 | ////////////////////////////////////////////////////// |
surajdagar | 0:2bfa06d10e28 | 152 | pump.baud(115200); |
surajdagar | 0:2bfa06d10e28 | 153 | // pump.format(8, SerialBase::Even, 1); |
surajdagar | 0:2bfa06d10e28 | 154 | serial_thread.start(&alla_serial); |
surajdagar | 0:2bfa06d10e28 | 155 | ////////////////////////////////////////////////////// |
surajdagar | 0:2bfa06d10e28 | 156 | |
surajdagar | 0:2bfa06d10e28 | 157 | int rc, pSW2=0, txSel=0, good = 0; |
surajdagar | 0:2bfa06d10e28 | 158 | Timer tmr; |
surajdagar | 0:2bfa06d10e28 | 159 | char* topic = PUBLISH_TOPIC; |
surajdagar | 0:2bfa06d10e28 | 160 | char clientID[100], buf[100]; |
surajdagar | 0:2bfa06d10e28 | 161 | string st, uniqueID; |
surajdagar | 0:2bfa06d10e28 | 162 | |
surajdagar | 0:2bfa06d10e28 | 163 | HTS221 hts221; |
surajdagar | 0:2bfa06d10e28 | 164 | |
surajdagar | 0:2bfa06d10e28 | 165 | pc.baud(115200); |
surajdagar | 0:2bfa06d10e28 | 166 | rc = hts221.init(); |
surajdagar | 0:2bfa06d10e28 | 167 | if ( rc ) { |
surajdagar | 0:2bfa06d10e28 | 168 | PRINTF(BLU "HTS221 Detected (0x%02X)\n\r",rc); |
surajdagar | 0:2bfa06d10e28 | 169 | PRINTF(" Temp is: %0.2f F \r\n Huumid is: %02d %%\r\n\r\n", |
surajdagar | 0:2bfa06d10e28 | 170 | CTOF(hts221.readTemperature()), hts221.readHumidity()/10); |
surajdagar | 0:2bfa06d10e28 | 171 | } |
surajdagar | 0:2bfa06d10e28 | 172 | else { |
surajdagar | 0:2bfa06d10e28 | 173 | PRINTF(RED "HTS221 NOT DETECTED!\n\r"); |
surajdagar | 0:2bfa06d10e28 | 174 | } |
surajdagar | 0:2bfa06d10e28 | 175 | |
surajdagar | 0:2bfa06d10e28 | 176 | controlLED(green); |
surajdagar | 0:2bfa06d10e28 | 177 | |
surajdagar | 0:2bfa06d10e28 | 178 | // set SW2 and SW3 to generate interrupt on falling edge |
surajdagar | 0:2bfa06d10e28 | 179 | switch2.fall(&sw2_ISR); |
surajdagar | 0:2bfa06d10e28 | 180 | switch3.fall(&sw3_ISR); |
surajdagar | 0:2bfa06d10e28 | 181 | |
surajdagar | 0:2bfa06d10e28 | 182 | // initialize ethernet interface |
surajdagar | 0:2bfa06d10e28 | 183 | MQTTwnc ipstack = MQTTwnc(); |
surajdagar | 0:2bfa06d10e28 | 184 | |
surajdagar | 0:2bfa06d10e28 | 185 | // get and display client network info |
surajdagar | 0:2bfa06d10e28 | 186 | WNCInterface& eth = ipstack.getEth(); |
surajdagar | 0:2bfa06d10e28 | 187 | |
surajdagar | 0:2bfa06d10e28 | 188 | // construct the MQTT client |
surajdagar | 0:2bfa06d10e28 | 189 | MQTT::Client<MQTTwnc, Countdown> client = MQTT::Client<MQTTwnc, Countdown>(ipstack); |
surajdagar | 0:2bfa06d10e28 | 190 | |
surajdagar | 0:2bfa06d10e28 | 191 | controlLED(blue); |
surajdagar | 0:2bfa06d10e28 | 192 | |
surajdagar | 0:2bfa06d10e28 | 193 | char* hostname = URL; |
surajdagar | 0:2bfa06d10e28 | 194 | int port = PORT; |
surajdagar | 0:2bfa06d10e28 | 195 | // uniqueID = "IoT-Moog-Device1"; //Guru Device |
surajdagar | 0:2bfa06d10e28 | 196 | uniqueID = "SomethingOtherThanPumpTest"; // Suraj Device |
surajdagar | 0:2bfa06d10e28 | 197 | sprintf(clientID, CLIENTSTR, uniqueID.c_str()); |
surajdagar | 0:2bfa06d10e28 | 198 | |
surajdagar | 0:2bfa06d10e28 | 199 | PRINTF("Local network info...\r\n"); |
surajdagar | 0:2bfa06d10e28 | 200 | PRINTF("IP address is %s\r\n", eth.getIPAddress()); |
surajdagar | 0:2bfa06d10e28 | 201 | PRINTF("MAC address is %s\r\n", eth.getMACAddress()); |
surajdagar | 0:2bfa06d10e28 | 202 | PRINTF("Gateway address is %s\r\n", eth.getGateway()); |
surajdagar | 0:2bfa06d10e28 | 203 | PRINTF("Your <uniqueID> is: %s\r\n", uniqueID.c_str()); |
surajdagar | 0:2bfa06d10e28 | 204 | PRINTF("---------------------------------------------------------------\r\n"); |
surajdagar | 0:2bfa06d10e28 | 205 | |
surajdagar | 0:2bfa06d10e28 | 206 | MQTTPacket_connectData data = MQTTPacket_connectData_initializer; |
surajdagar | 0:2bfa06d10e28 | 207 | |
surajdagar | 0:2bfa06d10e28 | 208 | int tries; |
surajdagar | 0:2bfa06d10e28 | 209 | |
surajdagar | 0:2bfa06d10e28 | 210 | while( !good ) { |
surajdagar | 0:2bfa06d10e28 | 211 | |
surajdagar | 0:2bfa06d10e28 | 212 | tries=0; |
surajdagar | 0:2bfa06d10e28 | 213 | // connect to TCP socket and check return code |
surajdagar | 0:2bfa06d10e28 | 214 | tmr.start(); |
surajdagar | 0:2bfa06d10e28 | 215 | rc = 1; |
surajdagar | 0:2bfa06d10e28 | 216 | while( rc && tries < 3) { |
surajdagar | 0:2bfa06d10e28 | 217 | PRINTF("\r\n\r\n(%d) Attempting TCP connect to %s:%d: ", tries++, hostname, port); |
surajdagar | 0:2bfa06d10e28 | 218 | rc = ipstack.connect(hostname, port); |
surajdagar | 0:2bfa06d10e28 | 219 | if( rc ) { |
surajdagar | 0:2bfa06d10e28 | 220 | PRINTF("Failed (%d)!\r\n",rc); |
surajdagar | 0:2bfa06d10e28 | 221 | while( tmr.read_ms() < 5000 ) ; |
surajdagar | 0:2bfa06d10e28 | 222 | tmr.reset(); |
surajdagar | 0:2bfa06d10e28 | 223 | } |
surajdagar | 0:2bfa06d10e28 | 224 | else { |
surajdagar | 0:2bfa06d10e28 | 225 | PRINTF("Success!\r\n"); |
surajdagar | 0:2bfa06d10e28 | 226 | rc = 0; |
surajdagar | 0:2bfa06d10e28 | 227 | } |
surajdagar | 0:2bfa06d10e28 | 228 | } |
surajdagar | 0:2bfa06d10e28 | 229 | if( tries < 3 ) |
surajdagar | 0:2bfa06d10e28 | 230 | tries = 0; |
surajdagar | 0:2bfa06d10e28 | 231 | else |
surajdagar | 0:2bfa06d10e28 | 232 | continue; |
surajdagar | 0:2bfa06d10e28 | 233 | |
surajdagar | 0:2bfa06d10e28 | 234 | data.willFlag = 0; |
surajdagar | 0:2bfa06d10e28 | 235 | data.MQTTVersion = 3; |
surajdagar | 0:2bfa06d10e28 | 236 | |
surajdagar | 0:2bfa06d10e28 | 237 | data.clientID.cstring = clientID; |
surajdagar | 0:2bfa06d10e28 | 238 | data.username.cstring = USERNAME; |
surajdagar | 0:2bfa06d10e28 | 239 | data.password.cstring = PASSWORD; |
surajdagar | 0:2bfa06d10e28 | 240 | data.keepAliveInterval = 10; |
surajdagar | 0:2bfa06d10e28 | 241 | data.cleansession = 1; |
surajdagar | 0:2bfa06d10e28 | 242 | |
surajdagar | 0:2bfa06d10e28 | 243 | rc = 1; |
surajdagar | 0:2bfa06d10e28 | 244 | tmr.reset(); |
surajdagar | 0:2bfa06d10e28 | 245 | while( !client.isConnected() && rc && tries < 3) { |
surajdagar | 0:2bfa06d10e28 | 246 | PRINTF("(%d) Attempting MQTT connect to '%s': ", tries++, clientID); |
surajdagar | 0:2bfa06d10e28 | 247 | rc = client.connect(data); |
surajdagar | 0:2bfa06d10e28 | 248 | if( rc ) { |
surajdagar | 0:2bfa06d10e28 | 249 | PRINTF("Failed (%d)!\r\n",rc); |
surajdagar | 0:2bfa06d10e28 | 250 | while( tmr.read_ms() < 5000 ); |
surajdagar | 0:2bfa06d10e28 | 251 | tmr.reset(); |
surajdagar | 0:2bfa06d10e28 | 252 | } |
surajdagar | 0:2bfa06d10e28 | 253 | else |
surajdagar | 0:2bfa06d10e28 | 254 | PRINTF("Success!\r\n"); |
surajdagar | 0:2bfa06d10e28 | 255 | } |
surajdagar | 0:2bfa06d10e28 | 256 | |
surajdagar | 0:2bfa06d10e28 | 257 | if( tries < 3 ) |
surajdagar | 0:2bfa06d10e28 | 258 | tries = 0; |
surajdagar | 0:2bfa06d10e28 | 259 | else |
surajdagar | 0:2bfa06d10e28 | 260 | continue; |
surajdagar | 0:2bfa06d10e28 | 261 | |
surajdagar | 0:2bfa06d10e28 | 262 | // subscribe to MQTT topic |
surajdagar | 0:2bfa06d10e28 | 263 | tmr.reset(); |
surajdagar | 0:2bfa06d10e28 | 264 | rc = 1; |
surajdagar | 0:2bfa06d10e28 | 265 | while( rc && client.isConnected() && tries < 3) { |
surajdagar | 0:2bfa06d10e28 | 266 | PRINTF("(%d) Attempting to subscribing to MQTT topic '%s': ", tries, SUBSCRIBTOPIC); |
surajdagar | 0:2bfa06d10e28 | 267 | rc = client.subscribe(SUBSCRIBTOPIC, MQTT::QOS0, messageArrived); |
surajdagar | 0:2bfa06d10e28 | 268 | if( rc ) { |
surajdagar | 0:2bfa06d10e28 | 269 | PRINTF("Failed (%d)!\r\n", rc); |
surajdagar | 0:2bfa06d10e28 | 270 | while( tmr.read_ms() < 5000 ); |
surajdagar | 0:2bfa06d10e28 | 271 | tries++; |
surajdagar | 0:2bfa06d10e28 | 272 | tmr.reset(); |
surajdagar | 0:2bfa06d10e28 | 273 | } |
surajdagar | 0:2bfa06d10e28 | 274 | else { |
surajdagar | 0:2bfa06d10e28 | 275 | good=1; |
surajdagar | 0:2bfa06d10e28 | 276 | PRINTF("Subscribe successful!\r\n"); |
surajdagar | 0:2bfa06d10e28 | 277 | } |
surajdagar | 0:2bfa06d10e28 | 278 | } |
surajdagar | 0:2bfa06d10e28 | 279 | while (!good); |
surajdagar | 0:2bfa06d10e28 | 280 | } |
surajdagar | 0:2bfa06d10e28 | 281 | |
surajdagar | 0:2bfa06d10e28 | 282 | MQTT::Message message; |
surajdagar | 0:2bfa06d10e28 | 283 | message.qos = MQTT::QOS0; |
surajdagar | 0:2bfa06d10e28 | 284 | message.retained = false; |
surajdagar | 0:2bfa06d10e28 | 285 | message.dup = false; |
surajdagar | 0:2bfa06d10e28 | 286 | message.payload = (void*)buf; |
surajdagar | 0:2bfa06d10e28 | 287 | |
surajdagar | 0:2bfa06d10e28 | 288 | while(true) |
surajdagar | 0:2bfa06d10e28 | 289 | { |
surajdagar | 0:2bfa06d10e28 | 290 | osEvent switchEvent = messageQ.get(100); |
surajdagar | 0:2bfa06d10e28 | 291 | if(key_reader != old_Key) |
surajdagar | 0:2bfa06d10e28 | 292 | { |
surajdagar | 0:2bfa06d10e28 | 293 | old_Key = key_reader; |
surajdagar | 0:2bfa06d10e28 | 294 | memset(buf,0x00,sizeof(buf)); |
surajdagar | 0:2bfa06d10e28 | 295 | //sprintf(buf, "{\"d\" : {\"Key\" : %d }}", key_reader); |
surajdagar | 0:2bfa06d10e28 | 296 | sprintf(buf, "{\"Key\":\"%d\"}", key_reader); |
surajdagar | 0:2bfa06d10e28 | 297 | PRINTF("Publishing MQTT message '%s' ", (char*)message.payload); |
surajdagar | 0:2bfa06d10e28 | 298 | message.payloadlen = strlen(buf); |
surajdagar | 0:2bfa06d10e28 | 299 | PRINTF("\n payloadlen:(%d)\r\n",message.payloadlen); |
surajdagar | 0:2bfa06d10e28 | 300 | rc = client.publish(topic, message); |
surajdagar | 0:2bfa06d10e28 | 301 | if( rc ) |
surajdagar | 0:2bfa06d10e28 | 302 | { |
surajdagar | 0:2bfa06d10e28 | 303 | PRINTF("Publish request failed! (%d)\r\n",rc); |
surajdagar | 0:2bfa06d10e28 | 304 | FATAL_WNC_ERROR(resume); |
surajdagar | 0:2bfa06d10e28 | 305 | } |
surajdagar | 0:2bfa06d10e28 | 306 | } |
surajdagar | 0:2bfa06d10e28 | 307 | else |
surajdagar | 0:2bfa06d10e28 | 308 | { |
surajdagar | 0:2bfa06d10e28 | 309 | client.yield(1000); |
surajdagar | 0:2bfa06d10e28 | 310 | } |
surajdagar | 0:2bfa06d10e28 | 311 | } |
surajdagar | 0:2bfa06d10e28 | 312 | } |