EthW5500+STM32
Dependencies: MQTT WIZnet_Library mbed
Fork of EthW5500 by
ETHW5500.cpp@5:23424c038538, 2018-04-27 (annotated)
- Committer:
- AlexQian
- Date:
- Fri Apr 27 06:50:55 2018 +0000
- Revision:
- 5:23424c038538
- Parent:
- 4:10f83daba9ea
updata
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AlexQian | 2:566a6b762cdf | 1 | #include "ETHW5500.h" |
AlexQian | 5:23424c038538 | 2 | #include "WIZnetInterface.h" |
AlexQian | 5:23424c038538 | 3 | #include "MQTTSocket.h" |
AlexQian | 5:23424c038538 | 4 | #include "MQTTClient.h" |
AlexQian | 2:566a6b762cdf | 5 | //W5500接线 mosi,miso,sclk,cs,reset |
AlexQian | 4:10f83daba9ea | 6 | //WIZnetInterface wiz(PA_7,PA_6,PA_5,PB_6,PC_7); |
AlexQian | 4:10f83daba9ea | 7 | extern WIZnetInterface wiz; |
AlexQian | 4:10f83daba9ea | 8 | extern Serial pc; |
AlexQian | 5:23424c038538 | 9 | extern MQTTSocket sock; |
AlexQian | 5:23424c038538 | 10 | extern MClient client; |
AlexQian | 5:23424c038538 | 11 | void meta_report( const char *topic, |
AlexQian | 5:23424c038538 | 12 | const char* payload = NULL, size_t payload_len = 0, |
AlexQian | 2:566a6b762cdf | 13 | bool retain = false, MQTT::QoS qos = MQTT::QOS1){ |
AlexQian | 2:566a6b762cdf | 14 | int ret = client.publish(topic, (void*)payload, payload_len, qos, retain); |
AlexQian | 4:10f83daba9ea | 15 | pc.printf("client.publish()=%d\r\n",ret); |
AlexQian | 2:566a6b762cdf | 16 | } |
AlexQian | 2:566a6b762cdf | 17 | void messageArrived(MQTT::MessageData& md) |
AlexQian | 2:566a6b762cdf | 18 | { |
AlexQian | 2:566a6b762cdf | 19 | MQTT::Message &message = md.message; |
AlexQian | 2:566a6b762cdf | 20 | char buf[64]; |
AlexQian | 2:566a6b762cdf | 21 | int value, len = sizeof(buf)-1; |
AlexQian | 2:566a6b762cdf | 22 | if(message.payloadlen < len) |
AlexQian | 2:566a6b762cdf | 23 | len = message.payloadlen; |
AlexQian | 2:566a6b762cdf | 24 | memcpy(buf, message.payload, len); |
AlexQian | 2:566a6b762cdf | 25 | buf[len] = '\0'; |
AlexQian | 2:566a6b762cdf | 26 | sscanf(buf, "%d", &value); |
AlexQian | 4:10f83daba9ea | 27 | pc.printf("received %d\r\n", value); |
AlexQian | 2:566a6b762cdf | 28 | } |
AlexQian | 5:23424c038538 | 29 | |
AlexQian | 5:23424c038538 | 30 | void Eth_Init(uint8_t *mac_addr) |
AlexQian | 2:566a6b762cdf | 31 | { |
AlexQian | 2:566a6b762cdf | 32 | wiz.init(mac_addr); |
AlexQian | 4:10f83daba9ea | 33 | pc.printf("DHCP...\r\n"); |
AlexQian | 2:566a6b762cdf | 34 | wiz.connect(); |
AlexQian | 4:10f83daba9ea | 35 | pc.printf("IP: %s\r\n", wiz.getIPAddress()); |
AlexQian | 5:23424c038538 | 36 | } |
AlexQian | 5:23424c038538 | 37 | |
AlexQian | 5:23424c038538 | 38 | int Eth_ConnetToSever(char* URL) |
AlexQian | 5:23424c038538 | 39 | { |
AlexQian | 5:23424c038538 | 40 | int ret; |
AlexQian | 2:566a6b762cdf | 41 | int timecount=1; |
AlexQian | 5:23424c038538 | 42 | ret = sock.connect(URL,1883); |
AlexQian | 4:10f83daba9ea | 43 | //pc.printf("%d-th Server connetion attemp\n",timecount); |
AlexQian | 2:566a6b762cdf | 44 | while(ret!=0){ |
AlexQian | 2:566a6b762cdf | 45 | timecount++; |
AlexQian | 4:10f83daba9ea | 46 | //pc.printf("%d-th Server connetion attemp\n",timecount); |
AlexQian | 4:10f83daba9ea | 47 | ret = sock.connect("tdxls-iot.xicp.net",1883); |
AlexQian | 2:566a6b762cdf | 48 | if(timecount>20){ |
AlexQian | 4:10f83daba9ea | 49 | pc.printf("failed to connet Server,Please Check out and Reset\n"); |
AlexQian | 2:566a6b762cdf | 50 | return 1; |
AlexQian | 2:566a6b762cdf | 51 | } |
AlexQian | 2:566a6b762cdf | 52 | } |
AlexQian | 4:10f83daba9ea | 53 | pc.printf("sock.connect()=%d\r\n",ret); |
AlexQian | 2:566a6b762cdf | 54 | |
AlexQian | 2:566a6b762cdf | 55 | ret = client.connect(); |
AlexQian | 2:566a6b762cdf | 56 | if(ret != 0){ |
AlexQian | 4:10f83daba9ea | 57 | pc.printf("MQTT connect failed\r\n"); |
AlexQian | 2:566a6b762cdf | 58 | return 1; |
AlexQian | 2:566a6b762cdf | 59 | } |
AlexQian | 4:10f83daba9ea | 60 | pc.printf("client.connect()=%d\r\n",ret); |
AlexQian | 2:566a6b762cdf | 61 | return ret; |
AlexQian | 2:566a6b762cdf | 62 | } |
AlexQian | 2:566a6b762cdf | 63 | |
AlexQian | 2:566a6b762cdf | 64 | int Eth_Subscribe(const char* ns,const char *NODE_NAME, const char* type) |
AlexQian | 2:566a6b762cdf | 65 | { |
AlexQian | 2:566a6b762cdf | 66 | int ret; |
AlexQian | 2:566a6b762cdf | 67 | char topic[64]; |
AlexQian | 2:566a6b762cdf | 68 | sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type); |
AlexQian | 2:566a6b762cdf | 69 | //printf("topic=%s\r\n",topic); |
AlexQian | 2:566a6b762cdf | 70 | ret = client.subscribe(topic, MQTT::QOS1, messageArrived); |
AlexQian | 4:10f83daba9ea | 71 | pc.printf("sock.subscribe()=%d\r\n",ret); |
AlexQian | 2:566a6b762cdf | 72 | return ret; |
AlexQian | 2:566a6b762cdf | 73 | } |
AlexQian | 2:566a6b762cdf | 74 | 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 | 75 | bool retain = false) |
AlexQian | 2:566a6b762cdf | 76 | { |
AlexQian | 4:10f83daba9ea | 77 | char topic[64]; |
AlexQian | 4:10f83daba9ea | 78 | sprintf(topic, "/%s/%s/%s", ns, NODE_NAME, type); |
AlexQian | 4:10f83daba9ea | 79 | //printf("topic=%s\r\n",topic); |
AlexQian | 5:23424c038538 | 80 | meta_report(topic,payload,payload_len,retain); |
AlexQian | 2:566a6b762cdf | 81 | } |
AlexQian | 2:566a6b762cdf | 82 | |
AlexQian | 2:566a6b762cdf | 83 |