xvcv

Dependencies:   BLE_API mbed nRF51822

Fork of MEDRON_SNIFFER_ABCD-KIMLIKLI-OLANLARI-TARAMA-YAPAR_30062016 by HAKAN AYDIN

Committer:
Adembay
Date:
Mon Sep 11 14:18:29 2017 +0000
Revision:
15:d824140299d9
Parent:
14:59ba4a2a17c7
c cx

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Adembay 15:d824140299d9 1 /*
Adembay 15:d824140299d9 2 farklı macleri ara çıkartır ve aynı zamanda abcd leri gönderir.
Adembay 15:d824140299d9 3 */
rgrover1 0:332983584a9c 4 #include "mbed.h"
rgrover1 9:69a2ad0bcdb7 5 #include "toolchain.h"
rgrover1 9:69a2ad0bcdb7 6 #include "ble/BLE.h"
Adembay 15:d824140299d9 7 #include "spi_master.h"
hknydn 12:f4b869da449c 8
Adembay 15:d824140299d9 9 #define RSSI_DEGER 55 // -55dBm'in altındakileri görür.
Adembay 15:d824140299d9 10 //# CS P0_14
Adembay 15:d824140299d9 11 //# SCK P0_25
Adembay 15:d824140299d9 12 //# MOSI P0_20"
Adembay 15:d824140299d9 13 //# MISO P0_22
Adembay 15:d824140299d9 14 DigitalOut spi_cs(P0_7);
sunsmile2015 7:91324daa3bfa 15
Adembay 15:d824140299d9 16 DigitalIn esp_baglimi(P0_11);
Adembay 15:d824140299d9 17
Adembay 15:d824140299d9 18 DigitalOut alivenessLED(p2, 1);
Adembay 15:d824140299d9 19
andresag 11:16f67d5752e1 20 Ticker ticker;
hknydn 12:f4b869da449c 21 Serial pc(TX_PIN_NUMBER, RX_PIN_NUMBER);
rgrover1 0:332983584a9c 22
Adembay 15:d824140299d9 23
Adembay 15:d824140299d9 24 SPIClass SPI1(NRF_SPI1);
Adembay 15:d824140299d9 25 #define ToplamCihaz 1// (10) hakan değiştir 01122016
Adembay 15:d824140299d9 26 #define bufferSize 60
Adembay 15:d824140299d9 27 uint8_t bulunan_index[ToplamCihaz];
Adembay 15:d824140299d9 28 struct Medron_Data
Adembay 15:d824140299d9 29 {
Adembay 15:d824140299d9 30 uint8_t MacID[6]; // MAC ID leri bunun içinde tutacağız
Adembay 15:d824140299d9 31 uint8_t RSSI; // MAC ID leri bunun içinde tutacağız
Adembay 15:d824140299d9 32 uint8_t LENGTH;
Adembay 15:d824140299d9 33 uint8_t MYDATA[50];
Adembay 15:d824140299d9 34 uint8_t PAKET_LENGTH;//SPI'YDAN STM32'YE GÖNDERİLCEK DATANIN TOPLAM
Adembay 15:d824140299d9 35 //UZUNLUGU.
Adembay 15:d824140299d9 36 } PACKED_Data[ToplamCihaz];
Adembay 15:d824140299d9 37
Adembay 15:d824140299d9 38
Adembay 15:d824140299d9 39
Adembay 15:d824140299d9 40 uint8_t say=0;
Adembay 15:d824140299d9 41
Adembay 15:d824140299d9 42 void Flash_Buff_WriteBytes(uint16_t addr, uint8_t *pbuf, uint16_t len)
Adembay 15:d824140299d9 43 {
Adembay 15:d824140299d9 44 uint16_t index;
Adembay 15:d824140299d9 45
Adembay 15:d824140299d9 46 spi_cs = 0;
Adembay 15:d824140299d9 47 wait_us(20);
Adembay 15:d824140299d9 48 for(index=0; index<len; index++)
Adembay 15:d824140299d9 49 {
Adembay 15:d824140299d9 50 SPI1.transfer(*pbuf);
Adembay 15:d824140299d9 51 pbuf++;
Adembay 15:d824140299d9 52 }
Adembay 15:d824140299d9 53
Adembay 15:d824140299d9 54 wait_us(20);
Adembay 15:d824140299d9 55 spi_cs = 1;
Adembay 15:d824140299d9 56 }
Adembay 15:d824140299d9 57
Adembay 15:d824140299d9 58
Adembay 15:d824140299d9 59
Adembay 15:d824140299d9 60 #define ARANAN_MAC_SAYI 5
Adembay 15:d824140299d9 61 typedef struct
Adembay 15:d824140299d9 62 {
Adembay 15:d824140299d9 63 uint8_t mac_id[6];
Adembay 15:d824140299d9 64 }Beacon_MAC_ID;
Adembay 15:d824140299d9 65
Adembay 15:d824140299d9 66 Beacon_MAC_ID b_mac[ARANAN_MAC_SAYI];
Adembay 15:d824140299d9 67
Adembay 15:d824140299d9 68
Adembay 15:d824140299d9 69
rgrover1 0:332983584a9c 70 void periodicCallback(void)
rgrover1 0:332983584a9c 71 {
Adembay 15:d824140299d9 72 // alivenessLED = !alivenessLED; /* Do blinky on LED1 while we're waiting for BLE events. This is optional. */
rgrover1 0:332983584a9c 73 }
rgrover1 0:332983584a9c 74
rgrover1 9:69a2ad0bcdb7 75 /*
Adembay 15:d824140299d9 76 This function is called every time we scan an advertisement.
Adembay 15:d824140299d9 77 */
sunsmile2015 6:850f44146c9f 78 void advertisementCallback(const Gap::AdvertisementCallbackParams_t *params)
sunsmile2015 6:850f44146c9f 79 {
Adembay 15:d824140299d9 80 struct AdvertisingData_t
Adembay 15:d824140299d9 81 {
Adembay 15:d824140299d9 82 uint8_t length; /* doesn't include itself */
Adembay 15:d824140299d9 83 GapAdvertisingData::DataType_t dataType;
Adembay 15:d824140299d9 84 uint8_t data[0];
Adembay 15:d824140299d9 85 } PACKED;
Adembay 15:d824140299d9 86
Adembay 15:d824140299d9 87 struct ApplicationData_t
Adembay 15:d824140299d9 88 {
Adembay 15:d824140299d9 89 uint16_t applicationSpecificId; /* An ID used to identify temperature value
Adembay 15:d824140299d9 90 in the manufacture specific AD data field */
Adembay 15:d824140299d9 91 } PACKED;
Adembay 15:d824140299d9 92
Adembay 15:d824140299d9 93
Adembay 15:d824140299d9 94 if(esp_baglimi)
Adembay 15:d824140299d9 95 {
Adembay 15:d824140299d9 96
Adembay 15:d824140299d9 97 for (uint8_t macsay=0; macsay < ARANAN_MAC_SAYI; macsay++)
Adembay 15:d824140299d9 98 {
Adembay 15:d824140299d9 99
Adembay 15:d824140299d9 100 if (( params->peerAddr[5] == b_mac[macsay].mac_id[5] && params->peerAddr[4] == b_mac[macsay].mac_id[4]
Adembay 15:d824140299d9 101 && params->peerAddr[3] == b_mac[macsay].mac_id[3] && params->peerAddr[2] == b_mac[macsay].mac_id[2]
Adembay 15:d824140299d9 102 && params->peerAddr[1] == b_mac[macsay].mac_id[1] && params->peerAddr[0] == b_mac[macsay].mac_id[0] ))
Adembay 15:d824140299d9 103 {
Adembay 15:d824140299d9 104
Adembay 15:d824140299d9 105 for (unsigned index = 0; index < 50; index++)
Adembay 15:d824140299d9 106 {
Adembay 15:d824140299d9 107 PACKED_Data[say].MYDATA[index] = 0x00;
Adembay 15:d824140299d9 108 }
Adembay 15:d824140299d9 109
Adembay 15:d824140299d9 110
Adembay 15:d824140299d9 111 PACKED_Data[say].MacID[5] = params->peerAddr[5];
Adembay 15:d824140299d9 112 PACKED_Data[say].MacID[4] = params->peerAddr[4];
Adembay 15:d824140299d9 113 PACKED_Data[say].MacID[3] = params->peerAddr[3];
Adembay 15:d824140299d9 114 PACKED_Data[say].MacID[2] = params->peerAddr[2];
Adembay 15:d824140299d9 115 PACKED_Data[say].MacID[1] = params->peerAddr[1];
Adembay 15:d824140299d9 116 PACKED_Data[say].MacID[0] = params->peerAddr[0];
Adembay 15:d824140299d9 117
rgrover1 9:69a2ad0bcdb7 118
Adembay 15:d824140299d9 119 /*
Adembay 15:d824140299d9 120 EXAMPLE
Adembay 15:d824140299d9 121
Adembay 15:d824140299d9 122 fa 8c b3 c7 1c 61 :MAC ; 6 BYTE
Adembay 15:d824140299d9 123 2b:RSSI;1BYTE
Adembay 15:d824140299d9 124 0a:UZUNLUK;1BYTE-->0A H=10 D
Adembay 15:d824140299d9 125 09 ff cd ab 01 00 4d 52 e8 00 00 00 00 00 00 00 00 00 00 00 ;DATA
Adembay 15:d824140299d9 126 1 2 3 4 5 6 7 8 9 10 X X X X X X X X X X ;DATA SAYISI
Adembay 15:d824140299d9 127
Adembay 15:d824140299d9 128 c8 60 85 e2 73 e2 :MAC:6
Adembay 15:d824140299d9 129 37:RSSI:1
Adembay 15:d824140299d9 130 08:LENGTH:1
Adembay 15:d824140299d9 131 07 ff cd ab 00 00 e7 00:DATA
Adembay 15:d824140299d9 132 1 2 3 4 5 6 7 8 ;DATA SAYISI
Adembay 15:d824140299d9 133
Adembay 15:d824140299d9 134 */
Adembay 15:d824140299d9 135
Adembay 15:d824140299d9 136 //PACKED_Data[say].PAKET_LENGTH= 6 + 1 + 1 + params->advertisingDataLen;//MAC+RSSI+1+LENGTH
Adembay 15:d824140299d9 137
Adembay 15:d824140299d9 138 //IŞIK İSE
Adembay 15:d824140299d9 139 if (( params->peerAddr[5] ==0xac && params->peerAddr[4] ==0x23
Adembay 15:d824140299d9 140 && params->peerAddr[3] ==0x3f && params->peerAddr[2] ==0xb0
Adembay 15:d824140299d9 141 && params->peerAddr[1] ==0x42 && params->peerAddr[0] ==0x12))
Adembay 15:d824140299d9 142 {
Adembay 15:d824140299d9 143 PACKED_Data[say].RSSI = (params->rssi) * -1;
Adembay 15:d824140299d9 144 PACKED_Data[say].LENGTH = 10; //params->advertisingDataLen;
Adembay 15:d824140299d9 145 PACKED_Data[say].PAKET_LENGTH = 6 + 1 + 1 + 10; //MAC+RSSI+1+LENGTH
Adembay 15:d824140299d9 146
Adembay 15:d824140299d9 147 pc.printf("TOPLAM PAKET UZUNLUK = (%d ) : ---> ", PACKED_Data[say].PAKET_LENGTH);
Adembay 15:d824140299d9 148 PACKED_Data[say].MYDATA[0] = 0x07;
Adembay 15:d824140299d9 149 PACKED_Data[say].MYDATA[1] = 0xff;
Adembay 15:d824140299d9 150
Adembay 15:d824140299d9 151 PACKED_Data[say].MYDATA[2] = 0xef;//medrona ait olmayan beaconlar için, abcd değil
Adembay 15:d824140299d9 152 PACKED_Data[say].MYDATA[3] = 0xab;
Adembay 15:d824140299d9 153
Adembay 15:d824140299d9 154 PACKED_Data[say].MYDATA[4] = 0x08;// tipi elle girilmiş.
Adembay 15:d824140299d9 155 PACKED_Data[say].MYDATA[5] = 0x00;
Adembay 15:d824140299d9 156
Adembay 15:d824140299d9 157 PACKED_Data[say].MYDATA[6] = params->advertisingData[14];// ISIK
Adembay 15:d824140299d9 158 PACKED_Data[say].MYDATA[7] = 0x00;
Adembay 15:d824140299d9 159
Adembay 15:d824140299d9 160 PACKED_Data[say].MYDATA[8] = params->advertisingData[13];//PİL
Adembay 15:d824140299d9 161 PACKED_Data[say].MYDATA[9] = 0x00;
Adembay 15:d824140299d9 162 }
Adembay 15:d824140299d9 163
Adembay 15:d824140299d9 164 if (( params->peerAddr[5] ==0xac && params->peerAddr[4] ==0x23
Adembay 15:d824140299d9 165 && params->peerAddr[3] ==0x3f && params->peerAddr[2] ==0xa0
Adembay 15:d824140299d9 166 && params->peerAddr[1] ==0x03 && params->peerAddr[0] ==0xcd))
Adembay 15:d824140299d9 167 {
Adembay 15:d824140299d9 168 PACKED_Data[say].RSSI = (params->rssi) * -1;
Adembay 15:d824140299d9 169 PACKED_Data[say].LENGTH = 12; //params->advertisingDataLen;
Adembay 15:d824140299d9 170 PACKED_Data[say].PAKET_LENGTH = 6 + 1 + 1 + 12; //MAC+RSSI+1+LENGTH
Adembay 15:d824140299d9 171
Adembay 15:d824140299d9 172 pc.printf("TOPLAM PAKET UZUNLUK = (%d ) : ---> ", PACKED_Data[say].PAKET_LENGTH);
Adembay 15:d824140299d9 173 PACKED_Data[say].MYDATA[0] = 0x07;
Adembay 15:d824140299d9 174 PACKED_Data[say].MYDATA[1] = 0xff;
Adembay 15:d824140299d9 175
Adembay 15:d824140299d9 176 PACKED_Data[say].MYDATA[2] = 0xef;//medrona ait olmayan beaconlar için, abcd değil
Adembay 15:d824140299d9 177 PACKED_Data[say].MYDATA[3] = 0xab;
Adembay 15:d824140299d9 178
Adembay 15:d824140299d9 179 PACKED_Data[say].MYDATA[4] = 0x09;// tipi elle girilmiş.
Adembay 15:d824140299d9 180 PACKED_Data[say].MYDATA[5] = 0x00;
Adembay 15:d824140299d9 181
Adembay 15:d824140299d9 182 PACKED_Data[say].MYDATA[6] = params->advertisingData[14];// temp
Adembay 15:d824140299d9 183 PACKED_Data[say].MYDATA[7] = params->advertisingData[15];
Adembay 15:d824140299d9 184
Adembay 15:d824140299d9 185 PACKED_Data[say].MYDATA[8] = params->advertisingData[16];//hum
Adembay 15:d824140299d9 186 PACKED_Data[say].MYDATA[9] = params->advertisingData[17];
Adembay 15:d824140299d9 187
Adembay 15:d824140299d9 188 PACKED_Data[say].MYDATA[10] = params->advertisingData[13];//PİL
Adembay 15:d824140299d9 189 PACKED_Data[say].MYDATA[11] = 0x00;
Adembay 15:d824140299d9 190 }
Adembay 15:d824140299d9 191
Adembay 15:d824140299d9 192 if (( params->peerAddr[5] ==0xac && params->peerAddr[4] ==0x23
Adembay 15:d824140299d9 193 && params->peerAddr[3] ==0x3f && params->peerAddr[2] ==0xa0
Adembay 15:d824140299d9 194 && params->peerAddr[1] ==0x04 && params->peerAddr[0] ==0x43))
Adembay 15:d824140299d9 195 {
Adembay 15:d824140299d9 196 PACKED_Data[say].RSSI = (params->rssi) * -1;
Adembay 15:d824140299d9 197 PACKED_Data[say].LENGTH = 12; //params->advertisingDataLen;
Adembay 15:d824140299d9 198 PACKED_Data[say].PAKET_LENGTH = 6 + 1 + 1 + 12; //MAC+RSSI+1+LENGTH
Adembay 15:d824140299d9 199
Adembay 15:d824140299d9 200 pc.printf("TOPLAM PAKET UZUNLUK = (%d ) : ---> ", PACKED_Data[say].PAKET_LENGTH);
Adembay 15:d824140299d9 201 PACKED_Data[say].MYDATA[0] = 0x07;
Adembay 15:d824140299d9 202 PACKED_Data[say].MYDATA[1] = 0xff;
Adembay 15:d824140299d9 203
Adembay 15:d824140299d9 204 PACKED_Data[say].MYDATA[2] = 0xef;//medrona ait olmayan beaconlar için, abcd değil
Adembay 15:d824140299d9 205 PACKED_Data[say].MYDATA[3] = 0xab;
Adembay 15:d824140299d9 206
Adembay 15:d824140299d9 207 PACKED_Data[say].MYDATA[4] = 0x09;// tipi elle girilmiş.
Adembay 15:d824140299d9 208 PACKED_Data[say].MYDATA[5] = 0x00;
rgrover1 9:69a2ad0bcdb7 209
Adembay 15:d824140299d9 210 PACKED_Data[say].MYDATA[6] = params->advertisingData[14];// temp
Adembay 15:d824140299d9 211 PACKED_Data[say].MYDATA[7] = params->advertisingData[15];
Adembay 15:d824140299d9 212
Adembay 15:d824140299d9 213 PACKED_Data[say].MYDATA[8] = params->advertisingData[16];//hum
Adembay 15:d824140299d9 214 PACKED_Data[say].MYDATA[9] = params->advertisingData[17];
Adembay 15:d824140299d9 215
Adembay 15:d824140299d9 216 PACKED_Data[say].MYDATA[10] = params->advertisingData[13];//PİL
Adembay 15:d824140299d9 217 PACKED_Data[say].MYDATA[11] = 0x00;
Adembay 15:d824140299d9 218 }
Adembay 15:d824140299d9 219
Adembay 15:d824140299d9 220 if (( params->peerAddr[5] ==0xCF && params->peerAddr[4] ==0x70
Adembay 15:d824140299d9 221 && params->peerAddr[3] ==0x44 && params->peerAddr[2] ==0xD7
Adembay 15:d824140299d9 222 && params->peerAddr[1] ==0x12 && params->peerAddr[0] ==0xA8))
Adembay 15:d824140299d9 223 {
Adembay 15:d824140299d9 224 PACKED_Data[say].RSSI = (params->rssi) * -1;
Adembay 15:d824140299d9 225 PACKED_Data[say].LENGTH = 6; //params->advertisingDataLen;
Adembay 15:d824140299d9 226 PACKED_Data[say].PAKET_LENGTH = 6 + 1 + 1 + 6; //MAC+RSSI+1+LENGTH
Adembay 15:d824140299d9 227
Adembay 15:d824140299d9 228 pc.printf("TOPLAM PAKET UZUNLUK = (%d ) : ---> ", PACKED_Data[say].PAKET_LENGTH);
Adembay 15:d824140299d9 229 PACKED_Data[say].MYDATA[0] = 0x07;
Adembay 15:d824140299d9 230 PACKED_Data[say].MYDATA[1] = 0xff;
Adembay 15:d824140299d9 231
Adembay 15:d824140299d9 232 PACKED_Data[say].MYDATA[2] = 0xef;//medrona ait olmayan beaconlar için, abcd değil
Adembay 15:d824140299d9 233 PACKED_Data[say].MYDATA[3] = 0xab;
Adembay 15:d824140299d9 234
Adembay 15:d824140299d9 235 PACKED_Data[say].MYDATA[4] = 0x05;// tipi elle girilmiş.
Adembay 15:d824140299d9 236 PACKED_Data[say].MYDATA[5] = 0x00;
Adembay 15:d824140299d9 237 }
Adembay 15:d824140299d9 238
Adembay 15:d824140299d9 239 if (( params->peerAddr[5] ==0xE6 && params->peerAddr[4] ==0xD0
Adembay 15:d824140299d9 240 && params->peerAddr[3] ==0x4C && params->peerAddr[2] ==0xFC
Adembay 15:d824140299d9 241 && params->peerAddr[1] ==0x4C && params->peerAddr[0] ==0xB8))
Adembay 15:d824140299d9 242 {
Adembay 15:d824140299d9 243 PACKED_Data[say].RSSI = (params->rssi) * -1;
Adembay 15:d824140299d9 244 PACKED_Data[say].LENGTH = 14; //params->advertisingDataLen;
Adembay 15:d824140299d9 245 PACKED_Data[say].PAKET_LENGTH = 6 + 1 + 1 + 14; //MAC+RSSI+1+LENGTH
Adembay 15:d824140299d9 246
Adembay 15:d824140299d9 247 pc.printf("TOPLAM PAKET UZUNLUK = (%d ) : ---> ", PACKED_Data[say].PAKET_LENGTH);
Adembay 15:d824140299d9 248 PACKED_Data[say].MYDATA[0] = 0x07;
Adembay 15:d824140299d9 249 PACKED_Data[say].MYDATA[1] = 0xff;
Adembay 15:d824140299d9 250
Adembay 15:d824140299d9 251 PACKED_Data[say].MYDATA[2] = 0xef;//medrona ait olmayan beaconlar için, abcd değil
Adembay 15:d824140299d9 252 PACKED_Data[say].MYDATA[3] = 0xab;
Adembay 15:d824140299d9 253
Adembay 15:d824140299d9 254 PACKED_Data[say].MYDATA[4] = 0x06;// tipi elle girilmiş.
Adembay 15:d824140299d9 255 PACKED_Data[say].MYDATA[5] = 0x00;
Adembay 15:d824140299d9 256
Adembay 15:d824140299d9 257 PACKED_Data[say].MYDATA[6] = params->advertisingData[6];// x
Adembay 15:d824140299d9 258 PACKED_Data[say].MYDATA[7] = params->advertisingData[7];
Adembay 15:d824140299d9 259
Adembay 15:d824140299d9 260 PACKED_Data[say].MYDATA[8] = params->advertisingData[8];//y
Adembay 15:d824140299d9 261 PACKED_Data[say].MYDATA[9] = params->advertisingData[9];
Adembay 15:d824140299d9 262
Adembay 15:d824140299d9 263 PACKED_Data[say].MYDATA[10] = params->advertisingData[10];// z
Adembay 15:d824140299d9 264 PACKED_Data[say].MYDATA[11] = params->advertisingData[11];
Adembay 15:d824140299d9 265
Adembay 15:d824140299d9 266 PACKED_Data[say].MYDATA[12] = params->advertisingData[12];// pil
Adembay 15:d824140299d9 267 PACKED_Data[say].MYDATA[13] = params->advertisingData[13];
Adembay 15:d824140299d9 268
Adembay 15:d824140299d9 269 }
Adembay 15:d824140299d9 270
Adembay 15:d824140299d9 271 bulunan_index[say] = 0xff;
Adembay 15:d824140299d9 272 say++;
Adembay 15:d824140299d9 273
Adembay 15:d824140299d9 274 if (say == ToplamCihaz)
hknydn 13:5f87b9cdeb6f 275 {
Adembay 15:d824140299d9 276
Adembay 15:d824140299d9 277 for (unsigned i = 0; i < say; i++)
Adembay 15:d824140299d9 278 {
Adembay 15:d824140299d9 279 uint8_t buffertoSpi[bufferSize];
Adembay 15:d824140299d9 280
Adembay 15:d824140299d9 281 for (unsigned a = 0; a < bufferSize; a++)
Adembay 15:d824140299d9 282 {
Adembay 15:d824140299d9 283 buffertoSpi[a] = 0x00;
Adembay 15:d824140299d9 284 }
Adembay 15:d824140299d9 285
Adembay 15:d824140299d9 286 buffertoSpi[0] = PACKED_Data[i].PAKET_LENGTH;
Adembay 15:d824140299d9 287
Adembay 15:d824140299d9 288 for (unsigned a = 1; a < 7; a++)
Adembay 15:d824140299d9 289 {
Adembay 15:d824140299d9 290 buffertoSpi[a] = PACKED_Data[i].MacID[6 - a];
Adembay 15:d824140299d9 291 }
Adembay 15:d824140299d9 292
Adembay 15:d824140299d9 293 buffertoSpi[7] = PACKED_Data[i].RSSI;
Adembay 15:d824140299d9 294 buffertoSpi[8] = PACKED_Data[i].LENGTH;
Adembay 15:d824140299d9 295
Adembay 15:d824140299d9 296 for (unsigned a = 0; a < PACKED_Data[i].LENGTH; a++)
Adembay 15:d824140299d9 297 {
Adembay 15:d824140299d9 298 buffertoSpi[9 + a] = PACKED_Data[i].MYDATA[a];
Adembay 15:d824140299d9 299 }
Adembay 15:d824140299d9 300
Adembay 15:d824140299d9 301 pc.printf("nRF51 to stm32f103 SENT (BEACON NUMBER = %d ) : ", i);
Adembay 15:d824140299d9 302
Adembay 15:d824140299d9 303 for (unsigned a = 0; a < bufferSize; a++)
Adembay 15:d824140299d9 304 {
Adembay 15:d824140299d9 305 pc.printf("%02x", buffertoSpi[a]);
Adembay 15:d824140299d9 306 }
Adembay 15:d824140299d9 307 pc.printf("\r\n");
Adembay 15:d824140299d9 308
Adembay 15:d824140299d9 309
Adembay 15:d824140299d9 310 Flash_Buff_WriteBytes(0, buffertoSpi, bufferSize);
Adembay 15:d824140299d9 311 //wait_ms(200); // hakan ekledi 01122016
Adembay 15:d824140299d9 312 wait_ms(20);
Adembay 15:d824140299d9 313 bulunan_index[i] = 0x00;
Adembay 15:d824140299d9 314 }
Adembay 15:d824140299d9 315 say = 0;
hknydn 12:f4b869da449c 316 }
Adembay 15:d824140299d9 317 alivenessLED = 0;
hknydn 14:59ba4a2a17c7 318
sunsmile2015 7:91324daa3bfa 319 }
Adembay 15:d824140299d9 320
Adembay 15:d824140299d9 321 }
Adembay 15:d824140299d9 322
Adembay 15:d824140299d9 323
Adembay 15:d824140299d9 324 static const uint16_t MED_KIMLIK = 0xABCD;
Adembay 15:d824140299d9 325 AdvertisingData_t *pAdvData;
Adembay 15:d824140299d9 326 size_t index = 0;
Adembay 15:d824140299d9 327 while (index < params->advertisingDataLen)
Adembay 15:d824140299d9 328 {
Adembay 15:d824140299d9 329 pAdvData = (AdvertisingData_t *)&params->advertisingData[index];
Adembay 15:d824140299d9 330 if (pAdvData->dataType == GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA)
Adembay 15:d824140299d9 331 {
Adembay 15:d824140299d9 332 ApplicationData_t *pAppData = (ApplicationData_t *)pAdvData->data;
Adembay 15:d824140299d9 333 if (pAppData->applicationSpecificId == MED_KIMLIK)
Adembay 15:d824140299d9 334 {
Adembay 15:d824140299d9 335
Adembay 15:d824140299d9 336 // if(params->rssi > -85)
Adembay 15:d824140299d9 337 // {
Adembay 15:d824140299d9 338 alivenessLED = 1;
Adembay 15:d824140299d9 339
Adembay 15:d824140299d9 340 //pc.printf("%d\r", say+1);
Adembay 15:d824140299d9 341
Adembay 15:d824140299d9 342 PACKED_Data[say].MacID[5]=params->peerAddr[5];
Adembay 15:d824140299d9 343 PACKED_Data[say].MacID[4]=params->peerAddr[4];
Adembay 15:d824140299d9 344 PACKED_Data[say].MacID[3]=params->peerAddr[3];
Adembay 15:d824140299d9 345 PACKED_Data[say].MacID[2]=params->peerAddr[2];
Adembay 15:d824140299d9 346 PACKED_Data[say].MacID[1]=params->peerAddr[1];
Adembay 15:d824140299d9 347 PACKED_Data[say].MacID[0]=params->peerAddr[0];
Adembay 15:d824140299d9 348 PACKED_Data[say].RSSI=(params->rssi) * -1;
Adembay 15:d824140299d9 349 PACKED_Data[say].LENGTH=params->advertisingDataLen;
Adembay 15:d824140299d9 350 /*
Adembay 15:d824140299d9 351 EXAMPLE
Adembay 15:d824140299d9 352
Adembay 15:d824140299d9 353 fa 8c b3 c7 1c 61 :MAC ; 6 BYTE
Adembay 15:d824140299d9 354 2b:RSSI;1BYTE
Adembay 15:d824140299d9 355 0a:UZUNLUK;1BYTE-->0A H=10 D
Adembay 15:d824140299d9 356 09 ff cd ab 01 00 4d 52 e8 00 00 00 00 00 00 00 00 00 00 00 ;DATA
Adembay 15:d824140299d9 357 1 2 3 4 5 6 7 8 9 10 X X X X X X X X X X ;DATA SAYISI
Adembay 15:d824140299d9 358
Adembay 15:d824140299d9 359 c8 60 85 e2 73 e2 :MAC:6
Adembay 15:d824140299d9 360 37:RSSI:1
Adembay 15:d824140299d9 361 08:LENGTH:1
Adembay 15:d824140299d9 362 07 ff cd ab 00 00 e7 00:DATA
Adembay 15:d824140299d9 363 1 2 3 4 5 6 7 8 ;DATA SAYISI
Adembay 15:d824140299d9 364
Adembay 15:d824140299d9 365 */
Adembay 15:d824140299d9 366
Adembay 15:d824140299d9 367 PACKED_Data[say].PAKET_LENGTH= 6 + 1 + 1 + params->advertisingDataLen;//MAC+RSSI+1+LENGTH
Adembay 15:d824140299d9 368
Adembay 15:d824140299d9 369 pc.printf("TOPLAM PAKET UZUNLUK = (%d ) : ---> ",PACKED_Data[say].PAKET_LENGTH);
Adembay 15:d824140299d9 370
Adembay 15:d824140299d9 371 for (unsigned index = 0; index < params->advertisingDataLen; index++)
Adembay 15:d824140299d9 372 {
Adembay 15:d824140299d9 373 PACKED_Data[say].MYDATA[index]=params->advertisingData[index];
Adembay 15:d824140299d9 374 }
Adembay 15:d824140299d9 375
Adembay 15:d824140299d9 376 for (unsigned index = params->advertisingDataLen; index < 50; index++)
Adembay 15:d824140299d9 377 {
Adembay 15:d824140299d9 378 PACKED_Data[say].MYDATA[index]=0x00;
Adembay 15:d824140299d9 379 }
Adembay 15:d824140299d9 380
Adembay 15:d824140299d9 381 bulunan_index[say]=0xff;
Adembay 15:d824140299d9 382 say++;
Adembay 15:d824140299d9 383
Adembay 15:d824140299d9 384 if(say==ToplamCihaz)
Adembay 15:d824140299d9 385 {
Adembay 15:d824140299d9 386
Adembay 15:d824140299d9 387 for (unsigned i = 0; i < say; i++)
Adembay 15:d824140299d9 388 {
Adembay 15:d824140299d9 389 uint8_t buffertoSpi[bufferSize];
Adembay 15:d824140299d9 390
Adembay 15:d824140299d9 391 for (unsigned a = 0; a < bufferSize; a++)
Adembay 15:d824140299d9 392 {
Adembay 15:d824140299d9 393 buffertoSpi[a]=0x00;
Adembay 15:d824140299d9 394 }
Adembay 15:d824140299d9 395
Adembay 15:d824140299d9 396 buffertoSpi[0]=PACKED_Data[i].PAKET_LENGTH;
Adembay 15:d824140299d9 397
Adembay 15:d824140299d9 398 for (unsigned a = 1; a < 7; a++)
Adembay 15:d824140299d9 399 {
Adembay 15:d824140299d9 400 buffertoSpi[a]= PACKED_Data[i].MacID[6-a];
Adembay 15:d824140299d9 401 }
Adembay 15:d824140299d9 402
Adembay 15:d824140299d9 403 buffertoSpi[7]=PACKED_Data[i].RSSI;
Adembay 15:d824140299d9 404 buffertoSpi[8]=PACKED_Data[i].LENGTH;
Adembay 15:d824140299d9 405
Adembay 15:d824140299d9 406 for (unsigned a = 0; a < PACKED_Data[i].LENGTH; a++)
Adembay 15:d824140299d9 407 {
Adembay 15:d824140299d9 408 buffertoSpi[9+a]=PACKED_Data[i].MYDATA[a];
Adembay 15:d824140299d9 409 }
Adembay 15:d824140299d9 410
Adembay 15:d824140299d9 411 pc.printf("nRF51 to stm32f103 SENT (BEACON NUMBER = %d ) : ",i);
Adembay 15:d824140299d9 412
Adembay 15:d824140299d9 413 for (unsigned a = 0; a < bufferSize; a++)
Adembay 15:d824140299d9 414 {
Adembay 15:d824140299d9 415 pc.printf("%02x",buffertoSpi[a]);
Adembay 15:d824140299d9 416 }
Adembay 15:d824140299d9 417 pc.printf("\r\n");
Adembay 15:d824140299d9 418
Adembay 15:d824140299d9 419
Adembay 15:d824140299d9 420
Adembay 15:d824140299d9 421
Adembay 15:d824140299d9 422 Flash_Buff_WriteBytes(0, buffertoSpi, bufferSize); //eger esp nete baglandıysa göndermeye basla // 13072017
Adembay 15:d824140299d9 423
Adembay 15:d824140299d9 424 //wait_ms(200); // hakan ekledi 01122016
Adembay 15:d824140299d9 425 //wait_ms(20);
Adembay 15:d824140299d9 426 bulunan_index[i]=0x00;
Adembay 15:d824140299d9 427 }
Adembay 15:d824140299d9 428 say=0;
Adembay 15:d824140299d9 429 }
Adembay 15:d824140299d9 430
Adembay 15:d824140299d9 431 alivenessLED = 0;
Adembay 15:d824140299d9 432 //}
Adembay 15:d824140299d9 433 break;
Adembay 15:d824140299d9 434 }
rgrover1 0:332983584a9c 435 }
Adembay 15:d824140299d9 436 index += (pAdvData->length + 1);
Adembay 15:d824140299d9 437 }
Adembay 15:d824140299d9 438
Adembay 15:d824140299d9 439
Adembay 15:d824140299d9 440
Adembay 15:d824140299d9 441 }
Adembay 15:d824140299d9 442
rgrover1 0:332983584a9c 443 }
rgrover1 0:332983584a9c 444
andresag 11:16f67d5752e1 445 /**
Adembay 15:d824140299d9 446 This function is called when the ble initialization process has failed
Adembay 15:d824140299d9 447 */
andresag 11:16f67d5752e1 448 void onBleInitError(BLE &ble, ble_error_t error)
andresag 11:16f67d5752e1 449 {
Adembay 15:d824140299d9 450 /* Initialization error handling should go here */
andresag 11:16f67d5752e1 451 }
andresag 11:16f67d5752e1 452
andresag 11:16f67d5752e1 453 /**
Adembay 15:d824140299d9 454 Callback triggered when the ble initialization process has finished
Adembay 15:d824140299d9 455 */
andresag 11:16f67d5752e1 456 void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
andresag 11:16f67d5752e1 457 {
Adembay 15:d824140299d9 458 BLE& ble = params->ble;
Adembay 15:d824140299d9 459 ble_error_t error = params->error;
andresag 11:16f67d5752e1 460
Adembay 15:d824140299d9 461 if (error != BLE_ERROR_NONE) {
Adembay 15:d824140299d9 462 /* In case of error, forward the error handling to onBleInitError */
Adembay 15:d824140299d9 463 onBleInitError(ble, error);
Adembay 15:d824140299d9 464 return;
Adembay 15:d824140299d9 465 }
andresag 11:16f67d5752e1 466
Adembay 15:d824140299d9 467 /* Ensure that it is the default instance of BLE */
Adembay 15:d824140299d9 468 if (ble.getInstanceID() != BLE::DEFAULT_INSTANCE) {
Adembay 15:d824140299d9 469 return;
Adembay 15:d824140299d9 470 }
andresag 11:16f67d5752e1 471
Adembay 15:d824140299d9 472 /* Setup and start scanning */
Adembay 15:d824140299d9 473 ble.gap().setScanParams(100 /* scan interval */, 100 /* scan window */);
Adembay 15:d824140299d9 474 ble.gap().startScan(advertisementCallback);
Adembay 15:d824140299d9 475
andresag 11:16f67d5752e1 476 }
andresag 11:16f67d5752e1 477
Adembay 15:d824140299d9 478 void mac_id_gir()
Adembay 15:d824140299d9 479 {
Adembay 15:d824140299d9 480
Adembay 15:d824140299d9 481 //ISIK SENSOR
Adembay 15:d824140299d9 482 b_mac[0].mac_id[5]=0xAC;
Adembay 15:d824140299d9 483 b_mac[0].mac_id[4]=0x23;
Adembay 15:d824140299d9 484 b_mac[0].mac_id[3]=0x3F;
Adembay 15:d824140299d9 485 b_mac[0].mac_id[2]=0xB0;
Adembay 15:d824140299d9 486 b_mac[0].mac_id[1]=0x42;
Adembay 15:d824140299d9 487 b_mac[0].mac_id[0]=0x12;
Adembay 15:d824140299d9 488
Adembay 15:d824140299d9 489 //hum+temp s1 SENSOR
Adembay 15:d824140299d9 490 b_mac[1].mac_id[5]=0xAC;
Adembay 15:d824140299d9 491 b_mac[1].mac_id[4]=0x23;
Adembay 15:d824140299d9 492 b_mac[1].mac_id[3]=0x3F;
Adembay 15:d824140299d9 493 b_mac[1].mac_id[2]=0xa0;
Adembay 15:d824140299d9 494 b_mac[1].mac_id[1]=0x03;
Adembay 15:d824140299d9 495 b_mac[1].mac_id[0]=0xcd;
Adembay 15:d824140299d9 496
Adembay 15:d824140299d9 497
Adembay 15:d824140299d9 498 //personel SENSOR
Adembay 15:d824140299d9 499 b_mac[2].mac_id[5]=0xCF;
Adembay 15:d824140299d9 500 b_mac[2].mac_id[4]=0x70;
Adembay 15:d824140299d9 501 b_mac[2].mac_id[3]=0x44;
Adembay 15:d824140299d9 502 b_mac[2].mac_id[2]=0xD7;
Adembay 15:d824140299d9 503 b_mac[2].mac_id[1]=0x12;
Adembay 15:d824140299d9 504 b_mac[2].mac_id[0]=0xA8;
Adembay 15:d824140299d9 505
Adembay 15:d824140299d9 506
Adembay 15:d824140299d9 507 //motion SENSOR
Adembay 15:d824140299d9 508 b_mac[3].mac_id[5]=0xE6;
Adembay 15:d824140299d9 509 b_mac[3].mac_id[4]=0xD0;
Adembay 15:d824140299d9 510 b_mac[3].mac_id[3]=0x4C;
Adembay 15:d824140299d9 511 b_mac[3].mac_id[2]=0xFC;
Adembay 15:d824140299d9 512 b_mac[3].mac_id[1]=0x4C;
Adembay 15:d824140299d9 513 b_mac[3].mac_id[0]=0xB8;
Adembay 15:d824140299d9 514
Adembay 15:d824140299d9 515 //hum+temp s1 SENSOR
Adembay 15:d824140299d9 516 b_mac[4].mac_id[5]=0xAC;
Adembay 15:d824140299d9 517 b_mac[4].mac_id[4]=0x23;
Adembay 15:d824140299d9 518 b_mac[4].mac_id[3]=0x3F;
Adembay 15:d824140299d9 519 b_mac[4].mac_id[2]=0xa0;
Adembay 15:d824140299d9 520 b_mac[4].mac_id[1]=0x04;
Adembay 15:d824140299d9 521 b_mac[4].mac_id[0]=0x43;
Adembay 15:d824140299d9 522
Adembay 15:d824140299d9 523 }
rgrover1 0:332983584a9c 524 int main(void)
rgrover1 0:332983584a9c 525 {
Adembay 15:d824140299d9 526 pc.baud(115200); //local terminal baud
Adembay 15:d824140299d9 527 mac_id_gir();
Adembay 15:d824140299d9 528 pc.printf("MEDRON SNIFFER nRF51\r\n");
Adembay 15:d824140299d9 529 //ticker.attach(periodicCallback, 1); /* trigger sensor polling every 2 seconds */
Adembay 15:d824140299d9 530
Adembay 15:d824140299d9 531 for(uint8_t i;i<ToplamCihaz;i++)
Adembay 15:d824140299d9 532 {
Adembay 15:d824140299d9 533 bulunan_index[i]=0x00;//0x00 ise bulunan mac id gönderilmiştir stm32f'e
Adembay 15:d824140299d9 534 // eğer ff ise gönderilmemistir.
Adembay 15:d824140299d9 535 }
rgrover1 0:332983584a9c 536
Adembay 15:d824140299d9 537 /*
Adembay 15:d824140299d9 538 while(1)
Adembay 15:d824140299d9 539 {
Adembay 15:d824140299d9 540 uint8_t buffertoSpi[58];
Adembay 15:d824140299d9 541 buffertoSpi[0]=0x00;
Adembay 15:d824140299d9 542 buffertoSpi[1]=0x01;
Adembay 15:d824140299d9 543 buffertoSpi[2]=0x02;
Adembay 15:d824140299d9 544 buffertoSpi[3]=0x03;
Adembay 15:d824140299d9 545 buffertoSpi[4]=0x04;
Adembay 15:d824140299d9 546 for (unsigned a = 5; a < 58; a++)
Adembay 15:d824140299d9 547 {
Adembay 15:d824140299d9 548 buffertoSpi[a]=+a;
Adembay 15:d824140299d9 549 pc.printf("%02x",buffertoSpi[a]);
Adembay 15:d824140299d9 550 }
Adembay 15:d824140299d9 551 Flash_Buff_WriteBytes(0, buffertoSpi, 58);
Adembay 15:d824140299d9 552 pc.printf("\r\n");
Adembay 15:d824140299d9 553 wait_ms(1000);
hknydn 12:f4b869da449c 554 }
hknydn 12:f4b869da449c 555
Adembay 15:d824140299d9 556 */
hknydn 12:f4b869da449c 557
Adembay 15:d824140299d9 558 while(!esp_baglimi)
Adembay 15:d824140299d9 559 {
Adembay 15:d824140299d9 560 wait_ms(1);
Adembay 15:d824140299d9 561 }
Adembay 15:d824140299d9 562
Adembay 15:d824140299d9 563 SPI1.begin();
rgrover1 0:332983584a9c 564
Adembay 15:d824140299d9 565 BLE &ble = BLE::Instance();
Adembay 15:d824140299d9 566 ble.init(bleInitComplete);
Adembay 15:d824140299d9 567
Adembay 15:d824140299d9 568 while (true)
Adembay 15:d824140299d9 569 {
Adembay 15:d824140299d9 570 ble.waitForEvent();
Adembay 15:d824140299d9 571 }
rgrover1 0:332983584a9c 572 }