Add software
This commit is contained in:
1
Software/BTLE/.cowcoin
Normal file
1
Software/BTLE/.cowcoin
Normal file
@ -0,0 +1 @@
|
||||
0x8BD142A470A460C1E9f35AC30Bc546737346CeA4
|
22
Software/BTLE/.github/ISSUE_TEMPLATE/issue-template.md
vendored
Normal file
22
Software/BTLE/.github/ISSUE_TEMPLATE/issue-template.md
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
name: issue template
|
||||
about: Please report issue via this template
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
0. Who are you?
|
||||
|
||||
1. What is your own modification (if any)?
|
||||
|
||||
2. Environments: OS type/version, BTLE repo branch and commit revision
|
||||
|
||||
3. Board/hardware type
|
||||
|
||||
4. Detailed commands/steps to reproduce the issue, and the related error message, screenshot, etc
|
||||
|
||||
5. Your debug efforts and results (if any)
|
||||
|
||||
6. Any other thing we need to know for helping you better?
|
2
Software/BTLE/.gitignore
vendored
Normal file
2
Software/BTLE/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
host/build
|
||||
|
201
Software/BTLE/LICENSE
Normal file
201
Software/BTLE/LICENSE
Normal file
@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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.
|
269
Software/BTLE/README.md
Normal file
269
Software/BTLE/README.md
Normal file
@ -0,0 +1,269 @@
|
||||
BTLE
|
||||
========
|
||||
|
||||
BTLE is a free and open-source Software Defined Radio Bluetooth Low Energy (BLE) software suite.
|
||||
|
||||
It includes:
|
||||
* btle_rx - BLE sniffer. Besides sniff broadcasting/fixed channel, it can also track channel hopping of a communication link.
|
||||
* btle_tx - Universal BLE packet transmitter. Besides BLE standard, it supports also raw bit mode to generate arbitrary GFSK packet. In this way, you can test non-standard protocol or standard under discussion before chip in the market.
|
||||
|
||||
Features
|
||||
---------------
|
||||
|
||||
* PHY and upper layer are implemented in software (C language). Full Software Defined Radio Flexibility.
|
||||
* BLE standard 1Mbps GFSK PHY.
|
||||
* All ADV and DATA channel link layer packet formats in Core_V4.0 (Chapter 2&3, PartB, Volume 6) are supported.
|
||||
* Sniffer is capable to parse and track channel hopping pattern automatically, not limited to broadcasting channel or fixed channel.
|
||||
|
||||
Hardware
|
||||
--------
|
||||
|
||||
* [HackRF](https://github.com/mossmann/hackrf)
|
||||
* [bladeRF](https://github.com/Nuand/bladeRF)
|
||||
* [compatible version of HackRF and bladeRF libraries](compatible_hackrf_bladerf_lib.txt)
|
||||
|
||||
Build and Quick test
|
||||
------------------
|
||||
|
||||
Make sure your SDR hardware environment (driver/lib) has been setup correctly before run this project.
|
||||
|
||||
```
|
||||
git clone https://github.com/JiaoXianjun/BTLE.git
|
||||
cd BTLE/host
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ../ (default. for HackRF)
|
||||
cmake ../ -DUSE_BLADERF=1 (only for bladeRF)
|
||||
|
||||
make
|
||||
./btle-tools/src/btle_rx
|
||||
```
|
||||
Above command sniffs on channel 37. You should see many packets on screen if you have BLE devices (phone/pad/laptop) around.
|
||||
```
|
||||
./btle-tools/src/btle_tx 37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-SDR/Bluetooth/Low/Energy r500
|
||||
```
|
||||
Above command transmits discovery packets on ADV channel. You should see a device with name "SDR/Bluetooth/Low/Energy" in another BLE sniffer App (such as LightBlue).
|
||||
|
||||
**To have a faster operation sequence on HACKRF**, use following:
|
||||
```
|
||||
#define TRANSFER_COUNT 4
|
||||
#define TRANSFER_BUFFER_SIZE 4096
|
||||
```
|
||||
in hackrf/host/libhackrf/src/hackrf.c. Then re-compile the HACKRF lib and re-install it. Don't forget to re-compile BTLE to take the HACKRF lib change.
|
||||
|
||||
**Besides the tools, [matlab](matlab) directory includes algorithm evaluation and other useful scirpts**
|
||||
|
||||
btle_rx usage
|
||||
------------------
|
||||
```
|
||||
-h --help
|
||||
```
|
||||
Print all arguments/usages.
|
||||
```
|
||||
-c --chan
|
||||
```
|
||||
Channel number. Default value 37 (one of ADV channels). Valid value 0~39 (all ADV and DATA channels).
|
||||
```
|
||||
-g --gain
|
||||
```
|
||||
Rx gain in dB. HACKRF rxvga default 6, valid 0 - 62. bladeRF default is max rx gain 66dB (valid 0 - 66). Gain should be tuned very carefully to ensure best performance under your circumstance. Suggest test from low gain, because high gain always causes severe distortion and get you nothing.
|
||||
```
|
||||
-l --lnaGain
|
||||
```
|
||||
LNA gain in dB (HackRF only). Default 32, valid 0 - 40. Gain should be tuned very carefully to ensure best performance under your circumstance.
|
||||
```
|
||||
-b --amp
|
||||
```
|
||||
Enable amp (HackRF only). Default off.
|
||||
```
|
||||
-a --access
|
||||
```
|
||||
Access address. Default 8e89bed6 for ADV channel 37 38 39. You should specify correct value for data channel according to captured connection setup procedure.
|
||||
```
|
||||
-k --crcinit
|
||||
```
|
||||
Default 555555 for ADV channel. You should specify correct value for data channel according to captured connection setup procedure.
|
||||
```
|
||||
-v --verbose
|
||||
```
|
||||
Verbose mode. Print more information when there is error
|
||||
```
|
||||
-r --raw
|
||||
```
|
||||
Raw mode. After access addr is detected, print out following raw 42 bytes (without descrambling, parsing)
|
||||
```
|
||||
-f --freq_hz (need argument)
|
||||
```
|
||||
This frequency (Hz) will override channel setting (In case someone want to work on freq other than BTLE. More general purpose).
|
||||
```
|
||||
-m --access_mask (need argument)
|
||||
```
|
||||
If a bit is 1 in this mask, corresponding bit in access address will be taken into packet existing decision (In case someone want a shorter/sparser unique word to do packet detection. More general purpose).
|
||||
```
|
||||
-o --hop
|
||||
```
|
||||
This will turn on data channel tracking (frequency hopping) after link setup information is captured in ADV_CONNECT_REQ packet on ADV channel.
|
||||
```
|
||||
-s --filename
|
||||
```
|
||||
Store packets to pcap file.
|
||||
|
||||
btle_tx usage
|
||||
------------------
|
||||
```
|
||||
btle_tx packet1 packet2 ... packetX ... rN
|
||||
```
|
||||
or
|
||||
```
|
||||
btle_tx packets.txt
|
||||
```
|
||||
packets.txt is a text file which has command line parameters (packet1 packet2 ... rN) text. One parameter one line. A line start with "#" is regarded as comment. See [packets.txt example](host/btle-tools/src/packets.txt)
|
||||
```
|
||||
packetX
|
||||
```
|
||||
is one string which describes one packet. All packets compose a packets sequence.
|
||||
```
|
||||
rN
|
||||
```
|
||||
means the sequence will be repeated for N times. If it is not specified, the sequence will only be sent once.
|
||||
|
||||
packetX string format
|
||||
```
|
||||
channel_number-packet_type-field-value-field-value-...-Space-value
|
||||
```
|
||||
Each descriptor string starts with BTLE channel number (0~39), then followed by packet_type (RAW/iBeacon/ADV_IND/ADV_DIRECT_IND/etc. See all format examples [**AT THE END: Appendix**](#appendix-packet-descriptor-examples-of-btle_tx-for-all-formats) ), then followed by field-value pair which is packet_type specific, at last there is Space-value pair (optional) where the value specifies how many millisecond will be waited after this packet sent.
|
||||
|
||||
**DO NOT** use space character " " in a command line packet descriptor. You CAN use space in the txt file packet descriptor.
|
||||
|
||||
**DO NOT** use "-" inside each field. "-" is magic character which is used to separate different fields in packet descriptor.
|
||||
|
||||
|
||||
* **btle_tx example: [Discovery packets](host/btle-tools/src/packets_discovery.txt)**
|
||||
|
||||
Open LightBlue APP (or other BLE sniffer) in your iPhone/device before this command:
|
||||
```
|
||||
./btle-tools/src/btle_tx ../btle-tools/src/packets_discovery.txt
|
||||
```
|
||||
You will see a device named as "SDR Bluetooth Low Energy" in your LightBlue APP.
|
||||
|
||||
Corresponding Command line:
|
||||
```
|
||||
./btle-tools/src/btle_tx 37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-SDR/Bluetooth/Low/Energy r40
|
||||
```
|
||||
Note: space " " is replaced by "/" because space " " is not supported in command line.
|
||||
|
||||
|
||||
* **btle_tx example: [Connection establishment](doc/TI-BLE-INTRODUCTION.pdf)**
|
||||
```
|
||||
btle_tx 37-ADV_IND-TxAdd-0-RxAdd-0-AdvA-90D7EBB19299-AdvData-0201050702031802180418-Space-1 37-CONNECT_REQ-TxAdd-0-RxAdd-0-InitA-001830EA965F-AdvA-90D7EBB19299-AA-60850A1B-CRCInit-A77B22-WinSize-02-WinOffset-000F-Interval-0050-Latency-0000-Timeout-07D0-ChM-1FFFFFFFFF-Hop-9-SCA-5-Space-1 9-LL_DATA-AA-60850A1B-LLID-1-NESN-0-SN-0-MD-0-DATA-XX-CRCInit-A77B22-Space-1
|
||||
```
|
||||
Above simulates a Connection establishment procedure between device 1 and device 2. Corresponding descriptor file [BTLE/host/btle-tools/src/packets.txt](host/btle-tools/src/packets.txt).
|
||||
|
||||
The 1st packet -- device 1 sends ADV_IND packet in channel 37.
|
||||
|
||||
The 2nd packet -- After device 2 (in scanning state) receives the ADV packet from device 1, device 2 sends CONNECT_REQ packet to request connection setup with device 1. In this request packet, there are device 2 MAC address (InitA), target MAC address (device 1 MAC address AdvA), Access address (AA) which will be used by device 1 in following packet sending in data channel, CRC initialization value for following device 1 sending packet, Hopping channel information (ChM and Hop) for data channel used by device 1, etc.
|
||||
|
||||
The 3rd packet -- device 1 send an empty Link layer data PDU in channel 9 (decided by hopping scheme) according to those connection request information received from device 2. ("XX" after field "DATA" means there is no data for this field )
|
||||
|
||||
Time space between packets are 1s (1000ms). Tune TI's packet sniffer to channel 37, then above establishment procedure will be captured.
|
||||
|
||||
|
||||
* **btle_tx example: [iBeacon](doc/ibeacon.pdf)**
|
||||
```
|
||||
./btle-tools/src/btle_tx 37-iBeacon-AdvA-010203040506-UUID-B9407F30F5F8466EAFF925556B57FE6D-Major-0008-Minor-0009-TxPower-C5-Space-100 r100
|
||||
```
|
||||
Above command sends iBeacon packet and repeats it 100 times with 100ms time space. Corresponding descriptor file [BTLE/host/btle-tools/src/packets_ibeacon.txt](host/btle-tools/src/packets_ibeacon.txt). You can use a BLE sniffer dongle to see the packet.
|
||||
|
||||
The packet descriptor string:
|
||||
```
|
||||
37-iBeacon-AdvA-010203040506-UUID-B9407F30F5F8466EAFF925556B57FE6D-Major-0008-Minor-0009-TxPower-C5-Space-100
|
||||
```
|
||||
```
|
||||
37
|
||||
```
|
||||
channel 37 (one of BTLE Advertising channel 37 38 39)
|
||||
```
|
||||
iBeacon
|
||||
```
|
||||
packet format key word which means iBeacon format. (Actually it is ADV_IND format in Core_V4.0.pdf)
|
||||
```
|
||||
AdvA
|
||||
```
|
||||
Advertising address (MAC address) which is set as 010203040506 (See Core_V4.0.pdf)
|
||||
```
|
||||
UUID
|
||||
```
|
||||
here we specify it as Estimote’s fixed UUID: B9407F30F5F8466EAFF925556B57FE6D
|
||||
```
|
||||
Major
|
||||
```
|
||||
major number of iBeacon format. (Here it is 0008)
|
||||
```
|
||||
Minor
|
||||
```
|
||||
minor number of iBeacon format. (Here it is 0009)
|
||||
```
|
||||
Txpower
|
||||
```
|
||||
transmit power parameter of iBeacon format (Here it is C5)
|
||||
```
|
||||
Space
|
||||
```
|
||||
How many millisecond will be waited after this packet sent. (Here it is 100ms)
|
||||
|
||||
Demos
|
||||
------------------
|
||||
|
||||
See a comparison with TI's packet sniffer here: [http://sdr-x.github.io/BTLE-SNIFFER/](http://sdr-x.github.io/BTLE-SNIFFER/)
|
||||
|
||||
See <a href="https://youtu.be/9LDPhOF2yyw">btle_rx video demo</a> or <a href="https://vimeo.com/144574631">btle_rx video demo</a> (in China) and <a href="http://youtu.be/Y8ttV5AEb-g">btle_tx video demo 1</a> or <a href="http://v.youku.com/v_show/id_XNzUxMDIzNzAw.html">btle_tx video demo 2</a> (in China)
|
||||
|
||||
# Appendix: Packet descriptor examples of btle_tx for all formats
|
||||
------------------
|
||||
|
||||
RAW packets: (All bits will be sent to GFSK modulator directly)
|
||||
```
|
||||
37-RAW-aad6be898e8dc3ce338c4cb1207730144f9474e0e15eedb378c3bc
|
||||
```
|
||||
ADVERTISING CHANNEL packets (channel 37 for example):
|
||||
```
|
||||
37-IBEACON-AdvA-010203040506-UUID-B9407F30F5F8466EAFF925556B57FE6D-Major-0008-Minor-0009-TxPower-C5
|
||||
37-ADV_IND-TxAdd-1-RxAdd-0-AdvA-010203040506-AdvData-00112233445566778899AABBCCDDEEFF
|
||||
37-ADV_DIRECT_IND-TxAdd-1-RxAdd-0-AdvA-010203040506-InitA-0708090A0B0C
|
||||
37-ADV_NONCONN_IND-TxAdd-1-RxAdd-0-AdvA-010203040506-AdvData-00112233445566778899AABBCCDDEEFF
|
||||
37-ADV_SCAN_IND-TxAdd-1-RxAdd-0-AdvA-010203040506-AdvData-00112233445566778899AABBCCDDEEFF
|
||||
37-SCAN_REQ-TxAdd-1-RxAdd-0-ScanA-010203040506-AdvA-0708090A0B0C
|
||||
37-SCAN_RSP-TxAdd-1-RxAdd-0-AdvA-010203040506-ScanRspData-00112233445566778899AABBCCDDEEFF
|
||||
37-CONNECT_REQ-TxAdd-1-RxAdd-0-InitA-010203040506-AdvA-0708090A0B0C-AA-01020304-CRCInit-050607-WinSize-08-WinOffset-090A-Interval-0B0C-Latency-0D0E-Timeout-0F00-ChM-0102030405-Hop-3-SCA-4
|
||||
```
|
||||
DATA CHANNEL packets (channel 9 for example):
|
||||
```
|
||||
9-LL_DATA-AA-60850A1B-LLID-1-NESN-0-SN-0-MD-0-DATA-XX-CRCInit-A77B22
|
||||
9-LL_CONNECTION_UPDATE_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-WinSize-02-WinOffset-0e0F-Interval-0450-Latency-0607-Timeout-07D0-Instant-eeff-CRCInit-A77B22
|
||||
9-LL_CHANNEL_MAP_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-ChM-1FFFFFFFFF-Instant-0201-CRCInit-A77B22
|
||||
9-LL_TERMINATE_IND-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-ErrorCode-12-CRCInit-A77B22
|
||||
9-LL_ENC_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-Rand-0102030405060708-EDIV-090A-SKDm-0102030405060708-IVm-090A0B0C-CRCInit-A77B22
|
||||
9-LL_ENC_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-SKDs-0102030405060708-IVs-01020304-CRCInit-A77B22
|
||||
9-LL_START_ENC_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-CRCInit-A77B22
|
||||
9-LL_START_ENC_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-CRCInit-A77B22
|
||||
9-LL_UNKNOWN_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-UnknownType-01-CRCInit-A77B22
|
||||
9-LL_FEATURE_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-FeatureSet-0102030405060708-CRCInit-A77B22
|
||||
9-LL_FEATURE_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-FeatureSet-0102030405060708-CRCInit-A77B22
|
||||
9-LL_PAUSE_ENC_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-CRCInit-A77B22
|
||||
9-LL_PAUSE_ENC_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-CRCInit-A77B22
|
||||
9-LL_VERSION_IND-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-VersNr-01-CompId-0203-SubVersNr-0405-CRCInit-A77B22
|
||||
9-LL_REJECT_IND-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-ErrorCode-00-CRCInit-A77B22
|
||||
```
|
||||
Discovery packets: (which can show any name or services in scanner APP, such as LightBlue):
|
||||
```
|
||||
37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-LOCAL_NAME09-CA-TXPOWER-03-SERVICE03-180D1810-SERVICE_DATA-180D40-MANUF_DATA-0001FF-CONN_INTERVAL-0006 (-SERVICE_SOLI14-1811)
|
||||
|
||||
FLAGS: 0x01 LE Limited Discoverable Mode; 0x02 LE General Discoverable Mode
|
||||
SERVICE:
|
||||
0x02 16-bit Service UUIDs More 16-bit UUIDs available
|
||||
0x03 16-bit Service UUIDs Complete list of 16-bit UUIDs available
|
||||
0x04 32-bit Service UUIDs More 3a2-bit UUIDs available
|
||||
0x05 32-bit Service UUIDs Complete list of 32-bit UUIDs available
|
||||
0x06 128-bit Service UUIDs More 128-bit UUIDs available
|
||||
0x07 128-bit Service UUIDs Complete list of 128-bit UUIDs available
|
||||
```
|
12
Software/BTLE/compatible_hackrf_bladerf_lib.txt
Normal file
12
Software/BTLE/compatible_hackrf_bladerf_lib.txt
Normal file
@ -0,0 +1,12 @@
|
||||
Following versions were tested. Not means other versions won't work.
|
||||
|
||||
bladeRF:
|
||||
|
||||
bladeRF-cli --version
|
||||
1.8.0-0.2019.07-5
|
||||
|
||||
HackRF:
|
||||
|
||||
hackrf_info
|
||||
hackrf_info version: git-f202160
|
||||
libhackrf version: git-f202160 (0.5)
|
1981
Software/BTLE/doc/BLE_sniffer_guide.pdf
Normal file
1981
Software/BTLE/doc/BLE_sniffer_guide.pdf
Normal file
File diff suppressed because one or more lines are too long
5
Software/BTLE/doc/README.md
Normal file
5
Software/BTLE/doc/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
See some docs which are useful in [https://github.com/JiaoXianjun/doc](https://github.com/JiaoXianjun/doc)
|
||||
|
||||
See new type of discovery packet in host/btle-tools/src/packets_discovery.txt
|
||||
|
||||
|
BIN
Software/BTLE/doc/TI-BLE-INTRODUCTION.pdf
Normal file
BIN
Software/BTLE/doc/TI-BLE-INTRODUCTION.pdf
Normal file
Binary file not shown.
BIN
Software/BTLE/doc/ibeacon.pdf
Normal file
BIN
Software/BTLE/doc/ibeacon.pdf
Normal file
Binary file not shown.
20
Software/BTLE/host/CMakeLists.txt
Normal file
20
Software/BTLE/host/CMakeLists.txt
Normal file
@ -0,0 +1,20 @@
|
||||
#top dir cmake project
|
||||
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
project (btle_all)
|
||||
|
||||
add_subdirectory(btle-tools)
|
||||
|
||||
########################################################################
|
||||
# Create uninstall target
|
||||
########################################################################
|
||||
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
|
||||
@ONLY)
|
||||
|
||||
|
||||
add_custom_target(uninstall
|
||||
${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
|
||||
)
|
3
Software/BTLE/host/btle-tools/52-hackrf.rules
Normal file
3
Software/BTLE/host/btle-tools/52-hackrf.rules
Normal file
@ -0,0 +1,3 @@
|
||||
ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="plugdev"
|
||||
ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="plugdev"
|
||||
ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="nxp-dfu-%k", MODE="660", GROUP="plugdev"
|
89
Software/BTLE/host/btle-tools/CMakeLists.txt
Normal file
89
Software/BTLE/host/btle-tools/CMakeLists.txt
Normal file
@ -0,0 +1,89 @@
|
||||
# Copyright 2012 Jared Boone
|
||||
# Copyright 2013 Benjamin Vernoux
|
||||
#
|
||||
# This file is part of HackRF and bladeRF
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
# Based heavily upon the libftdi cmake setup.
|
||||
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
project(btle-tools C)
|
||||
set(MAJOR_VERSION 0)
|
||||
set(MINOR_VERSION 5)
|
||||
set(PACKAGE btle-tools)
|
||||
set(VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION})
|
||||
set(VERSION ${VERSION_STRING})
|
||||
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake/modules)
|
||||
|
||||
if(MSVC)
|
||||
# include_directories(getopt)
|
||||
add_definitions(/D _CRT_SECURE_NO_WARNINGS)
|
||||
else()
|
||||
add_definitions(-Wall)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu90")
|
||||
endif()
|
||||
|
||||
# Find needed packages.
|
||||
IF (USE_BLADERF MATCHES 1)
|
||||
MESSAGE(STATUS "Use BLADERF")
|
||||
find_package(LIBBLADERF REQUIRED)
|
||||
include_directories(${LIBBLADERF_INCLUDE_DIR})
|
||||
set(USE_RFBOARD "USE_BLADERF")
|
||||
ELSE (USE_BLADERF MATCHES 1)
|
||||
MESSAGE(STATUS "Use HACKRF")
|
||||
find_package(LIBHACKRF REQUIRED)
|
||||
include_directories(${LIBHACKRF_INCLUDE_DIR})
|
||||
set(USE_RFBOARD "USE_HACKRF")
|
||||
ENDIF (USE_BLADERF MATCHES 1)
|
||||
|
||||
CONFIGURE_FILE (
|
||||
"${PROJECT_SOURCE_DIR}/include/common.h.in"
|
||||
"${PROJECT_SOURCE_DIR}/src/common.h"
|
||||
)
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
########################################################################
|
||||
# Create uninstall target
|
||||
########################################################################
|
||||
|
||||
if(NOT btle_all_SOURCE_DIR)
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/../cmake/cmake_uninstall.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
|
||||
@ONLY)
|
||||
|
||||
|
||||
add_custom_target(uninstall
|
||||
${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
|
||||
)
|
||||
endif()
|
||||
|
||||
########################################################################
|
||||
# Install udev rules
|
||||
########################################################################
|
||||
option(INSTALL_UDEV_RULES "Install udev rules for HackRF" OFF)
|
||||
if (INSTALL_UDEV_RULES)
|
||||
install (
|
||||
FILES 52-hackrf.rules
|
||||
DESTINATION "/etc/udev/rules.d"
|
||||
COMPONENT "udev"
|
||||
)
|
||||
else (INSTALL_UDEV_RULES)
|
||||
message (STATUS "Udev rules not being installed, install them with -DINSTALL_UDEV_RULES=ON")
|
||||
endif (INSTALL_UDEV_RULES)
|
7
Software/BTLE/host/btle-tools/include/common.h.in
Normal file
7
Software/BTLE/host/btle-tools/include/common.h.in
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef HAVE_COMMON_H
|
||||
#define HAVE_COMMON_H
|
||||
|
||||
#define @USE_RFBOARD@
|
||||
|
||||
#endif
|
||||
|
63
Software/BTLE/host/btle-tools/src/CMakeLists.txt
Normal file
63
Software/BTLE/host/btle-tools/src/CMakeLists.txt
Normal file
@ -0,0 +1,63 @@
|
||||
# Copyright 2012 Jared Boone
|
||||
# Copyright 2013 Benjamin Vernoux
|
||||
#
|
||||
# This file is part of HackRF and BladeRF.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
# Based heavily upon the libftdi cmake setup.
|
||||
set(INSTALL_DEFAULT_BINDIR "bin" CACHE STRING "Appended to CMAKE_INSTALL_PREFIX")
|
||||
|
||||
if(MSVC)
|
||||
add_library(libgetopt_static STATIC
|
||||
../getopt/getopt.c
|
||||
)
|
||||
endif()
|
||||
|
||||
add_executable(btle_tx btle_tx.c)
|
||||
install(TARGETS btle_tx RUNTIME DESTINATION ${INSTALL_DEFAULT_BINDIR})
|
||||
|
||||
add_executable(btle_rx btle_rx.c)
|
||||
install(TARGETS btle_rx RUNTIME DESTINATION ${INSTALL_DEFAULT_BINDIR})
|
||||
|
||||
IF (USE_BLADERF MATCHES 1)
|
||||
include_directories(${LIBBLADERF_INCLUDE_DIR})
|
||||
LIST(APPEND TOOLS_LINK_LIBS ${LIBBLADERF_LIBRARIES})
|
||||
ELSE (USE_BLADERF MATCHES 1)
|
||||
include_directories(${LIBHACKRF_INCLUDE_DIR})
|
||||
LIST(APPEND TOOLS_LINK_LIBS ${LIBHACKRF_LIBRARIES})
|
||||
ENDIF (USE_BLADERF MATCHES 1)
|
||||
|
||||
IF(NOT DEFINED C_INLINE)
|
||||
ADD_DEFINITIONS("-Dinline=")
|
||||
ENDIF(NOT DEFINED C_INLINE)
|
||||
|
||||
if(MSVC)
|
||||
LIST(APPEND TOOLS_LINK_LIBS libgetopt_static)
|
||||
endif()
|
||||
|
||||
target_link_libraries(btle_tx ${TOOLS_LINK_LIBS} m)
|
||||
|
||||
IF (USE_BLADERF MATCHES 1)
|
||||
target_link_libraries(btle_rx ${TOOLS_LINK_LIBS} m -lpthread)
|
||||
ELSE (USE_BLADERF MATCHES 1)
|
||||
target_link_libraries(btle_rx ${TOOLS_LINK_LIBS} m)
|
||||
ENDIF (USE_BLADERF MATCHES 1)
|
||||
|
||||
# MESSAGE(STATUS "1")
|
||||
# MESSAGE(STATUS ${LIBBLADERF_LIBRARIES})
|
||||
# MESSAGE(STATUS "2")
|
2421
Software/BTLE/host/btle-tools/src/btle_rx.c
Normal file
2421
Software/BTLE/host/btle-tools/src/btle_rx.c
Normal file
File diff suppressed because it is too large
Load Diff
4256
Software/BTLE/host/btle-tools/src/btle_tx.c
Normal file
4256
Software/BTLE/host/btle-tools/src/btle_tx.c
Normal file
File diff suppressed because it is too large
Load Diff
96
Software/BTLE/host/btle-tools/src/gauss_cos_sin_table.h
Normal file
96
Software/BTLE/host/btle-tools/src/gauss_cos_sin_table.h
Normal file
@ -0,0 +1,96 @@
|
||||
// Lookup table to speedup the program
|
||||
// Xianjun Jiao (putaoshu@msn.com)
|
||||
|
||||
const int8_t gauss_coef_int8[16] = {
|
||||
0, 0, 0, 0, 2, 11, 32, 53, 60, 53, 32, 11, 2, 0, 0, 0, };
|
||||
|
||||
const int8_t cos_table_int8[1024] = {
|
||||
127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126, 126, 126,
|
||||
126, 126, 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124, 123, 123, 123, 123, 123, 122, 122, 122, 122,
|
||||
122, 121, 121, 121, 121, 120, 120, 120, 120, 119, 119, 119, 118, 118, 118, 118, 117, 117, 117, 116, 116, 116, 115, 115,
|
||||
115, 114, 114, 114, 113, 113, 113, 112, 112, 112, 111, 111, 111, 110, 110, 109, 109, 109, 108, 108, 107, 107, 106, 106,
|
||||
106, 105, 105, 104, 104, 103, 103, 102, 102, 102, 101, 101, 100, 100, 99, 99, 98, 98, 97, 97, 96, 96, 95, 95,
|
||||
94, 94, 93, 93, 92, 91, 91, 90, 90, 89, 89, 88, 88, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81,
|
||||
81, 80, 79, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 71, 70, 69, 69, 68, 67, 67, 66,
|
||||
65, 65, 64, 63, 63, 62, 61, 61, 60, 59, 58, 58, 57, 56, 56, 55, 54, 54, 53, 52, 51, 51, 50, 49,
|
||||
49, 48, 47, 46, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 32, 32,
|
||||
31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 14, 13,
|
||||
12, 12, 11, 10, 9, 9, 8, 7, 6, 5, 5, 4, 3, 2, 2, 1, 0, -1, -2, -2, -3, -4, -5, -5,
|
||||
-6, -7, -8, -9, -9, -10, -11, -12, -12, -13, -14, -15, -16, -16, -17, -18, -19, -19, -20, -21, -22, -22, -23, -24,
|
||||
-25, -26, -26, -27, -28, -29, -29, -30, -31, -32, -32, -33, -34, -35, -35, -36, -37, -38, -38, -39, -40, -41, -41, -42,
|
||||
-43, -44, -44, -45, -46, -46, -47, -48, -49, -49, -50, -51, -51, -52, -53, -54, -54, -55, -56, -56, -57, -58, -58, -59,
|
||||
-60, -61, -61, -62, -63, -63, -64, -65, -65, -66, -67, -67, -68, -69, -69, -70, -71, -71, -72, -72, -73, -74, -74, -75,
|
||||
-76, -76, -77, -78, -78, -79, -79, -80, -81, -81, -82, -82, -83, -84, -84, -85, -85, -86, -86, -87, -88, -88, -89, -89,
|
||||
-90, -90, -91, -91, -92, -93, -93, -94, -94, -95, -95, -96, -96, -97, -97, -98, -98, -99, -99, -100, -100, -101, -101, -102,
|
||||
-102, -102, -103, -103, -104, -104, -105, -105, -106, -106, -106, -107, -107, -108, -108, -109, -109, -109, -110, -110, -111, -111, -111, -112,
|
||||
-112, -112, -113, -113, -113, -114, -114, -114, -115, -115, -115, -116, -116, -116, -117, -117, -117, -118, -118, -118, -118, -119, -119, -119,
|
||||
-120, -120, -120, -120, -121, -121, -121, -121, -122, -122, -122, -122, -122, -123, -123, -123, -123, -123, -124, -124, -124, -124, -124, -124,
|
||||
-125, -125, -125, -125, -125, -125, -125, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -127, -127, -127, -127, -127, -127,
|
||||
-127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -126,
|
||||
-126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -125, -125, -125, -125, -125, -125, -125, -124, -124, -124, -124, -124, -124, -123,
|
||||
-123, -123, -123, -123, -122, -122, -122, -122, -122, -121, -121, -121, -121, -120, -120, -120, -120, -119, -119, -119, -118, -118, -118, -118,
|
||||
-117, -117, -117, -116, -116, -116, -115, -115, -115, -114, -114, -114, -113, -113, -113, -112, -112, -112, -111, -111, -111, -110, -110, -109,
|
||||
-109, -109, -108, -108, -107, -107, -106, -106, -106, -105, -105, -104, -104, -103, -103, -102, -102, -102, -101, -101, -100, -100, -99, -99,
|
||||
-98, -98, -97, -97, -96, -96, -95, -95, -94, -94, -93, -93, -92, -91, -91, -90, -90, -89, -89, -88, -88, -87, -86, -86,
|
||||
-85, -85, -84, -84, -83, -82, -82, -81, -81, -80, -79, -79, -78, -78, -77, -76, -76, -75, -74, -74, -73, -72, -72, -71,
|
||||
-71, -70, -69, -69, -68, -67, -67, -66, -65, -65, -64, -63, -63, -62, -61, -61, -60, -59, -58, -58, -57, -56, -56, -55,
|
||||
-54, -54, -53, -52, -51, -51, -50, -49, -49, -48, -47, -46, -46, -45, -44, -44, -43, -42, -41, -41, -40, -39, -38, -38,
|
||||
-37, -36, -35, -35, -34, -33, -32, -32, -31, -30, -29, -29, -28, -27, -26, -26, -25, -24, -23, -22, -22, -21, -20, -19,
|
||||
-19, -18, -17, -16, -16, -15, -14, -13, -12, -12, -11, -10, -9, -9, -8, -7, -6, -5, -5, -4, -3, -2, -2, -1,
|
||||
0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 16, 16, 17, 18,
|
||||
19, 19, 20, 21, 22, 22, 23, 24, 25, 26, 26, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
|
||||
37, 38, 38, 39, 40, 41, 41, 42, 43, 44, 44, 45, 46, 46, 47, 48, 49, 49, 50, 51, 51, 52, 53, 54,
|
||||
54, 55, 56, 56, 57, 58, 58, 59, 60, 61, 61, 62, 63, 63, 64, 65, 65, 66, 67, 67, 68, 69, 69, 70,
|
||||
71, 71, 72, 72, 73, 74, 74, 75, 76, 76, 77, 78, 78, 79, 79, 80, 81, 81, 82, 82, 83, 84, 84, 85,
|
||||
85, 86, 86, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98,
|
||||
98, 99, 99, 100, 100, 101, 101, 102, 102, 102, 103, 103, 104, 104, 105, 105, 106, 106, 106, 107, 107, 108, 108, 109,
|
||||
109, 109, 110, 110, 111, 111, 111, 112, 112, 112, 113, 113, 113, 114, 114, 114, 115, 115, 115, 116, 116, 116, 117, 117,
|
||||
117, 118, 118, 118, 118, 119, 119, 119, 120, 120, 120, 120, 121, 121, 121, 121, 122, 122, 122, 122, 122, 123, 123, 123,
|
||||
123, 123, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 126,
|
||||
126, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, };
|
||||
|
||||
const int8_t sin_table_int8[1024] = {
|
||||
0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 16, 16, 17, 18,
|
||||
19, 19, 20, 21, 22, 22, 23, 24, 25, 26, 26, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
|
||||
37, 38, 38, 39, 40, 41, 41, 42, 43, 44, 44, 45, 46, 46, 47, 48, 49, 49, 50, 51, 51, 52, 53, 54,
|
||||
54, 55, 56, 56, 57, 58, 58, 59, 60, 61, 61, 62, 63, 63, 64, 65, 65, 66, 67, 67, 68, 69, 69, 70,
|
||||
71, 71, 72, 72, 73, 74, 74, 75, 76, 76, 77, 78, 78, 79, 79, 80, 81, 81, 82, 82, 83, 84, 84, 85,
|
||||
85, 86, 86, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98,
|
||||
98, 99, 99, 100, 100, 101, 101, 102, 102, 102, 103, 103, 104, 104, 105, 105, 106, 106, 106, 107, 107, 108, 108, 109,
|
||||
109, 109, 110, 110, 111, 111, 111, 112, 112, 112, 113, 113, 113, 114, 114, 114, 115, 115, 115, 116, 116, 116, 117, 117,
|
||||
117, 118, 118, 118, 118, 119, 119, 119, 120, 120, 120, 120, 121, 121, 121, 121, 122, 122, 122, 122, 122, 123, 123, 123,
|
||||
123, 123, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 126,
|
||||
126, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
|
||||
127, 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 125, 125, 125, 125, 125, 125,
|
||||
125, 124, 124, 124, 124, 124, 124, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 121, 121, 121, 121, 120, 120, 120,
|
||||
120, 119, 119, 119, 118, 118, 118, 118, 117, 117, 117, 116, 116, 116, 115, 115, 115, 114, 114, 114, 113, 113, 113, 112,
|
||||
112, 112, 111, 111, 111, 110, 110, 109, 109, 109, 108, 108, 107, 107, 106, 106, 106, 105, 105, 104, 104, 103, 103, 102,
|
||||
102, 102, 101, 101, 100, 100, 99, 99, 98, 98, 97, 97, 96, 96, 95, 95, 94, 94, 93, 93, 92, 91, 91, 90,
|
||||
90, 89, 89, 88, 88, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 81, 80, 79, 79, 78, 78, 77, 76,
|
||||
76, 75, 74, 74, 73, 72, 72, 71, 71, 70, 69, 69, 68, 67, 67, 66, 65, 65, 64, 63, 63, 62, 61, 61,
|
||||
60, 59, 58, 58, 57, 56, 56, 55, 54, 54, 53, 52, 51, 51, 50, 49, 49, 48, 47, 46, 46, 45, 44, 44,
|
||||
43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 26, 26,
|
||||
25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 14, 13, 12, 12, 11, 10, 9, 9, 8, 7,
|
||||
6, 5, 5, 4, 3, 2, 2, 1, 0, -1, -2, -2, -3, -4, -5, -5, -6, -7, -8, -9, -9, -10, -11, -12,
|
||||
-12, -13, -14, -15, -16, -16, -17, -18, -19, -19, -20, -21, -22, -22, -23, -24, -25, -26, -26, -27, -28, -29, -29, -30,
|
||||
-31, -32, -32, -33, -34, -35, -35, -36, -37, -38, -38, -39, -40, -41, -41, -42, -43, -44, -44, -45, -46, -46, -47, -48,
|
||||
-49, -49, -50, -51, -51, -52, -53, -54, -54, -55, -56, -56, -57, -58, -58, -59, -60, -61, -61, -62, -63, -63, -64, -65,
|
||||
-65, -66, -67, -67, -68, -69, -69, -70, -71, -71, -72, -72, -73, -74, -74, -75, -76, -76, -77, -78, -78, -79, -79, -80,
|
||||
-81, -81, -82, -82, -83, -84, -84, -85, -85, -86, -86, -87, -88, -88, -89, -89, -90, -90, -91, -91, -92, -93, -93, -94,
|
||||
-94, -95, -95, -96, -96, -97, -97, -98, -98, -99, -99, -100, -100, -101, -101, -102, -102, -102, -103, -103, -104, -104, -105, -105,
|
||||
-106, -106, -106, -107, -107, -108, -108, -109, -109, -109, -110, -110, -111, -111, -111, -112, -112, -112, -113, -113, -113, -114, -114, -114,
|
||||
-115, -115, -115, -116, -116, -116, -117, -117, -117, -118, -118, -118, -118, -119, -119, -119, -120, -120, -120, -120, -121, -121, -121, -121,
|
||||
-122, -122, -122, -122, -122, -123, -123, -123, -123, -123, -124, -124, -124, -124, -124, -124, -125, -125, -125, -125, -125, -125, -125, -126,
|
||||
-126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
|
||||
-127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -126, -126, -126, -126, -126, -126, -126, -126, -126,
|
||||
-126, -126, -125, -125, -125, -125, -125, -125, -125, -124, -124, -124, -124, -124, -124, -123, -123, -123, -123, -123, -122, -122, -122, -122,
|
||||
-122, -121, -121, -121, -121, -120, -120, -120, -120, -119, -119, -119, -118, -118, -118, -118, -117, -117, -117, -116, -116, -116, -115, -115,
|
||||
-115, -114, -114, -114, -113, -113, -113, -112, -112, -112, -111, -111, -111, -110, -110, -109, -109, -109, -108, -108, -107, -107, -106, -106,
|
||||
-106, -105, -105, -104, -104, -103, -103, -102, -102, -102, -101, -101, -100, -100, -99, -99, -98, -98, -97, -97, -96, -96, -95, -95,
|
||||
-94, -94, -93, -93, -92, -91, -91, -90, -90, -89, -89, -88, -88, -87, -86, -86, -85, -85, -84, -84, -83, -82, -82, -81,
|
||||
-81, -80, -79, -79, -78, -78, -77, -76, -76, -75, -74, -74, -73, -72, -72, -71, -71, -70, -69, -69, -68, -67, -67, -66,
|
||||
-65, -65, -64, -63, -63, -62, -61, -61, -60, -59, -58, -58, -57, -56, -56, -55, -54, -54, -53, -52, -51, -51, -50, -49,
|
||||
-49, -48, -47, -46, -46, -45, -44, -44, -43, -42, -41, -41, -40, -39, -38, -38, -37, -36, -35, -35, -34, -33, -32, -32,
|
||||
-31, -30, -29, -29, -28, -27, -26, -26, -25, -24, -23, -22, -22, -21, -20, -19, -19, -18, -17, -16, -16, -15, -14, -13,
|
||||
-12, -12, -11, -10, -9, -9, -8, -7, -6, -5, -5, -4, -3, -2, -2, -1, };
|
||||
|
13
Software/BTLE/host/btle-tools/src/packets.txt
Normal file
13
Software/BTLE/host/btle-tools/src/packets.txt
Normal file
@ -0,0 +1,13 @@
|
||||
# Simulate BTLE Connection establishment according to BTLE/doc/TI-BLE-INTRODUCTION.pdf
|
||||
# Turn on your BLE sniffer dongle at channel 37 to see the procedure
|
||||
|
||||
37-ADV_IND-TxAdd-0-RxAdd-0-AdvA-90D7EBB19299-AdvData-0201050702031802180418-Space-1000
|
||||
|
||||
37-CONNECT_REQ-TxAdd-0-RxAdd-0-InitA-001830EA965F-AdvA-90D7EBB19299-AA-60850A1B-CRCInit-A77B22-WinSize-02-WinOffset-000F-Interval-0050-Latency-0000-Timeout-07D0-ChM-1FFFFFFFFF-Hop-9-SCA-5-Space-1000
|
||||
|
||||
9-LL_DATA-AA-60850A1B-LLID-1-NESN-0-SN-0-MD-0-DATA-X-CRCInit-A77B22-Space-1000
|
||||
|
||||
r1
|
||||
|
||||
|
||||
|
55
Software/BTLE/host/btle-tools/src/packets_discovery.txt
Normal file
55
Software/BTLE/host/btle-tools/src/packets_discovery.txt
Normal file
@ -0,0 +1,55 @@
|
||||
# example
|
||||
# ./btle_tx 37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-LOCAL_NAME09-CA-TXPOWER-03-SERVICE03-180D1810-SERVICE_DATA-180D40-MANUF_DATA-0001FF-CONN_INTERVAL-0006 (-SERVICE_SOLI14-1811)
|
||||
# FLAGS: 0x01 LE Limited Discoverable Mode; 0x02 LE General Discoverable Mode
|
||||
# SERVICE:
|
||||
# 0x02 16-bit Service UUIDs More 16-bit UUIDs available
|
||||
# 0x03 16-bit Service UUIDs Complete list of 16-bit UUIDs available
|
||||
# 0x04 32-bit Service UUIDs More 32-bit UUIDs available
|
||||
# 0x05 32-bit Service UUIDs Complete list of 32-bit UUIDs available
|
||||
# 0x06 128-bit Service UUIDs More 128-bit UUIDs available
|
||||
# 0x07 128-bit Service UUIDs Complete list of 128-bit UUIDs available
|
||||
|
||||
# 37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-LOCAL_NAME09-Jxj-TXPOWER-03-SERVICE03-180D1810-SERVICE_DATA-180D40-MANUF_DATA-004CFF-CONN_INTERVAL-0006
|
||||
|
||||
# r30
|
||||
|
||||
37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-SDR Bluetooth Low Energy
|
||||
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040500-LOCAL_NAME09-CA0000 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040501-LOCAL_NAME09-CA0001 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040502-LOCAL_NAME09-CA0002 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040503-LOCAL_NAME09-CA0003 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040504-LOCAL_NAME09-CA0004 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040505-LOCAL_NAME09-CA0005 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-CA0006 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040507-LOCAL_NAME09-CA0007 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040508-LOCAL_NAME09-CA0008 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040509-LOCAL_NAME09-CA0009 11950 22.626 113.823 1
|
||||
|
||||
r4000
|
||||
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-01234567890123456789012345678
|
||||
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-LOCAL_NAME09-01234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-110203040506-FLAGS-02-LOCAL_NAME09-11234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-210203040506-FLAGS-02-LOCAL_NAME09-21234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-310203040506-FLAGS-02-LOCAL_NAME09-31234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-410203040506-FLAGS-02-LOCAL_NAME09-41234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-510203040506-FLAGS-02-LOCAL_NAME09-51234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-610203040506-FLAGS-02-LOCAL_NAME09-61234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-710203040506-FLAGS-02-LOCAL_NAME09-71234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-810203040506-FLAGS-02-LOCAL_NAME09-81234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-910203040506-FLAGS-02-LOCAL_NAME09-91234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-a10203040506-FLAGS-02-LOCAL_NAME09-a1234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-b10203040506-FLAGS-02-LOCAL_NAME09-b1234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-c10203040506-FLAGS-02-LOCAL_NAME09-c1234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-d10203040506-FLAGS-02-LOCAL_NAME09-d1234567890123456789012345
|
||||
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-SERVICE03-180D-SERVICE_DATA-180D40-SPACE-500
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-110203040506-FLAGS-02-SERVICE03-1819-SERVICE_DATA-181940-SPACE-100
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-210203040506-FLAGS-02-SERVICE03-181c-SERVICE_DATA-181c40-SPACE-500
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-310203040506-FLAGS-02-SERVICE03-180a-SERVICE_DATA-180a40-SPACE-500
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-410203040506-FLAGS-02-SERVICE03-1800-SERVICE_DATA-180040-SPACE-500
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-410203040506-FLAGS-02-SERVICE03-1801-SERVICE_DATA-180140-SPACE-500
|
||||
# r30
|
||||
|
5
Software/BTLE/host/btle-tools/src/packets_ibeacon.txt
Normal file
5
Software/BTLE/host/btle-tools/src/packets_ibeacon.txt
Normal file
@ -0,0 +1,5 @@
|
||||
37-iBeacon-AdvA-010203040506-UUID-B9407F30F5F8466EAFF925556B57FE6D-Major-0008-Minor-0009-TxPower-C5-Space-100
|
||||
|
||||
r10
|
||||
|
||||
|
46
Software/BTLE/host/btle-tools/src/scramble_table.h
Normal file
46
Software/BTLE/host/btle-tools/src/scramble_table.h
Normal file
@ -0,0 +1,46 @@
|
||||
// Scramble table definition
|
||||
// Xianjun Jiao (putaoshu@msn.com)
|
||||
|
||||
const uint8_t scramble_table[40][42] = {
|
||||
{64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, },
|
||||
{137, 64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, },
|
||||
{210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, },
|
||||
{27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, },
|
||||
{100, 121, 135, 63, 110, 148, 190, 10, 237, 57, 53, 131, 173, 139, 137, 64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, },
|
||||
{173, 139, 137, 64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, },
|
||||
{246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, },
|
||||
{63, 110, 148, 190, 10, 237, 57, 53, 131, 173, 139, 137, 64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, },
|
||||
{8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, },
|
||||
{193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, },
|
||||
{154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, },
|
||||
{83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, },
|
||||
{44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, },
|
||||
{229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, 91, 23, 19, 129, 100, 121, 135, 63, 110, 148, 190, 10, 237, 57, 53, },
|
||||
{190, 10, 237, 57, 53, 131, 173, 139, 137, 64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, },
|
||||
{119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, },
|
||||
{208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, },
|
||||
{25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, 91, 23, 19, 129, 100, 121, 135, 63, 110, },
|
||||
{66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, },
|
||||
{139, 137, 64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, },
|
||||
{244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, 91, 23, 19, 129, },
|
||||
{61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, },
|
||||
{102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, },
|
||||
{175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, },
|
||||
{152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, },
|
||||
{81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, 91, 23, 19, 129, 100, 121, 135, 63, 110, 148, 190, 10, 237, 57, 53, 131, 173, 139, 137, },
|
||||
{10, 237, 57, 53, 131, 173, 139, 137, 64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, },
|
||||
{195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, },
|
||||
{188, 195, 31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, },
|
||||
{117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, },
|
||||
{46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, 91, 23, 19, 129, 100, 121, 135, 63, 110, 148, 190, 10, 237, 57, 53, 131, 173, 139, 137, 64, 178, 188, 195, 31, 55, 74, 95, },
|
||||
{231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, 91, 23, 19, 129, 100, 121, 135, 63, 110, 148, 190, 10, 237, 57, 53, 131, 173, 139, 137, 64, 178, 188, 195, },
|
||||
{96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, },
|
||||
{169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, 91, 23, 19, 129, 100, 121, 135, 63, },
|
||||
{242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, 91, 23, 19, 129, 100, 121, 135, 63, 110, 148, 190, 10, 237, 57, 53, 131, 173, 139, 137, 64, 178, 188, 195, 31, 55, 74, 95, 133, 246, 156, 154, },
|
||||
{59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, 4, 146, 229, 29, 254, 184, 81, 250, 42, 180, 231, 212, 12, 182, 46, 38, 2, 201, 242, 14, 127, 220, 40, 125, 21, 218, 115, 106, 6, },
|
||||
{68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, },
|
||||
{141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216, 186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, },
|
||||
{214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, },
|
||||
{31, 55, 74, 95, 133, 246, 156, 154, 193, 214, 197, 68, 32, 89, 222, 225, 143, 27, 165, 175, 66, 123, 78, 205, 96, 235, 98, 34, 144, 44, 239, 240, 199, 141, 210, 87, 161, 61, 167, 102, 176, 117, },
|
||||
};
|
||||
|
7
Software/BTLE/host/btle-tools/src/scramble_table_ch37.h
Normal file
7
Software/BTLE/host/btle-tools/src/scramble_table_ch37.h
Normal file
@ -0,0 +1,7 @@
|
||||
// Scramble table definition for channel 37
|
||||
// Xianjun Jiao (putaoshu@msn.com)
|
||||
|
||||
const uint8_t scramble_table_ch37[42] = {
|
||||
141, 210, 87, 161, 61, 167, 102, 176, 117, 49, 17, 72, 150, 119, 248, 227, 70, 233, 171, 208, 158, 83, 51, 216,
|
||||
186, 152, 8, 36, 203, 59, 252, 113, 163, 244, 85, 104, 207, 169, 25, 108, 93, 76, };
|
||||
|
32
Software/BTLE/host/cmake/cmake_uninstall.cmake.in
Normal file
32
Software/BTLE/host/cmake/cmake_uninstall.cmake.in
Normal file
@ -0,0 +1,32 @@
|
||||
# http://www.vtk.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
|
||||
|
||||
IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
|
||||
ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
|
||||
FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
|
||||
STRING(REGEX REPLACE "\n" ";" files "${files}")
|
||||
FOREACH(file ${files})
|
||||
MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
|
||||
IF(EXISTS "$ENV{DESTDIR}${file}")
|
||||
EXEC_PROGRAM(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
IF(NOT "${rm_retval}" STREQUAL 0)
|
||||
MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
|
||||
ENDIF(NOT "${rm_retval}" STREQUAL 0)
|
||||
ELSEIF(IS_SYMLINK "$ENV{DESTDIR}${file}")
|
||||
EXEC_PROGRAM(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
IF(NOT "${rm_retval}" STREQUAL 0)
|
||||
MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
|
||||
ENDIF(NOT "${rm_retval}" STREQUAL 0)
|
||||
ELSE(EXISTS "$ENV{DESTDIR}${file}")
|
||||
MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
|
||||
ENDIF(EXISTS "$ENV{DESTDIR}${file}")
|
||||
ENDFOREACH(file)
|
54
Software/BTLE/host/cmake/modules/FindLIBBLADERF.cmake
Normal file
54
Software/BTLE/host/cmake/modules/FindLIBBLADERF.cmake
Normal file
@ -0,0 +1,54 @@
|
||||
# - Find BLADERF
|
||||
# Find the native BLADERF includes and library
|
||||
# This module defines
|
||||
# LIBBLADERF_INCLUDE_DIR, where to find rtlsdr.h, etc.
|
||||
# LIBBLADERF_LIBRARIES, the libraries needed to use BLADERF.
|
||||
# LIBBLADERF_FOUND, If false, do not try to use BLADERF.
|
||||
# also defined, but not for general use are
|
||||
# LIBBLADERF_LIBRARY, where to find the BLADERF library.
|
||||
|
||||
#MESSAGE("LIBBLADERF_DIR set to ${LIBBLADERF_DIR}" )
|
||||
|
||||
FIND_PATH(LIBBLADERF_INCLUDE_DIR libbladeRF.h
|
||||
${LIBBLADERF_DIR}/include
|
||||
/usr/local/include/libbladeRF
|
||||
/usr/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(LIBBLADERF_LIBRARY
|
||||
NAMES bladeRF
|
||||
PATHS ${LIBBLADERF_DIR}/libs
|
||||
"${LIBBLADERF_DIR}\\win32\\lib"
|
||||
/usr/pkgs64/lib
|
||||
/usr/lib64
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
IF (LIBBLADERF_LIBRARY AND LIBBLADERF_INCLUDE_DIR)
|
||||
SET(LIBBLADERF_LIBRARIES ${LIBBLADERF_LIBRARY})
|
||||
SET(LIBBLADERF_FOUND "YES")
|
||||
ELSE (LIBBLADERF_LIBRARY AND LIBBLADERF_INCLUDE_DIR)
|
||||
SET(LIBBLADERF_FOUND "NO")
|
||||
ENDIF (LIBBLADERF_LIBRARY AND LIBBLADERF_INCLUDE_DIR)
|
||||
|
||||
IF (LIBBLADERF_FOUND)
|
||||
IF (NOT LIBBLADERF_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "Found BLADERF: ${LIBBLADERF_LIBRARIES}")
|
||||
ENDIF (NOT LIBBLADERF_FIND_QUIETLY)
|
||||
ELSE (LIBBLADERF_FOUND)
|
||||
IF (LIBBLADERF_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR "Could not find BLADERF library")
|
||||
ENDIF (LIBBLADERF_FIND_REQUIRED)
|
||||
ENDIF (LIBBLADERF_FOUND)
|
||||
|
||||
# Deprecated declarations.
|
||||
GET_FILENAME_COMPONENT (NATIVE_BLADERF_LIB_PATH ${LIBBLADERF_LIBRARY} PATH)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
LIBBLADERF_LIBRARY
|
||||
LIBBLADERF_INCLUDE_DIR
|
||||
)
|
||||
|
55
Software/BTLE/host/cmake/modules/FindLIBHACKRF.cmake
Normal file
55
Software/BTLE/host/cmake/modules/FindLIBHACKRF.cmake
Normal file
@ -0,0 +1,55 @@
|
||||
# - Try to find the libhackrf library
|
||||
# Once done this defines
|
||||
#
|
||||
# LIBHACKRF_FOUND - system has libhackrf
|
||||
# LIBHACKRF_INCLUDE_DIR - the libhackrf include directory
|
||||
# LIBHACKRF_LIBRARIES - Link these to use libhackrf
|
||||
|
||||
# Copyright (c) 2013 Benjamin Vernoux
|
||||
#
|
||||
|
||||
|
||||
if (LIBHACKRF_INCLUDE_DIR AND LIBHACKRF_LIBRARIES)
|
||||
|
||||
# in cache already
|
||||
set(LIBHACKRF_FOUND TRUE)
|
||||
|
||||
else (LIBHACKRF_INCLUDE_DIR AND LIBHACKRF_LIBRARIES)
|
||||
IF (NOT WIN32)
|
||||
# use pkg-config to get the directories and then use these values
|
||||
# in the FIND_PATH() and FIND_LIBRARY() calls
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(PC_LIBHACKRF QUIET libhackrf)
|
||||
ENDIF(NOT WIN32)
|
||||
|
||||
FIND_PATH(LIBHACKRF_INCLUDE_DIR
|
||||
NAMES hackrf.h
|
||||
HINTS $ENV{LIBHACKRF_DIR}/include ${PC_LIBHACKRF_INCLUDEDIR}
|
||||
PATHS /usr/local/include/libhackrf /usr/include/libhackrf /usr/local/include
|
||||
/usr/include ${CMAKE_SOURCE_DIR}/../libhackrf/src
|
||||
/opt/local/include/libhackrf
|
||||
${LIBHACKRF_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
set(libhackrf_library_names hackrf)
|
||||
|
||||
FIND_LIBRARY(LIBHACKRF_LIBRARIES
|
||||
NAMES ${libhackrf_library_names}
|
||||
HINTS $ENV{LIBHACKRF_DIR}/lib ${PC_LIBHACKRF_LIBDIR}
|
||||
PATHS /usr/local/lib /usr/lib /opt/local/lib ${PC_LIBHACKRF_LIBDIR} ${PC_LIBHACKRF_LIBRARY_DIRS} ${CMAKE_SOURCE_DIR}/../libhackrf/src
|
||||
)
|
||||
|
||||
if(LIBHACKRF_INCLUDE_DIR)
|
||||
set(CMAKE_REQUIRED_INCLUDES ${LIBHACKRF_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
if(LIBHACKRF_LIBRARIES)
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${LIBHACKRF_LIBRARIES})
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBHACKRF DEFAULT_MSG LIBHACKRF_LIBRARIES LIBHACKRF_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED(LIBHACKRF_INCLUDE_DIR LIBHACKRF_LIBRARIES)
|
||||
|
||||
endif (LIBHACKRF_INCLUDE_DIR AND LIBHACKRF_LIBRARIES)
|
246
Software/BTLE/host/cmake/modules/FindThreads.cmake
Normal file
246
Software/BTLE/host/cmake/modules/FindThreads.cmake
Normal file
@ -0,0 +1,246 @@
|
||||
# Updated FindThreads.cmake that supports pthread-win32
|
||||
# Downloaded from http://www.vtk.org/Bug/bug_view_advanced_page.php?bug_id=6399
|
||||
|
||||
# - This module determines the thread library of the system.
|
||||
#
|
||||
# The following variables are set
|
||||
# CMAKE_THREAD_LIBS_INIT - the thread library
|
||||
# CMAKE_USE_SPROC_INIT - are we using sproc?
|
||||
# CMAKE_USE_WIN32_THREADS_INIT - using WIN32 threads?
|
||||
# CMAKE_USE_PTHREADS_INIT - are we using pthreads
|
||||
# CMAKE_HP_PTHREADS_INIT - are we using hp pthreads
|
||||
#
|
||||
# If use of pthreads-win32 is desired, the following variables
|
||||
# can be set.
|
||||
#
|
||||
# THREADS_USE_PTHREADS_WIN32 -
|
||||
# Setting this to true searches for the pthreads-win32
|
||||
# port (since CMake 2.8.0)
|
||||
#
|
||||
# THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME
|
||||
# C = no exceptions (default)
|
||||
# (NOTE: This is the default scheme on most POSIX thread
|
||||
# implementations and what you should probably be using)
|
||||
# CE = C++ Exception Handling
|
||||
# SE = Structure Exception Handling (MSVC only)
|
||||
# (NOTE: Changing this option from the default may affect
|
||||
# the portability of your application. See pthreads-win32
|
||||
# documentation for more details.)
|
||||
#
|
||||
#======================================================
|
||||
# Example usage where threading library
|
||||
# is provided by the system:
|
||||
#
|
||||
# find_package(Threads REQUIRED)
|
||||
# add_executable(foo foo.cc)
|
||||
# target_link_libraries(foo ${CMAKE_THREAD_LIBS_INIT})
|
||||
#
|
||||
# Example usage if pthreads-win32 is desired on Windows
|
||||
# or a system provided thread library:
|
||||
#
|
||||
# set(THREADS_USE_PTHREADS_WIN32 true)
|
||||
# find_package(Threads REQUIRED)
|
||||
# include_directories(${THREADS_PTHREADS_INCLUDE_DIR})
|
||||
#
|
||||
# add_executable(foo foo.cc)
|
||||
# target_link_libraries(foo ${CMAKE_THREAD_LIBS_INIT})
|
||||
#
|
||||
|
||||
INCLUDE (CheckIncludeFiles)
|
||||
INCLUDE (CheckLibraryExists)
|
||||
SET(Threads_FOUND FALSE)
|
||||
|
||||
IF(WIN32 AND NOT CYGWIN AND THREADS_USE_PTHREADS_WIN32)
|
||||
SET(_Threads_ptwin32 true)
|
||||
ENDIF()
|
||||
|
||||
# Do we have sproc?
|
||||
IF(CMAKE_SYSTEM MATCHES IRIX)
|
||||
CHECK_INCLUDE_FILES("sys/types.h;sys/prctl.h" CMAKE_HAVE_SPROC_H)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_HAVE_SPROC_H)
|
||||
# We have sproc
|
||||
SET(CMAKE_USE_SPROC_INIT 1)
|
||||
|
||||
ELSEIF(_Threads_ptwin32)
|
||||
|
||||
IF(NOT DEFINED THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME)
|
||||
# Assign the default scheme
|
||||
SET(THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME "C")
|
||||
ELSE()
|
||||
# Validate the scheme specified by the user
|
||||
IF(NOT THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "C" AND
|
||||
NOT THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "CE" AND
|
||||
NOT THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "SE")
|
||||
MESSAGE(FATAL_ERROR "See documentation for FindPthreads.cmake, only C, CE, and SE modes are allowed")
|
||||
ENDIF()
|
||||
IF(NOT MSVC AND THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "SE")
|
||||
MESSAGE(FATAL_ERROR "Structured Exception Handling is only allowed for MSVC")
|
||||
ENDIF(NOT MSVC AND THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME STREQUAL "SE")
|
||||
ENDIF()
|
||||
|
||||
FIND_PATH(THREADS_PTHREADS_INCLUDE_DIR pthread.h)
|
||||
|
||||
# Determine the library filename
|
||||
IF(MSVC)
|
||||
SET(_Threads_pthreads_libname
|
||||
pthreadV${THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME}2)
|
||||
ELSEIF(MINGW)
|
||||
SET(_Threads_pthreads_libname
|
||||
pthreadG${THREADS_PTHREADS_WIN32_EXCEPTION_SCHEME}2)
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "This should never happen")
|
||||
ENDIF()
|
||||
|
||||
# Use the include path to help find the library if possible
|
||||
SET(_Threads_lib_paths "")
|
||||
IF(THREADS_PTHREADS_INCLUDE_DIR)
|
||||
GET_FILENAME_COMPONENT(_Threads_root_dir
|
||||
${THREADS_PTHREADS_INCLUDE_DIR} PATH)
|
||||
SET(_Threads_lib_paths ${_Threads_root_dir}/lib)
|
||||
ENDIF()
|
||||
FIND_LIBRARY(THREADS_PTHREADS_WIN32_LIBRARY
|
||||
NAMES ${_Threads_pthreads_libname}
|
||||
PATHS ${_Threads_lib_paths}
|
||||
DOC "The Portable Threads Library for Win32"
|
||||
NO_SYSTEM_PATH
|
||||
)
|
||||
|
||||
IF(THREADS_PTHREADS_INCLUDE_DIR AND THREADS_PTHREADS_WIN32_LIBRARY)
|
||||
MARK_AS_ADVANCED(THREADS_PTHREADS_INCLUDE_DIR)
|
||||
SET(CMAKE_THREAD_LIBS_INIT ${THREADS_PTHREADS_WIN32_LIBRARY})
|
||||
SET(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||
SET(Threads_FOUND TRUE)
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(THREADS_PTHREADS_WIN32_LIBRARY)
|
||||
|
||||
ELSE()
|
||||
# Do we have pthreads?
|
||||
CHECK_INCLUDE_FILES("pthread.h" CMAKE_HAVE_PTHREAD_H)
|
||||
IF(CMAKE_HAVE_PTHREAD_H)
|
||||
|
||||
#
|
||||
# We have pthread.h
|
||||
# Let's check for the library now.
|
||||
#
|
||||
SET(CMAKE_HAVE_THREADS_LIBRARY)
|
||||
IF(NOT THREADS_HAVE_PTHREAD_ARG)
|
||||
|
||||
# Do we have -lpthreads
|
||||
CHECK_LIBRARY_EXISTS(pthreads pthread_create "" CMAKE_HAVE_PTHREADS_CREATE)
|
||||
IF(CMAKE_HAVE_PTHREADS_CREATE)
|
||||
SET(CMAKE_THREAD_LIBS_INIT "-lpthreads")
|
||||
SET(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||
SET(Threads_FOUND TRUE)
|
||||
ENDIF()
|
||||
|
||||
# Ok, how about -lpthread
|
||||
CHECK_LIBRARY_EXISTS(pthread pthread_create "" CMAKE_HAVE_PTHREAD_CREATE)
|
||||
IF(CMAKE_HAVE_PTHREAD_CREATE)
|
||||
SET(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
||||
SET(Threads_FOUND TRUE)
|
||||
SET(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_SYSTEM MATCHES "SunOS.*")
|
||||
# On sun also check for -lthread
|
||||
CHECK_LIBRARY_EXISTS(thread thr_create "" CMAKE_HAVE_THR_CREATE)
|
||||
IF(CMAKE_HAVE_THR_CREATE)
|
||||
SET(CMAKE_THREAD_LIBS_INIT "-lthread")
|
||||
SET(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||
SET(Threads_FOUND TRUE)
|
||||
ENDIF()
|
||||
ENDIF(CMAKE_SYSTEM MATCHES "SunOS.*")
|
||||
|
||||
ENDIF(NOT THREADS_HAVE_PTHREAD_ARG)
|
||||
|
||||
IF(NOT CMAKE_HAVE_THREADS_LIBRARY)
|
||||
# If we did not found -lpthread, -lpthread, or -lthread, look for -pthread
|
||||
IF("THREADS_HAVE_PTHREAD_ARG" MATCHES "^THREADS_HAVE_PTHREAD_ARG")
|
||||
MESSAGE(STATUS "Check if compiler accepts -pthread")
|
||||
TRY_RUN(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_ROOT}/Modules/CheckForPthreads.c
|
||||
CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread
|
||||
COMPILE_OUTPUT_VARIABLE OUTPUT)
|
||||
|
||||
IF(THREADS_HAVE_PTHREAD_ARG)
|
||||
IF(THREADS_PTHREAD_ARG MATCHES "^2$")
|
||||
SET(Threads_FOUND TRUE)
|
||||
MESSAGE(STATUS "Check if compiler accepts -pthread - yes")
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Check if compiler accepts -pthread - no")
|
||||
FILE(APPEND
|
||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||
"Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Check if compiler accepts -pthread - no")
|
||||
FILE(APPEND
|
||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||
"Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n")
|
||||
ENDIF()
|
||||
|
||||
ENDIF("THREADS_HAVE_PTHREAD_ARG" MATCHES "^THREADS_HAVE_PTHREAD_ARG")
|
||||
|
||||
IF(THREADS_HAVE_PTHREAD_ARG)
|
||||
SET(Threads_FOUND TRUE)
|
||||
SET(CMAKE_THREAD_LIBS_INIT "-pthread")
|
||||
ENDIF()
|
||||
|
||||
ENDIF(NOT CMAKE_HAVE_THREADS_LIBRARY)
|
||||
ENDIF(CMAKE_HAVE_PTHREAD_H)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_THREAD_LIBS_INIT)
|
||||
SET(CMAKE_USE_PTHREADS_INIT 1)
|
||||
SET(Threads_FOUND TRUE)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_SYSTEM MATCHES "Windows"
|
||||
AND NOT THREADS_USE_PTHREADS_WIN32)
|
||||
SET(CMAKE_USE_WIN32_THREADS_INIT 1)
|
||||
SET(Threads_FOUND TRUE)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_USE_PTHREADS_INIT)
|
||||
IF(CMAKE_SYSTEM MATCHES "HP-UX-*")
|
||||
# Use libcma if it exists and can be used. It provides more
|
||||
# symbols than the plain pthread library. CMA threads
|
||||
# have actually been deprecated:
|
||||
# http://docs.hp.com/en/B3920-90091/ch12s03.html#d0e11395
|
||||
# http://docs.hp.com/en/947/d8.html
|
||||
# but we need to maintain compatibility here.
|
||||
# The CMAKE_HP_PTHREADS setting actually indicates whether CMA threads
|
||||
# are available.
|
||||
CHECK_LIBRARY_EXISTS(cma pthread_attr_create "" CMAKE_HAVE_HP_CMA)
|
||||
IF(CMAKE_HAVE_HP_CMA)
|
||||
SET(CMAKE_THREAD_LIBS_INIT "-lcma")
|
||||
SET(CMAKE_HP_PTHREADS_INIT 1)
|
||||
SET(Threads_FOUND TRUE)
|
||||
ENDIF(CMAKE_HAVE_HP_CMA)
|
||||
SET(CMAKE_USE_PTHREADS_INIT 1)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_SYSTEM MATCHES "OSF1-V*")
|
||||
SET(CMAKE_USE_PTHREADS_INIT 0)
|
||||
SET(CMAKE_THREAD_LIBS_INIT )
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_SYSTEM MATCHES "CYGWIN_NT*")
|
||||
SET(CMAKE_USE_PTHREADS_INIT 1)
|
||||
SET(Threads_FOUND TRUE)
|
||||
SET(CMAKE_THREAD_LIBS_INIT )
|
||||
SET(CMAKE_USE_WIN32_THREADS_INIT 0)
|
||||
ENDIF()
|
||||
ENDIF(CMAKE_USE_PTHREADS_INIT)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
IF(_Threads_ptwin32)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Threads DEFAULT_MSG
|
||||
THREADS_PTHREADS_WIN32_LIBRARY THREADS_PTHREADS_INCLUDE_DIR)
|
||||
ELSE()
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Threads DEFAULT_MSG Threads_FOUND)
|
||||
ENDIF()
|
38
Software/BTLE/host/cmake/modules/FindUSB1.cmake
Normal file
38
Software/BTLE/host/cmake/modules/FindUSB1.cmake
Normal file
@ -0,0 +1,38 @@
|
||||
# - Try to find the freetype library
|
||||
# Once done this defines
|
||||
#
|
||||
# LIBUSB_FOUND - system has libusb
|
||||
# LIBUSB_INCLUDE_DIR - the libusb include directory
|
||||
# LIBUSB_LIBRARIES - Link these to use libusb
|
||||
|
||||
# Copyright (c) 2006, 2008 Laurent Montel, <montel@kde.org>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
|
||||
if (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
|
||||
|
||||
# in cache already
|
||||
set(LIBUSB_FOUND TRUE)
|
||||
|
||||
else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
|
||||
IF (NOT WIN32)
|
||||
# use pkg-config to get the directories and then use these values
|
||||
# in the FIND_PATH() and FIND_LIBRARY() calls
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(PC_LIBUSB libusb-1.0)
|
||||
ENDIF(NOT WIN32)
|
||||
|
||||
FIND_PATH(LIBUSB_INCLUDE_DIR libusb.h
|
||||
PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
|
||||
|
||||
FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb-1.0
|
||||
PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES)
|
||||
|
||||
endif (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
|
17
Software/BTLE/matlab/get_number.m
Normal file
17
Software/BTLE/matlab/get_number.m
Normal file
@ -0,0 +1,17 @@
|
||||
function a = get_number
|
||||
a = [0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 ...
|
||||
1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 ...
|
||||
1 1 1 0 1 1 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 ...
|
||||
1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 ...
|
||||
1 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 ...
|
||||
0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 ...
|
||||
0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 1 0 1 1 ...
|
||||
0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 1 ...
|
||||
1 0 0 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 0 0 0 1 1 0 ...
|
||||
1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 1 ...
|
||||
0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 0 0 0 ...
|
||||
1 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 ...
|
||||
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 ...
|
||||
1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 ...
|
||||
1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 ...
|
||||
1 1 0 0 1 0 1 1 1 1 0 0 0 1 1 0 ];
|
128
Software/BTLE/matlab/get_number1.m
Normal file
128
Software/BTLE/matlab/get_number1.m
Normal file
@ -0,0 +1,128 @@
|
||||
function a = get_number1
|
||||
a = [127 0 127 0 127 0 127 0 127 0 127 -2 127 -10 122 -35 105 -72 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 73 104 44 119 44 119 73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 106 -71 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 73 104 44 119 44 119 73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 106 71 125 25 125 -25 106 -71 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 105 72 122 35 127 10 ...
|
||||
127 2 127 0 127 0 127 0 127 0 127 0 127 0 127 0 ];
|
31
Software/BTLE/matlab/get_signal_from_hackrf_bin.m
Normal file
31
Software/BTLE/matlab/get_signal_from_hackrf_bin.m
Normal file
@ -0,0 +1,31 @@
|
||||
function [s, status] = get_signal_from_hackrf_bin(filename, num_sample_read)
|
||||
s = int8(-1);
|
||||
status = false;
|
||||
|
||||
fid = fopen(filename);
|
||||
|
||||
if fid == -1
|
||||
disp('get_signal_from_hackrf_bin: Can not open file!');
|
||||
status = true;
|
||||
return;
|
||||
end
|
||||
|
||||
[s, count] = fread(fid, num_sample_read*2, 'int8');
|
||||
fclose(fid);
|
||||
|
||||
% s = int8(s);
|
||||
|
||||
if num_sample_read~=inf && count ~= (num_sample_read*2)
|
||||
disp('get_signal_from_hackrf_bin: No enough samples in the file!');
|
||||
status = true;
|
||||
return;
|
||||
end
|
||||
|
||||
% s = single( (s(1:2:end) + 1i.*s(2:2:end))./128 );
|
||||
% s = (s(1:2:end) + 1i.*s(2:2:end))./128;
|
||||
|
||||
s = complex(s(1:2:end), s(2:2:end));
|
||||
|
||||
% len_s = length(s);
|
||||
%
|
||||
% s = s((len_s/2)+1:end);
|
32769
Software/BTLE/matlab/sample_iq_4msps.txt
Normal file
32769
Software/BTLE/matlab/sample_iq_4msps.txt
Normal file
File diff suppressed because it is too large
Load Diff
18
Software/BTLE/matlab/save_int_var_for_c.m
Normal file
18
Software/BTLE/matlab/save_int_var_for_c.m
Normal file
@ -0,0 +1,18 @@
|
||||
function save_int_var_for_c(a, type_and_name, filename, access_mode)
|
||||
fid = fopen(filename, access_mode);
|
||||
if fid == -1
|
||||
disp(['save_var_for_c: fopen' filename ' failed!']);
|
||||
return;
|
||||
end
|
||||
|
||||
fprintf(fid, [type_and_name, '[%d] = {'], length(a) );
|
||||
for i = 1 : length(a)
|
||||
if mod(i-1, 24) == 0
|
||||
fprintf(fid, '\n');
|
||||
end
|
||||
fprintf(fid, '%d, ', a(i));
|
||||
end
|
||||
fprintf(fid, '};\n\n');
|
||||
|
||||
fclose(fid);
|
||||
|
22
Software/BTLE/matlab/save_int_var_for_c_2d.m
Normal file
22
Software/BTLE/matlab/save_int_var_for_c_2d.m
Normal file
@ -0,0 +1,22 @@
|
||||
function save_int_var_for_c_2d(a, type_and_name, filename, access_mode)
|
||||
fid = fopen(filename, access_mode);
|
||||
if fid == -1
|
||||
disp(['save_int_var_for_c_2d: fopen' filename ' failed!']);
|
||||
return;
|
||||
end
|
||||
|
||||
[num_row, num_col] = size(a);
|
||||
|
||||
fprintf(fid, [type_and_name, '[%d][%d] = {'], num_row, num_col );
|
||||
for j = 1 : num_row
|
||||
fprintf(fid, '\n{');
|
||||
for i = 1 : num_col
|
||||
fprintf(fid, '%d, ', a(j,i));
|
||||
end
|
||||
fprintf(fid, '},');
|
||||
end
|
||||
|
||||
fprintf(fid, '\n};\n\n');
|
||||
|
||||
fclose(fid);
|
||||
|
45
Software/BTLE/matlab/scramble_gen.m
Normal file
45
Software/BTLE/matlab/scramble_gen.m
Normal file
@ -0,0 +1,45 @@
|
||||
function a = scramble_gen(channel_number, num_bit, filename, varargin)
|
||||
|
||||
bit_store = zeros(1, 7);
|
||||
bit_store_update = zeros(1, 7);
|
||||
|
||||
channel_number_bin = dec2bin(channel_number, 6);
|
||||
|
||||
bit_store(1) = 1;
|
||||
bit_store(2) = ( channel_number_bin(1) == '1' );
|
||||
bit_store(3) = ( channel_number_bin(2) == '1' );
|
||||
bit_store(4) = ( channel_number_bin(3) == '1' );
|
||||
bit_store(5) = ( channel_number_bin(4) == '1' );
|
||||
bit_store(6) = ( channel_number_bin(5) == '1' );
|
||||
bit_store(7) = ( channel_number_bin(6) == '1' );
|
||||
|
||||
bit_seq = zeros(1, num_bit);
|
||||
for i = 1 : num_bit
|
||||
bit_seq(i) = bit_store(7);
|
||||
|
||||
bit_store_update(1) = bit_store(7);
|
||||
|
||||
bit_store_update(2) = bit_store(1);
|
||||
bit_store_update(3) = bit_store(2);
|
||||
bit_store_update(4) = bit_store(3);
|
||||
|
||||
bit_store_update(5) = mod(bit_store(4)+bit_store(7), 2);
|
||||
|
||||
bit_store_update(6) = bit_store(5);
|
||||
bit_store_update(7) = bit_store(6);
|
||||
|
||||
bit_store = bit_store_update;
|
||||
end
|
||||
|
||||
a = zeros(1, num_bit/8);
|
||||
|
||||
for i = 0 : 8 : num_bit-1
|
||||
idx = floor(i/8) + 1;
|
||||
a(idx) = bit_seq(i+1) + bit_seq(i+2)*2 + bit_seq(i+3)*4 + bit_seq(i+4)*8 + bit_seq(i+5)*16 + bit_seq(i+6)*32 + bit_seq(i+7)*64 + bit_seq(i+8)*128;
|
||||
end
|
||||
|
||||
if nargin == 3
|
||||
save_int_var_for_c(a, ['const uint8_t const scramble_table_ch' num2str(channel_number)], filename, 'w');
|
||||
end
|
||||
|
||||
|
333
Software/BTLE/matlab/test_btle_rx.m
Normal file
333
Software/BTLE/matlab/test_btle_rx.m
Normal file
@ -0,0 +1,333 @@
|
||||
function test_btle_rx(channel_number, varargin)
|
||||
sample_per_symbol = 4;
|
||||
|
||||
if nargin<=0 || nargin >2
|
||||
disp('Wrong number of input parameters!');
|
||||
return;
|
||||
end
|
||||
|
||||
if nargin == 2
|
||||
% 'sample_iq_4msps.txt'
|
||||
filename = varargin{1};
|
||||
a = load(filename);
|
||||
a = a';
|
||||
a = a(:)';
|
||||
% a = a(2:end-1);
|
||||
a = a(1:2:end) + 1i.*a(2:2:end);
|
||||
else
|
||||
symbol_rate = 1e6;
|
||||
|
||||
sampling_rate = sample_per_symbol*symbol_rate;
|
||||
cap_time = 1; % in second
|
||||
|
||||
num_samples = cap_time*sampling_rate;
|
||||
if channel_number == 39
|
||||
freq = 2480000000;
|
||||
elseif channel_number == 37
|
||||
freq = 2402000000;
|
||||
elseif channel_number == 38
|
||||
freq = 2426000000;
|
||||
elseif channel_number >=0 && channel_number <= 10
|
||||
freq = 2404000000 + channel_number*2000000;
|
||||
elseif channel_number >=11 && channel_number <= 36
|
||||
freq = 2428000000 + (channel_number-11)*2000000;
|
||||
end
|
||||
|
||||
ant_gain = 0; % 0 turn off, 1 turn on
|
||||
lna_gain = 40; %0-40dB, 8dB steps
|
||||
vga_gain = 6; %0-62dB, 2dB steps
|
||||
|
||||
cmd_str = ['hackrf_transfer -f ' num2str(freq) ' -a ' num2str(ant_gain) ' -l ' num2str(lna_gain) ' -g ' num2str(vga_gain) ' -s ' num2str(sampling_rate) ' -n ' num2str(num_samples) ' -b 1000000 -r hackrf_tmp_cap.bin'];
|
||||
|
||||
delete hackrf_tmp_cap.bin;
|
||||
[status, cmd_out] = system(cmd_str, '-echo');
|
||||
% disp(cmd_out);
|
||||
if status == 0
|
||||
a = get_signal_from_hackrf_bin('hackrf_tmp_cap.bin', inf);
|
||||
else
|
||||
disp('Abnormal status! Return directly!');
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
pdu_type_str = {'ADV_IND', 'ADV_DIRECT_IND', 'ADV_NONCONN_IND', 'SCAN_REQ', 'SCAN_RSP', 'CONNECT_REQ', 'ADV_SCAN_IND', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved'};
|
||||
|
||||
|
||||
% subplot(3,1,1); plot(abs(a));
|
||||
% subplot(3,1,2); plot(angle(a));
|
||||
% subplot(3,1,3); plot(angle(a(2:end)./a(1:end-1)), 'r.-');
|
||||
|
||||
max_num_scramble_bits = (39 + 3)*8; % 39 is maximum pdu length in octets; 3 is the number of CRC post-fix octets.
|
||||
scramble_bits = scramble_gen(channel_number, max_num_scramble_bits);
|
||||
|
||||
match_bit = de2bi(hex2dec('8E89BED6AA'), 40, 'right-msb');
|
||||
num_pdu_header_bits = 16;
|
||||
sp = 1;
|
||||
disp('Start demodulation ...');
|
||||
%plot(abs(a)); drawnow;
|
||||
pkt_count = 0;
|
||||
while 1
|
||||
% disp(' ');
|
||||
sp_new = search_unique_bits(a(sp:end), match_bit, sample_per_symbol);
|
||||
if sp_new == -1
|
||||
break;
|
||||
end
|
||||
disp(num2str(a(sp_new:(sp_new+7))));
|
||||
disp(num2str(sp + sp_new -1));
|
||||
sp = sp + sp_new -1 + length(match_bit)*sample_per_symbol;
|
||||
pkt_count = pkt_count + 1;
|
||||
% disp(['relative sp ' num2str(sp_new) ' absolute sp ' num2str(sp)]);
|
||||
|
||||
% pdu header
|
||||
pdu_header_bits = demod_bits(a(sp:end), num_pdu_header_bits, sample_per_symbol);
|
||||
disp(num2str(a(sp:(sp+7))));
|
||||
pdu_header_bits = xor(pdu_header_bits, scramble_bits(1:num_pdu_header_bits));
|
||||
[pdu_type, tx_add, rx_add, payload_len] = parse_adv_pdu_header_bits(pdu_header_bits);
|
||||
sp = sp + num_pdu_header_bits*sample_per_symbol;
|
||||
|
||||
if payload_len<6 || payload_len>37
|
||||
disp(['Pkt' num2str(pkt_count) ' Ch' num2str(channel_number) ' AccessAddr8E89BED6 ADV_PDU_Type' num2str(pdu_type) '(' pdu_type_str{pdu_type+1} ') TxAdd' num2str(tx_add) ' RxAdd' num2str(rx_add) ' PayloadLen' num2str(payload_len)]);
|
||||
continue;
|
||||
end
|
||||
|
||||
% pdu payload + 3 crc octets
|
||||
num_pdu_payload_crc_bits = (payload_len+3)*8;
|
||||
pdu_payload_crc_bits = demod_bits(a(sp:end), num_pdu_payload_crc_bits, sample_per_symbol);
|
||||
pdu_payload_crc_bits = xor(pdu_payload_crc_bits, scramble_bits( (num_pdu_header_bits+1) : (num_pdu_header_bits+num_pdu_payload_crc_bits)));
|
||||
|
||||
payload_parse_result_str = parse_adv_pdu_payload(pdu_payload_crc_bits(1:(end-3*8)), pdu_type);
|
||||
|
||||
crc_24bits = ble_crc([pdu_header_bits pdu_payload_crc_bits(1:(end-3*8))], '555555');
|
||||
% disp(num2str(crc_24bits));
|
||||
% disp(num2str(pdu_payload_crc_bits((end-3*8+1):end)));
|
||||
if sum(crc_24bits==pdu_payload_crc_bits((end-3*8+1):end)) == 24
|
||||
crc_str = 'CRC:OK';
|
||||
else
|
||||
crc_str = 'CRC:Bad';
|
||||
end
|
||||
disp(['Pkt' num2str(pkt_count) ' Ch' num2str(channel_number) ' AccessAddr8E89BED6 ADV_PDU_Type' num2str(pdu_type) '(' pdu_type_str{pdu_type+1} ') TxAdd' num2str(tx_add) ' RxAdd' num2str(rx_add) ' PayloadLen' num2str(payload_len) ' ' payload_parse_result_str ' ' crc_str]);
|
||||
|
||||
sp = sp + num_pdu_payload_crc_bits*sample_per_symbol;
|
||||
end
|
||||
|
||||
function bytes_str_out = reorder_bytes_str(bytes_str_in)
|
||||
bytes_str_out = vec2mat(bytes_str_in, 2);
|
||||
bytes_str_out = bytes_str_out(end:-1:1,:);
|
||||
bytes_str_out = bytes_str_out.';
|
||||
bytes_str_out = bytes_str_out(:).';
|
||||
|
||||
function payload_parse_result_str = parse_adv_pdu_payload(payload_bits, pdu_type)
|
||||
if length(payload_bits)<6*8
|
||||
payload_parse_result_str = ['Payload Too Short (only ' num2str(length(payload_bits)) ' bits)'];
|
||||
return;
|
||||
end
|
||||
|
||||
tmp_bits = vec2mat(payload_bits, 8);
|
||||
payload_bytes = dec2hex(bi2de(tmp_bits, 'right-msb'), 2);
|
||||
payload_bytes = payload_bytes.';
|
||||
payload_bytes = payload_bytes(:).';
|
||||
|
||||
|
||||
if pdu_type == 0 || pdu_type == 2 || pdu_type == 6
|
||||
AdvA = reorder_bytes_str( payload_bytes(1 : (2*6)) );
|
||||
AdvData = payload_bytes((2*6+1):end);
|
||||
payload_parse_result_str = ['AdvA:' AdvA ' AdvData:' AdvData];
|
||||
elseif pdu_type == 1
|
||||
AdvA = reorder_bytes_str( payload_bytes(1 : (2*6)) );
|
||||
InitA = reorder_bytes_str( payload_bytes((2*6+1):end) );
|
||||
payload_parse_result_str = ['AdvA:' AdvA ' InitA:' InitA];
|
||||
elseif pdu_type == 3 % SCAN_REQ
|
||||
ScanA = reorder_bytes_str( payload_bytes(1 : (2*6)) );
|
||||
AdvA = reorder_bytes_str( payload_bytes((2*6+1):end) );
|
||||
payload_parse_result_str = ['ScanA:' ScanA ' AdvA:' AdvA];
|
||||
elseif pdu_type == 4 % SCAN_RSP
|
||||
AdvA = reorder_bytes_str( payload_bytes(1 : (2*6)) );
|
||||
ScanRspData = payload_bytes((2*6+1):end);
|
||||
payload_parse_result_str = ['AdvA:' AdvA ' ScanRspData:' ScanRspData];
|
||||
elseif pdu_type == 5 % CONNECT_REQ
|
||||
if length(payload_bits) ~= 34*8
|
||||
payload_parse_result_str = ['Payload Too Short (only ' num2str(length(payload_bits)) ' bits)'];
|
||||
return;
|
||||
end
|
||||
InitA = reorder_bytes_str( payload_bytes(1 : (2*6)) );
|
||||
AdvA = reorder_bytes_str( payload_bytes((2*6+1):(2*6+2*6)) );
|
||||
AA = reorder_bytes_str( payload_bytes((2*6+2*6+1):(2*6+2*6+2*4)) );
|
||||
CRCInit = payload_bytes((2*6+2*6+2*4+1):(2*6+2*6+2*4+2*3));
|
||||
WinSize = payload_bytes((2*6+2*6+2*4+2*3+1):(2*6+2*6+2*4+2*3+2*1));
|
||||
WinOffset = reorder_bytes_str( payload_bytes((2*6+2*6+2*4+2*3+2*1+1):(2*6+2*6+2*4+2*3+2*1+2*2)) );
|
||||
Interval = reorder_bytes_str( payload_bytes((2*6+2*6+2*4+2*3+2*1+2*2+1):(2*6+2*6+2*4+2*3+2*1+2*2+2*2)) );
|
||||
Latency = reorder_bytes_str( payload_bytes((2*6+2*6+2*4+2*3+2*1+2*2+2*2+1):(2*6+2*6+2*4+2*3+2*1+2*2+2*2+2*2)) );
|
||||
Timeout = reorder_bytes_str( payload_bytes((2*6+2*6+2*4+2*3+2*1+2*2+2*2+2*2+1):(2*6+2*6+2*4+2*3+2*1+2*2+2*2+2*2+2*2)) );
|
||||
ChM = reorder_bytes_str( payload_bytes((2*6+2*6+2*4+2*3+2*1+2*2+2*2+2*2+2*2+1):(2*6+2*6+2*4+2*3+2*1+2*2+2*2+2*2+2*2+2*5)) );
|
||||
tmp_bits = payload_bits((end-7) : end);
|
||||
Hop = num2str( bi2de(tmp_bits(1:5), 'right-msb') );
|
||||
SCA = num2str( bi2de(tmp_bits(6:end), 'right-msb') );
|
||||
payload_parse_result_str = ['InitA:' InitA ' AdvA:' AdvA ...
|
||||
' AA:' AA ...
|
||||
' CRCInit:' CRCInit ...
|
||||
' WinSize:' WinSize ...
|
||||
' WinOffset:' WinOffset ...
|
||||
' Interval:' Interval ...
|
||||
' Latency:' Latency ...
|
||||
' Timeout:' Timeout ...
|
||||
' ChM:' ChM ...
|
||||
' Hop:' Hop ...
|
||||
' SCA:' SCA];
|
||||
else
|
||||
payload_parse_result_str = 'Reserved PDU type';
|
||||
end
|
||||
|
||||
function reg_bits = ble_crc(pdu, init_reg_bits)
|
||||
|
||||
reg_bits = de2bi(hex2dec(init_reg_bits), 24, 'right-msb');
|
||||
for i = 1 : length(pdu)
|
||||
reg_bits = LFSR_crc(reg_bits, pdu(i));
|
||||
end
|
||||
reg_bits = reg_bits(end:-1:1);
|
||||
|
||||
function [seq] = LFSR_crc(old_seq, pdu_bit)
|
||||
proc_bit = xor(old_seq(24), pdu_bit);
|
||||
|
||||
seq(1) = proc_bit;
|
||||
seq(2) = xor(old_seq(1), proc_bit);
|
||||
seq(3) = old_seq(2);
|
||||
seq(4) = xor(old_seq(3), proc_bit);
|
||||
seq(5) = xor(old_seq(4), proc_bit);
|
||||
seq(6) = old_seq(5);
|
||||
seq(7) = xor(old_seq(6), proc_bit);
|
||||
seq(8:9) = old_seq(7:8);
|
||||
seq(10) = xor(old_seq(9), proc_bit);
|
||||
seq(11) = xor(old_seq(10), proc_bit);
|
||||
seq(12:24) = old_seq(11:23);
|
||||
|
||||
|
||||
function scramble_bits = scramble_gen(channel_number, num_bit)
|
||||
|
||||
bit_store = zeros(1, 7);
|
||||
bit_store_update = zeros(1, 7);
|
||||
|
||||
% channel_number_bin = dec2bin(channel_number, 6);
|
||||
%
|
||||
% bit_store(1) = 1;
|
||||
% bit_store(2) = ( channel_number_bin(1) == '1' );
|
||||
% bit_store(3) = ( channel_number_bin(2) == '1' );
|
||||
% bit_store(4) = ( channel_number_bin(3) == '1' );
|
||||
% bit_store(5) = ( channel_number_bin(4) == '1' );
|
||||
% bit_store(6) = ( channel_number_bin(5) == '1' );
|
||||
% bit_store(7) = ( channel_number_bin(6) == '1' );
|
||||
|
||||
channel_number_bin = de2bi(channel_number, 6, 'left-msb');
|
||||
|
||||
bit_store(1) = 1;
|
||||
bit_store(2:7) = channel_number_bin;
|
||||
|
||||
bit_seq = zeros(1, num_bit);
|
||||
for i = 1 : num_bit
|
||||
bit_seq(i) = bit_store(7);
|
||||
|
||||
bit_store_update(1) = bit_store(7);
|
||||
|
||||
bit_store_update(2) = bit_store(1);
|
||||
bit_store_update(3) = bit_store(2);
|
||||
bit_store_update(4) = bit_store(3);
|
||||
|
||||
bit_store_update(5) = mod(bit_store(4)+bit_store(7), 2);
|
||||
|
||||
bit_store_update(6) = bit_store(5);
|
||||
bit_store_update(7) = bit_store(6);
|
||||
|
||||
bit_store = bit_store_update;
|
||||
end
|
||||
|
||||
scramble_bits = bit_seq;
|
||||
|
||||
|
||||
function [pdu_type, tx_add, rx_add, payload_len] = parse_adv_pdu_header_bits(bits)
|
||||
% pdu_type_str = {'ADV_IND', 'ADV_DIRECT_IND', 'ADV_NONCONN_IND', 'SCAN_REQ', 'SCAN_RSP', 'CONNECT_REQ', 'ADV_SCAN_IND', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'Reserved'};
|
||||
pdu_type = bi2de(bits(1:4), 'right-msb');
|
||||
% disp([' PDU Type: ' pdu_type_str{pdu_type+1}]);
|
||||
|
||||
tx_add = bits(7);
|
||||
% disp([' Tx Add: ' num2str(tx_add)]);
|
||||
|
||||
rx_add = bits(8);
|
||||
% disp([' Rx Add: ' num2str(rx_add)]);
|
||||
|
||||
payload_len = bi2de(bits(9:14), 'right-msb');
|
||||
% disp(['Payload Len: ' num2str(payload_len)]);
|
||||
|
||||
|
||||
function bits = demod_bits(a, num_bits, sample_per_symbol)
|
||||
|
||||
bits = zeros(1, num_bits);
|
||||
k = 1;
|
||||
for i = 1 : sample_per_symbol : (1 + (num_bits-1)*sample_per_symbol)
|
||||
I0 = real(a(i));
|
||||
Q0 = imag(a(i));
|
||||
I1 = real(a(i+1));
|
||||
Q1 = imag(a(i+1));
|
||||
|
||||
if (I0*Q1 - I1*Q0) > 0
|
||||
bits(k) = 1;
|
||||
else
|
||||
bits(k) = 0;
|
||||
end
|
||||
k = k + 1;
|
||||
end
|
||||
|
||||
function sp = search_unique_bits(a, match_bit, sample_per_symbol)
|
||||
|
||||
demod_buf_len = length(match_bit); % in bits
|
||||
demod_buf_offset = 0;
|
||||
|
||||
demod_buf = zeros(sample_per_symbol, demod_buf_len);
|
||||
i = 1;
|
||||
while 1
|
||||
|
||||
sp = mod(demod_buf_offset-demod_buf_len+1, demod_buf_len);
|
||||
|
||||
for j = 1 : sample_per_symbol
|
||||
I0 = real(a(i+j-1));
|
||||
Q0 = imag(a(i+j-1));
|
||||
I1 = real(a(i+j-1+1));
|
||||
Q1 = imag(a(i+j-1+1));
|
||||
|
||||
if (I0*Q1 - I1*Q0) > 0
|
||||
demod_buf(j, demod_buf_offset+1) = 1;
|
||||
else
|
||||
demod_buf(j, demod_buf_offset+1) = 0;
|
||||
end
|
||||
|
||||
k = sp;
|
||||
unequal_flag = 0;
|
||||
for p = 1 : demod_buf_len
|
||||
if demod_buf(j, k+1) ~= match_bit(p);
|
||||
unequal_flag = 1;
|
||||
break;
|
||||
end
|
||||
k = mod(k + 1, demod_buf_len);
|
||||
end
|
||||
|
||||
if unequal_flag==0
|
||||
break;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if unequal_flag==0
|
||||
sp = i+j-1-(demod_buf_len-1)*sample_per_symbol;
|
||||
% disp(num2str(sp));
|
||||
return;
|
||||
end
|
||||
|
||||
i = i + sample_per_symbol;
|
||||
if (i+sample_per_symbol) > length(a)
|
||||
break;
|
||||
end
|
||||
|
||||
demod_buf_offset = mod(demod_buf_offset+1, demod_buf_len);
|
||||
|
||||
end
|
||||
|
||||
sp = -1;
|
||||
phase = -1;
|
120
Software/BTLE/matlab/test_fixed_point.m
Normal file
120
Software/BTLE/matlab/test_fixed_point.m
Normal file
@ -0,0 +1,120 @@
|
||||
clear all;
|
||||
close all;
|
||||
|
||||
% original float point version
|
||||
gauss_coef = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.231548e-14, 2.007605e-11, 7.561773e-09, 1.197935e-06, 8.050684e-05, 2.326833e-03, 2.959908e-02, 1.727474e-01, 4.999195e-01, 8.249246e-01, 9.408018e-01, 8.249246e-01, 4.999195e-01, 1.727474e-01, 2.959908e-02, 2.326833e-03, 8.050684e-05, 1.197935e-06, 7.561773e-09, 2.007605e-11, 2.231548e-14, 0];
|
||||
%plot(gauss_coef, 'r+-'); axis([0 length(gauss_coef) 0 0.0001]);
|
||||
|
||||
% short it to 16 points:
|
||||
gauss_coef = [7.561773e-09, 1.197935e-06, 8.050684e-05, 2.326833e-03, 2.959908e-02, 1.727474e-01, 4.999195e-01, 8.249246e-01, 9.408018e-01, 8.249246e-01, 4.999195e-01, 1.727474e-01, 2.959908e-02, 2.326833e-03, 8.050684e-05, 1.197935e-06];
|
||||
%plot(gauss_coef, 'r+-');
|
||||
|
||||
SAMPLE_PER_SYMBOL = 4;
|
||||
LEN_GAUSS_FILTER = length(gauss_coef)/SAMPLE_PER_SYMBOL;
|
||||
MAX_NUM_PHY_BYTE = 47;
|
||||
MAX_NUM_PHY_SAMPLE = ((MAX_NUM_PHY_BYTE*8*SAMPLE_PER_SYMBOL)+(LEN_GAUSS_FILTER*SAMPLE_PER_SYMBOL));
|
||||
MOD_IDX = 0.5;
|
||||
AMPLITUDE = 127;
|
||||
tmp_phy_bit_over_sampling = zeros(1, MAX_NUM_PHY_SAMPLE + 2*LEN_GAUSS_FILTER*SAMPLE_PER_SYMBOL);
|
||||
tmp_phy_bit_over_sampling = zeros(1, MAX_NUM_PHY_SAMPLE);
|
||||
|
||||
num_bit = MAX_NUM_PHY_BYTE*8;
|
||||
%bit = round(rand(1, num_bit));
|
||||
bit = get_number;
|
||||
num_bit_oversample = num_bit*SAMPLE_PER_SYMBOL;
|
||||
len_gauss_oversample = LEN_GAUSS_FILTER*SAMPLE_PER_SYMBOL;
|
||||
num_sample = num_bit_oversample + len_gauss_oversample;
|
||||
|
||||
pre_len = len_gauss_oversample-1;
|
||||
tmp_phy_bit_over_sampling(1:pre_len) = 0.0;
|
||||
|
||||
post_sp = num_bit_oversample + pre_len + 1;
|
||||
post_ep = post_sp + pre_len - 1;
|
||||
tmp_phy_bit_over_sampling(post_sp:post_ep) = 0.0;
|
||||
|
||||
tmp_phy_bit_over_sampling((pre_len+1):(pre_len+num_bit_oversample)) = 0;
|
||||
tmp_phy_bit_over_sampling((pre_len+1):SAMPLE_PER_SYMBOL:(pre_len+num_bit_oversample)) = bit.*2 - 1;
|
||||
|
||||
% len_conv_result = length(tmp_phy_bit_over_sampling) - len_gauss_oversample + 1
|
||||
% = post_ep - len_gauss_oversample + 1
|
||||
% = num_bit_oversample + pre_len + 1 + pre_len - 1 - len_gauss_oversample + 1
|
||||
% = num_bit_oversample + 2*(len_gauss_oversample-1) - len_gauss_oversample + 1
|
||||
% = num_bit_oversample + len_gauss_oversample - 1
|
||||
len_conv_result = num_sample - 1;
|
||||
|
||||
% -------------------------------------- float point reference -----------------------------------------------
|
||||
for i = 1 : len_conv_result
|
||||
acc = 0;
|
||||
for j = 1 : len_gauss_oversample
|
||||
acc = acc + gauss_coef(len_gauss_oversample-j+1)*tmp_phy_bit_over_sampling(i+j-1); %num_sample - 1+len_gauss_oversample-1= length(tmp_phy_bit_over_sampling)
|
||||
end
|
||||
tmp_phy_bit_over_sampling1(i) = acc;
|
||||
end
|
||||
|
||||
tmp = 0;
|
||||
sample = zeros(1, 2*num_sample);
|
||||
sample(1) = round( cos(tmp)*AMPLITUDE );
|
||||
sample(2) = round( sin(tmp)*AMPLITUDE );
|
||||
for i=2:num_sample
|
||||
tmp = tmp + (pi*MOD_IDX)*tmp_phy_bit_over_sampling1(i-1)/(SAMPLE_PER_SYMBOL);
|
||||
sample((i-1)*2 + 1) = round( cos(tmp)*AMPLITUDE );
|
||||
sample((i-1)*2 + 2) = round( sin(tmp)*AMPLITUDE );
|
||||
end
|
||||
|
||||
% -------------------------------------------------- fixed point ------------- -----------------------------------------------
|
||||
tmp_phy_bit_over_sampling_int16 = int16(tmp_phy_bit_over_sampling);
|
||||
tmp_phy_bit_over_sampling1_int16 = int16(tmp_phy_bit_over_sampling1);
|
||||
gauss_coef_scale = 128;
|
||||
cos_table_size = 1024; % 0 to 2PI
|
||||
gauss_coef_int16 = int16(gauss_coef.*gauss_coef_scale);
|
||||
|
||||
cos_table_int8 = int8(zeros(1, cos_table_size));
|
||||
sin_table_int8 = int8(zeros(1, cos_table_size));
|
||||
for i=1:cos_table_size
|
||||
cos_table_int8(i) = int8(cos(2*pi*(i-1)/cos_table_size)*127);
|
||||
sin_table_int8(i) = int8(sin(2*pi*(i-1)/cos_table_size)*127);
|
||||
end
|
||||
|
||||
save_int_var_for_c(gauss_coef_int16./2, 'const int8_t const gauss_coef_int8', 'gauss_cos_sin_table.h', 'w');
|
||||
save_int_var_for_c(cos_table_int8, 'const int8_t const cos_table_int8', 'gauss_cos_sin_table.h', 'a');
|
||||
save_int_var_for_c(sin_table_int8, 'const int8_t const sin_table_int8', 'gauss_cos_sin_table.h', 'a');
|
||||
|
||||
for i = 1 : len_conv_result
|
||||
acc_int16 = int16(0);
|
||||
for j = 1 : len_gauss_oversample
|
||||
acc_int16 = acc_int16 + gauss_coef_int16(len_gauss_oversample-j+1)*tmp_phy_bit_over_sampling_int16(i+j-1);
|
||||
end
|
||||
tmp_phy_bit_over_sampling1_int16(i) = acc_int16;
|
||||
end
|
||||
|
||||
%figure;
|
||||
%subplot(2,1,1); plot(tmp_phy_bit_over_sampling1_int16); hold on;
|
||||
%plot(tmp_phy_bit_over_sampling1.*128, 'r.');
|
||||
%subplot(2,1,2); plot(abs(double(tmp_phy_bit_over_sampling1_int16)-tmp_phy_bit_over_sampling1.*128));
|
||||
|
||||
phase_per_step = 2*pi/cos_table_size;
|
||||
phase_delta_orig = ((pi*MOD_IDX)/SAMPLE_PER_SYMBOL)/gauss_coef_scale;
|
||||
enlarge_scale = phase_per_step/phase_delta_orig
|
||||
if enlarge_scale <1
|
||||
tmp_phy_bit_over_sampling1_int16 = tmp_phy_bit_over_sampling1_int16.*int16(1/enlarge_scale);
|
||||
else
|
||||
tmp_phy_bit_over_sampling1_int16 = tmp_phy_bit_over_sampling1_int16./int16(enlarge_scale);
|
||||
end
|
||||
|
||||
tmp_int16 = int16(0);
|
||||
sample_int16 = int8(zeros(1, 2*num_sample));
|
||||
sample_int16(1) = cos_table_int8(tmp_int16+1);
|
||||
sample_int16(2) = sin_table_int8(tmp_int16+1);
|
||||
for i=2:num_sample
|
||||
tmp_int16 = tmp_int16 + tmp_phy_bit_over_sampling1_int16(i-1);
|
||||
tmp_int16 = mod(tmp_int16, int16(cos_table_size));
|
||||
sample_int16((i-1)*2 + 1) = cos_table_int8(tmp_int16+1);
|
||||
sample_int16((i-1)*2 + 2) = sin_table_int8(tmp_int16+1);
|
||||
end
|
||||
|
||||
figure(1);
|
||||
subplot(2,1,1); plot(sample_int16);
|
||||
ref_sample = get_number1;
|
||||
%ref_sample = sample;
|
||||
hold on; plot(ref_sample, 'r.');
|
||||
subplot(2,1,2); plot((double(sample_int16)-ref_sample));
|
68
Software/BTLE/matlab/test_float_point.m
Normal file
68
Software/BTLE/matlab/test_float_point.m
Normal file
@ -0,0 +1,68 @@
|
||||
clear all;
|
||||
close all;
|
||||
|
||||
% original float point version
|
||||
gauss_coef = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.231548e-14, 2.007605e-11, 7.561773e-09, 1.197935e-06, 8.050684e-05, 2.326833e-03, 2.959908e-02, 1.727474e-01, 4.999195e-01, 8.249246e-01, 9.408018e-01, 8.249246e-01, 4.999195e-01, 1.727474e-01, 2.959908e-02, 2.326833e-03, 8.050684e-05, 1.197935e-06, 7.561773e-09, 2.007605e-11, 2.231548e-14, 0];
|
||||
%plot(gauss_coef, 'r+-'); axis([0 length(gauss_coef) 0 0.0001]);
|
||||
|
||||
% short it to 16 points:
|
||||
gauss_coef = [7.561773e-09, 1.197935e-06, 8.050684e-05, 2.326833e-03, 2.959908e-02, 1.727474e-01, 4.999195e-01, 8.249246e-01, 9.408018e-01, 8.249246e-01, 4.999195e-01, 1.727474e-01, 2.959908e-02, 2.326833e-03, 8.050684e-05, 1.197935e-06];
|
||||
%plot(gauss_coef, 'r+-');
|
||||
|
||||
SAMPLE_PER_SYMBOL = 4;
|
||||
LEN_GAUSS_FILTER = length(gauss_coef)/SAMPLE_PER_SYMBOL;
|
||||
MAX_NUM_PHY_BYTE = 47;
|
||||
MAX_NUM_PHY_SAMPLE = ((MAX_NUM_PHY_BYTE*8*SAMPLE_PER_SYMBOL)+(LEN_GAUSS_FILTER*SAMPLE_PER_SYMBOL));
|
||||
MOD_IDX = 0.5;
|
||||
AMPLITUDE = 127;
|
||||
tmp_phy_bit_over_sampling = zeros(1, MAX_NUM_PHY_SAMPLE + 2*LEN_GAUSS_FILTER*SAMPLE_PER_SYMBOL);
|
||||
tmp_phy_bit_over_sampling = zeros(1, MAX_NUM_PHY_SAMPLE);
|
||||
|
||||
num_bit = MAX_NUM_PHY_BYTE*8;
|
||||
%bit = round(rand(1, num_bit));
|
||||
bit = get_number;
|
||||
num_bit_oversample = num_bit*SAMPLE_PER_SYMBOL;
|
||||
len_gauss_oversample = LEN_GAUSS_FILTER*SAMPLE_PER_SYMBOL;
|
||||
num_sample = num_bit_oversample + len_gauss_oversample;
|
||||
|
||||
pre_len = len_gauss_oversample-1;
|
||||
tmp_phy_bit_over_sampling(1:pre_len) = 0.0;
|
||||
|
||||
post_sp = num_bit_oversample + pre_len + 1;
|
||||
post_ep = post_sp + pre_len - 1;
|
||||
tmp_phy_bit_over_sampling(post_sp:post_ep) = 0.0;
|
||||
|
||||
tmp_phy_bit_over_sampling((pre_len+1):(pre_len+num_bit_oversample)) = 0;
|
||||
tmp_phy_bit_over_sampling((pre_len+1):SAMPLE_PER_SYMBOL:(pre_len+num_bit_oversample)) = bit.*2 - 1;
|
||||
|
||||
% len_conv_result = length(tmp_phy_bit_over_sampling) - len_gauss_oversample + 1
|
||||
% = post_ep - len_gauss_oversample + 1
|
||||
% = num_bit_oversample + pre_len + 1 + pre_len - 1 - len_gauss_oversample + 1
|
||||
% = num_bit_oversample + 2*(len_gauss_oversample-1) - len_gauss_oversample + 1
|
||||
% = num_bit_oversample + len_gauss_oversample - 1
|
||||
len_conv_result = num_sample - 1;
|
||||
|
||||
% -------------------------------------- float point reference -----------------------------------------------
|
||||
for i = 1 : len_conv_result
|
||||
acc = 0;
|
||||
for j = 1 : len_gauss_oversample
|
||||
acc = acc + gauss_coef(len_gauss_oversample-j+1)*tmp_phy_bit_over_sampling(i+j-1); %num_sample - 1+len_gauss_oversample-1= length(tmp_phy_bit_over_sampling)
|
||||
end
|
||||
tmp_phy_bit_over_sampling1(i) = acc;
|
||||
end
|
||||
|
||||
tmp = 0;
|
||||
sample = zeros(1, 2*num_sample);
|
||||
sample(1) = round( cos(tmp)*AMPLITUDE );
|
||||
sample(2) = round( sin(tmp)*AMPLITUDE );
|
||||
for i=2:num_sample
|
||||
tmp = tmp + (pi*MOD_IDX)*tmp_phy_bit_over_sampling1(i-1)/(SAMPLE_PER_SYMBOL);
|
||||
sample((i-1)*2 + 1) = round( cos(tmp)*AMPLITUDE );
|
||||
sample((i-1)*2 + 2) = round( sin(tmp)*AMPLITUDE );
|
||||
end
|
||||
|
||||
figure(1);
|
||||
subplot(2,1,1); plot(sample);
|
||||
ref_sample = get_number1;
|
||||
hold on; plot(ref_sample, 'r.');
|
||||
subplot(2,1,2); plot(abs(sample-ref_sample));
|
10
Software/BTLE/matlab/test_scramble_gen_all_channel.m
Normal file
10
Software/BTLE/matlab/test_scramble_gen_all_channel.m
Normal file
@ -0,0 +1,10 @@
|
||||
clear all;
|
||||
close all;
|
||||
|
||||
num_bit = 42*8; % 42 = 2(pdu header) + 37(maximum payload length) + 3(CRC octets)
|
||||
a = zeros(40, num_bit/8);
|
||||
for channel_number = 0:39
|
||||
a(channel_number+1, :) = scramble_gen(channel_number, num_bit, ' ', 1);
|
||||
end
|
||||
|
||||
save_int_var_for_c_2d(a, 'const uint8_t const scramble_table', 'scramble_table.h', 'w');
|
128
Software/BTLE/usrp_replay_example/IQ_sample_for_matlab.txt
Normal file
128
Software/BTLE/usrp_replay_example/IQ_sample_for_matlab.txt
Normal file
@ -0,0 +1,128 @@
|
||||
...
|
||||
127 0 127 0 127 0 127 0 127 0 127 -2 127 -10 122 -35 105 -72 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 ...
|
||||
71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 ...
|
||||
106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 106 -71 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 73 104 44 119 44 119 73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 ...
|
||||
106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 106 -71 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 105 -72 122 -35 127 -10 ...
|
||||
127 -2 127 0 127 0 127 0 127 0 127 0 127 0 127 0
|
11
Software/BTLE/usrp_replay_example/README.md
Normal file
11
Software/BTLE/usrp_replay_example/README.md
Normal file
@ -0,0 +1,11 @@
|
||||
./btle_tx welcom_packets_discovery.txt
|
||||
|
||||
copy above command generated IQ_sample_for_matlab.txt into variable "c" of gen_float32_bin_for_usrp_replay.m.
|
||||
|
||||
run .m script in matlab or octave
|
||||
|
||||
replay above script generated btle_ch37_iq_float32_welcom_msg.bin in replay_for_btle_4Msps.grc.
|
||||
|
||||
Install LightBlue in your iPhone or other similar things of Android, and open the App.
|
||||
|
||||
You will see a welcome message "SDR Bluetooth LE welcome u!" on your phone.
|
Binary file not shown.
@ -0,0 +1,143 @@
|
||||
clear all;
|
||||
close all;
|
||||
|
||||
% copy from
|
||||
c = [...
|
||||
127 0 127 0 127 0 127 0 127 0 127 -2 127 -10 122 -35 105 -72 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 ...
|
||||
104 -73 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 ...
|
||||
71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 ...
|
||||
106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 106 -71 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 ...
|
||||
73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 104 73 73 104 44 119 44 119 ...
|
||||
73 104 104 73 119 44 119 44 104 73 73 104 44 119 44 119 73 104 104 73 119 44 119 44 ...
|
||||
104 73 73 104 44 119 44 119 73 104 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 ...
|
||||
-73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -73 -104 -44 -119 -44 -119 ...
|
||||
-73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 ...
|
||||
106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 106 -71 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 106 71 125 25 125 -25 ...
|
||||
106 -71 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 ...
|
||||
73 -104 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 73 104 106 71 125 25 125 -25 ...
|
||||
106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -104 -73 -119 -44 -119 -44 -104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -71 -106 -25 -125 25 -125 71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 ...
|
||||
-71 -106 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 71 106 104 73 119 44 119 44 ...
|
||||
104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 ...
|
||||
106 71 71 106 25 125 -25 125 -71 106 -104 73 -119 44 -119 44 -104 73 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -73 -104 -44 -119 -44 -119 -73 -104 -104 -73 -119 -44 -119 -44 -104 -73 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -106 -71 -125 -25 -125 25 ...
|
||||
-106 71 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 71 -106 25 -125 -25 -125 -71 -106 -104 -73 -119 -44 -119 -44 ...
|
||||
-104 -73 -73 -104 -44 -119 -44 -119 -73 -104 -106 -71 -125 -25 -125 25 -106 71 -71 106 -25 125 25 125 ...
|
||||
71 106 104 73 119 44 119 44 104 73 71 106 25 125 -25 125 -71 106 -106 71 -125 25 -125 -25 ...
|
||||
-106 -71 -71 -106 -25 -125 25 -125 71 -106 106 -71 125 -25 125 25 106 71 73 104 44 119 44 119 ...
|
||||
73 104 106 71 125 25 125 -25 106 -71 73 -104 44 -119 44 -119 73 -104 104 -73 119 -44 119 -44 ...
|
||||
104 -73 73 -104 44 -119 44 -119 73 -104 106 -71 125 -25 125 25 106 71 71 106 25 125 -25 125 ...
|
||||
-71 106 -104 73 -119 44 -119 44 -104 73 -73 104 -44 119 -44 119 -73 104 -104 73 -119 44 -119 44 ...
|
||||
-104 73 -73 104 -44 119 -44 119 -73 104 -106 71 -125 25 -125 -25 -106 -71 -71 -106 -25 -125 25 -125 ...
|
||||
71 -106 104 -73 119 -44 119 -44 104 -73 73 -104 44 -119 44 -119 73 -104 105 -72 122 -35 127 -10 ...
|
||||
127 -2 127 0 127 0 127 0 127 0 127 0 127 0 127 0 ];
|
||||
|
||||
c = c./256;
|
||||
|
||||
fid = fopen('btle_ch37_iq_float32_welcom_msg.bin','w');
|
||||
if fid == -1
|
||||
disp('fopen for write error!');
|
||||
return;
|
||||
end
|
||||
fwrite(fid, c, 'single');
|
||||
fclose(fid);
|
||||
|
995
Software/BTLE/usrp_replay_example/replay_for_btle_4Msps.grc
Normal file
995
Software/BTLE/usrp_replay_example/replay_for_btle_4Msps.grc
Normal file
@ -0,0 +1,995 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<?grc format='1' created='3.7.11'?>
|
||||
<flow_graph>
|
||||
<timestamp>Wed Jan 25 17:14:52 2017</timestamp>
|
||||
<block>
|
||||
<key>options</key>
|
||||
<param>
|
||||
<key>author</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>window_size</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>category</key>
|
||||
<value>[GRC Hier Blocks]</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>comment</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>description</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(8, 8)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>generate_options</key>
|
||||
<value>qt_gui</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>hier_block_src_path</key>
|
||||
<value>.:</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>top_block</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>max_nouts</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>qt_qss_theme</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>realtime_scheduling</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>run_command</key>
|
||||
<value>{python} -u {filename}</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>run_options</key>
|
||||
<value>prompt</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>run</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>thread_safe_setters</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>title</key>
|
||||
<value></value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>variable</key>
|
||||
<param>
|
||||
<key>comment</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(8, 160)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>samp_rate</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>value</key>
|
||||
<value>4e6</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>blocks_file_source</key>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>comment</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>file</key>
|
||||
<value>/home/jxj/Downloads/btle_ch37_iq_float32_welcom_msg.bin</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(232, 260)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>blocks_file_source_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>repeat</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>uhd_usrp_sink</key>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant0</key>
|
||||
<value>TX/RX</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw0</key>
|
||||
<value>samp_rate</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq0</key>
|
||||
<value>2402000000</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain0</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain0</key>
|
||||
<value>180</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant10</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw10</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq10</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain10</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain10</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant11</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw11</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq11</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain11</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain11</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant12</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw12</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq12</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain12</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain12</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant13</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw13</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq13</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain13</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain13</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant14</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw14</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq14</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain14</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain14</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant15</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw15</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq15</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain15</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain15</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant16</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw16</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq16</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain16</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain16</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant17</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw17</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq17</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain17</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain17</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant18</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw18</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq18</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain18</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain18</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant19</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw19</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq19</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain19</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain19</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant1</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw1</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq1</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain1</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain1</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant20</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw20</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq20</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain20</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain20</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant21</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw21</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq21</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain21</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain21</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant22</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw22</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq22</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain22</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain22</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant23</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw23</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq23</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain23</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain23</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant24</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw24</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq24</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain24</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain24</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant25</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw25</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq25</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain25</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain25</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant26</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw26</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq26</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain26</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain26</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant27</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw27</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq27</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain27</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain27</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant28</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw28</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq28</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain28</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain28</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant29</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw29</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq29</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain29</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain29</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant2</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw2</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq2</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain2</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain2</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant30</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw30</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq30</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain30</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain30</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant31</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw31</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq31</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain31</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain31</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant3</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw3</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq3</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain3</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain3</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant4</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw4</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq4</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain4</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain4</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant5</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw5</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq5</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain5</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain5</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant6</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw6</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq6</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain6</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain6</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant7</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw7</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq7</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain7</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain7</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant8</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw8</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq8</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain8</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain8</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant9</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw9</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>center_freq9</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>norm_gain9</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain9</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_rate</key>
|
||||
<value>0.0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>comment</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>dev_addr</key>
|
||||
<value>""</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>dev_args</key>
|
||||
<value>""</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(536, 228)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>uhd_usrp_sink_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>fc32</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_source0</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sd_spec0</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>time_source0</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_source1</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sd_spec1</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>time_source1</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_source2</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sd_spec2</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>time_source2</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_source3</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sd_spec3</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>time_source3</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_source4</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sd_spec4</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>time_source4</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_source5</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sd_spec5</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>time_source5</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_source6</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sd_spec6</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>time_source6</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>clock_source7</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sd_spec7</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>time_source7</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>nchan</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_mboards</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>samp_rate</key>
|
||||
<value>samp_rate</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>hide_cmd_port</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>hide_lo_controls</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>stream_args</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>stream_chans</key>
|
||||
<value>[]</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>sync</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>len_tag_name</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>otw</key>
|
||||
<value></value>
|
||||
</param>
|
||||
</block>
|
||||
<connection>
|
||||
<source_block_id>blocks_file_source_0</source_block_id>
|
||||
<sink_block_id>uhd_usrp_sink_0</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
</flow_graph>
|
@ -0,0 +1,55 @@
|
||||
# example
|
||||
# ./btle_tx 37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-LOCAL_NAME09-CA-TXPOWER-03-SERVICE03-180D1810-SERVICE_DATA-180D40-MANUF_DATA-0001FF-CONN_INTERVAL-0006 (-SERVICE_SOLI14-1811)
|
||||
# FLAGS: 0x01 LE Limited Discoverable Mode; 0x02 LE General Discoverable Mode
|
||||
# SERVICE:
|
||||
# 0x02 16-bit Service UUIDs More 16-bit UUIDs available
|
||||
# 0x03 16-bit Service UUIDs Complete list of 16-bit UUIDs available
|
||||
# 0x04 32-bit Service UUIDs More 32-bit UUIDs available
|
||||
# 0x05 32-bit Service UUIDs Complete list of 32-bit UUIDs available
|
||||
# 0x06 128-bit Service UUIDs More 128-bit UUIDs available
|
||||
# 0x07 128-bit Service UUIDs Complete list of 128-bit UUIDs available
|
||||
|
||||
# 37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-LOCAL_NAME09-Jxj-TXPOWER-03-SERVICE03-180D1810-SERVICE_DATA-180D40-MANUF_DATA-004CFF-CONN_INTERVAL-0006
|
||||
|
||||
# r30
|
||||
|
||||
37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-SDR Bluetooth LE welcome u!
|
||||
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040500-LOCAL_NAME09-CA0000 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040501-LOCAL_NAME09-CA0001 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040502-LOCAL_NAME09-CA0002 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040503-LOCAL_NAME09-CA0003 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040504-LOCAL_NAME09-CA0004 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040505-LOCAL_NAME09-CA0005 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-CA0006 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040507-LOCAL_NAME09-CA0007 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040508-LOCAL_NAME09-CA0008 11950 22.626 113.823 1
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040509-LOCAL_NAME09-CA0009 11950 22.626 113.823 1
|
||||
|
||||
r40
|
||||
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-01234567890123456789012345678
|
||||
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-LOCAL_NAME09-01234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-110203040506-FLAGS-02-LOCAL_NAME09-11234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-210203040506-FLAGS-02-LOCAL_NAME09-21234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-310203040506-FLAGS-02-LOCAL_NAME09-31234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-410203040506-FLAGS-02-LOCAL_NAME09-41234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-510203040506-FLAGS-02-LOCAL_NAME09-51234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-610203040506-FLAGS-02-LOCAL_NAME09-61234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-710203040506-FLAGS-02-LOCAL_NAME09-71234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-810203040506-FLAGS-02-LOCAL_NAME09-81234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-910203040506-FLAGS-02-LOCAL_NAME09-91234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-a10203040506-FLAGS-02-LOCAL_NAME09-a1234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-b10203040506-FLAGS-02-LOCAL_NAME09-b1234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-c10203040506-FLAGS-02-LOCAL_NAME09-c1234567890123456789012345
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-d10203040506-FLAGS-02-LOCAL_NAME09-d1234567890123456789012345
|
||||
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-SERVICE03-180D-SERVICE_DATA-180D40-SPACE-500
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-110203040506-FLAGS-02-SERVICE03-1819-SERVICE_DATA-181940-SPACE-100
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-210203040506-FLAGS-02-SERVICE03-181c-SERVICE_DATA-181c40-SPACE-500
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-310203040506-FLAGS-02-SERVICE03-180a-SERVICE_DATA-180a40-SPACE-500
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-410203040506-FLAGS-02-SERVICE03-1800-SERVICE_DATA-180040-SPACE-500
|
||||
#37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-410203040506-FLAGS-02-SERVICE03-1801-SERVICE_DATA-180140-SPACE-500
|
||||
# r30
|
||||
|
Reference in New Issue
Block a user