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

Committer:
mbed_official
Date:
Mon Jun 18 09:15:17 2018 +0100
Revision:
87:a6a7b64f4f48
Parent:
78:fc7a81fd524c
Child:
109:4799ef092b94
Merge remote-tracking branch 'origin/mbed-os-5.9.0-oob'

* origin/mbed-os-5.9.0-oob:
Update SD Card usage instructions to README (#194)
Updating mbed-os to mbed-os-5.9.0-rc3
Ensure Nanostack is initialised before using it (#192)
Added known issue re: NVM. Added links to issues in known issues list
Fixed broken links and added known issue for Mbed OS 5.9
Updating mbed-os to mbed-os-5.9.0-rc2
Updating mbed-os to mbed-os-5.9.0-rc1

.
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 72:a7c594402382 1 /*
mbed_official 72:a7c594402382 2 * Copyright (c) 2018 ARM Limited. All rights reserved.
mbed_official 72:a7c594402382 3 * SPDX-License-Identifier: Apache-2.0
mbed_official 72:a7c594402382 4 * Licensed under the Apache License, Version 2.0 (the License); you may
mbed_official 72:a7c594402382 5 * not use this file except in compliance with the License.
mbed_official 72:a7c594402382 6 * You may obtain a copy of the License at
mbed_official 72:a7c594402382 7 *
mbed_official 72:a7c594402382 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 72:a7c594402382 9 *
mbed_official 72:a7c594402382 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 72:a7c594402382 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
mbed_official 72:a7c594402382 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 72:a7c594402382 13 * See the License for the specific language governing permissions and
mbed_official 72:a7c594402382 14 * limitations under the License.
mbed_official 72:a7c594402382 15 */
mbed_official 72:a7c594402382 16
mbed_official 72:a7c594402382 17 #include "mbed.h"
mbed_official 87:a6a7b64f4f48 18 #include "Nanostack.h"
mbed_official 72:a7c594402382 19
mbed_official 78:fc7a81fd524c 20 /* Application configuration values from json */
mbed_official 73:cea274cdbb5d 21 #define MESH_LOWPAN 1
mbed_official 73:cea274cdbb5d 22 #define MESH_THREAD 2
mbed_official 78:fc7a81fd524c 23 #define MESH_HEAP 3
mbed_official 78:fc7a81fd524c 24 #define MESH_SD_CARD 4
mbed_official 78:fc7a81fd524c 25
mbed_official 72:a7c594402382 26 /* At the moment, Thread builds using K64F support NVM */
mbed_official 72:a7c594402382 27 #if MBED_CONF_APP_MESH_TYPE == MESH_THREAD && defined(TARGET_K64F)
mbed_official 72:a7c594402382 28
mbed_official 72:a7c594402382 29 #include "LittleFileSystem.h"
mbed_official 72:a7c594402382 30 #include "SDBlockDevice.h"
mbed_official 72:a7c594402382 31 #include "HeapBlockDevice.h"
mbed_official 72:a7c594402382 32 #include "ns_file_system.h"
mbed_official 72:a7c594402382 33 #include "mbed_trace.h"
mbed_official 72:a7c594402382 34
mbed_official 72:a7c594402382 35 #define TRACE_GROUP "mnvm"
mbed_official 72:a7c594402382 36
mbed_official 72:a7c594402382 37 /* By default use HEAP as NVM storage, comment macro in order to use SD card */
mbed_official 78:fc7a81fd524c 38 #ifdef MBED_CONF_APP_STORAGE_DEVICE
mbed_official 78:fc7a81fd524c 39
mbed_official 78:fc7a81fd524c 40 #if MBED_CONF_APP_STORAGE_DEVICE == MESH_HEAP
mbed_official 78:fc7a81fd524c 41 // Use Heap block device
mbed_official 72:a7c594402382 42 #define USE_HEAP_BLOCK_DEVICE
mbed_official 78:fc7a81fd524c 43 #elif MBED_CONF_APP_STORAGE_DEVICE == MESH_SD_CARD
mbed_official 78:fc7a81fd524c 44 // Use SD CARD - lack of USE_HEAP_BLOCK_DEVICE selects SD_CARD
mbed_official 78:fc7a81fd524c 45 #endif
mbed_official 78:fc7a81fd524c 46
mbed_official 78:fc7a81fd524c 47 #endif /* MBED_CONF_APP_STORAGE_OPTION */
mbed_official 72:a7c594402382 48
mbed_official 72:a7c594402382 49 LittleFileSystem *fs;
mbed_official 72:a7c594402382 50 BlockDevice *bd;
mbed_official 72:a7c594402382 51
mbed_official 72:a7c594402382 52 void mesh_nvm_initialize()
mbed_official 72:a7c594402382 53 {
mbed_official 72:a7c594402382 54 fs = new LittleFileSystem("fs");
mbed_official 72:a7c594402382 55 #ifdef USE_HEAP_BLOCK_DEVICE
mbed_official 72:a7c594402382 56 const char *bd_info = "NVM: Heap";
mbed_official 72:a7c594402382 57 bd = new HeapBlockDevice(16 * 512, 512);
mbed_official 72:a7c594402382 58 #else
mbed_official 72:a7c594402382 59 const char *bd_info = "NVM: SD";
mbed_official 72:a7c594402382 60 bd = new SDBlockDevice(MBED_CONF_SD_SPI_MOSI, MBED_CONF_SD_SPI_MISO, MBED_CONF_SD_SPI_CLK, MBED_CONF_SD_SPI_CS);
mbed_official 72:a7c594402382 61 #endif
mbed_official 72:a7c594402382 62
mbed_official 72:a7c594402382 63 tr_debug("%s", bd_info);
mbed_official 72:a7c594402382 64 int mount_status = fs->mount(bd);
mbed_official 72:a7c594402382 65 if (mount_status) {
mbed_official 72:a7c594402382 66 tr_warning("mount error: %d, trying format...", mount_status);
mbed_official 72:a7c594402382 67 mount_status = fs->reformat(bd);
mbed_official 72:a7c594402382 68 tr_info("reformat %s (%d)", mount_status ? "failed" : "OK", mount_status);
mbed_official 72:a7c594402382 69 }
mbed_official 72:a7c594402382 70
mbed_official 72:a7c594402382 71 if (!mount_status) {
mbed_official 87:a6a7b64f4f48 72 Nanostack::get_instance(); // ensure Nanostack is initialised
mbed_official 72:a7c594402382 73 ns_file_system_set_root_path("/fs/");
mbed_official 87:a6a7b64f4f48 74 // Should be like: Nanostack::get_instance().file_system_set_root_path("/fs/");
mbed_official 72:a7c594402382 75 }
mbed_official 72:a7c594402382 76 }
mbed_official 72:a7c594402382 77
mbed_official 72:a7c594402382 78 #else /* MBED_CONF_APP_MESH_TYPE == MESH_THREAD && defined(TARGET_K64F) */
mbed_official 72:a7c594402382 79 void mesh_nvm_initialize()
mbed_official 72:a7c594402382 80 {
mbed_official 72:a7c594402382 81 /* NVM not supported */
mbed_official 72:a7c594402382 82 }
mbed_official 72:a7c594402382 83 #endif /* MBED_CONF_APP_MESH_TYPE == MESH_THREAD && defined(TARGET_K64F) */
mbed_official 72:a7c594402382 84