![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
EthW5500+STM32
Dependencies: MQTT WIZnet_Library mbed
Fork of EthW5500 by
Diff: ETHW5500.cpp
- Revision:
- 2:566a6b762cdf
- Child:
- 3:54ad271708ff
--- /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); +} + +