EthW5500+STM32

Dependencies:   MQTT WIZnet_Library mbed

Fork of EthW5500 by YX ZHANG

Committer:
AlexQian
Date:
Fri Apr 20 07:28:56 2018 +0000
Revision:
4:10f83daba9ea
Parent:
3:54ad271708ff
Child:
5:23424c038538
updata

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AlexQian 2:566a6b762cdf 1 #include "ETHW5500.h"
AlexQian 2:566a6b762cdf 2
AlexQian 2:566a6b762cdf 3 //W5500接线 mosi,miso,sclk,cs,reset
AlexQian 4:10f83daba9ea 4 //WIZnetInterface wiz(PA_7,PA_6,PA_5,PB_6,PC_7);
AlexQian 4:10f83daba9ea 5 extern WIZnetInterface wiz;
AlexQian 4:10f83daba9ea 6 extern Serial pc;
AlexQian 2:566a6b762cdf 7 void meta_report(MClient& client, const char *topic,
AlexQian 2:566a6b762cdf 8 const char* payload = NULL, size_t payload_len = 0,
AlexQian 2:566a6b762cdf 9 bool retain = false, MQTT::QoS qos = MQTT::QOS1){
AlexQian 2:566a6b762cdf 10 int ret = client.publish(topic, (void*)payload, payload_len, qos, retain);
AlexQian 4:10f83daba9ea 11 pc.printf("client.publish()=%d\r\n",ret);
AlexQian 2:566a6b762cdf 12 }
AlexQian 2:566a6b762cdf 13 void messageArrived(MQTT::MessageData& md)
AlexQian 2:566a6b762cdf 14 {
AlexQian 2:566a6b762cdf 15 MQTT::Message &message = md.message;
AlexQian 2:566a6b762cdf 16 char buf[64];
AlexQian 2:566a6b762cdf 17 int value, len = sizeof(buf)-1;
AlexQian 2:566a6b762cdf 18 if(message.payloadlen < len)
AlexQian 2:566a6b762cdf 19 len = message.payloadlen;
AlexQian 2:566a6b762cdf 20 memcpy(buf, message.payload, len);
AlexQian 2:566a6b762cdf 21 buf[len] = '\0';
AlexQian 2:566a6b762cdf 22 sscanf(buf, "%d", &value);
AlexQian 4:10f83daba9ea 23 pc.printf("received %d\r\n", value);
AlexQian 2:566a6b762cdf 24 }
AlexQian 2:566a6b762cdf 25 MQTTSocket sock;
AlexQian 2:566a6b762cdf 26 MClient client(sock);
AlexQian 2:566a6b762cdf 27 int Eth_Init(uint8_t *mac_addr)
AlexQian 2:566a6b762cdf 28 {
AlexQian 2:566a6b762cdf 29 int ret;
AlexQian 2:566a6b762cdf 30 wiz.init(mac_addr);
AlexQian 4:10f83daba9ea 31 pc.printf("DHCP...\r\n");
AlexQian 2:566a6b762cdf 32 wiz.connect();
AlexQian 4:10f83daba9ea 33 pc.printf("IP: %s\r\n", wiz.getIPAddress());
AlexQian 2:566a6b762cdf 34
AlexQian 2:566a6b762cdf 35 int timecount=1;
AlexQian 4:10f83daba9ea 36 ret = sock.connect("tdxls-iot.xicp.net",1883);
AlexQian 4:10f83daba9ea 37 //pc.printf("%d-th Server connetion attemp\n",timecount);
AlexQian 2:566a6b762cdf 38 while(ret!=0){
AlexQian 2:566a6b762cdf 39 timecount++;
AlexQian 4:10f83daba9ea 40 //pc.printf("%d-th Server connetion attemp\n",timecount);
AlexQian 4:10f83daba9ea 41 ret = sock.connect("tdxls-iot.xicp.net",1883);
AlexQian 2:566a6b762cdf 42 if(timecount>20){
AlexQian 4:10f83daba9ea 43 pc.printf("failed to connet Server,Please Check out and Reset\n");
AlexQian 2:566a6b762cdf 44 return 1;
AlexQian 2:566a6b762cdf 45 }
AlexQian 2:566a6b762cdf 46 }
AlexQian 4:10f83daba9ea 47 pc.printf("sock.connect()=%d\r\n",ret);
AlexQian 2:566a6b762cdf 48
AlexQian 2:566a6b762cdf 49 ret = client.connect();
AlexQian 2:566a6b762cdf 50 if(ret != 0){
AlexQian 4:10f83daba9ea 51 pc.printf("MQTT connect failed\r\n");
AlexQian 2:566a6b762cdf 52 return 1;
AlexQian 2:566a6b762cdf 53 }
AlexQian 4:10f83daba9ea 54 pc.printf("client.connect()=%d\r\n",ret);
AlexQian 2:566a6b762cdf 55 return ret;
AlexQian 2:566a6b762cdf 56 }
AlexQian 2:566a6b762cdf 57
AlexQian 2:566a6b762cdf 58 int Eth_Subscribe(const char* ns,const char *NODE_NAME, const char* type)
AlexQian 2:566a6b762cdf 59 {
AlexQian 2:566a6b762cdf 60 int ret;
AlexQian 2:566a6b762cdf 61 char topic[64];
AlexQian 2:566a6b762cdf 62 sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type);
AlexQian 2:566a6b762cdf 63 //printf("topic=%s\r\n",topic);
AlexQian 2:566a6b762cdf 64 ret = client.subscribe(topic, MQTT::QOS1, messageArrived);
AlexQian 4:10f83daba9ea 65 pc.printf("sock.subscribe()=%d\r\n",ret);
AlexQian 2:566a6b762cdf 66 return ret;
AlexQian 2:566a6b762cdf 67 }
AlexQian 2:566a6b762cdf 68 void Eth_Report(const char* ns,const char *NODE_NAME, const char* type,const char* payload = NULL, size_t payload_len = 0,
AlexQian 2:566a6b762cdf 69 bool retain = false)
AlexQian 2:566a6b762cdf 70 {
AlexQian 4:10f83daba9ea 71 char topic[64];
AlexQian 4:10f83daba9ea 72 sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type);
AlexQian 4:10f83daba9ea 73 //printf("topic=%s\r\n",topic);
AlexQian 4:10f83daba9ea 74 meta_report(client, topic,payload,payload_len,retain);
AlexQian 2:566a6b762cdf 75 }
AlexQian 2:566a6b762cdf 76
AlexQian 2:566a6b762cdf 77