MQTT client to test the ENC28J60-EMAC on NUCLEO-F446RE.

Dependencies:   ENC28J60-EMAC

Committer:
hudakz
Date:
Mon Mar 29 09:32:44 2021 +0000
Revision:
5:d9570dbf2f82
Parent:
0:238f0d0c0ba3
MQTT client to test the ENC28J60-EMAC on NUCLEO-F446RE.

Who changed what in which revision?

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