EthW5500+STM32

Dependencies:   MQTT WIZnet_Library mbed

Fork of EthW5500 by YX ZHANG

Revision:
2:566a6b762cdf
Child:
3:54ad271708ff
diff -r 9689429a0a29 -r 566a6b762cdf ETHW5500.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ETHW5500.cpp	Thu Apr 19 13:57:24 2018 +0000
@@ -0,0 +1,76 @@
+#include "ETHW5500.h"
+
+//W5500接线 mosi,miso,sclk,cs,reset
+WIZnetInterface wiz(PA_7,PA_6,PA_5,PB_6,PC_7);
+
+void meta_report(MClient& client, const char *topic, 
+                    const char* payload = NULL, size_t payload_len = 0, 
+                    bool retain = false, MQTT::QoS qos = MQTT::QOS1){
+    int ret = client.publish(topic, (void*)payload, payload_len, qos, retain);
+    printf("client.publish()=%d\r\n",ret);
+}
+void messageArrived(MQTT::MessageData& md)
+{
+    MQTT::Message &message = md.message;
+    char buf[64];
+    int value, len = sizeof(buf)-1;
+    if(message.payloadlen < len)
+        len = message.payloadlen;
+    memcpy(buf, message.payload, len);
+    buf[len] = '\0';
+    sscanf(buf, "%d", &value);
+    printf("received %d\r\n", value);
+}
+MQTTSocket sock;
+MClient client(sock);
+int Eth_Init(uint8_t *mac_addr)
+{
+    int ret;
+    wiz.init(mac_addr);
+    printf("DHCP...\r\n");
+    wiz.connect();
+    printf("IP: %s\r\n", wiz.getIPAddress());
+    
+    int timecount=1;
+    ret = sock.connect("tdxls-iot.xicp.net",1883);
+    //printf("%d-th Server connetion attemp\n",timecount);
+    while(ret!=0){
+        timecount++;
+        //printf("%d-th Server connetion attemp\n",timecount);
+        ret = sock.connect("tdxls-iot.xicp.net",1883);
+        if(timecount>20){
+            printf("failed to connet Server,Please Check out and Reset\n");
+            return 1;
+        }
+    }
+    printf("sock.connect()=%d\r\n",ret);
+    
+    ret = client.connect();
+    if(ret != 0){
+        printf("MQTT connect failed\r\n");
+        return 1;
+    }
+    printf("client.connect()=%d\r\n",ret);
+    return ret;
+}
+
+int Eth_Subscribe(const char* ns,const char *NODE_NAME, const char* type)
+{
+    int ret;
+    char topic[64];
+    sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type);
+    //printf("topic=%s\r\n",topic);
+    ret = client.subscribe(topic, MQTT::QOS1, messageArrived);    
+    printf("sock.subscribe()=%d\r\n",ret);
+    return ret;
+}
+void Eth_Report(const char* ns,const char *NODE_NAME, const char* type,const char* payload = NULL, size_t payload_len = 0, 
+                    bool retain = false)
+{
+    char topic[64];
+    sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type);
+    //printf("topic=%s\r\n",topic);
+    meta_report(client, topic,payload,payload_len,retain);
+}
+
+