Kenji Arai / Mbed 2 deprecated BLE_nRF51822_Monitor

Dependencies:   BLE_API mbed nRF51822 nRF51_Vdd

Committer:
kenjiArai
Date:
Sun Jan 08 04:36:55 2017 +0000
Revision:
5:8c37a47ac34c
Parent:
4:36ad7c7d0400
Abolish function:due to mbed library revision up "nrf radio test example"  does NOT work anymore. Deleted unused files.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:08c935d6c28f 1 /* mbed Microcontroller Library
kenjiArai 0:08c935d6c28f 2 * Copyright (c) 2006-2014 ARM Limited
kenjiArai 0:08c935d6c28f 3 *
kenjiArai 0:08c935d6c28f 4 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:08c935d6c28f 5 * you may not use this file except in compliance with the License.
kenjiArai 0:08c935d6c28f 6 * You may obtain a copy of the License at
kenjiArai 0:08c935d6c28f 7 *
kenjiArai 0:08c935d6c28f 8 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:08c935d6c28f 9 *
kenjiArai 0:08c935d6c28f 10 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:08c935d6c28f 11 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:08c935d6c28f 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:08c935d6c28f 13 * See the License for the specific language governing permissions and
kenjiArai 0:08c935d6c28f 14 * limitations under the License.
kenjiArai 0:08c935d6c28f 15 */
kenjiArai 0:08c935d6c28f 16
kenjiArai 0:08c935d6c28f 17 /*
kenjiArai 0:08c935d6c28f 18 * Modified by Kenji Arai
kenjiArai 0:08c935d6c28f 19 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:08c935d6c28f 20 * http://mbed.org/users/kenjiArai/
kenjiArai 0:08c935d6c28f 21 *
kenjiArai 5:8c37a47ac34c 22 * Started: January 3rd, 2016
kenjiArai 5:8c37a47ac34c 23 * Revised: January 8th, 2017
kenjiArai 0:08c935d6c28f 24 */
kenjiArai 0:08c935d6c28f 25
kenjiArai 0:08c935d6c28f 26 // Include ---------------------------------------------------------------------------------------
kenjiArai 0:08c935d6c28f 27 #include "mbed.h"
kenjiArai 0:08c935d6c28f 28 #include "BLE.h"
kenjiArai 0:08c935d6c28f 29 #include "BatteryService.h"
kenjiArai 0:08c935d6c28f 30 #include "nRF51_Vdd.h"
kenjiArai 0:08c935d6c28f 31
kenjiArai 0:08c935d6c28f 32 // Definition ------------------------------------------------------------------------------------
kenjiArai 4:36ad7c7d0400 33 #define NEED_CONSOLE_OUTPUT 1 /* Set this if you need debug messages on the console;
kenjiArai 4:36ad7c7d0400 34 * it will have an impact on code-size and power consumption. */
kenjiArai 0:08c935d6c28f 35
kenjiArai 0:08c935d6c28f 36 #if NEED_CONSOLE_OUTPUT
kenjiArai 0:08c935d6c28f 37 #define DEBUG(...) { printf(__VA_ARGS__); }
kenjiArai 0:08c935d6c28f 38 #else
kenjiArai 0:08c935d6c28f 39 #define DEBUG(...) /* nothing */
kenjiArai 0:08c935d6c28f 40 #endif /* #if NEED_CONSOLE_OUTPUT */
kenjiArai 0:08c935d6c28f 41
kenjiArai 0:08c935d6c28f 42 // Object ----------------------------------------------------------------------------------------
kenjiArai 0:08c935d6c28f 43 BLE ble;
kenjiArai 0:08c935d6c28f 44 DigitalOut led1(LED1, 1);
kenjiArai 5:8c37a47ac34c 45 //Serial pc(USBTX, USBRX);
kenjiArai 5:8c37a47ac34c 46 Serial pc(P0_3, P0_1); // TX, RX
kenjiArai 0:08c935d6c28f 47 I2C i2c(P0_29,P0_28);
kenjiArai 0:08c935d6c28f 48 SPI spi(P0_20,P0_22,P0_25);
kenjiArai 0:08c935d6c28f 49 nRF51_Vdd vdd(3.6f, 2.6f);
kenjiArai 0:08c935d6c28f 50 Ticker t;
kenjiArai 0:08c935d6c28f 51
kenjiArai 0:08c935d6c28f 52 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 0:08c935d6c28f 53 const char *deviceName = "mbedMon";
kenjiArai 0:08c935d6c28f 54
kenjiArai 0:08c935d6c28f 55 // RAM -------------------------------------------------------------------------------------------
kenjiArai 0:08c935d6c28f 56 BatteryService *batteryService = NULL;
kenjiArai 0:08c935d6c28f 57 uint8_t batteryLevel = 50;
kenjiArai 0:08c935d6c28f 58
kenjiArai 0:08c935d6c28f 59 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 0:08c935d6c28f 60 extern void debug_interface(uint8_t mode);
kenjiArai 0:08c935d6c28f 61
kenjiArai 0:08c935d6c28f 62 //-------------------------------------------------------------------------------------------------
kenjiArai 0:08c935d6c28f 63 // Control Program
kenjiArai 0:08c935d6c28f 64 //-------------------------------------------------------------------------------------------------
kenjiArai 0:08c935d6c28f 65 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *disconnectionParams)
kenjiArai 0:08c935d6c28f 66 {
kenjiArai 0:08c935d6c28f 67 DEBUG("Disconnected handle %u!\n\r", disconnectionParams->handle);
kenjiArai 0:08c935d6c28f 68 DEBUG("Restarting the advertising process\n\r");
kenjiArai 0:08c935d6c28f 69 BLE::Instance(BLE::DEFAULT_INSTANCE).gap().startAdvertising(); // restart advertising
kenjiArai 0:08c935d6c28f 70 }
kenjiArai 0:08c935d6c28f 71
kenjiArai 0:08c935d6c28f 72 void blink(void)
kenjiArai 0:08c935d6c28f 73 {
kenjiArai 0:08c935d6c28f 74 led1 = !led1;
kenjiArai 0:08c935d6c28f 75 }
kenjiArai 0:08c935d6c28f 76
kenjiArai 0:08c935d6c28f 77 int main(void)
kenjiArai 0:08c935d6c28f 78 {
kenjiArai 2:6a659d71d71f 79 // ******************************************************
kenjiArai 2:6a659d71d71f 80 // Here is a example to impliment the monitor
kenjiArai 2:6a659d71d71f 81 // para: 1 -> goto montor and never comeback
kenjiArai 2:6a659d71d71f 82 // ******************************************************
kenjiArai 2:6a659d71d71f 83 debug_interface(1);
kenjiArai 2:6a659d71d71f 84
kenjiArai 2:6a659d71d71f 85 // Application program runs at here
kenjiArai 0:08c935d6c28f 86 t.attach(blink, 1.0f);
kenjiArai 0:08c935d6c28f 87
kenjiArai 0:08c935d6c28f 88 DEBUG("Initialising the nRF51822\r\n");
kenjiArai 0:08c935d6c28f 89 ble.init();
kenjiArai 0:08c935d6c28f 90 ble.setDeviceName((const uint8_t *)deviceName);
kenjiArai 0:08c935d6c28f 91 ble.onDisconnection(disconnectionCallback);
kenjiArai 0:08c935d6c28f 92
kenjiArai 0:08c935d6c28f 93 batteryService = new BatteryService(ble, batteryLevel);
kenjiArai 0:08c935d6c28f 94
kenjiArai 0:08c935d6c28f 95 /* setup advertising */
kenjiArai 0:08c935d6c28f 96 ble.accumulateAdvertisingPayload
kenjiArai 0:08c935d6c28f 97 (GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
kenjiArai 0:08c935d6c28f 98 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
kenjiArai 0:08c935d6c28f 99 ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
kenjiArai 0:08c935d6c28f 100 (const uint8_t *)deviceName,
kenjiArai 0:08c935d6c28f 101 strlen(deviceName));
kenjiArai 0:08c935d6c28f 102 ble.setAdvertisingInterval(1000); /* 1000ms; in multiples of 0.625ms. */
kenjiArai 0:08c935d6c28f 103 ble.startAdvertising();
kenjiArai 0:08c935d6c28f 104
kenjiArai 0:08c935d6c28f 105 while (true) {
kenjiArai 0:08c935d6c28f 106 // this will return upon any system event (such as an interrupt or a ticker wakeup)
kenjiArai 0:08c935d6c28f 107 ble.waitForEvent();
kenjiArai 0:08c935d6c28f 108
kenjiArai 0:08c935d6c28f 109 // the magic battery processing
kenjiArai 0:08c935d6c28f 110 batteryLevel++;
kenjiArai 0:08c935d6c28f 111 #if 1
kenjiArai 0:08c935d6c28f 112 if (batteryLevel > 100) {
kenjiArai 0:08c935d6c28f 113 batteryLevel = 20;
kenjiArai 0:08c935d6c28f 114 }
kenjiArai 0:08c935d6c28f 115 DEBUG("Vdd: %4.3f\r\n", vdd.read_real_value());
kenjiArai 0:08c935d6c28f 116 #else
kenjiArai 0:08c935d6c28f 117 DEBUG("Vdd: %f\r\n", vdd.read_real_value());
kenjiArai 0:08c935d6c28f 118 batteryLevel = vdd.read();
kenjiArai 0:08c935d6c28f 119 #endif
kenjiArai 0:08c935d6c28f 120
kenjiArai 0:08c935d6c28f 121 batteryService->updateBatteryLevel(batteryLevel);
kenjiArai 0:08c935d6c28f 122 DEBUG("battery=%d\r\n", batteryLevel);
kenjiArai 0:08c935d6c28f 123
kenjiArai 0:08c935d6c28f 124 // ******************************************************
kenjiArai 0:08c935d6c28f 125 // Here is a example to impliment the monitor
kenjiArai 0:08c935d6c28f 126 // para: 0 -> if Uart RX Data is ready then goto montor
kenjiArai 0:08c935d6c28f 127 // ******************************************************
kenjiArai 0:08c935d6c28f 128 debug_interface(0);
kenjiArai 0:08c935d6c28f 129 }
kenjiArai 0:08c935d6c28f 130 }