
Mbed OS example of Pelion device management LGUPlus Client
Revision 1:3f3d8bf46183, committed 2020-02-21
- Comitter:
- pimco01
- Date:
- Fri Feb 21 19:20:41 2020 +0000
- Parent:
- 0:9f917a7bf2da
- Child:
- 2:34933ca5af82
- Commit message:
- LGU+ CAT.M1 Pelion version initial commit
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed_app.json | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Thu Dec 12 10:26:06 2019 +0900 +++ b/main.cpp Fri Feb 21 19:20:41 2020 +0000 @@ -1,214 +1,327 @@ -// ---------------------------------------------------------------------------- -// Copyright 2016-2019 ARM Ltd. -// -// SPDX-License-Identifier: Apache-2.0 -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ---------------------------------------------------------------------------- -#ifndef MBED_TEST_MODE +/* + * Copyright (c) 2017 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #include "mbed.h" -#include "kv_config.h" -#include "mbed-cloud-client/MbedCloudClient.h" // Required for new MbedCloudClient() -#include "factory_configurator_client.h" // Required for fcc_* functions and FCC_* defines -#include "m2mresource.h" // Required for M2MResource +#include "rtos.h" +#include "common_functions.h" +#include "CellularNonIPSocket.h" +#include "CellularDevice.h" +#include "UDPSocket.h" +#include "CellularLog.h" -#include "mbed-trace/mbed_trace.h" // Required for mbed_trace_* +#define UDP 0 +#define TCP 1 +#define NONIP 2 -// Pointers to the resources that will be created in main_application(). -static MbedCloudClient *cloud_client; -static bool cloud_client_running = true; -static NetworkInterface *network = NULL; +// Number of retries / +#define RETRY_COUNT 3 -// Fake entropy needed for non-TRNG boards. Suitable only for demo devices. -const uint8_t MBED_CLOUD_DEV_ENTROPY[] = { 0xf6, 0xd6, 0xc0, 0x09, 0x9e, 0x6e, 0xf2, 0x37, 0xdc, 0x29, 0x88, 0xf1, 0x57, 0x32, 0x7d, 0xde, 0xac, 0xb3, 0x99, 0x8c, 0xb9, 0x11, 0x35, 0x18, 0xeb, 0x48, 0x29, 0x03, 0x6a, 0x94, 0x6d, 0xe8, 0x40, 0xc0, 0x28, 0xcc, 0xe4, 0x04, 0xc3, 0x1f, 0x4b, 0xc2, 0xe0, 0x68, 0xa0, 0x93, 0xe6, 0x3a }; +void BG96_Modem_PowerON(void) +{ + DigitalIn BG96_STATUS(D2); + DigitalOut BG96_PWRKEY(D3); -static M2MResource* m2m_get_res; -static M2MResource* m2m_put_res; -static M2MResource* m2m_post_res; -static M2MResource* m2m_deregister_res; - -void print_client_ids(void) -{ - printf("Account ID: %s\n", cloud_client->endpoint_info()->account_id.c_str()); - printf("Endpoint name: %s\n", cloud_client->endpoint_info()->internal_endpoint_name.c_str()); - printf("Device Id: %s\n\n", cloud_client->endpoint_info()->endpoint_name.c_str()); + ThisThread::sleep_for(50); + BG96_PWRKEY = 1; + ThisThread::sleep_for(600); + BG96_PWRKEY = 0; + ThisThread::sleep_for(5000); + + if(BG96_STATUS) + printf("Module Power On\r\n"); + else + printf("Check Module Power Line!!\r\n"); } -void button_press(void) +void BG96_Modem_PowerOFF(void) { - m2m_get_res->set_value(m2m_get_res->get_value_int() + 1); - printf("Counter %" PRIu64 "\n", m2m_get_res->get_value_int()); + DigitalIn BG96_STATUS(D2); + DigitalOut BG96_PWRKEY(D3); + + ThisThread::sleep_for(50); + BG96_PWRKEY = 1; + ThisThread::sleep_for(800); + BG96_PWRKEY = 0; + ThisThread::sleep_for(3000); + + if(BG96_STATUS == 0) + printf("Module Power Off\r\n"); + else + printf("Check Module Power Line!!\r\n"); +} + +NetworkInterface *iface; + +// Echo server hostname +const char *host_name = MBED_CONF_APP_ECHO_SERVER_HOSTNAME; + +// Echo server port (same for TCP and UDP) +const int port = MBED_CONF_APP_ECHO_SERVER_PORT; + +static rtos::Mutex trace_mutex; + +#if MBED_CONF_MBED_TRACE_ENABLE +static void trace_wait() +{ + trace_mutex.lock(); +} + +static void trace_release() +{ + trace_mutex.unlock(); +} + +static char time_st[50]; + +static char* trace_time(size_t ss) +{ + snprintf(time_st, 49, "[%08llums]", Kernel::get_ms_count()); + return time_st; } -void put_update(const char* /*object_name*/) +static void trace_open() { - printf("PUT update %d\n", (int)m2m_put_res->get_value_int()); -} + mbed_trace_init(); + mbed_trace_prefix_function_set( &trace_time ); -void execute_post(void* /*arguments*/) -{ - printf("POST executed\n"); + mbed_trace_mutex_wait_function_set(trace_wait); + mbed_trace_mutex_release_function_set(trace_release); + + mbed_cellular_trace::mutex_wait_function_set(trace_wait); + mbed_cellular_trace::mutex_release_function_set(trace_release); } -void deregister_client(void) +static void trace_close() { - printf("Unregistering and disconnecting from the network.\n"); - cloud_client->close(); + mbed_cellular_trace::mutex_wait_function_set(NULL); + mbed_cellular_trace::mutex_release_function_set(NULL); + + mbed_trace_free(); +} +#endif // #if MBED_CONF_MBED_TRACE_ENABLE + +Thread dot_thread(osPriorityNormal, 512); + +void print_function(const char *format, ...) +{ + trace_mutex.lock(); + va_list arglist; + va_start( arglist, format ); + vprintf(format, arglist); + va_end( arglist ); + trace_mutex.unlock(); } -void deregister(void* /*arguments*/) +void dot_event() { - printf("POST deregister executed\n"); - m2m_deregister_res->send_delayed_post_response(); - - deregister_client(); + while (true) { + ThisThread::sleep_for(4000); + if (iface && iface->get_connection_status() == NSAPI_STATUS_GLOBAL_UP) { + break; + } else { + trace_mutex.lock(); + printf("."); + fflush(stdout); + trace_mutex.unlock(); + } + } } -void client_registered(void) +/** + * Connects to the Cellular Network + */ +nsapi_error_t do_connect() { - printf("Client registered.\n"); - print_client_ids(); -} + nsapi_error_t retcode = NSAPI_ERROR_OK; + uint8_t retry_counter = 0; -void client_unregistered(void) -{ - printf("Client unregistered.\n"); - (void) network->disconnect(); - cloud_client_running = false; + while (iface->get_connection_status() != NSAPI_STATUS_GLOBAL_UP) { + retcode = iface->connect(); + if (retcode == NSAPI_ERROR_AUTH_FAILURE) { + print_function("\n\nAuthentication Failure. Exiting application\n"); + } else if (retcode == NSAPI_ERROR_OK) { + print_function("\n\nConnection Established.\n"); + } else if (retry_counter > RETRY_COUNT) { + print_function("\n\nFatal connection failure: %d\n", retcode); + } else { + print_function("\n\nCouldn't connect: %d, will retry\n", retcode); + retry_counter++; + continue; + } + break; + } + return retcode; } -void client_error(int err) -{ - printf("client_error(%d) -> %s\n", err, cloud_client->error_description()); -} - -void update_progress(uint32_t progress, uint32_t total) +/** + * Opens: + * - UDP or TCP socket with the given echo server and performs an echo + * transaction retrieving current. + * - Cellular Non-IP socket for which the data delivery path is decided + * by network's control plane CIoT optimisation setup, for the given APN. + */ +nsapi_error_t test_send_recv() { - uint8_t percent = (uint8_t)((uint64_t)progress * 100 / total); - printf("Update progress = %" PRIu8 "%%\n", percent); -} + nsapi_size_or_error_t retcode; +#if MBED_CONF_APP_SOCK_TYPE == TCP + TCPSocket sock; +#elif MBED_CONF_APP_SOCK_TYPE == UDP + UDPSocket sock; +#elif MBED_CONF_APP_SOCK_TYPE == NONIP + CellularNonIPSocket sock; +#endif -int main(void) -{ - int status; +#if MBED_CONF_APP_SOCK_TYPE == NONIP + retcode = sock.open((CellularContext*)iface); +#else + retcode = sock.open(iface); +#endif - status = mbed_trace_init(); - if (status != 0) { - printf("mbed_trace_init() failed with %d\n", status); + if (retcode != NSAPI_ERROR_OK) { +#if MBED_CONF_APP_SOCK_TYPE == TCP + print_function("TCPSocket.open() fails, code: %d\n", retcode); +#elif MBED_CONF_APP_SOCK_TYPE == UDP + print_function("UDPSocket.open() fails, code: %d\n", retcode); +#elif MBED_CONF_APP_SOCK_TYPE == NONIP + print_function("CellularNonIPSocket.open() fails, code: %d\n", retcode); +#endif return -1; } - // Mount default kvstore - printf("Application ready\n"); - status = kv_init_storage_config(); - if (status != MBED_SUCCESS) { - printf("kv_init_storage_config() - failed, status %d\n", status); - return -1; - } + int n = 0; + const char *echo_string = "TEST"; + char recv_buf[4]; + + sock.set_timeout(15000); - // Connect with NetworkInterface - printf("Connect to network\n"); - network = NetworkInterface::get_default_instance(); - if (network == NULL) { - printf("Failed to get default NetworkInterface\n"); +#if MBED_CONF_APP_SOCK_TYPE == NONIP + retcode = sock.send((void*) echo_string, strlen(echo_string)); + if (retcode < 0) { + print_function("CellularNonIPSocket.send() fails, code: %d\n", retcode); return -1; - } - status = network->connect(); - if (status != NSAPI_ERROR_OK) { - printf("NetworkInterface failed to connect with %d\n", status); - return -1; + } else { + print_function("CellularNonIPSocket: Sent %d Bytes\n", retcode); } - printf("Network initialized, connected with IP %s\n\n", network->get_ip_address()); + n = sock.recv((void*) recv_buf, sizeof(recv_buf)); - // Run developer flow - printf("Start developer flow\n"); - status = fcc_init(); - if (status != FCC_STATUS_SUCCESS) { - printf("fcc_init() failed with %d\n", status); - return -1; - } +#else - // Inject hardcoded entropy for the device. Suitable only for demo devices. - (void) fcc_entropy_set(MBED_CLOUD_DEV_ENTROPY, sizeof(MBED_CLOUD_DEV_ENTROPY)); - status = fcc_developer_flow(); - if (status != FCC_STATUS_SUCCESS && status != FCC_STATUS_KCM_FILE_EXIST_ERROR && status != FCC_STATUS_CA_ERROR) { - printf("fcc_developer_flow() failed with %d\n", status); - return -1; - } - - printf("Create resources\n"); - M2MObjectList m2m_obj_list; - - // GET resource 3200/0/5501 - m2m_get_res = M2MInterfaceFactory::create_resource(m2m_obj_list, 3200, 0, 5501, M2MResourceInstance::INTEGER, M2MBase::GET_ALLOWED); - if (m2m_get_res->set_value(0) != true) { - printf("m2m_get_res->set_value() failed\n"); + SocketAddress sock_addr; + retcode = iface->gethostbyname(host_name, &sock_addr); + if (retcode != NSAPI_ERROR_OK) { + print_function("Couldn't resolve remote host: %s, code: %d\n", host_name, retcode); return -1; } - // PUT resource 3201/0/5853 - m2m_put_res = M2MInterfaceFactory::create_resource(m2m_obj_list, 3201, 0, 5853, M2MResourceInstance::INTEGER, M2MBase::GET_PUT_ALLOWED); - if (m2m_put_res->set_value(0) != true) { - printf("m2m_led_res->set_value() failed\n"); + sock_addr.set_port(port); + +#if MBED_CONF_APP_SOCK_TYPE == TCP + retcode = sock.connect(sock_addr); + if (retcode < 0) { + print_function("TCPSocket.connect() fails, code: %d\n", retcode); return -1; + } else { + print_function("TCP: connected with %s server\n", host_name); } - if (m2m_put_res->set_value_updated_function(put_update) != true) { - printf("m2m_put_res->set_value_updated_function() failed\n"); + retcode = sock.send((void*) echo_string, strlen(echo_string)); + if (retcode < 0) { + print_function("TCPSocket.send() fails, code: %d\n", retcode); return -1; + } else { + print_function("TCP: Sent %d Bytes to %s\n", retcode, host_name); } - // POST resource 3201/0/5850 - m2m_post_res = M2MInterfaceFactory::create_resource(m2m_obj_list, 3201, 0, 5850, M2MResourceInstance::INTEGER, M2MBase::POST_ALLOWED); - if (m2m_post_res->set_execute_function(execute_post) != true) { - printf("m2m_post_res->set_execute_function() failed\n"); + n = sock.recv((void*) recv_buf, sizeof(recv_buf)); +#else + + retcode = sock.sendto(sock_addr, (void*) echo_string, strlen(echo_string)); + if (retcode < 0) { + print_function("UDPSocket.sendto() fails, code: %d\n", retcode); return -1; + } else { + print_function("UDP: Sent %d Bytes to %s\n", retcode, host_name); + } + + n = sock.recvfrom(&sock_addr, (void*) recv_buf, sizeof(recv_buf)); +#endif +#endif + + sock.close(); + + if (n > 0) { + print_function("Received from echo server %d Bytes\n", n); + return 0; } - // POST resource 5000/0/1 to trigger deregister. - m2m_deregister_res = M2MInterfaceFactory::create_resource(m2m_obj_list, 5000, 0, 1, M2MResourceInstance::INTEGER, M2MBase::POST_ALLOWED); + return -1; +} + +int main() +{ + print_function("\n\nmbed-os-example-cellular\n"); + print_function("\n\nBuilt: %s, %s\n", __DATE__, __TIME__); +#ifdef MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN + print_function("\n\n[MAIN], plmn: %s\n", (MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN ? MBED_CONF_NSAPI_DEFAULT_CELLULAR_PLMN : "NULL")); +#endif - // Use delayed response - m2m_deregister_res->set_delayed_response(true); + print_function("Establishing connection\n"); + + BG96_Modem_PowerON(); + +#if MBED_CONF_MBED_TRACE_ENABLE + trace_open(); +#else + dot_thread.start(dot_event); +#endif // #if MBED_CONF_MBED_TRACE_ENABLE - if (m2m_deregister_res->set_execute_function(deregister) != true) { - printf("m2m_post_res->set_execute_function() failed\n"); - return -1; +#if MBED_CONF_APP_SOCK_TYPE == NONIP + iface = CellularContext::get_default_nonip_instance(); +#else + iface = CellularContext::get_default_instance(); +#endif + + MBED_ASSERT(iface); + + // sim pin, apn, credentials and possible plmn are taken automatically from json when using NetworkInterface::set_default_parameters() + iface->set_default_parameters(); + + nsapi_error_t retcode = NSAPI_ERROR_NO_CONNECTION; + + /* Attempt to connect to a cellular network */ + if (do_connect() == NSAPI_ERROR_OK) { + retcode = test_send_recv(); } - printf("Register Pelion Device Management Client\n\n"); - cloud_client = new MbedCloudClient(client_registered, client_unregistered, client_error, NULL, update_progress); - cloud_client->add_objects(m2m_obj_list); - cloud_client->setup(network); // cloud_client->setup(NULL); -- https://jira.arm.com/browse/IOTCLT-3114 + if (iface->disconnect() != NSAPI_ERROR_OK) { + print_function("\n\n disconnect failed.\n\n"); + } - while(cloud_client_running) { - int in_char = getchar(); - if (in_char == 'i') { - print_client_ids(); // When 'i' is pressed, print endpoint info - continue; - } else if (in_char == 'r') { - (void) fcc_storage_delete(); // When 'r' is pressed, erase storage and reboot the board. - printf("Storage erased, rebooting the device.\n\n"); - wait(1); - NVIC_SystemReset(); - } else if (in_char > 0 && in_char != 0x03) { // Ctrl+C is 0x03 in Mbed OS and Linux returns negative number - button_press(); // Simulate button press - continue; - } - deregister_client(); - break; + if (retcode == NSAPI_ERROR_OK) { + print_function("\n\nSuccess. Exiting \n\n"); + } else { + print_function("\n\nFailure. Exiting \n\n"); } + +#if MBED_CONF_MBED_TRACE_ENABLE + trace_close(); +#else + dot_thread.terminate(); +#endif // #if MBED_CONF_MBED_TRACE_ENABLE + return 0; } - -#endif /* MBED_TEST_MODE */ +// EOF
--- a/mbed_app.json Thu Dec 12 10:26:06 2019 +0900 +++ b/mbed_app.json Fri Feb 21 19:20:41 2020 +0000 @@ -1,191 +1,42 @@ { - "macros": [ - "MBED_TRACE_MAX_LEVEL=TRACE_LEVEL_INFO", - "MBED_CLIENT_USER_CONFIG_FILE=\"mbed_cloud_client_user_config.h\"", - "MBED_CLOUD_CLIENT_USER_CONFIG_FILE=\"mbed_cloud_client_user_config.h\"", - "ARM_UC_USE_PAL_BLOCKDEVICE=1", - "PAL_PLATFORM_DEFINED_CONFIGURATION=\"mbedOS_SST.h\"", - "PAL_USER_DEFINED_CONFIGURATION=\"mbedOS_SST.h\"" - ], + "config": { + "sock-type": "TCP", + "echo-server-hostname": { + "help": "Echo server host name.", + "value": "\"echo.mbedcloudtesting.com\"" + }, + "echo-server-port": { + "help": "Echo server port number.", + "value": 7 + }, + "trace-level": { + "help": "Options are TRACE_LEVEL_ERROR,TRACE_LEVEL_WARN,TRACE_LEVEL_INFO,TRACE_LEVEL_DEBUG", + "macro_name": "MBED_TRACE_MAX_LEVEL", + "value": "TRACE_LEVEL_INFO" + } + }, "target_overrides": { "*": { - "target.features_add" : ["BOOTLOADER", "STORAGE"], - "platform.stdio-baud-rate" : 115200, - "platform.stdio-convert-newlines" : true, - "platform.stdio-buffered-serial" : true, - "platform.stdio-flush-at-exit" : true, - "rtos.main-thread-stack-size" : 5120, - "update-client.storage-locations" : 1, - "mbed-trace.enable" : null, - "events.shared-stacksize" : 2048, - "nsapi.default-wifi-security" : "WPA_WPA2", - "nsapi.default-wifi-ssid" : "\"SSID\"", - "nsapi.default-wifi-password" : "\"PASSWORD\"" - }, - "Freescale": { - "lwip.mem-size" : 12500 - }, - "STM_EMAC": { - "lwip.pbuf-pool-size" : 16, - "lwip.mem-size" : 12500 - }, - "K64F": { - "target.macros_add" : ["MBEDTLS_USER_CONFIG_FILE=\"mbedTLSConfig_mbedOS.h\""], - "target.network-default-interface-type" : "ETHERNET", - "target.bootloader_img" : "bootloader/mbed-bootloader-k64f-internal_flash-no_rot-v4.0.1.bin", - "target.header_offset" : "0x8000", - "target.app_offset" : "0x8400", - "target.restrict_size" : "0x74000", - "update-client.bootloader-details" : "0x4A6C", - "update-client.application-details" : "(32*1024)", - "update-client.storage-address" : "(MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS+MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)", - "update-client.storage-size" : "(512*1024-MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)", - "update-client.storage-locations" : 1, - "update-client.storage-page" : 8, - "mbed-cloud-client.update-storage" : "ARM_UCP_FLASHIAP", - "storage_tdb_internal.internal_base_address": "(512*1024)", - "storage_tdb_internal.internal_size" : "(48*1024)", - "storage.storage_type" : "TDB_INTERNAL" - }, - "K66F": { - "target.macros_add" : ["MBEDTLS_USER_CONFIG_FILE=\"mbedTLSConfig_mbedOS.h\""], - "target.network-default-interface-type" : "ETHERNET", - "target.bootloader_img" : "bootloader/mbed-bootloader-k66f-internal_flash-no_rot-v4.0.0.bin", - "target.header_offset" : "0x8000", - "target.app_offset" : "0x8400", - "update-client.bootloader-details" : "0x4D58", - "update-client.application-details" : "(32*1024)", - "update-client.storage-address" : "(MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS+MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)", - "update-client.storage-size" : "(1024*1024-MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)", - "update-client.storage-page" : 8, - "mbed-cloud-client.update-storage" : "ARM_UCP_FLASHIAP", - "storage_tdb_internal.internal_base_address": "(1024*1024)", - "storage_tdb_internal.internal_size" : "(96*1024)", - "storage.storage_type" : "TDB_INTERNAL" - }, - "NUCLEO_F429ZI": { - "target.macros_add" : ["MBEDTLS_USER_CONFIG_FILE=\"mbedTLSConfig_mbedOS.h\""], - "target.network-default-interface-type" : "ETHERNET", - "target.bootloader_img" : "bootloader/mbed-bootloader-nucleo_f429zi-internal_flash-no_rot-v4.0.0.bin", - "target.header_offset" : "0x8000", - "target.app_offset" : "0x8400", - "update-client.bootloader-details" : "0x080078CC", - "update-client.application-details" : "(MBED_ROM_START + MBED_BOOTLOADER_SIZE)", - "update-client.storage-address" : "(MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS+MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)", - "update-client.storage-size" : "(1024*1024-MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)", - "update-client.storage-page" : 1, - "mbed-cloud-client.update-storage" : "ARM_UCP_FLASHIAP", - "storage_tdb_internal.internal_base_address": "(MBED_ROM_START+1024*1024)", - "storage_tdb_internal.internal_size" : "(128*1024)", - "storage.storage_type" : "TDB_INTERNAL" - }, - "UBLOX_EVK_ODIN_W2": { - "target.macros_add" : ["MBEDTLS_USER_CONFIG_FILE=\"mbedTLSConfig_mbedOS.h\""], - "target.network-default-interface-type" : "WIFI", - "target.bootloader_img" : "bootloader/mbed-bootloader-ublox_evk_odin_w2-block_device-kvstore-v4.0.0.bin", - "target.header_offset" : "0x10000", - "target.app_offset" : "0x10400", - "target.components_add" : ["SD"], - "update-client.bootloader-details" : "0x08007300", - "update-client.application-details" : "(0x08000000+64*1024)", - "update-client.storage-address" : "(1024*1024*64)", - "update-client.storage-size" : "((MBED_ROM_START + MBED_ROM_SIZE - APPLICATION_ADDR) * MBED_CONF_UPDATE_CLIENT_STORAGE_LOCATIONS)", - "mbed-cloud-client.update-storage" : "ARM_UCP_FLASHIAP_BLOCKDEVICE", - "storage_filesystem.internal_base_address" : "(0x08000000+32*1024)", - "storage_filesystem.rbp_internal_size" : "(32*1024)", - "storage_filesystem.external_base_address" : "(0x0)", - "storage_filesystem.external_size" : "(1024*1024*64)", - "storage.storage_type" : "FILESYSTEM", - "storage_filesystem.filesystem" : "LITTLE", - "storage_filesystem.blockdevice" : "SD", - "target.lse_available" : 0, - "target.macros_remove" : ["MBEDTLS_CONFIG_HW_SUPPORT"] - }, - "NUCLEO_F411RE": { - "target.extra_labels_add" : ["PSA"], - "target.macros_add" : ["MBEDTLS_USER_CONFIG_FILE=\"mbedTLSConfig_mbedOS_SW_TRNG_PSA.h\"", "MBEDTLS_PSA_CRYPTO_C", "MBEDTLS_ENTROPY_NV_SEED", "PAL_USE_HW_TRNG=0"], - "target.network-default-interface-type" : "WIFI", - "target.bootloader_img" : "bootloader/mbed-bootloader-nucleo_f411re-block_device-kvstore-v4.0.0.bin", - "target.header_offset" : "0x10000", - "target.app_offset" : "0x10400", - "target.components_add" : ["SD", "WIFI_IDW01M1"], - "idw0xx1.provide-default" : true, - "idw0xx1.tx" : "PA_9", - "idw0xx1.rx" : "PA_10", - "update-client.bootloader-details" : "(0x08000000+30*1024)", - "update-client.application-details" : "(0x08000000+64*1024)", - "update-client.storage-address" : "(1024*1024*64)", - "update-client.storage-size" : "((MBED_ROM_START + MBED_ROM_SIZE - APPLICATION_ADDR) * MBED_CONF_UPDATE_CLIENT_STORAGE_LOCATIONS)", - "mbed-cloud-client.update-storage" : "ARM_UCP_FLASHIAP_BLOCKDEVICE", - "storage_filesystem.filesystem" : "LITTLE", - "storage_filesystem.blockdevice" : "SD", - "storage_filesystem.internal_base_address" : "(0x08000000+32*1024)", - "storage_filesystem.rbp_internal_size" : "(32*1024)", - "storage.storage_type" : "FILESYSTEM", - "storage_filesystem.external_base_address" : "(0x0)", - "storage_filesystem.external_size" : "(1024*1024*64)", - "events.shared-stacksize" : 2048, - "events.shared-eventsize" : 1024, - "drivers.uart-serial-rxbuf-size" : 1024, - "drivers.uart-serial-txbuf-size" : 1024, - "target.macros_remove" : ["MBEDTLS_CONFIG_HW_SUPPORT"], - "sd.SPI_MOSI" : "PC_3", - "sd.SPI_MISO" : "PC_2", - "sd.SPI_CLK" : "PC_7", - "sd.SPI_CS" : "PB_9" - }, - "DISCO_L475VG_IOT01A": { - "target.macros_add" : ["MBEDTLS_USER_CONFIG_FILE=\"mbedTLSConfig_mbedOS.h\""], - "target.network-default-interface-type" : "WIFI", - "target.bootloader_img" : "bootloader/mbed-bootloader-disco_l475vg_iot01a-external_kvstore-qspif.bin", - "target.header_offset" : "0x11000", - "target.app_offset" : "0x11400", - "target.components_add" : ["QSPIF", "WIFI_ISM43362"], - "bootloader-size" : "(36*1024)", - "ism43362.read-thread-stack-size" : 1024, - "mbed-client-pal.pal-max-frag-len" : 1, - "mbed-client.sn-coap-max-blockwise-payload-size": 256, - "mbed-cloud-client.update-storage" : "ARM_UCP_FLASHIAP_BLOCKDEVICE", - "storage.storage_type" : "FILESYSTEM", - "storage_filesystem.filesystem" : "LITTLE", - "storage_filesystem.blockdevice" : "QSPIF", - "storage_filesystem.external_size" : "(1024 * 1024)", - "storage_filesystem.external_base_address" : "(0)", - "storage_filesystem.rbp_internal_size" : "(32 * 1024)", - "storage_filesystem.internal_base_address" : "(MBED_ROM_START + MBED_BOOTLOADER_SIZE)", - "update-client.application-details" : "(MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS + MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE)", - "update-client.bootloader-details" : "0x800882c", - "update-client.firmware-header-version" : "2", - "update-client.storage-address" : "(MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_BASE_ADDRESS + MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_SIZE)", - "update-client.storage-locations" : 1, - "update-client.storage-size" : "((MBED_ROM_START + MBED_ROM_SIZE - APPLICATION_ADDR) * MBED_CONF_UPDATE_CLIENT_STORAGE_LOCATIONS)" - }, - "TMPM46B": { - "target.macros_add" : ["MBEDTLS_USER_CONFIG_FILE=\"mbedTLSConfig_mbedOS.h\""], - "target.components_add" : ["FLASHIAP"], - "target.network-default-interface-type" : "WIFI", - "esp8266.provide-default" : true, - "esp8266.tx" : "D1", - "esp8266.rx" : "D0", - "target.bootloader_img" : "bootloader/mbed-bootloader-tmpm46b-internal_flash-no_rot-v4.0.1.bin", - "target.header_offset" : "0x8000", - "target.app_offset" : "0x8400", - "target.restrict_size" : "0x70000", - "update-client.application-details" : "(32*1024)", - "update-client.storage-address" : "(MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS+MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)", - "update-client.storage-size" : "(512*1024-MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE)", - "update-client.storage-locations" : 1, - "mbed-cloud-client.update-storage" : "ARM_UCP_FLASHIAP", - "storage_tdb_internal.internal_base_address": "(512*1024)", - "storage_tdb_internal.internal_size" : "(64*1024)", - "storage.storage_type" : "TDB_INTERNAL" - } - }, - "config": { - "bootloader-size": { - "help" : "Helper macro to enable calculation of rom regions. target.header_offset and target.app_offset still needs to be calculated manually, though.", - "value" : "(32*1024)", - "macro_name": "MBED_BOOTLOADER_SIZE" + "target.network-default-interface-type": "CELLULAR", + "mbed-trace.enable": true, + "lwip.ipv4-enabled": true, + "lwip.ipv6-enabled": false, + "lwip.ethernet-enabled": false, + "lwip.ppp-enabled": false, + "lwip.tcp-enabled": true, + "platform.stdio-convert-newlines": true, + "platform.stdio-baud-rate": 115200, + "platform.default-serial-baud-rate": 115200, + "platform.stdio-buffered-serial": true, + "cellular.debug-at": false, + "nsapi.default-cellular-plmn": 0, + "nsapi.default-cellular-sim-pin": "\"1234\"", + "nsapi.default-cellular-apn": "\"m2m-catm1.default.lguplus.co.kr\"", + "nsapi.default-cellular-username": 0, + "nsapi.default-cellular-password": 0, + "QUECTEL_BG96.tx": "D1", + "QUECTEL_BG96.rx": "D0", + "QUECTEL_BG96.provide-default": true } } -} +} \ No newline at end of file