EthW5500+STM32

Dependencies:   MQTT WIZnet_Library mbed

Fork of EthW5500 by YX ZHANG

Committer:
AlexQian
Date:
Thu Apr 19 13:57:24 2018 +0000
Revision:
2:566a6b762cdf
Child:
3:54ad271708ff
packed;

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