EthW5500+STM32
Dependencies: MQTT WIZnet_Library mbed
Fork of EthW5500 by
ETHW5500.cpp
- Committer:
- AlexQian
- Date:
- 2018-04-20
- Revision:
- 3:54ad271708ff
- Parent:
- 2:566a6b762cdf
- Child:
- 4:10f83daba9ea
File content as of revision 3:54ad271708ff:
#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()); return ret; } int Eth_ConnectToSer(char *URL) { int ret; int timecount=1; ret = sock.connect(URL,1883); //printf("%d-th Server connetion attemp\n",timecount); while(ret!=0){ timecount++; //printf("%d-th Server connetion attemp\n",timecount); ret = sock.connect(URL,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); }