| 1 | import umit.bluetooth.sniff_fileio as sfio |
|---|
| 2 | import umit.bluetooth.sniff as sniff |
|---|
| 3 | import umit.bluetooth.sniffer as sniffer |
|---|
| 4 | import umit.bluetooth.handlers as handlers |
|---|
| 5 | |
|---|
| 6 | class HCIDumpHandler(sniff.SniffHandler): |
|---|
| 7 | |
|---|
| 8 | def __init__(self, state, write_file, writer = None): |
|---|
| 9 | super(sniff.SniffHandler, self).__init__() |
|---|
| 10 | if not writer: |
|---|
| 11 | writer = sfio.HCIWriter() |
|---|
| 12 | self._writer = writer |
|---|
| 13 | self._lmpbasehandler = handlers.BTSniffHandler() |
|---|
| 14 | if state and write_file: |
|---|
| 15 | self._state = state |
|---|
| 16 | self._write_file = write_file |
|---|
| 17 | else: |
|---|
| 18 | raise sniff.SniffError("HCIDumpHandler: State or write_filename not given. state is %s, write_file is %s" |
|---|
| 19 | % (state, write_file)) |
|---|
| 20 | def _writetofile(self, type, packet): |
|---|
| 21 | self._writer.writetofile(type, self._state.llid, |
|---|
| 22 | self._state.master, packet, self._write_file) |
|---|
| 23 | |
|---|
| 24 | def recvgenevt(self, packet): |
|---|
| 25 | self._lmpbasehandler.recvgenevt(packet) |
|---|
| 26 | |
|---|
| 27 | def recvlmp(self, packet): |
|---|
| 28 | self._lmpbasehandler.recvlmp(packet) |
|---|
| 29 | self._writetofile(sniff.HCI_EVENT_PKT, packet) |
|---|
| 30 | |
|---|
| 31 | def recvdv(self, packet): |
|---|
| 32 | pass |
|---|
| 33 | |
|---|
| 34 | def recvl2cap(self, packet): |
|---|
| 35 | self._writetofile(sniff.HCI_ACLDATA_PKT, packet) |
|---|
| 36 | |
|---|
| 37 | |
|---|
| 38 | if __name__=='__main__': |
|---|
| 39 | # sniffer.run(handler = HCIDumpHandler(state = start_state, write_file = 'eg1hcidump.cap'), |
|---|
| 40 | # state = start_state) |
|---|
| 41 | hcihandler = handlers.BTSniffHandler() |
|---|
| 42 | start_state = sniff.State() |
|---|
| 43 | #hcihandler = HCIDumpHandler(start_state, "eg1.cap") |
|---|
| 44 | sniffer.run(handler = hcihandler, state = start_state) |
|---|