A quick effort to get W5500 working with easy connect. I removed other dependencies to reduce confusion. It is generally not a fork you want to look at.

Dependents:   coap-example coap-example

Committer:
sgnezdov
Date:
Thu Jul 06 06:54:08 2017 +0000
Revision:
0:e8ce78953d20
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sgnezdov 0:e8ce78953d20 1 # Easy Connect - Easily add all supported connectivity methods to your mbed OS project
sgnezdov 0:e8ce78953d20 2
sgnezdov 0:e8ce78953d20 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.
sgnezdov 0:e8ce78953d20 4
sgnezdov 0:e8ce78953d20 5 ## Specifying connectivity method
sgnezdov 0:e8ce78953d20 6
sgnezdov 0:e8ce78953d20 7 Add the following to your ``mbed_app.json`` file:
sgnezdov 0:e8ce78953d20 8
sgnezdov 0:e8ce78953d20 9 ```json
sgnezdov 0:e8ce78953d20 10 {
sgnezdov 0:e8ce78953d20 11 "config": {
sgnezdov 0:e8ce78953d20 12 "network-interface":{
sgnezdov 0:e8ce78953d20 13 "help": "options are ETHERNET,WIFI_ESP8266,WIFI_ODIN, WIFI_REALTEK, MESH_LOWPAN_ND,MESH_THREAD",
sgnezdov 0:e8ce78953d20 14 "value": "ETHERNET"
sgnezdov 0:e8ce78953d20 15 }
sgnezdov 0:e8ce78953d20 16 },
sgnezdov 0:e8ce78953d20 17 "target_overrides": {
sgnezdov 0:e8ce78953d20 18 "*": {
sgnezdov 0:e8ce78953d20 19 "target.features_add": ["NANOSTACK", "LOWPAN_ROUTER", "COMMON_PAL"],
sgnezdov 0:e8ce78953d20 20 "mbed-mesh-api.6lowpan-nd-channel-page": 0,
sgnezdov 0:e8ce78953d20 21 "mbed-mesh-api.6lowpan-nd-channel": 12
sgnezdov 0:e8ce78953d20 22 }
sgnezdov 0:e8ce78953d20 23 }
sgnezdov 0:e8ce78953d20 24 }
sgnezdov 0:e8ce78953d20 25 ```
sgnezdov 0:e8ce78953d20 26 If you choose `ETHERNET` with `UBLOX_ODIN_EVK_W2` you must add this to your `target-overrides` section in `mbed_app.json`:
sgnezdov 0:e8ce78953d20 27 ```json
sgnezdov 0:e8ce78953d20 28 "UBLOX_EVK_ODIN_W2": {
sgnezdov 0:e8ce78953d20 29 "target.device_has_remove": ["EMAC"]
sgnezdov 0:e8ce78953d20 30 ```
sgnezdov 0:e8ce78953d20 31
sgnezdov 0:e8ce78953d20 32 If you choose `WIFI_ESP8266`, `WIFI_ODIN` or `WIFI_REALTEK`, you'll also need to add the WiFi SSID and password:
sgnezdov 0:e8ce78953d20 33
sgnezdov 0:e8ce78953d20 34 ```json
sgnezdov 0:e8ce78953d20 35 "config": {
sgnezdov 0:e8ce78953d20 36 "network-interface":{
sgnezdov 0:e8ce78953d20 37 "help": "options are ETHERNET,WIFI_ESP8266,WIFI_ODIN,WIFI_REALTEK,MESH_LOWPAN_ND,MESH_THREAD",
sgnezdov 0:e8ce78953d20 38 "value": "WIFI_ESP8266"
sgnezdov 0:e8ce78953d20 39 },
sgnezdov 0:e8ce78953d20 40 "esp8266-tx": {
sgnezdov 0:e8ce78953d20 41 "help": "Pin used as TX (connects to ESP8266 RX)",
sgnezdov 0:e8ce78953d20 42 "value": "PTD3"
sgnezdov 0:e8ce78953d20 43 },
sgnezdov 0:e8ce78953d20 44 "esp8266-rx": {
sgnezdov 0:e8ce78953d20 45 "help": "Pin used as RX (connects to ESP8266 TX)",
sgnezdov 0:e8ce78953d20 46 "value": "PTD2"
sgnezdov 0:e8ce78953d20 47 },
sgnezdov 0:e8ce78953d20 48 "esp8266-debug": {
sgnezdov 0:e8ce78953d20 49 "value": true
sgnezdov 0:e8ce78953d20 50 },
sgnezdov 0:e8ce78953d20 51 "wifi-ssid": {
sgnezdov 0:e8ce78953d20 52 "value": "\"SSID\""
sgnezdov 0:e8ce78953d20 53 },
sgnezdov 0:e8ce78953d20 54 "wifi-password": {
sgnezdov 0:e8ce78953d20 55 "value": "\"Password\""
sgnezdov 0:e8ce78953d20 56 }
sgnezdov 0:e8ce78953d20 57 }
sgnezdov 0:e8ce78953d20 58 ```
sgnezdov 0:e8ce78953d20 59
sgnezdov 0:e8ce78953d20 60 If you use `MESH_LOWPAN_ND` or `MESH_THREAD` you will need to specify your radio module:
sgnezdov 0:e8ce78953d20 61
sgnezdov 0:e8ce78953d20 62 ```json
sgnezdov 0:e8ce78953d20 63 "config": {
sgnezdov 0:e8ce78953d20 64 "network-interface":{
sgnezdov 0:e8ce78953d20 65 "help": "options are ETHERNET,WIFI_ESP8266,WIFI_ODIN,MESH_LOWPAN_ND,MESH_THREAD",
sgnezdov 0:e8ce78953d20 66 "value": "MESH_LOWPAN_ND"
sgnezdov 0:e8ce78953d20 67 },
sgnezdov 0:e8ce78953d20 68 "mesh_radio_type": {
sgnezdov 0:e8ce78953d20 69 "help": "options are ATMEL, MCR20, SPIRIT1",
sgnezdov 0:e8ce78953d20 70 "value": "ATMEL"
sgnezdov 0:e8ce78953d20 71 }
sgnezdov 0:e8ce78953d20 72 }
sgnezdov 0:e8ce78953d20 73 ```
sgnezdov 0:e8ce78953d20 74
sgnezdov 0:e8ce78953d20 75 ## Using Easy Connect from your application
sgnezdov 0:e8ce78953d20 76
sgnezdov 0:e8ce78953d20 77 Easy Connect has just one function which will either return a `NetworkInterface`-pointer or `NULL`:
sgnezdov 0:e8ce78953d20 78
sgnezdov 0:e8ce78953d20 79 ```cpp
sgnezdov 0:e8ce78953d20 80 #include "easy-connect.h"
sgnezdov 0:e8ce78953d20 81
sgnezdov 0:e8ce78953d20 82 int main(int, char**) {
sgnezdov 0:e8ce78953d20 83 NetworkInterface* network = easy_connect(true); /* has 1 argument, enable_logging (pass in true to log to serial port) */
sgnezdov 0:e8ce78953d20 84 if (!network) {
sgnezdov 0:e8ce78953d20 85 printf("Connecting to the network failed... See serial output.\r\n");
sgnezdov 0:e8ce78953d20 86 return 1;
sgnezdov 0:e8ce78953d20 87 }
sgnezdov 0:e8ce78953d20 88
sgnezdov 0:e8ce78953d20 89 // Rest of your program
sgnezdov 0:e8ce78953d20 90 }
sgnezdov 0:e8ce78953d20 91 ```
sgnezdov 0:e8ce78953d20 92 ## CR/LF in serial output
sgnezdov 0:e8ce78953d20 93
sgnezdov 0:e8ce78953d20 94 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`
sgnezdov 0:e8ce78953d20 95
sgnezdov 0:e8ce78953d20 96 ```json
sgnezdov 0:e8ce78953d20 97 "target_overrides": {
sgnezdov 0:e8ce78953d20 98 "*": {
sgnezdov 0:e8ce78953d20 99 "platform.stdio-baud-rate": 115200,
sgnezdov 0:e8ce78953d20 100 "platform.stdio-convert-newlines": true
sgnezdov 0:e8ce78953d20 101 }
sgnezdov 0:e8ce78953d20 102 }
sgnezdov 0:e8ce78953d20 103 ```
sgnezdov 0:e8ce78953d20 104
sgnezdov 0:e8ce78953d20 105 ## Network errors
sgnezdov 0:e8ce78953d20 106
sgnezdov 0:e8ce78953d20 107 If easy-connect cannot connect to the network it returns a network error, with an error code. To see what these error code mean, see the [mbed OS Communication API](https://docs.mbed.com/docs/mbed-os-api-reference/en/latest/APIs/communication/network_sockets/#network-errors).
sgnezdov 0:e8ce78953d20 108
sgnezdov 0:e8ce78953d20 109 ## Extra defines
sgnezdov 0:e8ce78953d20 110
sgnezdov 0:e8ce78953d20 111 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.