EthW5500+STM32

Dependencies:   MQTT WIZnet_Library mbed

Fork of EthW5500 by YX ZHANG

Committer:
AlexQian
Date:
Fri Apr 27 06:50:55 2018 +0000
Revision:
5:23424c038538
Parent:
4:10f83daba9ea
updata

Who changed what in which revision?

UserRevisionLine numberNew 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