The easy-connect library for GR-PEACH.

Dependencies:   LWIPBP3595Interface_STA_for_mbed-os

Dependents:   GR-PEACH_HVC-P2_sample_client GR-PEACH_HVC-P2_IoTPlatform_http GR-PEACH_IoT_Platform_HTTP_sample

Specifying connectivity method

Add the following to your mbed_app.json file:

mbed_app.json

{
    "config": {
        "network-interface":{
            "help": "Options are ETHERNET, WIFI_ESP8266, WIFI_BP3595",
            "value": "ETHERNET"
        }
    }
}

To specify MAC address, add fllowing function to main.cpp. (When using Wifi, setting of MAC address is not necessary.)

Specify MAC address

// set mac address
void mbed_mac_address(char *mac) {
    mac[0] = 0x00;
    mac[1] = 0x02;
    mac[2] = 0xF7;
    mac[3] = 0xF0;
    mac[4] = 0x00;
    mac[5] = 0x00;
}


Wifi settings

If you choose BP3595, you'll also need to add the WiFi SSID, password and security type:

mbed_app.json

{
    "config": {
        "network-interface":{
            "help": "Options are ETHERNET, WIFI_ESP8266, WIFI_BP3595",
            "value": "WIFI_BP3595"
        },
        "wifi-ssid": {
            "help": "WiFi SSID",
            "value": "\"SSID\""
        },
        "wifi-password": {
            "help": "WIFI Password",
            "value": "\"Password\""
        },
        "wifi-security":{
            "help": "Options are NSAPI_SECURITY_WEP, NSAPI_SECURITY_WPA, NSAPI_SECURITY_WPA2, NSAPI_SECURITY_WPA_WPA2",
            "value": "NSAPI_SECURITY_WPA_WPA2"
        }
    }
}


Using Easy Connect from your application

Easy Connect has just one function which will either return a NetworkInterface-pointer or NULL:

main.cpp

#include "easy-connect.h"
 
