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: BLE_API SDFileSystem mbed-rtos mbed nRF51822 X_NUCLEO_IDB0XA1
Fork of BLE_iBeacon by
Revision 80:a1cd660e00d1, committed 2016-10-21
- Comitter:
- tangcan0823
- Date:
- Fri Oct 21 04:18:17 2016 +0000
- Parent:
- 79:4e16bde5c10a
- Commit message:
- memory
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Fri Oct 21 04:18:17 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/neilt6/code/SDFileSystem/#e4d2567200db
--- a/main.cpp Tue Sep 20 12:41:28 2016 +0100
+++ b/main.cpp Fri Oct 21 04:18:17 2016 +0000
@@ -1,61 +1,160 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2015 ARM Limited
- *
- * 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 "mbed.h"
+#include "ble/BLE.h"
+#include "ble/services/HeartRateService.h"
+#include "ble/services/BatteryService.h"
+#include "ble/services/DeviceInformationService.h"
+#include "rtos.h"
+#include <string.h>
+#include "SDFileSystem.h"
+
+Semaphore one_slot(1);
+
+SDFileSystem sd(p25, p28, p29, p21, "sd");
+BLE ble;
+int address[10][12]={};
+const GapScanningParams scanningParams;
+
+
+int counter= 0;
+void onScanCallback(const Gap::AdvertisementCallbackParams_t *params)
+{
+time_t seconds = time(NULL); // JST
+struct tm *t = localtime(&seconds);
+/*printf("%04d/%02d/%02d %02d:%02d:%02d\r\n",
+t->tm_year + 1900, t->tm_mon, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
+*/
+
+int i=0,a=0,b=0,flag=0;
+for(i=0;i<10;i++){
+if(address[i][0]==params->peerAddr[5]){
+flag=1;
+break;
+}
+}
+if(flag==0){
+for(i=0; i<6; i++){
+address[counter][i]=params->peerAddr[5-i];
+}
+time_t seconds = time(NULL);
+struct tm *t = localtime(&seconds);
+address[counter][6]=t->tm_year;
+address[counter][7]=t->tm_mon;
+address[counter][8]= t->tm_mday;
+address[counter][9]= t->tm_hour;
+address[counter][10]= t->tm_min;
+address[counter][11]= t->tm_sec;
+
+counter++;
+for(a=0; a<counter; a++){
+for(b=0; b<12 ; b++){
+ FILE *fp = fopen("/sd/mydata/sdtest.txt", "w");
+ if(fp == NULL) {
+ error("Could not open file for write\n");
+ }
+if(b==0){printf("DEV:");
+fprintf(fp,"DEV:");}
+if(b<6){printf("%02x ", address[a][b]);
+fprintf(fp,"%02x ", address[a][b]);}
+else if(b>5){printf("%02d:",address[a][b]);
+fprintf(fp,"%02d:",address[a][b]);}
+if(b==11){
+printf("\r\n");
+fprintf(fp,"\r\n");
+ fclose(fp);
+
+}
+}
+
+if(a==counter-1)printf("----------\n\r");
+}
+}
+
-#include "mbed.h"
-#include "ble/services/iBeacon.h"
+/* for(int i=0; i<6; i++){
+address[0][i]=params->peerAddr[5-i];
+}
+for(int b=0; b<6 ; b++){
+if(b==0)printf("DEV:");
+printf("%02x ", address[0][b]);
+if(b==5)printf("\n\r");
+}*/
+}
+
+
+void test_thread(void const *name) {
+
+
+while (true) {
+Timer timer;
+one_slot.wait();
+printf("%s\n\r", (const char*)name);
+//1
+if(!strcmp((const char*)name, "1")){
+printf("**this is 1**\n\r");
+ble.gap().stopAdvertising();
+ble.startScan(&onScanCallback);
+
+}
-BLE ble;
-
-void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
-{
- BLE &ble = params->ble;
- ble_error_t error = params->error;
+//2
+if(!strcmp((const char*)name, "2")){
+printf("**this is 2**\n\r");
+timer.start();
+while(1){
+ble.waitForEvent();
+if(timer.read() > 9){
+timer.stop();
+timer.reset();
+ble.stopScan();
+break;
+}
+}
+}
+//3
+if(!strcmp((const char*)name, "3")){
+printf("**this is 3**\n\r");
+ble.gap().startAdvertising();
+
+}
+
- if (error != BLE_ERROR_NONE) {
- return;
- }
+Thread::wait(10000);
+one_slot.release();
+}
+}
+
+// const static char DEVICE_NAME[] = "BLE1";
+
+void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
+{
+BLE &ble = params->ble;
+ble_error_t error = params->error;
+
+if (error != BLE_ERROR_NONE) {
+return;
+}
+const uint8_t address1[] = {0xAA,0xAA,0xAA,0xAA,0xAA,0xAA};
+ble.gap().setAddress(BLEProtocol::AddressType::PUBLIC, address1);
+// ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
+// ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
+// ble.gap().setAdvertisingInterval(1000); /* 1000ms. */
+}
+
+int main (void) {
+
+mkdir("/sd/mydata", 0777);
- /**
- * The Beacon payload has the following composition:
- * 128-Bit / 16byte UUID = E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61
- * Major/Minor = 0x1122 / 0x3344
- * Tx Power = 0xC8 = 200, 2's compliment is 256-200 = (-56dB)
- *
- * Note: please remember to calibrate your beacons TX Power for more accurate results.
- */
- const uint8_t uuid[] = {0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4,
- 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61};
- uint16_t majorNumber = 1122;
- uint16_t minorNumber = 3344;
- uint16_t txPower = 0xC8;
- iBeacon *ibeacon = new iBeacon(ble, uuid, majorNumber, minorNumber, txPower);
+//ble.init();
+ble.init(bleInitComplete);
+ble.setScanParams(GapScanningParams::SCAN_INTERVAL_MAX,
+GapScanningParams::SCAN_WINDOW_MAX, 0);
+
+
- ble.gap().setAdvertisingInterval(1000); /* 1000ms. */
- ble.gap().startAdvertising();
-}
+
+Thread t2(test_thread, (void *)"2");
+Thread t3(test_thread, (void *)"3");
-int main(void)
-{
- ble.init(bleInitComplete);
-
- /* SpinWait for initialization to complete. This is necessary because the
- * BLE object is used in the main loop below. */
- while (!ble.hasInitialized()) { /* spin loop */ }
+test_thread((void *)"1");
- while (true) {
- ble.waitForEvent(); // allows or low power operation
- }
-}
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Fri Oct 21 04:18:17 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#3da5f554d8bf
--- a/mbed_app.json Tue Sep 20 12:41:28 2016 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-{
- "target_overrides": {
- "K64F": {
- "target.features_add": ["BLE"],
- "target.extra_labels_add": ["ST_BLUENRG"],
- "target.macros_add": ["IDB0XA1_D13_PATCH"]
- },
- "NUCLEO_F401RE": {
- "target.features_add": ["BLE"],
- "target.extra_labels_add": ["ST_BLUENRG"]
- }
- }
-}
\ No newline at end of file
