1*8f3e7eeaSChristopher Kilgour /* -*- c -*- */ 2*8f3e7eeaSChristopher Kilgour /* 3*8f3e7eeaSChristopher Kilgour * Copyright 2014 Christopher D. Kilgour techie AT whiterocker.com 4*8f3e7eeaSChristopher Kilgour * 5*8f3e7eeaSChristopher Kilgour * This file is part of libbtbb 6*8f3e7eeaSChristopher Kilgour * 7*8f3e7eeaSChristopher Kilgour * This program is free software; you can redistribute it and/or modify 8*8f3e7eeaSChristopher Kilgour * it under the terms of the GNU General Public License as published by 9*8f3e7eeaSChristopher Kilgour * the Free Software Foundation; either version 2, or (at your option) 10*8f3e7eeaSChristopher Kilgour * any later version. 11*8f3e7eeaSChristopher Kilgour * 12*8f3e7eeaSChristopher Kilgour * This program is distributed in the hope that it will be useful, 13*8f3e7eeaSChristopher Kilgour * but WITHOUT ANY WARRANTY; without even the implied warranty of 14*8f3e7eeaSChristopher Kilgour * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*8f3e7eeaSChristopher Kilgour * GNU General Public License for more details. 16*8f3e7eeaSChristopher Kilgour * 17*8f3e7eeaSChristopher Kilgour * You should have received a copy of the GNU General Public License 18*8f3e7eeaSChristopher Kilgour * along with libbtbb; see the file COPYING. If not, write to 19*8f3e7eeaSChristopher Kilgour * the Free Software Foundation, Inc., 51 Franklin Street, 20*8f3e7eeaSChristopher Kilgour * Boston, MA 02110-1301, USA. 21*8f3e7eeaSChristopher Kilgour */ 22*8f3e7eeaSChristopher Kilgour #ifndef PCAPNG_BT_DOT_H 23*8f3e7eeaSChristopher Kilgour #define PCAPNG_BT_DOT_H 24*8f3e7eeaSChristopher Kilgour 25*8f3e7eeaSChristopher Kilgour #include "pcap-common.h" 26*8f3e7eeaSChristopher Kilgour #include "pcapng.h" 27*8f3e7eeaSChristopher Kilgour 28*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 29*8f3e7eeaSChristopher Kilgour uint32_t centre_freq; 30*8f3e7eeaSChristopher Kilgour uint32_t analog_bandwidth; 31*8f3e7eeaSChristopher Kilgour int32_t intermediate_freq; 32*8f3e7eeaSChristopher Kilgour uint32_t sampling_bandwidth; 33*8f3e7eeaSChristopher Kilgour } bt_wideband_rf_info; 34*8f3e7eeaSChristopher Kilgour 35*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 36*8f3e7eeaSChristopher Kilgour option_header header; 37*8f3e7eeaSChristopher Kilgour bt_wideband_rf_info wideband_rf_info; 38*8f3e7eeaSChristopher Kilgour } bt_wideband_rf_option; 39*8f3e7eeaSChristopher Kilgour 40*8f3e7eeaSChristopher Kilgour #define PCAPNG_BT_WIDEBAND_RF_INFO 0xd300 41*8f3e7eeaSChristopher Kilgour 42*8f3e7eeaSChristopher Kilgour /* --------------------------------- BR/EDR ----------------------------- */ 43*8f3e7eeaSChristopher Kilgour 44*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 45*8f3e7eeaSChristopher Kilgour enhanced_packet_block blk_header; 46*8f3e7eeaSChristopher Kilgour pcap_bluetooth_bredr_bb_header bredr_bb_header; 47*8f3e7eeaSChristopher Kilgour uint8_t bredr_payload[400]; 48*8f3e7eeaSChristopher Kilgour } pcapng_bredr_packet; 49*8f3e7eeaSChristopher Kilgour 50*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 51*8f3e7eeaSChristopher Kilgour uint8_t bd_addr[6]; 52*8f3e7eeaSChristopher Kilgour uint8_t uap_mask; 53*8f3e7eeaSChristopher Kilgour uint8_t nap_valid; 54*8f3e7eeaSChristopher Kilgour } bredr_bd_addr_info; 55*8f3e7eeaSChristopher Kilgour 56*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 57*8f3e7eeaSChristopher Kilgour option_header header; 58*8f3e7eeaSChristopher Kilgour bredr_bd_addr_info bd_addr_info; 59*8f3e7eeaSChristopher Kilgour } bredr_br_addr_option; 60*8f3e7eeaSChristopher Kilgour 61*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 62*8f3e7eeaSChristopher Kilgour uint64_t ts; 63*8f3e7eeaSChristopher Kilgour uint32_t lap_uap; 64*8f3e7eeaSChristopher Kilgour uint32_t clk; 65*8f3e7eeaSChristopher Kilgour uint32_t clk_mask; 66*8f3e7eeaSChristopher Kilgour } bredr_clk_info; 67*8f3e7eeaSChristopher Kilgour 68*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 69*8f3e7eeaSChristopher Kilgour option_header header; 70*8f3e7eeaSChristopher Kilgour bredr_clk_info clock_info; 71*8f3e7eeaSChristopher Kilgour } bredr_clk_option; 72*8f3e7eeaSChristopher Kilgour 73*8f3e7eeaSChristopher Kilgour #define PCAPNG_BREDR_OPTION_BD_ADDR 0xd340 74*8f3e7eeaSChristopher Kilgour #define PCAPNG_BREDR_OPTION_MASTER_CLOCK_INFO 0xd341 75*8f3e7eeaSChristopher Kilgour 76*8f3e7eeaSChristopher Kilgour /* --------------------------------- Low Energy ---------------------------- */ 77*8f3e7eeaSChristopher Kilgour 78*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 79*8f3e7eeaSChristopher Kilgour enhanced_packet_block blk_header; 80*8f3e7eeaSChristopher Kilgour pcap_bluetooth_le_ll_header le_ll_header; 81*8f3e7eeaSChristopher Kilgour uint8_t le_packet[48]; 82*8f3e7eeaSChristopher Kilgour } pcapng_le_packet; 83*8f3e7eeaSChristopher Kilgour 84*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 85*8f3e7eeaSChristopher Kilgour uint64_t ns; 86*8f3e7eeaSChristopher Kilgour union { 87*8f3e7eeaSChristopher Kilgour struct { 88*8f3e7eeaSChristopher Kilgour uint8_t InitA[6]; 89*8f3e7eeaSChristopher Kilgour uint8_t AdvA[6]; 90*8f3e7eeaSChristopher Kilgour uint8_t AA[4]; 91*8f3e7eeaSChristopher Kilgour uint8_t CRCInit[3]; 92*8f3e7eeaSChristopher Kilgour uint8_t WinSize; 93*8f3e7eeaSChristopher Kilgour uint8_t WinOffset[2]; 94*8f3e7eeaSChristopher Kilgour uint8_t Interval[2]; 95*8f3e7eeaSChristopher Kilgour uint8_t Latency[2]; 96*8f3e7eeaSChristopher Kilgour uint8_t Timeout[2]; 97*8f3e7eeaSChristopher Kilgour uint8_t ChM[5]; 98*8f3e7eeaSChristopher Kilgour uint8_t HopSCA; 99*8f3e7eeaSChristopher Kilgour } fields; 100*8f3e7eeaSChristopher Kilgour uint8_t bytes[0]; 101*8f3e7eeaSChristopher Kilgour } pdu; 102*8f3e7eeaSChristopher Kilgour } le_ll_connection_info; 103*8f3e7eeaSChristopher Kilgour 104*8f3e7eeaSChristopher Kilgour typedef struct __attribute__((packed)) { 105*8f3e7eeaSChristopher Kilgour option_header header; 106*8f3e7eeaSChristopher Kilgour le_ll_connection_info connection_info; 107*8f3e7eeaSChristopher Kilgour } le_ll_connection_info_option; 108*8f3e7eeaSChristopher Kilgour 109*8f3e7eeaSChristopher Kilgour #define PCAPNG_LE_LL_CONNECTION_INFO 0xd380 110*8f3e7eeaSChristopher Kilgour 111*8f3e7eeaSChristopher Kilgour #endif /* PCAPNG_BT_DOT_H */ 112