xref: /btstack/src/hci_dump.c (revision 7966267251b9debd0b0cb126c2187747faa073f9)
1*79662672Smatthias.ringwald /*
2*79662672Smatthias.ringwald  *  hci_dump.c
3*79662672Smatthias.ringwald  *
4*79662672Smatthias.ringwald  *  Dump HCI trace in BlueZ's hcidump format
5*79662672Smatthias.ringwald  *
6*79662672Smatthias.ringwald  *  Created by Matthias Ringwald on 5/26/09.
7*79662672Smatthias.ringwald  */
8*79662672Smatthias.ringwald 
9*79662672Smatthias.ringwald #include "hci_dump.h"
10*79662672Smatthias.ringwald #include "hci.h"
11*79662672Smatthias.ringwald #include "hci_transport_h4.h"
12*79662672Smatthias.ringwald 
13*79662672Smatthias.ringwald #include <fcntl.h>        // open
14*79662672Smatthias.ringwald #include <arpa/inet.h>    // hton..
15*79662672Smatthias.ringwald #include <strings.h>      // bzero
16*79662672Smatthias.ringwald #include <unistd.h>       // write
17*79662672Smatthias.ringwald #include <stdio.h>
18*79662672Smatthias.ringwald 
19*79662672Smatthias.ringwald static int dump_file;
20*79662672Smatthias.ringwald 
21*79662672Smatthias.ringwald void hci_dump_open(char *filename){
22*79662672Smatthias.ringwald     dump_file =  open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU);
23*79662672Smatthias.ringwald }
24*79662672Smatthias.ringwald 
25*79662672Smatthias.ringwald void hci_dump_packet(uint8_t packet_type, uint8_t in, uint8_t *packet, uint16_t len) {
26*79662672Smatthias.ringwald     static hcidump_hdr header;
27*79662672Smatthias.ringwald     bzero( &header, sizeof(hcidump_hdr));
28*79662672Smatthias.ringwald     bt_store_16( (uint8_t *) &header, 0, 1 + len);
29*79662672Smatthias.ringwald     header.in  = in;
30*79662672Smatthias.ringwald     header.packet_type = packet_type;
31*79662672Smatthias.ringwald     write (dump_file, &header, sizeof(hcidump_hdr) );
32*79662672Smatthias.ringwald     write (dump_file, packet, len );
33*79662672Smatthias.ringwald }
34*79662672Smatthias.ringwald 
35*79662672Smatthias.ringwald void hci_dump_close(){
36*79662672Smatthias.ringwald     close(dump_file);
37*79662672Smatthias.ringwald }
38*79662672Smatthias.ringwald 
39