25#ifndef INCLUDED_BLUETOOTH_PACKET_H
26#define INCLUDED_BLUETOOTH_PACKET_H
31#include <boost/enable_shared_from_this.hpp>
36typedef std::shared_ptr<bluetooth_packet> bluetooth_packet_sptr;
45 uint32_t clkn,
int channel);
54 uint32_t clkn,
int channel);
57 bluetooth_packet(
char *stream,
int length);
60 static const int MAX_SYMBOLS = 3125;
63 static const int ID_THRESHOLD = 5;
66 static const uint8_t INDICES[64];
69 static const uint8_t WHITENING_DATA[127];
72 static const uint8_t PREAMBLE_DISTANCE[32];
75 static const uint8_t TRAILER_DISTANCE[2048];
78 static const string TYPE_NAMES[16];
83 char d_symbols[MAX_SYMBOLS];
101 char d_packet_header[18];
105 char d_payload_header[16];
109 int d_payload_header_length;
112 uint8_t d_payload_llid;
115 uint8_t d_payload_flow;
124 int d_payload_length;
132 char d_payload[2744];
160 bool decode_payload_header(
char *stream,
int clock,
int header_bytes,
int size,
bool fec);
163 void unwhiten(
char* input,
char* output,
int clock,
int length,
int skip);
175 static int sniff_ac(
char *stream,
int stream_length);
178 static uint8_t *
lfsr(uint8_t *data,
int length,
int k, uint8_t *g);
190 static bool unfec13(
char *input,
char *output,
int length);
193 static char *
unfec23(
char *input,
int length);
208 static void host_to_air(uint8_t host_order,
char *air_order,
int bits);
211 static uint16_t
crcgen(
char *payload,
int length,
int UAP);
bluetooth_packet_sptr bluetooth_make_packet(char *stream, int length)
Return a shared_ptr to a new instance of bluetooth_packet.
Definition bluetooth_packet.h:49
void set_UAP(uint8_t UAP)
static uint8_t reverse(char byte)
void set_NAP(uint16_t NAP)
void set_whitened(bool whitened)
void set_clock(uint32_t clk6, bool have27)
int d_channel
Definition bluetooth_packet.h:169
friend bluetooth_packet_sptr bluetooth_make_packet(char *stream, int length)
Return a shared_ptr to a new instance of bluetooth_packet.
static char * unfec23(char *input, int length)
static int sniff_ac(char *stream, int stream_length)
static uint8_t * acgen(int LAP)
static int UAP_from_hec(uint16_t data, uint8_t hec)
uint8_t try_clock(int clock)
static void host_to_air(uint8_t host_order, char *air_order, int bits)
static void convert_to_grformat(uint8_t input, uint8_t *output)
static uint8_t * lfsr(uint8_t *data, int length, int k, uint8_t *g)
static uint16_t air_to_host16(char *air_order, int bits)
friend bluetooth_packet_sptr bluetooth_make_packet(char *stream, int length, uint32_t clkn, int channel)
static uint8_t air_to_host8(char *air_order, int bits)
static bool unfec13(char *input, char *output, int length)
uint32_t clock_from_fhs()
static bool check_ac(char *stream, int LAP)
static uint16_t crcgen(char *payload, int length, int UAP)
uint32_t d_clkn
Definition bluetooth_packet.h:172
static char * fec23gen(char *data)
static uint32_t air_to_host32(char *air_order, int bits)