1e25b118aSDominic Spill /* -*- c -*- */ 2e25b118aSDominic Spill /* 3e25b118aSDominic Spill * Copyright 2007 - 2012 Mike Ryan, Dominic Spill, Michael Ossmann 4e25b118aSDominic Spill * Copyright 2005, 2006 Free Software Foundation, Inc. 5e25b118aSDominic Spill * 6e25b118aSDominic Spill * This file is part of libbtbb 7e25b118aSDominic Spill * 8e25b118aSDominic Spill * This program is free software; you can redistribute it and/or modify 9e25b118aSDominic Spill * it under the terms of the GNU General Public License as published by 10e25b118aSDominic Spill * the Free Software Foundation; either version 2, or (at your option) 11e25b118aSDominic Spill * any later version. 12e25b118aSDominic Spill * 13e25b118aSDominic Spill * This program is distributed in the hope that it will be useful, 14e25b118aSDominic Spill * but WITHOUT ANY WARRANTY; without even the implied warranty of 15e25b118aSDominic Spill * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16e25b118aSDominic Spill * GNU General Public License for more details. 17e25b118aSDominic Spill * 18e25b118aSDominic Spill * You should have received a copy of the GNU General Public License 19e25b118aSDominic Spill * along with libbtbb; see the file COPYING. If not, write to 20e25b118aSDominic Spill * the Free Software Foundation, Inc., 51 Franklin Street, 21e25b118aSDominic Spill * Boston, MA 02110-1301, USA. 22e25b118aSDominic Spill */ 23e25b118aSDominic Spill #ifndef INCLUDED_BLUETOOTH_LE_PACKET_H 24e25b118aSDominic Spill #define INCLUDED_BLUETOOTH_LE_PACKET_H 25e25b118aSDominic Spill 26e25b118aSDominic Spill #include <stdint.h> 27e25b118aSDominic Spill #include <stdio.h> 28e25b118aSDominic Spill #include <stdlib.h> 29e25b118aSDominic Spill 30e25b118aSDominic Spill #define MAX_LE_SYMBOLS 64 31e25b118aSDominic Spill 32*0a637dcaSDominic Spill #define LE_ADV_AA 0x8E89BED6 33*0a637dcaSDominic Spill 34e25b118aSDominic Spill #define ADV_IND 0 35e25b118aSDominic Spill #define ADV_DIRECT_IND 1 36e25b118aSDominic Spill #define ADV_NONCONN_IND 2 37e25b118aSDominic Spill #define SCAN_REQ 3 38e25b118aSDominic Spill #define SCAN_RSP 4 39e25b118aSDominic Spill #define CONNECT_REQ 5 40e25b118aSDominic Spill #define ADV_SCAN_IND 6 41e25b118aSDominic Spill 428f3e7eeaSChristopher Kilgour struct lell_packet { 43e25b118aSDominic Spill // raw unwhitened bytes of packet, including access address 44e25b118aSDominic Spill uint8_t symbols[MAX_LE_SYMBOLS]; 45e25b118aSDominic Spill 46e25b118aSDominic Spill uint32_t access_address; 47e25b118aSDominic Spill 48e25b118aSDominic Spill // channel index 49e25b118aSDominic Spill uint8_t channel_idx; 508f3e7eeaSChristopher Kilgour uint8_t channel_k; 51e25b118aSDominic Spill 52e25b118aSDominic Spill // number of symbols 53e25b118aSDominic Spill int length; 54e25b118aSDominic Spill 55e25b118aSDominic Spill uint32_t clk100ns; 56e25b118aSDominic Spill 57e25b118aSDominic Spill // advertising packet header info 58e25b118aSDominic Spill uint8_t adv_type; 59e25b118aSDominic Spill int adv_tx_add; 60e25b118aSDominic Spill int adv_rx_add; 61e25b118aSDominic Spill 628f3e7eeaSChristopher Kilgour unsigned access_address_offenses; 638f3e7eeaSChristopher Kilgour uint32_t refcount; 64e25b118aSDominic Spill 658f3e7eeaSChristopher Kilgour /* flags */ 668f3e7eeaSChristopher Kilgour union { 678f3e7eeaSChristopher Kilgour struct { 688f3e7eeaSChristopher Kilgour uint32_t access_address_ok : 1; 698f3e7eeaSChristopher Kilgour } as_bits; 708f3e7eeaSChristopher Kilgour uint32_t as_word; 718f3e7eeaSChristopher Kilgour } flags; 728f3e7eeaSChristopher Kilgour }; 73e25b118aSDominic Spill 74e25b118aSDominic Spill #endif /* INCLUDED_BLUETOOTH_LE_PACKET_H */ 75