semaphore_BLE

Dependencies:   BLE_API mbed-rtos mbed nRF51822 SDFileSystem X_NUCLEO_IDB0XA1

Revision:
1:91870059ced7
Parent:
0:6679d693f1af
diff -r 6679d693f1af -r 91870059ced7 main.cpp
--- a/main.cpp	Wed Oct 19 05:28:43 2016 +0000
+++ b/main.cpp	Fri Oct 21 05:02:04 2016 +0000
@@ -6,25 +6,82 @@
 #include "rtos.h"
 #include <string.h>
 
+#include "SDFileSystem.h"
+
 Semaphore one_slot(1);
  
  
  BLE  ble;
-int address[10][5]={};
+int address[10][12]={};
 const GapScanningParams scanningParams;
-
+int wt;
+SDFileSystem sd(p25, p28, p29, p21, "sd"); // the pinout on the mbed Cool Components workshop board
+FILE *fp;
 
 int counter= 0;
 void onScanCallback(const Gap::AdvertisementCallbackParams_t *params)
 {
-    for(int i=0; i<6; i++){
+    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[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", "w");
+
+        
+        fprintf(fp,"DEV:");
+        for(b=0; b<6 ; b++){
+                fprintf(fp,"%02x ", address[counter][b]);
+        }        
+        printf("OK1");
+        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("OK2");
+        
+fclose(fp);
+         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");
+           }         */
+    }
+ 
+ 
+ /*   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");
-    }        
+    }*/        
 }
 
 
@@ -38,6 +95,7 @@
 //1
         if(!strcmp((const char*)name, "1")){
             printf("**this is 1**\n\r");
+            wt=1000;
             ble.gap().stopAdvertising();
             ble.startScan(&onScanCallback);
         
@@ -45,7 +103,9 @@
 
 //2        
         if(!strcmp((const char*)name, "2")){
+            memset(address, 0, sizeof(address));
             printf("**this is 2**\n\r");
+            wt=10000;
             timer.start();
             while(1){
                 ble.waitForEvent();
@@ -59,13 +119,14 @@
         }
 //3        
         if(!strcmp((const char*)name, "3")){
-            printf("**this is 3**\n\r");
+            printf("**this is 3**\n\r");        
+             wt=20000;
             ble.gap().startAdvertising();
 
         }
         
         
-        Thread::wait(10000);
+        Thread::wait(wt);
         one_slot.release();
     }
 }
@@ -83,11 +144,16 @@
     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. */
+//   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,