DbgMuxClient: fix/improve ACKnowledgement logic #3

Open
opened 2024-04-12 18:09:28 +00:00 by fixeria · 0 comments
Owner

The logic in DbgMuxClient._handle_frame() ACKnowledges each received frame, unless it's FlowControl or Ack.

$ ./sedbgmux-dump.py parse -dp samples/C510_R1HA035_enquiry.dump 
[INFO] dump_native.py:46 Opening dump file samples/C510_R1HA035_enquiry.dump (readonly mode)
Record #0000 @ 1712683431.927844 Tx 42420500010065693e
  DebugMux Tx frame (Ns=001, Nr=000, fcs=0x3e69) Enquiry 
Record #0001 @ 1712683431.928759 Rx 42422b00000266e7b07e1621536f6e79204572696373736f6e204335313033353430303830333234303932303833ae
  DebugMux Rx frame (Ns=000, Nr=002, fcs=0xae33) Ident e7b07e1621536f6e79204572696373736f6e2043353130333534303038303332343039323038
  Container: 
    Magic = b'\xe7\xb0~\x16' (total 4)
    Ident = u'Sony Ericsson C51035400803240920'... (truncated, total 33)
Record #0002 @ 1712683431.928872 Rx 4242140001026994e40c4f53454757212031303020312ff4
  DebugMux Rx frame (Ns=001, Nr=002, fcs=0xf42f) DPAnnounce 94e40c4f5345475721203130302031
  Container: 
    DPRef = 0xE494
    Name = u'OSEGW! 100 1' (total 12)
Record #0003 @ 1712683431.928954 Rx 42420b0002026995e403547670b482
  DebugMux Rx frame (Ns=002, Nr=002, fcs=0x82b4) DPAnnounce 95e403547670
  Container: 
    DPRef = 0xE495
    Name = u'Tvp' (total 3)
Record #0004 @ 1712683431.929390 Rx 4242220003026996e41a414343202d205072696e7420536572766572204368616e6e656c960b
  DebugMux Rx frame (Ns=003, Nr=002, fcs=0x0b96) DPAnnounce 96e41a414343202d205072696e7420536572766572204368616e6e656c
  Container: 
    DPRef = 0xE496
    Name = u'ACC - Print Server Channel' (total 26)
Record #0005 @ 1712683431.929740 Rx 4242220004026997e41a415050202d205072696e7420536572766572204368616e6e656c7c84
  DebugMux Rx frame (Ns=004, Nr=002, fcs=0x847c) DPAnnounce 97e41a415050202d205072696e7420536572766572204368616e6e656c
  Container: 
    DPRef = 0xE497
    Name = u'APP - Print Server Channel' (total 26)
Record #0006 @ 1712683431.929921 Rx 4242110005026998e40953444b534552564552d0ae
  DebugMux Rx frame (Ns=005, Nr=002, fcs=0xaed0) DPAnnounce 98e40953444b534552564552
  Container: 
    DPRef = 0xE498
    Name = u'SDKSERVER' (total 9)
Record #0007 @ 1712683431.930031 Tx 42420500f104719883
  DebugMux Tx frame (Ns=241, Nr=004, fcs=0x8398) Ack 
Record #0008 @ 1712683431.930506 Tx 42420500f1067128b0
  DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack 
Record #0009 @ 1712683431.930646 Tx 42420500f1067128b0
  DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack 
Record #0010 @ 1712683431.930828 Tx 42420500f1067128b0
  DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack 
Record #0011 @ 1712683431.930900 Tx 42420500f1067128b0
  DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack 
Record #0012 @ 1712683431.930962 Tx 42420500f1067128b0
  DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack 
  • Record #0007 ACKnowledges the Ident frame received in Record #0001.
  • Records #0008-12 ACKnowledge DPAnnounce frames received in Records #0002-6.

Note the same Nr=006 value in Records #0008-12.

The expected behavior would be one Ack frame with Nr=006.

The logic in `DbgMuxClient._handle_frame()` ACKnowledges each received frame, unless it's `FlowControl` or `Ack`. ``` $ ./sedbgmux-dump.py parse -dp samples/C510_R1HA035_enquiry.dump [INFO] dump_native.py:46 Opening dump file samples/C510_R1HA035_enquiry.dump (readonly mode) Record #0000 @ 1712683431.927844 Tx 42420500010065693e DebugMux Tx frame (Ns=001, Nr=000, fcs=0x3e69) Enquiry Record #0001 @ 1712683431.928759 Rx 42422b00000266e7b07e1621536f6e79204572696373736f6e204335313033353430303830333234303932303833ae DebugMux Rx frame (Ns=000, Nr=002, fcs=0xae33) Ident e7b07e1621536f6e79204572696373736f6e2043353130333534303038303332343039323038 Container: Magic = b'\xe7\xb0~\x16' (total 4) Ident = u'Sony Ericsson C51035400803240920'... (truncated, total 33) Record #0002 @ 1712683431.928872 Rx 4242140001026994e40c4f53454757212031303020312ff4 DebugMux Rx frame (Ns=001, Nr=002, fcs=0xf42f) DPAnnounce 94e40c4f5345475721203130302031 Container: DPRef = 0xE494 Name = u'OSEGW! 100 1' (total 12) Record #0003 @ 1712683431.928954 Rx 42420b0002026995e403547670b482 DebugMux Rx frame (Ns=002, Nr=002, fcs=0x82b4) DPAnnounce 95e403547670 Container: DPRef = 0xE495 Name = u'Tvp' (total 3) Record #0004 @ 1712683431.929390 Rx 4242220003026996e41a414343202d205072696e7420536572766572204368616e6e656c960b DebugMux Rx frame (Ns=003, Nr=002, fcs=0x0b96) DPAnnounce 96e41a414343202d205072696e7420536572766572204368616e6e656c Container: DPRef = 0xE496 Name = u'ACC - Print Server Channel' (total 26) Record #0005 @ 1712683431.929740 Rx 4242220004026997e41a415050202d205072696e7420536572766572204368616e6e656c7c84 DebugMux Rx frame (Ns=004, Nr=002, fcs=0x847c) DPAnnounce 97e41a415050202d205072696e7420536572766572204368616e6e656c Container: DPRef = 0xE497 Name = u'APP - Print Server Channel' (total 26) Record #0006 @ 1712683431.929921 Rx 4242110005026998e40953444b534552564552d0ae DebugMux Rx frame (Ns=005, Nr=002, fcs=0xaed0) DPAnnounce 98e40953444b534552564552 Container: DPRef = 0xE498 Name = u'SDKSERVER' (total 9) Record #0007 @ 1712683431.930031 Tx 42420500f104719883 DebugMux Tx frame (Ns=241, Nr=004, fcs=0x8398) Ack Record #0008 @ 1712683431.930506 Tx 42420500f1067128b0 DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack Record #0009 @ 1712683431.930646 Tx 42420500f1067128b0 DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack Record #0010 @ 1712683431.930828 Tx 42420500f1067128b0 DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack Record #0011 @ 1712683431.930900 Tx 42420500f1067128b0 DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack Record #0012 @ 1712683431.930962 Tx 42420500f1067128b0 DebugMux Tx frame (Ns=241, Nr=006, fcs=0xb028) Ack ``` * `Record #0007` ACKnowledges the `Ident` frame received in `Record #0001`. * `Records #0008-12` ACKnowledge `DPAnnounce` frames received in `Records #0002-6`. Note the same `Nr=006` value in `Records #0008-12`. The expected behavior would be one `Ack` frame with `Nr=006`.
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: fixeria/sedbgmux#3
No description provided.