Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: nRF51_Vdd TextLCD BME280
2_EddyStoneBeacon/main.cpp@6:6dd8c932bd56, 2019-12-19 (annotated)
- 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?
User | Revision | Line number | New 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 |