u-blox / Mbed OS pelion-example-common

Dependencies:   ublox-at-cellular-interface ublox-cellular-base

DEPRECATED

This example application is not maintained and not recommended. It uses an old version of Mbed OS, Pelion DM, and Arm toolchain. It doesn't work with Mbed Studio.

Please use: https://os.mbed.com/teams/mbed-os-examples/code/mbed-os-example-pelion/

This example is known to work great on the following platforms:

For Odin-W2 please go to Repository link

Follow the Quick-Start instructions: https://cloud.mbed.com/quick-start

UBLOX_C030_U201

UBLOX_C030_R412M

Example functionality

This example showcases the following device functionality:

  • On user button click, increment Pelion LWM2M button resource.
  • Allow the user to change the state of the board LED from Pelion LWM2M led_state resource and PUT request.
  • (currently disabled) Read ADC temperature and ADC vref, and report them as Pelion LWM2M resources.

Use this example with Mbed CLI

1. Import the application into your desktop:

mbed import https://os.mbed.com/teams/ublox/code/pelion-example-common

cd pelion-example-common

2. Install the CLOUD_SDK_API_KEY

mbed config -G CLOUD_SDK_API_KEY <PELION_DM_API_KEY>

For instructions on how to generate your API key, please see the documentation.

3. Initialize firmware credentials (done once per repository). You can use the following command:

mbed dm init -d "<your company name in Pelion DM>" --model-name "<product model identifier>" -q --force

If above command do not work for your Mbed CLI, please consider upgrading Mbed CLI to version 1.8.x or above.

4. Compile and program:

mbed compile -t <toolchain> -m <TARGET_BOARD>

(supported toolchains : GCC_ARM / ARM / IAR)