int main(int, char**) {
    NetworkInterface* network = easy_connect(true); /* has 1 argument, enable_logging (pass in true to log to serial port) */
    if (!network) {
        printf("Connecting to the network failed... See serial output.\r\n");
        return 1;
    }
 
    // Rest of your program
}
Committer:
dkato
Date:
Tue Mar 28 09:52:02 2017 +0000
Revision:
2:34fe4f11941d
Parent:
0:77c289709567
Update library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:77c289709567 1 # Easy Connect - Easily add all supported connectivity methods to your mbed OS project
dkato 0:77c289709567 2
dkato 0:77c289709567 3 Often you want to give users of your application the choice to switch between connectivity methods. The `NetworkInterface` API makes this easy, but you'll still need a mechanism for the user to chooce the method, throw in some `#define`'s, etc. Easy Connect handles all this for you. Just declare the desired connectivity method in your `mbed_app.json` file, and call `easy_connect()` from your application.
dkato 0:77c289709567 4
dkato 0:77c289709567 5 ## Specifying connectivity method
dkato 0:77c289709567 6
dkato 0:77c289709567 7 Add the following to your ``mbed_app.json`` file:
dkato 0:77c289709567 8
dkato 0:77c289709567 9 ```json
dkato 0:77c289709567 10 {
dkato 0:77c289709567 11 "config": {
dkato 0:77c289709567 12 "network-interface":{
dkato 0:77c289709567 13 "help": "options are ETHERNET,WIFI_ESP8266,WIFI_ODIN,MESH_LOWPAN_ND,MESH_THREAD",
dkato 0:77c289709567 14 "value": "ETHERNET"
dkato 0:77c289709567 15 }
dkato 0:77c289709567 16 },
dkato 0:77c289709567 17 "target_overrides": {
dkato 0:77c289709567 18 "*": {
dkato 0:77c289709567 19 "target.features_add": ["NANOSTACK", "LOWPAN_ROUTER", "COMMON_PAL"],
dkato 0:77c289709567 20 "mbed-mesh-api.6lowpan-nd-channel-page": 0,
dkato 0:77c289709567 21 "mbed-mesh-api.6lowpan-nd-channel": 12
dkato 0:77c289709567 22 }
dkato 0:77c289709567 23 }
dkato 0:77c289709567 24 }
dkato 0:77c289709567 25 ```
dkato 0:77c289709567 26
dkato 0:77c289709567 27 If you choose `WIFI_ESP8266` or `WIFI_ODIN`, you'll also need to add the WiFi SSID and password:
dkato 0:77c289709567 28
dkato 0:77c289709567 29 ```json
dkato 0:77c289709567 30 "config": {
dkato 0:77c289709567 31 "network-interface":{
dkato 0:77c289709567 32 "help": "options are ETHERNET,WIFI_ESP8266,WIFI_ODIN,MESH_LOWPAN_ND,MESH_THREAD",
dkato 0:77c289709567 33 "value": "WIFI_ESP8266"
dkato 0:77c289709567 34 },
dkato 0:77c289709567 35 "esp8266-tx": {
dkato 0:77c289709567 36 "help": "Pin used as TX (connects to ESP8266 RX)",
dkato 0:77c289709567 37 "value": "PTD3"
dkato 0:77c289709567 38 },
dkato 0:77c289709567 39 "esp8266-rx": {
dkato 0:77c289709567 40 "help": "Pin used as RX (connects to ESP8266 TX)",
dkato 0:77c289709567 41 "value": "PTD2"
dkato 0:77c289709567 42 },
dkato 0:77c289709567 43 "esp8266-debug": {
dkato 0:77c289709567 44 "value": true
dkato 0:77c289709567 45 },
dkato 0:77c289709567 46 "wifi-ssid": {
dkato 0:77c289709567 47 "value": "\"SSID\""
dkato 0:77c289709567 48 },
dkato 0:77c289709567 49 "wifi-password": {
dkato 0:77c289709567 50 "value": "\"Password\""
dkato 0:77c289709567 51 }
dkato 0:77c289709567 52 }
dkato 0:77c289709567 53 ```
dkato 0:77c289709567 54
dkato 0:77c289709567 55 If you use `MESH_LOWPAN_ND` or `MESH_THREAD` you will need to specify your radio module:
dkato 0:77c289709567 56
dkato 0:77c289709567 57 ```json
dkato 0:77c289709567 58 "config": {
dkato 0:77c289709567 59 "network-interface":{
dkato 0:77c289709567 60 "help": "options are ETHERNET,WIFI_ESP8266,WIFI_ODIN,MESH_LOWPAN_ND,MESH_THREAD",
dkato 0:77c289709567 61 "value": "MESH_LOWPAN_ND"
dkato 0:77c289709567 62 },
dkato 0:77c289709567 63 "mesh_radio_type": {
dkato 0:77c289709567 64 "help": "options are ATMEL, MCR20, SPIRIT1",
dkato 0:77c289709567 65 "value": "ATMEL"
dkato 0:77c289709567 66 }
dkato 0:77c289709567 67 }
dkato 0:77c289709567 68 ```
dkato 0:77c289709567 69
dkato 0:77c289709567 70 ## Using Easy Connect from your application
dkato 0:77c289709567 71
dkato 0:77c289709567 72 Easy Connect has just one function which will either return a `NetworkInterface`-pointer or `NULL`:
dkato 0:77c289709567 73
dkato 0:77c289709567 74 ```cpp
dkato 0:77c289709567 75 #include "easy-connect.h"
dkato 0:77c289709567 76
dkato 0:77c289709567 77 int main(int, char**) {
dkato 0:77c289709567 78 NetworkInterface* network = easy_connect(true); /* has 1 argument, enable_logging (pass in true to log to serial port) */
dkato 0:77c289709567 79 if (!network) {
dkato 0:77c289709567 80 printf("Connecting to the network failed... See serial output.\r\n");
dkato 0:77c289709567 81 return 1;
dkato 0:77c289709567 82 }
dkato 0:77c289709567 83
dkato 0:77c289709567 84 // Rest of your program
dkato 0:77c289709567 85 }
dkato 0:77c289709567 86 ```
dkato 0:77c289709567 87 ## CR/LF in serial output
dkato 0:77c289709567 88
dkato 0:77c289709567 89 If you want to avoid using `\r\n` in your printouts and just use normal C-style `\n` instead, please specify these to your `mbed_app.json`
dkato 0:77c289709567 90
dkato 0:77c289709567 91 ```json
dkato 0:77c289709567 92 "target_overrides": {
dkato 0:77c289709567 93 "*": {
dkato 0:77c289709567 94 "platform.stdio-baud-rate": 115200,
dkato 0:77c289709567 95 "platform.stdio-convert-newlines": true
dkato 0:77c289709567 96 }
dkato 0:77c289709567 97 }
dkato 0:77c289709567 98 ```
dkato 0:77c289709567 99
dkato 0:77c289709567 100 ## Extra defines
dkato 0:77c289709567 101
dkato 0:77c289709567 102 If you'd like to use Easy Connect with mbed Client then you're in luck. Easy Connect automatically defines the `MBED_SERVER_ADDRESS` macro depending on your connectivity method (either IPv4 or IPv6 address). Use this address to connect to the right instance of mbed Device Connector.