EthW5500+STM32
Dependencies: MQTT WIZnet_Library mbed
Fork of EthW5500 by
ETHW5500.cpp@4:10f83daba9ea, 2018-04-20 (annotated)
- 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?
User | Revision | Line number | New 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 |