27#ifndef INCLUDED_GR_BLUETOOTH_PACKET_H
28#define INCLUDED_GR_BLUETOOTH_PACKET_H
31#include <gnuradio/sync_block.h>
52 typedef std::shared_ptr<packet>
sptr;
59 static const int MAX_SYMBOLS = 3125;
64 char d_symbols[MAX_SYMBOLS];
95 packet(
char *stream,
int length,
double freq=0.0);
118 static void host_to_air(uint8_t host_order,
char *air_order,
int bits);
169 typedef std::shared_ptr<classic_packet>
sptr;
182 static sptr make(
char *stream,
int length, uint32_t clkn,
double freq);
205 static int sniff_ac(
char *stream,
int stream_length);
208 static uint8_t *
lfsr(uint8_t *data,
int length,
int k, uint8_t *g);
214 static bool unfec13(
char *input,
char *output,
int length);
217 static char *
unfec23(
char *input,
int length);
226 static uint16_t
crcgen(
char *payload,
int length,
int UAP);
287#define LE_MAX_PDU_OCTETS 39
288#define LE_MAX_OCTETS (1+4+LE_MAX_PDU_OCTETS+3)
289#define LE_MAX_SYMBOLS (8*LE_MAX_OCTETS)
298 typedef std::shared_ptr<le_packet>
sptr;
300 static sptr make(
char *stream,
int length,
double freq=0.0);
323 static int sniff_aa(
char *stream,
int stream_length,
double freq);
#define BLUETOOTH_API
Definition api.h:19
static const uint8_t INDICES[64]
Definition packet.h:190
virtual uint32_t clock_from_fhs()=0
static int sniff_ac(char *stream, int stream_length)
virtual void set_UAP(uint8_t UAP)=0
virtual int crc_check(int clock)=0
int get_channel()
Definition packet.h:284
static bool unfec13(char *input, char *output, int length)
static bool check_ac(char *stream, int LAP)
static const uint8_t PREAMBLE_DISTANCE[32]
Definition packet.h:193
virtual uint32_t lap_from_fhs()=0
static const std::string TYPE_NAMES[16]
Definition packet.h:199
std::shared_ptr< classic_packet > sptr
Definition packet.h:169
uint32_t d_clkn
Definition packet.h:202
virtual uint32_t get_LAP()=0
virtual uint8_t get_UAP()=0
virtual char * tun_format()=0
virtual uint16_t nap_from_fhs()=0
static sptr make(char *stream, int length)
Return a shared_ptr to a new instance of gr::bluetooth::classic_packet.
virtual void decode_payload()=0
static const uint8_t BARKER_DISTANCE[128]
Definition packet.h:196
static uint8_t * lfsr(uint8_t *data, int length, int k, uint8_t *g)
static sptr make(char *stream, int length, uint32_t clkn, double freq)
static uint16_t crcgen(char *payload, int length, int UAP)
static char * unfec23(char *input, int length)
virtual uint32_t get_clock()=0
static int UAP_from_hec(uint16_t data, uint8_t hec)
virtual uint8_t uap_from_fhs()=0
static const int ID_THRESHOLD
Definition packet.h:185
virtual void set_clock(uint32_t clk6, bool have27)=0
virtual bool header_present()=0
virtual bool decode_header()=0
virtual void set_NAP(uint16_t NAP)=0
virtual uint8_t try_clock(int clock)=0
static const int SYMBOLS_PER_BASIC_RATE_ACCESS_CODE
Definition packet.h:187
static uint8_t * acgen(int LAP)
static int freq2index(const double freq)
static int freq2chan(const double freq)
virtual bool header_present()=0
virtual char * tun_format()=0
static const unsigned MAX_PDU_OCTETS
Definition packet.h:294
static const uint8_t PREAMBLE_DISTANCE[512]
Definition packet.h:309
static const unsigned MAX_OCTETS
Definition packet.h:295
virtual uint32_t get_AA()=0
std::shared_ptr< le_packet > sptr
Definition packet.h:298
static const uint8_t ACCESS_HEADER_DISTANCE_MSB[256]
Definition packet.h:319
static const unsigned MAX_SYMBOLS
Definition packet.h:296
static const uint8_t ACCESS_ADDRESS_DISTANCE_3[256]
Definition packet.h:315
virtual void decode_payload()=0
virtual bool decode_header()=0
static const uint8_t DATA_HEADER_DISTANCE_MSB[256]
Definition packet.h:321
static const uint8_t INDICES[40]
Definition packet.h:306
static int sniff_aa(char *stream, int stream_length, double freq)
static const uint8_t ACCESS_ADDRESS_DISTANCE_2[256]
Definition packet.h:314
static const uint8_t ACCESS_ADDRESS_DISTANCE_1[256]
Definition packet.h:313
static const uint8_t ACCESS_ADDRESS_DISTANCE_0[256]
Definition packet.h:312
static const uint8_t DATA_HEADER_DISTANCE_LSB[256]
Definition packet.h:320
virtual int get_channel()=0
static sptr make(char *stream, int length, double freq=0.0)
static const uint8_t ACCESS_HEADER_DISTANCE_LSB[256]
Definition packet.h:318
static int chan2index(const int chan)
virtual bool header_present()=0
friend class le_packet_impl
Definition packet.h:42
static uint8_t air_to_host8(char *air_order, int bits)
std::shared_ptr< packet > sptr
Definition packet.h:52
friend class le_packet
Definition packet.h:41
packet(char *stream, int length, double freq=0.0)
virtual ~packet()
Definition packet.h:96
static uint32_t air_to_host32(char *air_order, int bits)
packet()
Definition packet.h:94
friend class classic_packet_impl
Definition packet.h:40
friend class classic_packet
Definition packet.h:39
static int sniff_packet(char *stream, int stream_length, double freq, air_format &fmt)
static uint8_t reverse(char byte)
air_format
Definition packet.h:45
@ UNKNOWN
Definition packet.h:46
@ CLASSIC
Definition packet.h:47
@ LOW_ENERGY
Definition packet.h:48
@ NUM_BTAF
Definition packet.h:49
static uint16_t air_to_host16(char *air_order, int bits)
static const uint8_t WHITENING_DATA[127]
Definition packet.h:101
virtual char * tun_format()=0
static void convert_to_grformat(uint8_t input, uint8_t *output)
virtual int get_channel()=0
virtual bool decode_header()=0
void set_whitened(bool whitened)
static void host_to_air(uint8_t host_order, char *air_order, int bits)
virtual void decode_payload()=0
Definition multi_block.h:34
Definition multi_block.h:33
#define LE_MAX_PDU_OCTETS
Definition packet.h:287
#define LE_MAX_OCTETS
Definition packet.h:288
#define LE_MAX_SYMBOLS
Definition packet.h:289