Committer:
screamer
Date:
Tue Dec 18 18:21:13 2018 +0000
Revision:
5:717231a186df
Parent:
0:a076a1bbe630
Update to mbed-os-5.11.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:a076a1bbe630 1 /*
screamer 0:a076a1bbe630 2 * Copyright (c) 2018 ARM Limited. All rights reserved.
screamer 0:a076a1bbe630 3 * SPDX-License-Identifier: Apache-2.0
screamer 0:a076a1bbe630 4 * Licensed under the Apache License, Version 2.0 (the License); you may
screamer 0:a076a1bbe630 5 * not use this file except in compliance with the License.
screamer 0:a076a1bbe630 6 * You may obtain a copy of the License at
screamer 0:a076a1bbe630 7 *
screamer 0:a076a1bbe630 8 * http://www.apache.org/licenses/LICENSE-2.0
screamer 0:a076a1bbe630 9 *
screamer 0:a076a1bbe630 10 * Unless required by applicable law or agreed to in writing, software
screamer 0:a076a1bbe630 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
screamer 0:a076a1bbe630 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
screamer 0:a076a1bbe630 13 * See the License for the specific language governing permissions and
screamer 0:a076a1bbe630 14 * limitations under the License.
screamer 0:a076a1bbe630 15 */
screamer 0:a076a1bbe630 16 #include "BlockDevice.h"
screamer 0:a076a1bbe630 17 #include "FileSystem.h"
screamer 0:a076a1bbe630 18 #include "FATFileSystem.h"
screamer 0:a076a1bbe630 19 #include "LittleFileSystem.h"
screamer 0:a076a1bbe630 20
screamer 0:a076a1bbe630 21 #if COMPONENT_SPIF
screamer 0:a076a1bbe630 22 #include "SPIFBlockDevice.h"
screamer 0:a076a1bbe630 23 #endif
screamer 0:a076a1bbe630 24
screamer 0:a076a1bbe630 25 #if COMPONENT_QSPIF
screamer 0:a076a1bbe630 26 #include "QSPIFBlockDevice.h"
screamer 0:a076a1bbe630 27 #endif
screamer 0:a076a1bbe630 28
screamer 0:a076a1bbe630 29 #if COMPONENT_DATAFLASH
screamer 0:a076a1bbe630 30 #include "DataFlashBlockDevice.h"
screamer 0:a076a1bbe630 31 #endif
screamer 0:a076a1bbe630 32
screamer 0:a076a1bbe630 33 #if COMPONENT_SD
screamer 0:a076a1bbe630 34 #include "SDBlockDevice.h"
screamer 0:a076a1bbe630 35 #endif
screamer 0:a076a1bbe630 36
screamer 0:a076a1bbe630 37 #if COMPONENT_FLASHIAP
screamer 0:a076a1bbe630 38 #include "FlashIAPBlockDevice.h"
screamer 0:a076a1bbe630 39 #endif
screamer 0:a076a1bbe630 40
screamer 0:a076a1bbe630 41 #if COMPONENT_NUSD
screamer 0:a076a1bbe630 42 #include "NuSDBlockDevice.h"
screamer 0:a076a1bbe630 43 #endif
screamer 0:a076a1bbe630 44
screamer 0:a076a1bbe630 45 using namespace mbed;
screamer 0:a076a1bbe630 46
screamer 0:a076a1bbe630 47 // Align a value to a specified size.
screamer 0:a076a1bbe630 48 // Parameters :
screamer 0:a076a1bbe630 49 // val - [IN] Value.
screamer 0:a076a1bbe630 50 // size - [IN] Size.
screamer 0:a076a1bbe630 51 // Return : Aligned value.
screamer 0:a076a1bbe630 52 static inline uint32_t align_up(uint32_t val, uint32_t size)
screamer 0:a076a1bbe630 53 {
screamer 0:a076a1bbe630 54 return (((val - 1) / size) + 1) * size;
screamer 0:a076a1bbe630 55 }
screamer 0:a076a1bbe630 56
screamer 0:a076a1bbe630 57 BlockDevice *BlockDevice::get_default_instance()
screamer 0:a076a1bbe630 58 {
screamer 0:a076a1bbe630 59 #if COMPONENT_SPIF
screamer 0:a076a1bbe630 60
screamer 0:a076a1bbe630 61 static SPIFBlockDevice default_bd(
screamer 0:a076a1bbe630 62 MBED_CONF_SPIF_DRIVER_SPI_MOSI,
screamer 0:a076a1bbe630 63 MBED_CONF_SPIF_DRIVER_SPI_MISO,
screamer 0:a076a1bbe630 64 MBED_CONF_SPIF_DRIVER_SPI_CLK,
screamer 0:a076a1bbe630 65 MBED_CONF_SPIF_DRIVER_SPI_CS,
screamer 0:a076a1bbe630 66 MBED_CONF_SPIF_DRIVER_SPI_FREQ
screamer 0:a076a1bbe630 67 );
screamer 0:a076a1bbe630 68
screamer 0:a076a1bbe630 69 return &default_bd;
screamer 0:a076a1bbe630 70
screamer 0:a076a1bbe630 71 #elif COMPONENT_QSPIF
screamer 0:a076a1bbe630 72
screamer 0:a076a1bbe630 73 static QSPIFBlockDevice default_bd(
screamer 0:a076a1bbe630 74 MBED_CONF_QSPIF_QSPI_IO0,
screamer 0:a076a1bbe630 75 MBED_CONF_QSPIF_QSPI_IO1,
screamer 0:a076a1bbe630 76 MBED_CONF_QSPIF_QSPI_IO2,
screamer 0:a076a1bbe630 77 MBED_CONF_QSPIF_QSPI_IO3,
screamer 0:a076a1bbe630 78 MBED_CONF_QSPIF_QSPI_SCK,
screamer 0:a076a1bbe630 79 MBED_CONF_QSPIF_QSPI_CSN,
screamer 0:a076a1bbe630 80 MBED_CONF_QSPIF_QSPI_POLARITY_MODE,
screamer 0:a076a1bbe630 81 MBED_CONF_QSPIF_QSPI_FREQ
screamer 0:a076a1bbe630 82 );
screamer 0:a076a1bbe630 83
screamer 0:a076a1bbe630 84 return &default_bd;
screamer 0:a076a1bbe630 85
screamer 0:a076a1bbe630 86 #elif COMPONENT_DATAFLASH
screamer 0:a076a1bbe630 87
screamer 0:a076a1bbe630 88 static DataFlashBlockDevice default_bd(
screamer 0:a076a1bbe630 89 MBED_CONF_DATAFLASH_SPI_MOSI,
screamer 0:a076a1bbe630 90 MBED_CONF_DATAFLASH_SPI_MISO,
screamer 0:a076a1bbe630 91 MBED_CONF_DATAFLASH_SPI_CLK,
screamer 0:a076a1bbe630 92 MBED_CONF_DATAFLASH_SPI_CS
screamer 0:a076a1bbe630 93 );
screamer 0:a076a1bbe630 94
screamer 0:a076a1bbe630 95 return &default_bd;
screamer 0:a076a1bbe630 96
screamer 0:a076a1bbe630 97 #elif COMPONENT_SD
screamer 0:a076a1bbe630 98
screamer 0:a076a1bbe630 99 static SDBlockDevice default_bd(
screamer 0:a076a1bbe630 100 MBED_CONF_SD_SPI_MOSI,
screamer 0:a076a1bbe630 101 MBED_CONF_SD_SPI_MISO,
screamer 0:a076a1bbe630 102 MBED_CONF_SD_SPI_CLK,
screamer 0:a076a1bbe630 103 MBED_CONF_SD_SPI_CS
screamer 0:a076a1bbe630 104 );
screamer 0:a076a1bbe630 105
screamer 0:a076a1bbe630 106 return &default_bd;
screamer 0:a076a1bbe630 107
screamer 0:a076a1bbe630 108 #elif COMPONENT_NUSD
screamer 0:a076a1bbe630 109
screamer 0:a076a1bbe630 110 static NuSDBlockDevice default_bd;
screamer 0:a076a1bbe630 111
screamer 0:a076a1bbe630 112 return &default_bd;
screamer 0:a076a1bbe630 113
screamer 0:a076a1bbe630 114 #elif COMPONENT_FLASHIAP
screamer 0:a076a1bbe630 115
screamer 0:a076a1bbe630 116 #if (MBED_CONF_FLASHIAP_BLOCK_DEVICE_SIZE == 0) && (MBED_CONF_FLASHIAP_BLOCK_DEVICE_BASE_ADDRESS == 0xFFFFFFFF)
screamer 0:a076a1bbe630 117
screamer 0:a076a1bbe630 118 size_t flash_size;
screamer 0:a076a1bbe630 119 uint32_t start_address;
screamer 0:a076a1bbe630 120 uint32_t bottom_address;
screamer 0:a076a1bbe630 121 FlashIAP flash;
screamer 0:a076a1bbe630 122
screamer 0:a076a1bbe630 123 int ret = flash.init();
screamer 0:a076a1bbe630 124 if (ret != 0) {
screamer 0:a076a1bbe630 125 return 0;
screamer 0:a076a1bbe630 126 }
screamer 0:a076a1bbe630 127
screamer 0:a076a1bbe630 128 //Find the start of first sector after text area
screamer 0:a076a1bbe630 129 bottom_address = align_up(FLASHIAP_ROM_END, flash.get_sector_size(FLASHIAP_ROM_END));
screamer 0:a076a1bbe630 130 start_address = flash.get_flash_start();
screamer 0:a076a1bbe630 131 flash_size = flash.get_flash_size();
screamer 0:a076a1bbe630 132
screamer 0:a076a1bbe630 133 ret = flash.deinit();
screamer 0:a076a1bbe630 134
screamer 0:a076a1bbe630 135 static FlashIAPBlockDevice default_bd(bottom_address, start_address + flash_size - bottom_address);
screamer 0:a076a1bbe630 136
screamer 0:a076a1bbe630 137 #else
screamer 0:a076a1bbe630 138
screamer 0:a076a1bbe630 139 static FlashIAPBlockDevice default_bd;
screamer 0:a076a1bbe630 140
screamer 0:a076a1bbe630 141 #endif
screamer 0:a076a1bbe630 142
screamer 0:a076a1bbe630 143 return &default_bd;
screamer 0:a076a1bbe630 144
screamer 0:a076a1bbe630 145 #else
screamer 0:a076a1bbe630 146
screamer 0:a076a1bbe630 147 return NULL;
screamer 0:a076a1bbe630 148
screamer 0:a076a1bbe630 149 #endif
screamer 0:a076a1bbe630 150
screamer 0:a076a1bbe630 151 }
screamer 0:a076a1bbe630 152
screamer 0:a076a1bbe630 153 FileSystem *FileSystem::get_default_instance()
screamer 0:a076a1bbe630 154 {
screamer 0:a076a1bbe630 155 #if COMPONENT_SPIF || COMPONENT_QSPIF || COMPONENT_DATAFLASH || COMPONENT_NUSD
screamer 0:a076a1bbe630 156
screamer 0:a076a1bbe630 157 static LittleFileSystem flash("flash", BlockDevice::get_default_instance());
screamer 0:a076a1bbe630 158 flash.set_as_default();
screamer 0:a076a1bbe630 159
screamer 0:a076a1bbe630 160 return &flash;
screamer 0:a076a1bbe630 161
screamer 0:a076a1bbe630 162 #elif COMPONENT_SD
screamer 0:a076a1bbe630 163
screamer 0:a076a1bbe630 164 static FATFileSystem sdcard("sd", BlockDevice::get_default_instance());
screamer 0:a076a1bbe630 165 sdcard.set_as_default();
screamer 0:a076a1bbe630 166
screamer 0:a076a1bbe630 167 return &sdcard;
screamer 0:a076a1bbe630 168
screamer 0:a076a1bbe630 169 #elif COMPONENT_FLASHIAP
screamer 0:a076a1bbe630 170
screamer 0:a076a1bbe630 171 static LittleFileSystem flash("flash", BlockDevice::get_default_instance());
screamer 0:a076a1bbe630 172 flash.set_as_default();
screamer 0:a076a1bbe630 173
screamer 0:a076a1bbe630 174 return &flash;
screamer 0:a076a1bbe630 175
screamer 0:a076a1bbe630 176 #else
screamer 0:a076a1bbe630 177
screamer 0:a076a1bbe630 178 return NULL;
screamer 0:a076a1bbe630 179
screamer 0:a076a1bbe630 180 #endif
screamer 0:a076a1bbe630 181
screamer 0:a076a1bbe630 182 }