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