Contains example code to connect the mbed LPC1768 or FRDM-K64F devices to the IBM Internet of Things Cloud service via ethernet.

Dependencies:   C12832 MQTT LM75B MMA7660

Dependents:   MFT_IoT_demo_USB400 IBM_RFID

Committer:
samdanbury
Date:
Wed Aug 20 12:45:14 2014 +0000
Revision:
6:37b6d0d56190
Code completely changed to improve the structure, flow and memory usage of the application

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samdanbury 6:37b6d0d56190 1 /*******************************************************************************
samdanbury 6:37b6d0d56190 2 * Copyright (c) 2014 IBM Corp.
samdanbury 6:37b6d0d56190 3 *
samdanbury 6:37b6d0d56190 4 * All rights reserved. This program and the accompanying materials
samdanbury 6:37b6d0d56190 5 * are made available under the terms of the Eclipse Public License v1.0
samdanbury 6:37b6d0d56190 6 * and Eclipse Distribution License v1.0 which accompany this distribution.
samdanbury 6:37b6d0d56190 7 *
samdanbury 6:37b6d0d56190 8 * The Eclipse Public License is available at
samdanbury 6:37b6d0d56190 9 * http://www.eclipse.org/legal/epl-v10.html
samdanbury 6:37b6d0d56190 10 * and the Eclipse Distribution License is available at
samdanbury 6:37b6d0d56190 11 * http://www.eclipse.org/org/documents/edl-v10.php.
samdanbury 6:37b6d0d56190 12 *
samdanbury 6:37b6d0d56190 13 * Contributors:
samdanbury 6:37b6d0d56190 14 * Ian Craggs - initial API and implementation and/or initial documentation
samdanbury 6:37b6d0d56190 15 *******************************************************************************/
samdanbury 6:37b6d0d56190 16
samdanbury 6:37b6d0d56190 17 #include "mbed.h"
samdanbury 6:37b6d0d56190 18 #include "EthernetInterface.h"
samdanbury 6:37b6d0d56190 19 #include "C12832_lcd.h"
samdanbury 6:37b6d0d56190 20
samdanbury 6:37b6d0d56190 21 #include "MQTTPacket.h"
samdanbury 6:37b6d0d56190 22
samdanbury 6:37b6d0d56190 23 DigitalOut myled(LED2);
samdanbury 6:37b6d0d56190 24 C12832_LCD lcd;
samdanbury 6:37b6d0d56190 25
samdanbury 6:37b6d0d56190 26 int publish()
samdanbury 6:37b6d0d56190 27 {
samdanbury 6:37b6d0d56190 28 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
samdanbury 6:37b6d0d56190 29 int rc = 0;
samdanbury 6:37b6d0d56190 30 char buf[200];
samdanbury 6:37b6d0d56190 31 int buflen = sizeof(buf);
samdanbury 6:37b6d0d56190 32 TCPSocketConnection mysock;
samdanbury 6:37b6d0d56190 33 MQTTString topicString = MQTTString_initializer;
samdanbury 6:37b6d0d56190 34 char* payload = "I'm alive!";
samdanbury 6:37b6d0d56190 35 int payloadlen = strlen(payload);
samdanbury 6:37b6d0d56190 36 int len = 0;
samdanbury 6:37b6d0d56190 37
samdanbury 6:37b6d0d56190 38 mysock.connect("m2m.eclipse.org", 1883);
samdanbury 6:37b6d0d56190 39
samdanbury 6:37b6d0d56190 40 data.clientID.cstring = "mbed test client - Ian Craggs";
samdanbury 6:37b6d0d56190 41 data.keepAliveInterval = 20;
samdanbury 6:37b6d0d56190 42 data.cleansession = 1;
samdanbury 6:37b6d0d56190 43 data.MQTTVersion = 3;
samdanbury 6:37b6d0d56190 44
samdanbury 6:37b6d0d56190 45 len = MQTTSerialize_connect(buf, buflen, &data);
samdanbury 6:37b6d0d56190 46
samdanbury 6:37b6d0d56190 47 topicString.cstring = "mbed NXP LPC1768";
samdanbury 6:37b6d0d56190 48 len += MQTTSerialize_publish(buf + len, buflen - len, 0, 0, 0, 0, topicString, payload, payloadlen);
samdanbury 6:37b6d0d56190 49
samdanbury 6:37b6d0d56190 50 len += MQTTSerialize_disconnect(buf + len, buflen - len);
samdanbury 6:37b6d0d56190 51
samdanbury 6:37b6d0d56190 52 rc = 0;
samdanbury 6:37b6d0d56190 53 while (rc < len)
samdanbury 6:37b6d0d56190 54 {
samdanbury 6:37b6d0d56190 55 int rc1 = mysock.send(buf, len);
samdanbury 6:37b6d0d56190 56 if (rc1 == -1)
samdanbury 6:37b6d0d56190 57 {
samdanbury 6:37b6d0d56190 58 lcd.printf("Send failed\n");
samdanbury 6:37b6d0d56190 59 break;
samdanbury 6:37b6d0d56190 60 }
samdanbury 6:37b6d0d56190 61 else
samdanbury 6:37b6d0d56190 62 rc += rc1;
samdanbury 6:37b6d0d56190 63 }
samdanbury 6:37b6d0d56190 64 if (rc == len)
samdanbury 6:37b6d0d56190 65 lcd.printf("Send succeeded\n");
samdanbury 6:37b6d0d56190 66 wait(0.2);
samdanbury 6:37b6d0d56190 67
samdanbury 6:37b6d0d56190 68 return 0;
samdanbury 6:37b6d0d56190 69 }
samdanbury 6:37b6d0d56190 70
samdanbury 6:37b6d0d56190 71 int main()
samdanbury 6:37b6d0d56190 72 {
samdanbury 6:37b6d0d56190 73 EthernetInterface eth;
samdanbury 6:37b6d0d56190 74 eth.init(); //Use DHCP
samdanbury 6:37b6d0d56190 75 eth.connect();
samdanbury 6:37b6d0d56190 76 lcd.printf("IP Address is %s\n", eth.getIPAddress());
samdanbury 6:37b6d0d56190 77
samdanbury 6:37b6d0d56190 78 while(1)
samdanbury 6:37b6d0d56190 79 {
samdanbury 6:37b6d0d56190 80 myled = 1;
samdanbury 6:37b6d0d56190 81 publish();
samdanbury 6:37b6d0d56190 82 wait(0.2);
samdanbury 6:37b6d0d56190 83 myled = 0;
samdanbury 6:37b6d0d56190 84 publish();
samdanbury 6:37b6d0d56190 85 wait(0.2);
samdanbury 6:37b6d0d56190 86 }
samdanbury 6:37b6d0d56190 87
samdanbury 6:37b6d0d56190 88 eth.disconnect();
samdanbury 6:37b6d0d56190 89 }