TEST

Dependencies:   MQTT

Fork of HelloMQTT by MQTT

Committer:
yuyangworld
Date:
Sun Apr 15 18:03:48 2018 +0000
Revision:
24:fbc6e751e923
TEST

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuyangworld 24:fbc6e751e923 1 #ifndef __MAGIC_CONNECT_H__
yuyangworld 24:fbc6e751e923 2 #define __MAGIC_CONNECT_H__
yuyangworld 24:fbc6e751e923 3
yuyangworld 24:fbc6e751e923 4 #include "mbed.h"
yuyangworld 24:fbc6e751e923 5
yuyangworld 24:fbc6e751e923 6 Serial output(USBTX, USBRX);
yuyangworld 24:fbc6e751e923 7
yuyangworld 24:fbc6e751e923 8 #define ETHERNET 1
yuyangworld 24:fbc6e751e923 9 #define WIFI_ESP8266 2
yuyangworld 24:fbc6e751e923 10 #define MESH_LOWPAN_ND 3
yuyangworld 24:fbc6e751e923 11 #define MESH_THREAD 4
yuyangworld 24:fbc6e751e923 12
yuyangworld 24:fbc6e751e923 13 #if MBED_CONF_APP_NETWORK_INTERFACE == WIFI_ESP8266
yuyangworld 24:fbc6e751e923 14 #include "ESP8266Interface.h"
yuyangworld 24:fbc6e751e923 15
yuyangworld 24:fbc6e751e923 16 #ifdef MBED_CONF_APP_ESP8266_DEBUG
yuyangworld 24:fbc6e751e923 17 ESP8266Interface esp(MBED_CONF_APP_ESP8266_TX, MBED_CONF_APP_ESP8266_RX, MBED_CONF_APP_ESP8266_DEBUG);
yuyangworld 24:fbc6e751e923 18 #else
yuyangworld 24:fbc6e751e923 19 ESP8266Interface esp(MBED_CONF_APP_ESP8266_TX, MBED_CONF_APP_ESP8266_RX);
yuyangworld 24:fbc6e751e923 20 #endif
yuyangworld 24:fbc6e751e923 21
yuyangworld 24:fbc6e751e923 22 #elif MBED_CONF_APP_NETWORK_INTERFACE == ETHERNET
yuyangworld 24:fbc6e751e923 23 #include "EthernetInterface.h"
yuyangworld 24:fbc6e751e923 24 EthernetInterface eth;
yuyangworld 24:fbc6e751e923 25 #elif MBED_CONF_APP_NETWORK_INTERFACE == MESH_LOWPAN_ND
yuyangworld 24:fbc6e751e923 26 #define MESH
yuyangworld 24:fbc6e751e923 27 #include "NanostackInterface.h"
yuyangworld 24:fbc6e751e923 28 LoWPANNDInterface mesh;
yuyangworld 24:fbc6e751e923 29 #elif MBED_CONF_APP_NETWORK_INTERFACE == MESH_THREAD
yuyangworld 24:fbc6e751e923 30 #define MESH
yuyangworld 24:fbc6e751e923 31 #include "NanostackInterface.h"
yuyangworld 24:fbc6e751e923 32 ThreadInterface mesh;
yuyangworld 24:fbc6e751e923 33 #else
yuyangworld 24:fbc6e751e923 34 #error "No connectivity method chosen. Please add 'config.network-interfaces.value' to your mbed_app.json (see README.md for more information)."
yuyangworld 24:fbc6e751e923 35 #endif
yuyangworld 24:fbc6e751e923 36
yuyangworld 24:fbc6e751e923 37 #if defined(MESH)
yuyangworld 24:fbc6e751e923 38 #if MBED_CONF_APP_MESH_RADIO_TYPE == ATMEL
yuyangworld 24:fbc6e751e923 39 #include "NanostackRfPhyAtmel.h"
yuyangworld 24:fbc6e751e923 40 NanostackRfPhyAtmel rf_phy(ATMEL_SPI_MOSI, ATMEL_SPI_MISO, ATMEL_SPI_SCLK, ATMEL_SPI_CS,
yuyangworld 24:fbc6e751e923 41 ATMEL_SPI_RST, ATMEL_SPI_SLP, ATMEL_SPI_IRQ, ATMEL_I2C_SDA, ATMEL_I2C_SCL);
yuyangworld 24:fbc6e751e923 42 #elif MBED_CONF_APP_MESH_RADIO_TYPE == MCR20
yuyangworld 24:fbc6e751e923 43 #include "NanostackRfPhyMcr20a.h"
yuyangworld 24:fbc6e751e923 44 NanostackRfPhyMcr20a rf_phy(MCR20A_SPI_MOSI, MCR20A_SPI_MISO, MCR20A_SPI_SCLK, MCR20A_SPI_CS, MCR20A_SPI_RST, MCR20A_SPI_IRQ);
yuyangworld 24:fbc6e751e923 45 #endif //MBED_CONF_APP_RADIO_TYPE
yuyangworld 24:fbc6e751e923 46 #endif //MESH
yuyangworld 24:fbc6e751e923 47
yuyangworld 24:fbc6e751e923 48 #ifndef MESH
yuyangworld 24:fbc6e751e923 49 // This is address to mbed Device Connector
yuyangworld 24:fbc6e751e923 50 #define MBED_SERVER_ADDRESS "coap://api.connector.mbed.com:5684"
yuyangworld 24:fbc6e751e923 51 #else
yuyangworld 24:fbc6e751e923 52 // This is address to mbed Device Connector
yuyangworld 24:fbc6e751e923 53 #define MBED_SERVER_ADDRESS "coaps://[2607:f0d0:2601:52::20]:5684"
yuyangworld 24:fbc6e751e923 54 #endif
yuyangworld 24:fbc6e751e923 55
yuyangworld 24:fbc6e751e923 56 NetworkInterface* easy_connect(bool log_messages = false) {
yuyangworld 24:fbc6e751e923 57 NetworkInterface* network_interface = 0;
yuyangworld 24:fbc6e751e923 58 int connect_success = -1;
yuyangworld 24:fbc6e751e923 59 #if MBED_CONF_APP_NETWORK_INTERFACE == WIFI_ESP8266
yuyangworld 24:fbc6e751e923 60 if (log_messages) {
yuyangworld 24:fbc6e751e923 61 output.printf("[EasyConnect] Using WiFi (ESP8266) \r\n");
yuyangworld 24:fbc6e751e923 62 output.printf("[EasyConnect] Connecting to WiFi..\r\n");
yuyangworld 24:fbc6e751e923 63 }
yuyangworld 24:fbc6e751e923 64 connect_success = esp.connect(MBED_CONF_APP_ESP8266_SSID, MBED_CONF_APP_ESP8266_PASSWORD);
yuyangworld 24:fbc6e751e923 65 network_interface = &esp;
yuyangworld 24:fbc6e751e923 66 #elif MBED_CONF_APP_NETWORK_INTERFACE == ETHERNET
yuyangworld 24:fbc6e751e923 67 if (log_messages) {
yuyangworld 24:fbc6e751e923 68 output.printf("[EasyConnect] Using Ethernet\r\n");
yuyangworld 24:fbc6e751e923 69 }
yuyangworld 24:fbc6e751e923 70 connect_success = eth.connect();
yuyangworld 24:fbc6e751e923 71 network_interface = ð
yuyangworld 24:fbc6e751e923 72 #endif
yuyangworld 24:fbc6e751e923 73 #ifdef MESH
yuyangworld 24:fbc6e751e923 74 if (log_messages) {
yuyangworld 24:fbc6e751e923 75 output.printf("[EasyConnect] Using Mesh\r\n");
yuyangworld 24:fbc6e751e923 76 output.printf("[EasyConnect] Connecting to Mesh..\r\n");
yuyangworld 24:fbc6e751e923 77 }
yuyangworld 24:fbc6e751e923 78 connect_success = mesh.connect();
yuyangworld 24:fbc6e751e923 79 network_interface = &mesh;
yuyangworld 24:fbc6e751e923 80 #endif
yuyangworld 24:fbc6e751e923 81 if(connect_success == 0) {
yuyangworld 24:fbc6e751e923 82 if (log_messages) {
yuyangworld 24:fbc6e751e923 83 output.printf("[EasyConnect] Connected to Network successfully\r\n");
yuyangworld 24:fbc6e751e923 84 }
yuyangworld 24:fbc6e751e923 85 } else {
yuyangworld 24:fbc6e751e923 86 if (log_messages) {
yuyangworld 24:fbc6e751e923 87 output.printf("[EasyConnect] Connection to Network Failed %d!\r\n", connect_success);
yuyangworld 24:fbc6e751e923 88 }
yuyangworld 24:fbc6e751e923 89 return NULL;
yuyangworld 24:fbc6e751e923 90 }
yuyangworld 24:fbc6e751e923 91 if (log_messages) {
yuyangworld 24:fbc6e751e923 92 const char *ip_addr = network_interface->get_ip_address();
yuyangworld 24:fbc6e751e923 93 if (ip_addr) {
yuyangworld 24:fbc6e751e923 94 output.printf("[EasyConnect] IP address %s\r\n", ip_addr);
yuyangworld 24:fbc6e751e923 95 } else {
yuyangworld 24:fbc6e751e923 96 output.printf("[EasyConnect] No IP address\r\n");
yuyangworld 24:fbc6e751e923 97 }
yuyangworld 24:fbc6e751e923 98 }
yuyangworld 24:fbc6e751e923 99 return network_interface;
yuyangworld 24:fbc6e751e923 100 }
yuyangworld 24:fbc6e751e923 101
yuyangworld 24:fbc6e751e923 102 #endif // __MAGIC_CONNECT_H__