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