mbed Open Thread example with nRF52-DK (nRF52840 SoC).

Committer:
mbed_official
Date:
Fri Jan 19 08:15:09 2018 +0000
Revision:
72:a7c594402382
Parent:
52:27692043e962
Child:
97:6dee44085a18
Enable NVM for Thread devices (#166)

Allow Thread devices to store files to NVM.
.
Commit copied from https://github.com/ARMmbed/mbed-os-example-mesh-minimal

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 52:27692043e962 1 /*
mbed_official 52:27692043e962 2 * Copyright (c) 2016 ARM Limited. All rights reserved.
mbed_official 52:27692043e962 3 * SPDX-License-Identifier: Apache-2.0
mbed_official 52:27692043e962 4 * Licensed under the Apache License, Version 2.0 (the License); you may
mbed_official 52:27692043e962 5 * not use this file except in compliance with the License.
mbed_official 52:27692043e962 6 * You may obtain a copy of the License at
mbed_official 52:27692043e962 7 *
mbed_official 52:27692043e962 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 52:27692043e962 9 *
mbed_official 52:27692043e962 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 52:27692043e962 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
mbed_official 52:27692043e962 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 52:27692043e962 13 * See the License for the specific language governing permissions and
mbed_official 52:27692043e962 14 * limitations under the License.
mbed_official 52:27692043e962 15 */
Seppo Takalo 0:bde1843b9885 16 #include "mbed.h"
Seppo Takalo 0:bde1843b9885 17 #include "rtos.h"
Seppo Takalo 0:bde1843b9885 18 #include "NanostackInterface.h"
mbed_official 52:27692043e962 19 #include "mbed-trace/mbed_trace.h"
mbed_official 72:a7c594402382 20 #include "mesh_nvm.h"
mbed_official 52:27692043e962 21
mbed_official 52:27692043e962 22 #if MBED_CONF_APP_ENABLE_LED_CONTROL_EXAMPLE
mbed_official 52:27692043e962 23 #include "mesh_led_control_example.h"
mbed_official 52:27692043e962 24 #endif
mbed_official 52:27692043e962 25
mbed_official 52:27692043e962 26 void trace_printer(const char* str) {
mbed_official 52:27692043e962 27 printf("%s\n", str);
mbed_official 52:27692043e962 28 }
Seppo Takalo 0:bde1843b9885 29
mbed_official 16:22f072355a2c 30 #define ATMEL 1
mbed_official 16:22f072355a2c 31 #define MCR20 2
mbed_official 19:f55c7983f8ab 32 #define NCS36510 3
mbed_official 52:27692043e962 33 #define KW24D 4
mbed_official 16:22f072355a2c 34
mbed_official 16:22f072355a2c 35 #define MESH_LOWPAN 3
mbed_official 16:22f072355a2c 36 #define MESH_THREAD 4
mbed_official 16:22f072355a2c 37
mbed_official 16:22f072355a2c 38 #if MBED_CONF_APP_RADIO_TYPE == ATMEL
mbed_official 16:22f072355a2c 39 #include "NanostackRfPhyAtmel.h"
mbed_official 16:22f072355a2c 40 NanostackRfPhyAtmel rf_phy(ATMEL_SPI_MOSI, ATMEL_SPI_MISO, ATMEL_SPI_SCLK, ATMEL_SPI_CS,
mbed_official 16:22f072355a2c 41 ATMEL_SPI_RST, ATMEL_SPI_SLP, ATMEL_SPI_IRQ, ATMEL_I2C_SDA, ATMEL_I2C_SCL);
mbed_official 52:27692043e962 42 #elif MBED_CONF_APP_RADIO_TYPE == MCR20 || MBED_CONF_APP_RADIO_TYPE == KW24D
mbed_official 16:22f072355a2c 43 #include "NanostackRfPhyMcr20a.h"
mbed_official 16:22f072355a2c 44 NanostackRfPhyMcr20a rf_phy(MCR20A_SPI_MOSI, MCR20A_SPI_MISO, MCR20A_SPI_SCLK, MCR20A_SPI_CS, MCR20A_SPI_RST, MCR20A_SPI_IRQ);
mbed_official 19:f55c7983f8ab 45
mbed_official 19:f55c7983f8ab 46 #elif MBED_CONF_APP_RADIO_TYPE == NCS36510
mbed_official 19:f55c7983f8ab 47 #include "NanostackRfPhyNcs36510.h"
mbed_official 19:f55c7983f8ab 48 NanostackRfPhyNcs36510 rf_phy;
mbed_official 16:22f072355a2c 49 #endif //MBED_CONF_APP_RADIO_TYPE
mbed_official 16:22f072355a2c 50
mbed_official 16:22f072355a2c 51 #if MBED_CONF_APP_MESH_TYPE == MESH_LOWPAN
Seppo Takalo 0:bde1843b9885 52 LoWPANNDInterface mesh;
mbed_official 16:22f072355a2c 53 #elif MBED_CONF_APP_MESH_TYPE == MESH_THREAD
mbed_official 16:22f072355a2c 54 ThreadInterface mesh;
mbed_official 16:22f072355a2c 55 #endif //MBED_CONF_APP_MESH_TYPE
mbed_official 16:22f072355a2c 56
mbed_official 52:27692043e962 57 static Mutex SerialOutMutex;
mbed_official 52:27692043e962 58
mbed_official 52:27692043e962 59 void serial_out_mutex_wait()
mbed_official 52:27692043e962 60 {
mbed_official 52:27692043e962 61 SerialOutMutex.lock();
mbed_official 52:27692043e962 62 }
mbed_official 52:27692043e962 63
mbed_official 52:27692043e962 64 void serial_out_mutex_release()
mbed_official 52:27692043e962 65 {
mbed_official 52:27692043e962 66 SerialOutMutex.unlock();
mbed_official 52:27692043e962 67 }
mbed_official 52:27692043e962 68
Seppo Takalo 0:bde1843b9885 69 int main()
Seppo Takalo 0:bde1843b9885 70 {
mbed_official 52:27692043e962 71 mbed_trace_init();
mbed_official 52:27692043e962 72 mbed_trace_print_function_set(trace_printer);
mbed_official 52:27692043e962 73 mbed_trace_mutex_wait_function_set( serial_out_mutex_wait );
mbed_official 52:27692043e962 74 mbed_trace_mutex_release_function_set( serial_out_mutex_release );
mbed_official 52:27692043e962 75
mbed_official 52:27692043e962 76 printf("Start mesh-minimal application\n");
mbed_official 52:27692043e962 77 printf("Build: %s %s\nMesh type: %d\n", __DATE__, __TIME__, MBED_CONF_APP_MESH_TYPE);
mbed_official 4:567d72fb3d84 78
mbed_official 52:27692043e962 79 #if MBED_CONF_APP_ENABLE_LED_CONTROL_EXAMPLE
mbed_official 52:27692043e962 80 if (MBED_CONF_APP_BUTTON != NC && MBED_CONF_APP_LED != NC) {
mbed_official 52:27692043e962 81 start_blinking();
mbed_official 52:27692043e962 82 } else {
mbed_official 52:27692043e962 83 printf("pins not configured. Skipping the LED control.\n");
mbed_official 52:27692043e962 84 }
mbed_official 4:567d72fb3d84 85 #endif
mbed_official 40:e0b9755ae4f1 86 printf("\n\nConnecting...\n");
mbed_official 16:22f072355a2c 87 mesh.initialize(&rf_phy);
mbed_official 72:a7c594402382 88 mesh_nvm_initialize();
mbed_official 52:27692043e962 89 int error = mesh.connect();
mbed_official 52:27692043e962 90 if (error) {
mbed_official 52:27692043e962 91 printf("Connection failed! %d\n", error);
mbed_official 52:27692043e962 92 return error;
Seppo Takalo 0:bde1843b9885 93 }
Seppo Takalo 0:bde1843b9885 94
mbed_official 17:ee2610e1cb78 95 while (NULL == mesh.get_ip_address())
mbed_official 17:ee2610e1cb78 96 Thread::wait(500);
mbed_official 17:ee2610e1cb78 97
mbed_official 40:e0b9755ae4f1 98 printf("connected. IP = %s\n", mesh.get_ip_address());
mbed_official 52:27692043e962 99
mbed_official 52:27692043e962 100 #if MBED_CONF_APP_ENABLE_LED_CONTROL_EXAMPLE
mbed_official 52:27692043e962 101 // Network found, start socket example
mbed_official 52:27692043e962 102 if (MBED_CONF_APP_BUTTON != NC && MBED_CONF_APP_LED != NC) {
mbed_official 52:27692043e962 103 cancel_blinking();
mbed_official 52:27692043e962 104 start_mesh_led_control_example((NetworkInterface *)&mesh);
mbed_official 52:27692043e962 105 }
mbed_official 52:27692043e962 106 #endif
mbed_official 1:24cff46332de 107 }