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
Revision 0:1ad445491c35, committed 2016-10-24
- Comitter:
- kataokashunpei
- Date:
- Mon Oct 24 04:43:07 2016 +0000
- Child:
- 1:fa329dd713be
- Commit message:
- mbed ble switch science;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BLE_API.lib Mon Oct 24 04:43:07 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#65474dc93927
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Mon Oct 24 04:43:07 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/neilt6/code/SDFileSystem/#e4d2567200db
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Oct 24 04:43:07 2016 +0000
@@ -0,0 +1,174 @@
+#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"
+#define n 10//addressを保存する個数
+#define m 12//addressとtimeを入れる
+Semaphore one_slot(1);
+
+BLE ble;
+char address[n][m]={};//保存する配列を初期化
+const GapScanningParams scanningParams;
+int wt;//threadの時間
+int wt1=0;
+int d=0;
+
+SDFileSystem sd(p25, p28, p29, p21, "sd"); // the pinout on the mbed Cool Components workshop board
+FILE *fp;
+int counter=0,i,b,flag;
+
+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);
+ */
+ flag=0;
+
+ for(i=0;i<counter;i++){
+ if(address[i][0] == params->peerAddr[0]){
+ flag=1;
+ break;
+ }
+ }
+
+ if(flag==0){
+ for(i=0; i<6; i++){
+ address[counter][i]=params->peerAddr[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;
+
+//ファイルをオープン
+ //fp = fopen("/sd/test.txt", "a");
+
+ fprintf(fp,"DEV:");
+ printf("DEV:");
+ for(b=0; b<6 ; b++)fprintf(fp,"%02x ", address[counter][b]);
+ for(b=0; b<6 ; b++)printf("%02x ", address[counter][b]);
+ fprintf(fp,"%04d/%02d/%02d %02d:%02d:%02d \r\n",address[counter][6],address[counter][7],address[counter][8],address[counter][9],address[counter][10],address[counter][11]);
+ printf("%04d/%02d/%02d %02d:%02d:%02d \r\n",address[counter][6],address[counter][7],address[counter][8],address[counter][9],address[counter][10],address[counter][11]);
+ printf("written\n\r");
+
+ //printf("Ok");
+ //fflush(stdin);
+ //fflush(stdout);
+ //fflush(fp);
+
+/*
+ printf("DEV:");
+ for(b=0; b<6 ; b++)printf("%02x ", address[counter][b]);
+ printf("%04d/%02d/%02d %02d:%02d:%02d \r\n",address[counter][6],address[counter][7],address[counter][8],address[counter][9],address[counter][10],address[counter][11]);
+*/
+
+ counter++;
+
+
+/*配列の中身をすべて表示
+ for(a=0; a<counter; a++){
+ for(b=0; b<6 ; b++){
+ if(b==0)printf("DEV:");
+ printf("%02x ", address[a][b]);
+ if(b==5){
+ printf("%04d/%02d/%02d %02d:%02d:%02d \r\n",address[a][6],address[a][7],address[a][8],address[a][9],address[a][10],address[a][11]);
+ }
+ }
+ if(a==counter-1)printf("----------\n\r");
+ }
+*/
+ }
+}
+
+void test_thread(void const *name) {
+
+ while (true) {
+ Timer timer;
+ one_slot.wait();
+ //printf("%s\n\r", (const char*)name);
+
+ if(!strcmp((const char*)name, "1")){
+ printf("**this is startAdvertising thread**\n\r");
+ wt=1000;
+ ble.gap().stopAdvertising();
+ ble.startScan(&onScanCallback);
+ }
+
+
+//2
+ if(!strcmp((const char*)name, "2")){
+ printf("**this is advertising thread**\n\r");
+ wt=1000;
+ printf("%d秒間の送信\n\r",wt/1000);
+ ble.gap().startAdvertising();//BLEの送信
+ }
+
+//3
+ if(!strcmp((const char*)name, "3")){
+ //memset(address, 0, sizeof(address));//配列の初期化
+ printf("**this is central thread**\n\r");
+ wt=0;//central modeの際はthreadの時間は0sec
+ wt1=10000;//centralmode の時間はこっち
+
+ fp = fopen("/sd/test.txt", "a");
+
+ printf("%d秒間の受信\n\r",wt1/1000);
+ timer.start();
+ while(1){
+ ble.waitForEvent();
+ //printf("%d\n\r",timer.read());
+ if(timer.read() > wt1/1000){
+ timer.stop();
+ timer.reset();
+ ble.stopScan();
+ fclose(fp);
+ break;
+ }
+ }
+ }
+
+ Thread::wait(wt);
+ 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) {
+ //ble.init();
+ ble.init(bleInitComplete);
+ ble.setScanParams(GapScanningParams::SCAN_INTERVAL_MAX,
+ GapScanningParams::SCAN_WINDOW_MAX,
+ 0);
+
+
+ Thread t2(test_thread, (void *)"2");
+ Thread t3(test_thread, (void *)"3");
+
+ test_thread((void *)"1");
+
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Mon Oct 24 04:43:07 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#3da5f554d8bf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Oct 24 04:43:07 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/25aea2a3f4e3 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nRF51822.lib Mon Oct 24 04:43:07 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#c90ae1400bf2