Kenji Arai / TYBLE16_mbedlized_os5_several_examples_1st

Dependencies:   nRF51_Vdd TextLCD BME280

Committer:
kenjiArai
Date:
Thu Dec 19 07:27:50 2019 +0000
Revision:
6:6dd8c932bd56
Parent:
1:9011c83e4178
updated each main.cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 1:9011c83e4178 1 /* mbed Microcontroller Library
kenjiArai 1:9011c83e4178 2 * Copyright (c) 2006-2013 ARM Limited
kenjiArai 1:9011c83e4178 3 *
kenjiArai 1:9011c83e4178 4 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 1:9011c83e4178 5 * you may not use this file except in compliance with the License.
kenjiArai 1:9011c83e4178 6 * You may obtain a copy of the License at
kenjiArai 1:9011c83e4178 7 *
kenjiArai 1:9011c83e4178 8 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 1:9011c83e4178 9 *
kenjiArai 1:9011c83e4178 10 * Unless required by applicable law or agreed to in writing, software
kenjiArai 1:9011c83e4178 11 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 1:9011c83e4178 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 1:9011c83e4178 13 * See the License for the specific language governing permissions and
kenjiArai 1:9011c83e4178 14 * limitations under the License.
kenjiArai 1:9011c83e4178 15 */
kenjiArai 1:9011c83e4178 16
kenjiArai 1:9011c83e4178 17 /*
kenjiArai 1:9011c83e4178 18 * /////// Works well on TYBLE16 Module ///////
kenjiArai 1:9011c83e4178 19 * Modified by Kenji Arai
kenjiArai 1:9011c83e4178 20 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 1:9011c83e4178 21 * https://os.mbed.com/users/kenjiArai/
kenjiArai 1:9011c83e4178 22 *
kenjiArai 1:9011c83e4178 23 * Started: Feburary 18th, 2018
kenjiArai 6:6dd8c932bd56 24 * Revised: December 19th, 2019
kenjiArai 1:9011c83e4178 25 *
kenjiArai 1:9011c83e4178 26 * Original:
kenjiArai 1:9011c83e4178 27 * nRF51822_SimpleControls
kenjiArai 1:9011c83e4178 28 * https://developer.mbed.org/teams
kenjiArai 1:9011c83e4178 29 * /Bluetooth-Low-Energy/code/BLE_EddystoneBeacon_Service/
kenjiArai 1:9011c83e4178 30 * Tested Controller Device:
kenjiArai 1:9011c83e4178 31 * iPhone6 Physical Web (PhyWeb) By Viet Hoa Dinh
kenjiArai 1:9011c83e4178 32 * https://itunes.apple.com/us/app/physical-web/id927653608?mt=8
kenjiArai 1:9011c83e4178 33 */
kenjiArai 1:9011c83e4178 34
kenjiArai 1:9011c83e4178 35 //#define EXAMPLE_2_EDDYSTONE_BEACON
kenjiArai 1:9011c83e4178 36 #ifdef EXAMPLE_2_EDDYSTONE_BEACON
kenjiArai 1:9011c83e4178 37
kenjiArai 1:9011c83e4178 38 // Include --------------------------------------------------------------------
kenjiArai 1:9011c83e4178 39 #include "mbed.h"
kenjiArai 1:9011c83e4178 40 #include "TYBLE16_BASE.h"
kenjiArai 1:9011c83e4178 41 #include "BLE.h"
kenjiArai 1:9011c83e4178 42 #include "../Eddystone/EddystoneService.h"
kenjiArai 1:9011c83e4178 43
kenjiArai 1:9011c83e4178 44 // Object ---------------------------------------------------------------------
kenjiArai 1:9011c83e4178 45 DigitalOut led(P0_5);
kenjiArai 1:9011c83e4178 46 Serial pc(USBTX, USBRX);
kenjiArai 1:9011c83e4178 47
kenjiArai 1:9011c83e4178 48 // Definition -----------------------------------------------------------------
kenjiArai 1:9011c83e4178 49
kenjiArai 1:9011c83e4178 50 // RAM ------------------------------------------------------------------------
kenjiArai 1:9011c83e4178 51 EddystoneService *eddyServicePtr;
kenjiArai 1:9011c83e4178 52 Gap::Address_t my_mac;
kenjiArai 1:9011c83e4178 53
kenjiArai 1:9011c83e4178 54 // ROM / Constant data --------------------------------------------------------
kenjiArai 6:6dd8c932bd56 55 const char *const opngmsg =
kenjiArai 6:6dd8c932bd56 56 "\x1b[2J\x1b[H" __FILE__ "\r\n" __DATE__ " " __TIME__ " (UTC)\r\n""\r\n";
kenjiArai 1:9011c83e4178 57
kenjiArai 1:9011c83e4178 58 // Function prototypes --------------------------------------------------------
kenjiArai 1:9011c83e4178 59 int8_t check_dice(void);
kenjiArai 1:9011c83e4178 60 uint16_t update_vdd(uint16_t x);
kenjiArai 1:9011c83e4178 61 uint16_t update_temp(uint16_t x);
kenjiArai 1:9011c83e4178 62 void onBleInitError(BLE::InitializationCompleteCallbackContext* initContext);
kenjiArai 1:9011c83e4178 63 void bleInitComplete(BLE::InitializationCompleteCallbackContext* initContext);
kenjiArai 1:9011c83e4178 64
kenjiArai 1:9011c83e4178 65 //------------------------------------------------------------------------------
kenjiArai 1:9011c83e4178 66 // Control Program
kenjiArai 1:9011c83e4178 67 //------------------------------------------------------------------------------
kenjiArai 1:9011c83e4178 68 // !!!!!!!! Please select number of 0 to 6 !!!!!!!!!!!!!!!!!
kenjiArai 1:9011c83e4178 69 int8_t check_dice(void)
kenjiArai 1:9011c83e4178 70 {
kenjiArai 1:9011c83e4178 71 return 5;
kenjiArai 1:9011c83e4178 72 }
kenjiArai 1:9011c83e4178 73
kenjiArai 1:9011c83e4178 74 void bleInitComplete(BLE::InitializationCompleteCallbackContext* initContext)
kenjiArai 1:9011c83e4178 75 {
kenjiArai 1:9011c83e4178 76 BLE &ble = initContext->ble;
kenjiArai 1:9011c83e4178 77 ble_error_t error = initContext->error;
kenjiArai 1:9011c83e4178 78
kenjiArai 1:9011c83e4178 79 if (error != BLE_ERROR_NONE) {
kenjiArai 1:9011c83e4178 80 onBleInitError(initContext);
kenjiArai 1:9011c83e4178 81 return;
kenjiArai 1:9011c83e4178 82 }
kenjiArai 1:9011c83e4178 83 // Set UID and TLM frame data
kenjiArai 1:9011c83e4178 84 const UIDNamespaceID_t uidNamespaceID =
kenjiArai 1:9011c83e4178 85 {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99};
kenjiArai 1:9011c83e4178 86 const UIDInstanceID_t uidInstanceID =
kenjiArai 1:9011c83e4178 87 {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF};
kenjiArai 1:9011c83e4178 88 uint8_t tlmVersion = 0x00;
kenjiArai 1:9011c83e4178 89
kenjiArai 1:9011c83e4178 90 Gap::AddressType_t my_mac_type;
kenjiArai 1:9011c83e4178 91 ble.gap().getAddress(&my_mac_type, my_mac);
kenjiArai 1:9011c83e4178 92 // Initialize a EddystoneBeaconConfig service
kenjiArai 1:9011c83e4178 93 // Values for ADV packets related to firmware levels,
kenjiArai 1:9011c83e4178 94 // calibrated based on measured values at 1m
kenjiArai 1:9011c83e4178 95 static const PowerLevels_t defaultAdvPowerLevels = {-47, -33, -21, -13};
kenjiArai 1:9011c83e4178 96 // Values for radio power levels, provided by manufacturer.
kenjiArai 1:9011c83e4178 97 static const PowerLevels_t radioPowerLevels = {-30, -16, -4, 4};
kenjiArai 1:9011c83e4178 98 eddyServicePtr = new EddystoneService(ble,
kenjiArai 1:9011c83e4178 99 defaultAdvPowerLevels,
kenjiArai 1:9011c83e4178 100 radioPowerLevels);
kenjiArai 1:9011c83e4178 101 // created short cut web addres by http://bitly.oshiire.org/
kenjiArai 1:9011c83e4178 102 switch (check_dice()) {
kenjiArai 1:9011c83e4178 103 case 1: // Switch sience(mbed)
kenjiArai 1:9011c83e4178 104 eddyServicePtr->setURLData("http://bit.ly/1oJh91B");
kenjiArai 1:9011c83e4178 105 break;
kenjiArai 1:9011c83e4178 106 case 2: // switch sience(HP)
kenjiArai 1:9011c83e4178 107 eddyServicePtr->setURLData("http://bit.ly/1oJhP7g");
kenjiArai 1:9011c83e4178 108 break;
kenjiArai 1:9011c83e4178 109 case 3: // Taiyo Yuden BLE
kenjiArai 1:9011c83e4178 110 eddyServicePtr->setURLData("http://bit.ly/1VvuCVr");
kenjiArai 1:9011c83e4178 111 break;
kenjiArai 1:9011c83e4178 112 case 4: // Taiyo Yuden
kenjiArai 1:9011c83e4178 113 eddyServicePtr->setURLData("http://bit.ly/1Vvtp0l");
kenjiArai 1:9011c83e4178 114 break;
kenjiArai 1:9011c83e4178 115 case 5: // JH1PJL(mbed)
kenjiArai 1:9011c83e4178 116 eddyServicePtr->setURLData("http://bit.ly/1Vvt51J");
kenjiArai 1:9011c83e4178 117 break;
kenjiArai 1:9011c83e4178 118 case 6: // JH1PJL(HP)
kenjiArai 1:9011c83e4178 119 eddyServicePtr->setURLData("http://bit.ly/1VvteT0");
kenjiArai 1:9011c83e4178 120 break;
kenjiArai 1:9011c83e4178 121 case 0:
kenjiArai 1:9011c83e4178 122 default: // Mbed
kenjiArai 1:9011c83e4178 123 eddyServicePtr->setURLData("http://mbed.org");
kenjiArai 1:9011c83e4178 124 break;
kenjiArai 1:9011c83e4178 125 }
kenjiArai 1:9011c83e4178 126 eddyServicePtr->setUIDData(&uidNamespaceID, &uidInstanceID);
kenjiArai 1:9011c83e4178 127 eddyServicePtr->setTLMData(tlmVersion);
kenjiArai 1:9011c83e4178 128 // Start Eddystone in config mode
kenjiArai 1:9011c83e4178 129 eddyServicePtr->startBeaconService(5, 5, 5);
kenjiArai 1:9011c83e4178 130 }
kenjiArai 1:9011c83e4178 131
kenjiArai 1:9011c83e4178 132 int main(void)
kenjiArai 1:9011c83e4178 133 {
kenjiArai 1:9011c83e4178 134 pc.puts(opngmsg);
kenjiArai 1:9011c83e4178 135 led = 1;
kenjiArai 1:9011c83e4178 136 // Check TYBLE-16 configuration
kenjiArai 1:9011c83e4178 137 cpu_sys();
kenjiArai 1:9011c83e4178 138 if (compile_condition() == false) {
kenjiArai 1:9011c83e4178 139 pc.printf("This is wrong configuration!!\r\n");
kenjiArai 1:9011c83e4178 140 while(true) {
kenjiArai 1:9011c83e4178 141 led = !led;
kenjiArai 6:6dd8c932bd56 142 ThisThread::sleep_for(200);
kenjiArai 1:9011c83e4178 143 }
kenjiArai 1:9011c83e4178 144 }
kenjiArai 1:9011c83e4178 145 BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE);
kenjiArai 1:9011c83e4178 146 ble.init(bleInitComplete);
kenjiArai 1:9011c83e4178 147 while (ble.hasInitialized() == false) {
kenjiArai 1:9011c83e4178 148 ;
kenjiArai 1:9011c83e4178 149 }
kenjiArai 1:9011c83e4178 150 //
kenjiArai 1:9011c83e4178 151 led = 0;
kenjiArai 1:9011c83e4178 152 //pc.printf("line:%d\r\n", __LINE__);
kenjiArai 1:9011c83e4178 153 while (true) {
kenjiArai 6:6dd8c932bd56 154 //ble.waitForEvent();
kenjiArai 6:6dd8c932bd56 155 ThisThread::flags_wait_any(0); // no signal will come forever!
kenjiArai 1:9011c83e4178 156 }
kenjiArai 1:9011c83e4178 157 }
kenjiArai 1:9011c83e4178 158
kenjiArai 1:9011c83e4178 159 void onBleInitError(BLE::InitializationCompleteCallbackContext* initContext)
kenjiArai 1:9011c83e4178 160 {
kenjiArai 1:9011c83e4178 161 // Initialization error handling goes here...
kenjiArai 1:9011c83e4178 162 (void) initContext;
kenjiArai 1:9011c83e4178 163 }
kenjiArai 1:9011c83e4178 164
kenjiArai 1:9011c83e4178 165 #endif