![](/media/cache/profiles/20190325140547.png.50x50_q85.png)
TEST
Fork of HelloMQTT by
easy-connect/easy-connect.h@24:fbc6e751e923, 2018-04-15 (annotated)
- Committer:
- yuyangworld
- Date:
- Sun Apr 15 18:03:48 2018 +0000
- Revision:
- 24:fbc6e751e923
TEST
Who changed what in which revision?
User | Revision | Line number | New 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__ |