■ ■ ■ ■ ■ ■
firmware/pycatsniffer/devpycatsniffer.py
| skipped 262 lines |
263 | 263 | | SET_CHAN = 0xd2 # 0x0d (idx 0) + data)0x00 (idx 1) |
264 | 264 | | |
265 | 265 | | HEARTBEAT_FRAME = 0x01 |
266 | | - | COMMAND_FRAME = 0x00 |
| 266 | + | START_FRAME = 0x5340 |
267 | 267 | | |
268 | 268 | | BYTE_STREAM = 0 |
269 | 269 | | |
| skipped 104 lines |
374 | 374 | | print ("SUBSRECV>> %s" % binascii.hexlify(substream)) |
375 | 375 | | |
376 | 376 | | if len(substream) >= 3: |
377 | | - | (cmd, cmdLen) = struct.unpack_from("<BH", substream) |
378 | | - | payload = substream[3:] |
379 | | - | if len(payload) == cmdLen: |
380 | | - | # buffer contains the correct number of bytes |
381 | | - | if CC1352.COMMAND_FRAME == cmd: |
382 | | - | logger.info(f'Read a frame of size {cmdLen}') |
383 | | - | stats['Captured'] += 1 |
384 | | - | (timestamp, pktLen) = struct.unpack_from("<IB", payload) |
385 | | - | frame = payload[5:] |
| 377 | + | (sFrame, pInfo, pLength) = struct.unpack_from("<HBH", substream) |
| 378 | + | payload = substream[5:-2] |
| 379 | + | #print ("sframe>>", hex(sFrame)) |
| 380 | + | #print ("pInfo>>", hex(pInfo)) |
| 381 | + | #print ("pLength>>", hex(pLength)) |
| 382 | + | |
| 383 | + | if len(payload) == pLength: |
| 384 | + | # buffer contains the correct number of bytes |
| 385 | + | if sFrame == CC1352.START_FRAME: |
| 386 | + | (timestamp,) = struct.unpack_from("<Q", payload) |
| 387 | + | timestamp = timestamp & 0x0000FFFFFFFFFFFF |
386 | 388 | | |
387 | | - | if len(frame) == pktLen: |
388 | | - | self.callback(timestamp, frame.tobytes()) |
389 | | - | else: |
390 | | - | logger.warning( |
391 | | - | f'Received a frame with incorrect length, pktLen:{pktLen}, len(frame):{len(frame)}' |
392 | | - | ) |
| 389 | + | frame = payload[6:] |
| 390 | + | self.callback(timestamp, frame) |
393 | 391 | | else: |
394 | 392 | | logger.warning( |
395 | 393 | | 'Received a command response with unknown code - CMD:{:02x} byte:{}' |
| skipped 110 lines |
506 | 504 | | |
507 | 505 | | return "\n".join(ret) |
508 | 506 | | |
509 | | - | # if __name__ == "__main__": |
510 | | - | |
511 | | - | # def callback(packet): |
512 | | - | # print("-"*30) |
513 | | - | # print(packet) |
514 | | - | # print("-"*30) |
515 | | - | |
516 | | - | # sniffer = CC1352('/dev/ttyACM0', callback) |
517 | | - | # #sniffer = CC1352(callback) |
518 | | - | |
519 | | - | # #print(sniffer) |
520 | | - | # #sniffer.startc() |
521 | | - | # #sniffer.pingc() |
522 | | - | # #time.sleep(2) |
523 | | - | # #sniffer.stopc() |
524 | | - | |
525 | | - | # sniffer.pingc() |
526 | | - | # sniffer.stopc() |
527 | | - | # sniffer.cfgphyc() |
528 | | - | # sniffer.cfgfreqc() |
529 | | - | # sniffer.initiatorc() |
530 | | - | # sniffer.startc() |
531 | | - | # print ("start") |
532 | | - | # time.sleep(1) |
533 | | - | # sniffer.stop() |
534 | | - | # sniffer.close() |
535 | | - | |
536 | 507 | | def arg_parser(): |
537 | 508 | | debug_choices = ('DEBUG', 'INFO', 'WARNING', 'ERROR') |
538 | 509 | | |
| skipped 177 lines |
716 | 687 | | while 1: |
717 | 688 | | if args.headless is True: |
718 | 689 | | if not snifferDev.isRunning(): |
719 | | - | snifferDev.start() |
| 690 | + | |
| 691 | + | snifferDev.pingc() |
| 692 | + | snifferDev.stopc() |
| 693 | + | snifferDev.cfgphyc() |
| 694 | + | snifferDev.cfgfreqc() |
| 695 | + | snifferDev.initiatorc() |
| 696 | + | snifferDev.startc() |
| 697 | + | print ("start") |
| 698 | + | |
| 699 | + | # snifferDev.start() |
720 | 700 | | # block until terminated (Ctrl+C or killed) |
721 | 701 | | snifferDev.thread.join() |
722 | 702 | | else: |
| skipped 20 lines |
743 | 723 | | if snifferDev.isRunning(): |
744 | 724 | | snifferDev.stop() |
745 | 725 | | else: |
746 | | - | snifferDev.start() |
| 726 | + | snifferDev.startc() |
747 | 727 | | elif int(cmd) in range(11, 27): |
748 | 728 | | snifferDev.set_channel(int(cmd)) |
749 | 729 | | else: |
| skipped 14 lines |
764 | 744 | | snifferDev.stop() |
765 | 745 | | dump_stats() |
766 | 746 | | sys.exit(0) |
| 747 | + | |
| 748 | + | # if __name__ == "__main__": |
| 749 | + | |
| 750 | + | # def callback(packet): |
| 751 | + | # print("-"*30) |
| 752 | + | # print(packet) |
| 753 | + | # print("-"*30) |
| 754 | + | |
| 755 | + | # sniffer = CC1352('/dev/ttyACM0', callback) |
| 756 | + | # #sniffer = CC1352(callback) |
| 757 | + | |
| 758 | + | # #print(sniffer) |
| 759 | + | # #sniffer.startc() |
| 760 | + | # #sniffer.pingc() |
| 761 | + | # #time.sleep(2) |
| 762 | + | # #sniffer.stopc() |
| 763 | + | |
| 764 | + | # sniffer.pingc() |
| 765 | + | # sniffer.stopc() |
| 766 | + | # sniffer.cfgphyc() |
| 767 | + | # sniffer.cfgfreqc() |
| 768 | + | # sniffer.initiatorc() |
| 769 | + | # sniffer.startc() |
| 770 | + | # print ("start") |
| 771 | + | # time.sleep(1) |
| 772 | + | # sniffer.stop() |
| 773 | + | # sniffer.close() |