This is an example of BLE GATT Client, which receives broadcast data from BLE_Server_BME280 ( a GATT server) , then transfers values up to mbed Device Connector (cloud).
Please refer details about BLEClient_mbedDevConn below. https://github.com/soramame21/BLEClient_mbedDevConn
The location of required BLE GATT server, BLE_Server_BME280, is at here. https://developer.mbed.org/users/edamame22/code/BLE_Server_BME280/
pal/Source/PAL-Impl/pal_init.c
- Committer:
- Ren Boting
- Date:
- 2017-09-05
- Revision:
- 2:b894b3508057
- Parent:
- 0:29983394c6b6
File content as of revision 2:b894b3508057:
/* * Copyright (c) 2016 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 "pal.h" #include "pal_plat_rtos.h" #include "pal_plat_network.h" #include "pal_macros.h" //this variable must be a int32_t for using atomic increment static int32_t g_palIntialized = 0; palStatus_t pal_init() { palStatus_t status = PAL_SUCCESS; int32_t currentInitValue; // get the return value of g_palIntialized+1 to save it locally currentInitValue = pal_osAtomicIncrement(&g_palIntialized,1); // if increased for the 1st time if (1 == currentInitValue) { DEBUG_PRINT("Init for the 1st time, initializing the modules\r\n"); status = pal_plat_RTOSInitialize(NULL); if (PAL_SUCCESS == status) { status = pal_plat_socketsInit(NULL); if (PAL_SUCCESS != status) { DEBUG_PRINT("init of network module has failed with status %d\r\n",status); } } else { DEBUG_PRINT("init of RTOS module has failed with status %d\r\n",status); } } // if failed decrees the value of g_palIntialized if (PAL_SUCCESS != status) { pal_plat_socketsTerminate(NULL); pal_plat_RTOSDestroy(); pal_osAtomicIncrement(&g_palIntialized, -1); } return status; } void pal_destroy() { int32_t currentInitValue; // get the current value of g_palIntialized locally currentInitValue = pal_osAtomicIncrement(&g_palIntialized, -1); if (0 == currentInitValue) { DEBUG_PRINT("Destroying modules\r\n"); pal_plat_RTOSDestroy(); pal_plat_socketsTerminate(NULL); } }