Previous version which works for my stm32f401 Nucleo board

Fork of X_NUCLEO_IDB0XA1 by ST

Committer:
hemddabral
Date:
Tue Aug 26 06:53:47 2014 +0000
Revision:
39:af09d274257b
Parent:
37:07487777d9c6
Child:
41:95b8d531628c
implement BlueNRGDevice::getVersion and BlueNRGDevice::setTxPower

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mridup 2:a2b623661316 1 /* mbed Microcontroller Library
mridup 2:a2b623661316 2 * Copyright (c) 2006-2013 ARM Limited
mridup 2:a2b623661316 3 *
mridup 2:a2b623661316 4 * Licensed under the Apache License, Version 2.0 (the "License");
mridup 2:a2b623661316 5 * you may not use this file except in compliance with the License.
mridup 2:a2b623661316 6 * You may obtain a copy of the License at
mridup 2:a2b623661316 7 *
mridup 2:a2b623661316 8 * http://www.apache.org/licenses/LICENSE-2.0
mridup 2:a2b623661316 9 *
mridup 2:a2b623661316 10 * Unless required by applicable law or agreed to in writing, software
mridup 2:a2b623661316 11 * distributed under the License is distributed on an "AS IS" BASIS,
mridup 2:a2b623661316 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mridup 2:a2b623661316 13 * See the License for the specific language governing permissions and
mridup 2:a2b623661316 14 * limitations under the License.
mridup 2:a2b623661316 15 */
mridup 2:a2b623661316 16
mridup 2:a2b623661316 17 #include "mbed.h"
mridup 2:a2b623661316 18 #include "BlueNRGDevice.h"
mridup 2:a2b623661316 19
mridup 2:a2b623661316 20 #include "btle.h"
hemddabral 39:af09d274257b 21 #include "Utils.h"
hemddabral 39:af09d274257b 22 #include "osal.h"
mridup 2:a2b623661316 23
mridup 2:a2b623661316 24 /**
mridup 6:08cfc94b5f49 25 * The singleton which represents the BlueNRG transport for the BLEDevice.
mridup 2:a2b623661316 26 */
mridup 2:a2b623661316 27 static BlueNRGDevice deviceInstance;
mridup 2:a2b623661316 28
mridup 2:a2b623661316 29 /**
mridup 2:a2b623661316 30 * BLE-API requires an implementation of the following function in order to
mridup 2:a2b623661316 31 * obtain its transport handle.
mridup 2:a2b623661316 32 */
mridup 2:a2b623661316 33 BLEDeviceInstanceBase *
mridup 2:a2b623661316 34 createBLEDeviceInstance(void)
mridup 2:a2b623661316 35 {
mridup 2:a2b623661316 36 return (&deviceInstance);
mridup 2:a2b623661316 37 }
mridup 2:a2b623661316 38
mridup 2:a2b623661316 39 /**************************************************************************/
mridup 2:a2b623661316 40 /*!
mridup 2:a2b623661316 41 @brief Constructor
mridup 2:a2b623661316 42 */
mridup 2:a2b623661316 43 /**************************************************************************/
mridup 2:a2b623661316 44 BlueNRGDevice::BlueNRGDevice(void)
mridup 2:a2b623661316 45 {
mridup 2:a2b623661316 46 }
mridup 2:a2b623661316 47
mridup 2:a2b623661316 48 /**************************************************************************/
mridup 2:a2b623661316 49 /*!
mridup 2:a2b623661316 50 @brief Destructor
mridup 2:a2b623661316 51 */
mridup 2:a2b623661316 52 /**************************************************************************/
mridup 2:a2b623661316 53 BlueNRGDevice::~BlueNRGDevice(void)
mridup 2:a2b623661316 54 {
mridup 2:a2b623661316 55 }
mridup 2:a2b623661316 56
mridup 2:a2b623661316 57 /**************************************************************************/
mridup 2:a2b623661316 58 /*!
mridup 2:a2b623661316 59 @brief Initialises anything required to start using BLE
mridup 2:a2b623661316 60
mridup 2:a2b623661316 61 @returns ble_error_t
mridup 2:a2b623661316 62
mridup 2:a2b623661316 63 @retval BLE_ERROR_NONE
mridup 2:a2b623661316 64 Everything executed properly
mridup 2:a2b623661316 65
mridup 2:a2b623661316 66 @section EXAMPLE
mridup 2:a2b623661316 67
mridup 2:a2b623661316 68 @code
mridup 2:a2b623661316 69
mridup 2:a2b623661316 70 @endcode
mridup 2:a2b623661316 71 */
mridup 2:a2b623661316 72 /**************************************************************************/
mridup 2:a2b623661316 73 ble_error_t BlueNRGDevice::init(void)
mridup 2:a2b623661316 74 {
mridup 2:a2b623661316 75 /* ToDo: Clear memory contents, reset the SD, etc. */
mridup 2:a2b623661316 76 btle_init();
mridup 2:a2b623661316 77
mridup 2:a2b623661316 78 return BLE_ERROR_NONE;
mridup 2:a2b623661316 79 }
mridup 2:a2b623661316 80
mridup 2:a2b623661316 81 /**************************************************************************/
mridup 2:a2b623661316 82 /*!
mridup 2:a2b623661316 83 @brief Resets the BLE HW, removing any existing services and
mridup 2:a2b623661316 84 characteristics
mridup 2:a2b623661316 85
mridup 2:a2b623661316 86 @returns ble_error_t
mridup 2:a2b623661316 87
mridup 2:a2b623661316 88 @retval BLE_ERROR_NONE
mridup 2:a2b623661316 89 Everything executed properly
mridup 2:a2b623661316 90
mridup 2:a2b623661316 91 @section EXAMPLE
mridup 2:a2b623661316 92
mridup 2:a2b623661316 93 @code
mridup 2:a2b623661316 94
mridup 2:a2b623661316 95 @endcode
mridup 2:a2b623661316 96 */
mridup 2:a2b623661316 97 /**************************************************************************/
mridup 2:a2b623661316 98 ble_error_t BlueNRGDevice::reset(void)
mridup 2:a2b623661316 99 {
mridup 2:a2b623661316 100 wait(0.5);
mridup 2:a2b623661316 101
mridup 2:a2b623661316 102 /* Reset BlueNRG SPI interface */
mridup 2:a2b623661316 103 //BlueNRG_RST();
mridup 2:a2b623661316 104
mridup 2:a2b623661316 105 /* Wait for the radio to come back up */
mridup 2:a2b623661316 106 wait(1);
mridup 2:a2b623661316 107
mridup 2:a2b623661316 108 return BLE_ERROR_NONE;
mridup 2:a2b623661316 109 }
mridup 2:a2b623661316 110
mridup 2:a2b623661316 111 void BlueNRGDevice::waitForEvent(void)
mridup 2:a2b623661316 112 {
mridup 2:a2b623661316 113 HCI_Process();//Send App Events??
mridup 2:a2b623661316 114
mridup 2:a2b623661316 115 }
hemddabral 37:07487777d9c6 116
hemddabral 37:07487777d9c6 117
hemddabral 37:07487777d9c6 118 /**************************************************************************/
hemddabral 37:07487777d9c6 119 /*!
hemddabral 37:07487777d9c6 120 @brief get GAP version
hemddabral 37:07487777d9c6 121
hemddabral 37:07487777d9c6 122 @returns char *
hemddabral 37:07487777d9c6 123
hemddabral 39:af09d274257b 124 @retval pointer to version string
hemddabral 37:07487777d9c6 125
hemddabral 37:07487777d9c6 126 @section EXAMPLE
hemddabral 37:07487777d9c6 127
hemddabral 37:07487777d9c6 128 @code
hemddabral 37:07487777d9c6 129
hemddabral 37:07487777d9c6 130 @endcode
hemddabral 37:07487777d9c6 131 */
hemddabral 37:07487777d9c6 132 /**************************************************************************/
hemddabral 37:07487777d9c6 133 const char *BlueNRGDevice::getVersion(void)
hemddabral 37:07487777d9c6 134 {
hemddabral 39:af09d274257b 135 char *version = new char[6];
hemddabral 39:af09d274257b 136 memcpy((void *)version, "1.0.0", 5);
hemddabral 39:af09d274257b 137 return version;
hemddabral 37:07487777d9c6 138 }
hemddabral 37:07487777d9c6 139
hemddabral 37:07487777d9c6 140
hemddabral 37:07487777d9c6 141 /**************************************************************************/
hemddabral 37:07487777d9c6 142 /*!
hemddabral 37:07487777d9c6 143 @brief get reference to GAP object
hemddabral 37:07487777d9c6 144
hemddabral 37:07487777d9c6 145 @returns Gap&
hemddabral 37:07487777d9c6 146
hemddabral 37:07487777d9c6 147 @retval reference to gap object
hemddabral 37:07487777d9c6 148
hemddabral 37:07487777d9c6 149 @section EXAMPLE
hemddabral 37:07487777d9c6 150
hemddabral 37:07487777d9c6 151 @code
hemddabral 37:07487777d9c6 152
hemddabral 37:07487777d9c6 153 @endcode
hemddabral 37:07487777d9c6 154 */
hemddabral 37:07487777d9c6 155 /**************************************************************************/
hemddabral 37:07487777d9c6 156 Gap &BlueNRGDevice::getGap()
hemddabral 37:07487777d9c6 157 {
hemddabral 37:07487777d9c6 158 return BlueNRGGap::getInstance();
hemddabral 37:07487777d9c6 159 }
hemddabral 37:07487777d9c6 160
hemddabral 37:07487777d9c6 161 /**************************************************************************/
hemddabral 37:07487777d9c6 162 /*!
hemddabral 37:07487777d9c6 163 @brief get reference to GATT server object
hemddabral 37:07487777d9c6 164
hemddabral 37:07487777d9c6 165 @returns GattServer&
hemddabral 37:07487777d9c6 166
hemddabral 37:07487777d9c6 167 @retval reference to GATT server object
hemddabral 37:07487777d9c6 168
hemddabral 37:07487777d9c6 169 @section EXAMPLE
hemddabral 37:07487777d9c6 170
hemddabral 37:07487777d9c6 171 @code
hemddabral 37:07487777d9c6 172
hemddabral 37:07487777d9c6 173 @endcode
hemddabral 37:07487777d9c6 174 */
hemddabral 37:07487777d9c6 175 /**************************************************************************/
hemddabral 37:07487777d9c6 176 GattServer &BlueNRGDevice::getGattServer()
hemddabral 37:07487777d9c6 177 {
hemddabral 37:07487777d9c6 178 return BlueNRGGattServer::getInstance();
hemddabral 37:07487777d9c6 179 }
hemddabral 37:07487777d9c6 180
hemddabral 37:07487777d9c6 181 /**************************************************************************/
hemddabral 37:07487777d9c6 182 /*!
hemddabral 37:07487777d9c6 183 @brief set Tx power level
hemddabral 37:07487777d9c6 184
hemddabral 37:07487777d9c6 185 @returns ble_error_t
hemddabral 37:07487777d9c6 186
hemddabral 37:07487777d9c6 187 @retval BLE_ERROR_NONE
hemddabral 37:07487777d9c6 188 Everything executed properly
hemddabral 37:07487777d9c6 189
hemddabral 37:07487777d9c6 190 @section EXAMPLE
hemddabral 37:07487777d9c6 191
hemddabral 37:07487777d9c6 192 @code
hemddabral 37:07487777d9c6 193
hemddabral 37:07487777d9c6 194 @endcode
hemddabral 37:07487777d9c6 195 */
hemddabral 37:07487777d9c6 196 /**************************************************************************/
hemddabral 37:07487777d9c6 197 ble_error_t BlueNRGDevice::setTxPower(int8_t txPower)
hemddabral 37:07487777d9c6 198 {
hemddabral 39:af09d274257b 199 int8_t enHighPower = 0;
hemddabral 39:af09d274257b 200 int8_t paLevel = 0;
hemddabral 39:af09d274257b 201 int8_t dbmActuallySet = getHighPowerAndPALevelValue(txPower, enHighPower, paLevel);
hemddabral 39:af09d274257b 202 DEBUG("txPower=%d, dbmActuallySet=%d\n\r", txPower, dbmActuallySet);
hemddabral 39:af09d274257b 203 DEBUG("enHighPower=%d, paLevel=%d\n\r", enHighPower, paLevel);
hemddabral 39:af09d274257b 204 aci_hal_set_tx_power_level(enHighPower, paLevel);
hemddabral 37:07487777d9c6 205 return BLE_ERROR_NONE;
hemddabral 37:07487777d9c6 206 }