new learnigns
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -113,26 +113,45 @@ extern volatile u8 MEM8[0x10000];
|
||||
* - byte4: value_lo (medium) - candidate low byte of a word value
|
||||
* - byte5: checksum (high) - 0x5A-seeded XOR of bytes 0..4
|
||||
* dispatch: command_low3 = RX_FRAME(0) & 0x07; observed H'00, H'01, H'02, H'04, H'05, H'06, H'07
|
||||
* dispatcher split: FAA2 == 0 accepts initial/idle commands H'00, H'01, H'02, H'07; FAA2 != 0 accepts continuation commands H'04, H'05, H'06, H'07
|
||||
* dispatcher caveat: Initial dispatch follows checksum validation and RX error handling. Command 1 is only on the initial/idle path and is also gated by F861.bit7 == 0.
|
||||
* dispatch evidence: H'BC08, H'BC0C, H'BC20, H'BC22, H'BC24, H'BC26, H'BC29, H'BC2B, H'BC2E, H'BC30, H'BC45, H'BC47, H'BC4A, H'BC4C, H'BC4F, H'BC51, H'BC54, H'BC56
|
||||
* index decoder: RX[1:2] -> logical index via loc_622B (medium)
|
||||
* command candidates:
|
||||
* - H'00 set_value_acked: candidate write of RX[3:4] into primary/current tables, followed by a response; handler H'BC69; responses response_at_BCCD
|
||||
* - H'01 read_value: candidate read from the primary table, followed by a response carrying the value; handler H'BCD7; responses response_at_BCFA
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0
|
||||
* - H'01 read_value: initial/idle-path primary table read only, followed by an odd response staging sequence; handler H'BCD7; responses response_at_BCFA
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0 && F861.bit7 == 0
|
||||
* note: Only accepted on the initial/idle dispatcher path: valid checksum/no RX error, FAA2 == 0, and F861.bit7 == 0.
|
||||
* note: BCD7 stages F850=0x04, writes F851 from F861 and then overwrites F851 from F862.
|
||||
* note: BCD7 reads the primary table word at E000 + 2*selector; F854 receives the low byte and F853 receives the high byte.
|
||||
* note: F852 is not freshly written in the BCD7 handler, so do not describe the response as a fixed 04 00 QQ hi lo frame.
|
||||
* - H'02 clear_or_abort: candidate clear/abort path with no immediate response builder; handler H'BD04; responses none
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0
|
||||
* - H'04 set_value_no_immediate_reply: candidate write/update path that stores a value without an immediate serial response; handler H'BD0E; responses none
|
||||
* - H'05 ack_or_clear_pending: candidate pending/event acknowledgement path; handler H'BD80; responses none
|
||||
* availability: valid checksum/no RX physical error && FAA2 != 0
|
||||
* - H'05 ack_or_clear_pending: continuation-only conditional acknowledgement/session clear path; handler H'BD80; responses none
|
||||
* availability: valid checksum/no RX physical error && FAA2 != 0
|
||||
* note: Only accepted on the continuation dispatcher path when FAA2 != 0.
|
||||
* note: For selector 0x0040, frame 05 00 40 00 00 1F performs no response staging.
|
||||
* note: The handler clears FAA3/FAA2; F9B5 advances only when FAA2.bit3 was set from a queued report.
|
||||
* note: If FAA2 == 0, command 5 falls through the initial dispatcher instead of doing acknowledgement work.
|
||||
* - H'06 set_secondary_value: candidate secondary-table value write path; handler H'BDDB; responses none
|
||||
* - H'07 retransmit_or_error_reply: candidate retransmit/NAK-style path; error handling also builds command 0x07 responses; handler H'BE05; responses response_at_BE22
|
||||
* availability: valid checksum/no RX physical error && FAA2 != 0
|
||||
* - H'07 retransmit_or_error_reply: candidate retransmit path; retry/error handling also builds a command 0x07 RX-payload echo; handler H'BE05; responses response_at_BE22
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0 OR valid checksum/no RX physical error && FAA2 != 0
|
||||
* note: loc_BE4D is a retry/error echo path: F850=0x07 and F861-F864 are copied into F851-F854 before loc_BA26.
|
||||
* note: Observed frame 07 80 40 20 90 2D means RX bytes F861-F864 were 80 40 20 90; it is not a table value.
|
||||
* command effects:
|
||||
* - H'00 set_value_acked: Candidate acknowledged set: writes value bytes to primary/current tables, flags the index, and stages an echo-style response.
|
||||
* effect: table_write_candidate; target primary_value_table_candidate; source RX[3:4] value bytes, with an observed 0x80 fallback when decoded index is zero; table H'E000
|
||||
* effect: table_write_candidate; target current_value_table_candidate; source same candidate value written to the primary table; table H'E800
|
||||
* effect: flag_update_candidate; target per_index_flag_table_candidate; set bit 7; table H'EC00
|
||||
* evidence: H'BC08, H'BC0C, H'BC20, H'BC22, H'BCB0, H'BCB9, H'BCC1, H'BCC9, H'BCB5, H'BCBD, H'BCC5, H'BCCD
|
||||
* - H'01 read_value: Candidate read: reads the primary table and stages a value response.
|
||||
* - H'01 read_value: Initial/idle candidate read: reads the primary table and stages an odd value response with F852 possibly stale.
|
||||
* effect: table_read_candidate; target primary_value_table_candidate; table H'E000
|
||||
* effect: response_staging_candidate; stage F850-F854 and call loc_BA26
|
||||
* evidence: H'BC08, H'BC0C, H'BC24, H'BC26, H'BCB0, H'BCB9, H'BCC1, H'BCC9, H'BCD7, H'BCE0, H'BCE8, H'BCF0, H'BCF6, H'BCB5, H'BCBD, H'BCC5, H'BCDC, H'BCE4, H'BCFA
|
||||
* evidence: H'BC08, H'BC0C, H'BC24, H'BC26, H'BCD7, H'BCE0, H'BCE8, H'BCF0, H'BCF6, H'BCDC, H'BCE4, H'BCFA
|
||||
* - H'02 clear_or_abort: Candidate clear/abort: clears serial session state without an observed immediate response.
|
||||
* effect: state_clear_candidate; target serial_session_flags_candidate; clear bit 7; state H'FAA2
|
||||
* evidence: H'BC08, H'BC0C, H'BC29, H'BC2B
|
||||
@@ -140,15 +159,16 @@ extern volatile u8 MEM8[0x10000];
|
||||
* effect: table_write_candidate; target primary_value_table_candidate; source RX[3:4] value bytes, with an observed 0x80 fallback when decoded index is zero; table H'E000
|
||||
* effect: flag_update_candidate; target per_index_flag_table_candidate; set bit 7; table H'EC00
|
||||
* evidence: H'BC08, H'BC0C, H'BC45, H'BC47
|
||||
* - H'05 ack_or_clear_pending: Candidate acknowledgement/clear: updates pending/event state without an observed immediate response.
|
||||
* effect: pending_acknowledgement_candidate; target selected event/pending state; clear selected pending flags and then clear serial session state
|
||||
* - H'05 ack_or_clear_pending: Continuation-only ACK/session clear: clears FAA3/FAA2 and only advances F9B5 when queued-report FAA2.bit3 was set; selector 0x0040 has no response.
|
||||
* effect: conditional_ack_session_clear_candidate; target selected event/pending state; when FAA2 != 0, clear FAA3/FAA2; advance F9B5 only if FAA2.bit3 was set from queued-report state; selector 0x0040 stages no response; selector H'0040 has no response
|
||||
* evidence: H'BC08, H'BC0C, H'BC4A, H'BC4C
|
||||
* - H'06 set_secondary_value: Candidate secondary set: writes value bytes to the secondary table and flags the index.
|
||||
* effect: table_write_candidate; target secondary_value_table_candidate; source RX[3:4] value bytes; table H'E400
|
||||
* effect: flag_update_candidate; target per_index_flag_table_candidate; set bit 6; table H'EC00
|
||||
* evidence: H'BC08, H'BC0C, H'BC4F, H'BC51
|
||||
* - H'07 retransmit_or_error_reply: Candidate retransmit/error reply: reuses prior TX bytes or builds an explicit 0x07 retry/error response.
|
||||
* - H'07 retransmit_or_error_reply: Candidate retransmit/error reply: reuses prior TX bytes or copies RX payload bytes behind an explicit 0x07 retry/error echo.
|
||||
* effect: retransmit_candidate; target TX staging bytes H'F850-H'F854 before loc_BA26; source previous TX frame bytes H'F858-H'F85C
|
||||
* effect: retry_error_echo_candidate; target F850=0x07, F851-F854=F861-F864 before loc_BA26; source RX payload bytes F861-F864; 07 80 40 20 90 2D echoes RX payload 80 40 20 90; it is not a table value
|
||||
* effect: response_staging_candidate; stage F850-F854 and call loc_BA26
|
||||
* evidence: H'BC08, H'BC0C, H'BC2E, H'BC30, H'BC54, H'BC56, H'BE09, H'BE11, H'BE19, H'BE22
|
||||
* response schemas:
|
||||
@@ -156,8 +176,11 @@ extern volatile u8 MEM8[0x10000];
|
||||
* evidence: H'BB1C, H'BB2B, H'BB20, H'BB3F, H'BB39
|
||||
* - response_at_BCCD: byte0=0x04; byte1=rx[1]; byte2=rx[2]; byte3=rx[3]; byte4=rx[4]
|
||||
* evidence: H'BCB0, H'BCB9, H'BCC1, H'BCC9
|
||||
* - response_at_BCFA: byte0=0x04; byte1=rx[2]; byte2=rx[2]; byte3=primary_value_table_candidate; byte4=primary_value_table_candidate
|
||||
* evidence: H'BCD7, H'BCE8, H'BCC1, H'BCF6, H'BCF0
|
||||
* - response_at_BCFA: byte0=0x04; byte1=rx[2]; byte2=stale/unchanged; byte3=primary_value_table_candidate; byte4=primary_value_table_candidate
|
||||
* note: Command 1 BCD7 staging is odd: F850=0x04; F851 is written from F861 then overwritten by F862.
|
||||
* note: The primary table word is read from E000 + 2*selector; F854/F853 receive low/high value bytes.
|
||||
* note: F852 may be stale or unchanged in this handler; avoid a fixed 04 00 QQ hi lo response shape.
|
||||
* evidence: H'BCD7, H'BCE8, H'BCF6, H'BCF0
|
||||
* - response_at_BE22: byte0=tx[0]; byte1=tx[1]; byte2=tx[2]; byte3=tx[3]; byte4=tx[4]
|
||||
* evidence: H'BE09, H'BE11, H'BE19
|
||||
* - ... 1 more candidate response schemas
|
||||
@@ -186,7 +209,9 @@ extern volatile u8 MEM8[0x10000];
|
||||
* - ... 7 more state-variable candidates
|
||||
* retry/error model candidate:
|
||||
* - checksum path: 0x5A-seeded XOR over RX[0..4] differs from RX[5] -> loc_BE29
|
||||
* - retry path: counter H'FAA6, threshold 2; Candidate retry path clears/consults serial flags, increments FAA6, compares it with 2, and when still below the apparent limit stages a command 0x07 response.
|
||||
* - retry path: counter H'FAA6, threshold 2; Candidate retry path clears/consults serial flags, increments FAA6, compares it with 2, and when still below the apparent limit enters loc_BE4D to stage a command 0x07 retry/error echo of RX payload bytes F861-F864.
|
||||
* echo path: loc_BE4D: F850=0x07; F851-F854=F861-F864
|
||||
* echo caveat: 07 80 40 20 90 2D echoes RX payload 80 40 20 90 and is not a table value.
|
||||
* - command 0x07 path: Candidate retransmit/explicit command 0x07 path either copies previous TX frame bytes back to F850-F854 or stages an observed 0x07 response before loc_BA26.
|
||||
* - evidence: H'BBD8, H'BBDC, H'BBE0, H'BBE4, H'BBE8, H'BBEC, H'BBF0, H'BE4D, H'BE56, H'BE5E, H'BE66, H'BE52, H'BE5A, H'BE62, H'BE6A, H'BE29, H'BE2D, H'BE33, H'BE37, H'BE43, H'BE47, H'BE05, H'BE0D, H'BE15, H'BE09, H'BE11, H'BE19, H'BE22
|
||||
* gate/queue state machine candidate:
|
||||
@@ -201,7 +226,7 @@ extern volatile u8 MEM8[0x10000];
|
||||
* - session_timeout_clears_gate_and_queue: When F9C5 is clear, loc_3FEF clears F9B5/F9B0 and clears FAA5.bit7; when nonzero, it sets FAA5.bit7.
|
||||
* - idle_heartbeat_gate_initial_delay_loaded: Startup/init loads F9C4 with H'14 before the first idle/default report can be queued.
|
||||
* - idle_heartbeat_gate_post_send_delay_loaded: loc_BA26 reloads F9C4 with H'07 after each send, matching the observed heartbeat spacing.
|
||||
* - host_ack_can_advance_queue: Commands 0x05/0x06 are modeled as acknowledgement paths that can clear pending state or advance F9B5.; commands H'05, H'06
|
||||
* - host_ack_can_advance_queue: Command 0x05 is a continuation-only ACK/session clear path: it clears FAA3/FAA2 and advances F9B5 only when queued-report FAA2.bit3 was set. Selector 0x0040 has no response; if FAA2 == 0 the command falls through instead of doing ACK work.; commands H'05
|
||||
* - caveat: Many panel controls may require host/session traffic before reporting. Observed autonomous call/camera-power indexes are runtime/capture overlays, not ROM constants.
|
||||
* - evidence: H'3FD3, H'3FD7, H'3FD9, H'3FDD, H'3FDF, H'3FE3, H'3FE5, H'3FE9, H'3FEB, H'3FEF, H'3FF3, H'3FF5, H'3FF9, H'3FFD, H'4001, H'4003, H'4005, H'4007, H'4046, H'404A, H'404C, H'4050, H'4052, H'4056, H'4058, H'4059, H'405D, H'405F, H'4063, H'4065, H'4067, H'406C, H'4070, H'BAF2, H'BAF6, H'BAF8, H'BAFC, H'BAFE, H'BB00, H'BB04, H'BB06, H'BB08, H'BB0C, H'BB0E, H'BB11, H'BB13, H'BB15, H'BB17, H'BB19, H'BB1C, H'BB20, H'BB24, H'BB26, H'BB29, H'BB2B, H'BB2F, H'BB33, H'BB35, H'BB39, H'BB3D, H'BB3F, H'BB43, H'BE9E, H'BEA2, H'BEA5, H'BEA9, H'BEAD, H'BEAF, H'BEB3, H'BEB5, H'BEB9, H'BEBB, H'BEBF, H'BEC1, H'BEC5, H'BECB, H'BECF, H'BED1, H'BED5
|
||||
* TX/autonomous report model candidate:
|
||||
@@ -338,33 +363,70 @@ void sci1_process_candidate_protocol_command(void)
|
||||
u16 logical_index = sci1_rx_candidate_logical_index();
|
||||
u16 value = sci1_rx_candidate_value();
|
||||
|
||||
bool session_active = MEM8[0xFAA2u] != 0u;
|
||||
|
||||
if (!session_active) {
|
||||
/* Initial/idle dispatcher: valid checksum/no RX error, FAA2 == 0. */
|
||||
switch (command) {
|
||||
case 0x00u:
|
||||
/* set_value_acked: candidate write of RX[3:4] into primary/current tables, followed by a response
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0
|
||||
* candidate effect: table_write_candidate; target primary_value_table_candidate; source RX[3:4] value bytes, with an observed 0x80 fallback when decoded index is zero; table H'E000
|
||||
* candidate effect: table_write_candidate; target current_value_table_candidate; source same candidate value written to the primary table; table H'E800
|
||||
* candidate effect: flag_update_candidate; target per_index_flag_table_candidate; set bit 7; table H'EC00
|
||||
* evidence: H'BC08, H'BC0C, H'BC20, H'BC22, H'BCB0, H'BCB9, H'BCC1, H'BCC9, H'BCB5, H'BCBD, H'BCC5, H'BCCD
|
||||
*/
|
||||
candidate_set_value_acked(logical_index, value);
|
||||
break;
|
||||
case 0x01u:
|
||||
/* read_value: initial/idle-path primary table read only, followed by an odd response staging sequence
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0 && F861.bit7 == 0
|
||||
* note: Only accepted on the initial/idle dispatcher path: valid checksum/no RX error, FAA2 == 0, and F861.bit7 == 0.
|
||||
* note: BCD7 stages F850=0x04, writes F851 from F861 and then overwrites F851 from F862.
|
||||
* note: BCD7 reads the primary table word at E000 + 2*selector; F854 receives the low byte and F853 receives the high byte.
|
||||
* note: F852 is not freshly written in the BCD7 handler, so do not describe the response as a fixed 04 00 QQ hi lo frame.
|
||||
* candidate effect: table_read_candidate; target primary_value_table_candidate; table H'E000
|
||||
* candidate effect: response_staging_candidate; stage F850-F854 and call loc_BA26
|
||||
* evidence: H'BC08, H'BC0C, H'BC24, H'BC26, H'BCD7, H'BCE0, H'BCE8, H'BCF0, H'BCF6, H'BCDC, H'BCE4, H'BCFA
|
||||
*/
|
||||
if ((RX_FRAME(1) & 0x80u) != 0u) {
|
||||
candidate_unknown_command(command, logical_index, value);
|
||||
break;
|
||||
}
|
||||
candidate_read_value(logical_index, value);
|
||||
break;
|
||||
case 0x02u:
|
||||
/* clear_or_abort: candidate clear/abort path with no immediate response builder
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0
|
||||
* candidate effect: state_clear_candidate; target serial_session_flags_candidate; clear bit 7; state H'FAA2
|
||||
* evidence: H'BC08, H'BC0C, H'BC29, H'BC2B
|
||||
*/
|
||||
candidate_clear_or_abort(logical_index, value);
|
||||
break;
|
||||
case 0x07u:
|
||||
/* retransmit_or_error_reply: candidate retransmit path; retry/error handling also builds a command 0x07 RX-payload echo
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0 OR valid checksum/no RX physical error && FAA2 != 0
|
||||
* note: loc_BE4D is a retry/error echo path: F850=0x07 and F861-F864 are copied into F851-F854 before loc_BA26.
|
||||
* note: Observed frame 07 80 40 20 90 2D means RX bytes F861-F864 were 80 40 20 90; it is not a table value.
|
||||
* candidate effect: retransmit_candidate; target TX staging bytes H'F850-H'F854 before loc_BA26; source previous TX frame bytes H'F858-H'F85C
|
||||
* candidate effect: retry_error_echo_candidate; target F850=0x07, F851-F854=F861-F864 before loc_BA26; source RX payload bytes F861-F864; 07 80 40 20 90 2D echoes RX payload 80 40 20 90; it is not a table value
|
||||
* candidate effect: response_staging_candidate; stage F850-F854 and call loc_BA26
|
||||
* evidence: H'BC08, H'BC0C, H'BC2E, H'BC30, H'BC54, H'BC56, H'BE09, H'BE11, H'BE19, H'BE22
|
||||
*/
|
||||
candidate_retransmit_or_error_reply(logical_index, value);
|
||||
break;
|
||||
default:
|
||||
candidate_unknown_command(command, logical_index, value);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* Continuation dispatcher: FAA2 != 0. */
|
||||
switch (command) {
|
||||
case 0x00u:
|
||||
/* set_value_acked: candidate write of RX[3:4] into primary/current tables, followed by a response
|
||||
* candidate effect: table_write_candidate; target primary_value_table_candidate; source RX[3:4] value bytes, with an observed 0x80 fallback when decoded index is zero; table H'E000
|
||||
* candidate effect: table_write_candidate; target current_value_table_candidate; source same candidate value written to the primary table; table H'E800
|
||||
* candidate effect: flag_update_candidate; target per_index_flag_table_candidate; set bit 7; table H'EC00
|
||||
* evidence: H'BC08, H'BC0C, H'BC20, H'BC22, H'BCB0, H'BCB9, H'BCC1, H'BCC9, H'BCB5, H'BCBD, H'BCC5, H'BCCD
|
||||
*/
|
||||
candidate_set_value_acked(logical_index, value);
|
||||
break;
|
||||
case 0x01u:
|
||||
/* read_value: candidate read from the primary table, followed by a response carrying the value
|
||||
* candidate effect: table_read_candidate; target primary_value_table_candidate; table H'E000
|
||||
* candidate effect: response_staging_candidate; stage F850-F854 and call loc_BA26
|
||||
* evidence: H'BC08, H'BC0C, H'BC24, H'BC26, H'BCB0, H'BCB9, H'BCC1, H'BCC9, H'BCD7, H'BCE0, H'BCE8, H'BCF0, H'BCF6, H'BCB5, H'BCBD, H'BCC5, H'BCDC, H'BCE4, H'BCFA
|
||||
*/
|
||||
candidate_read_value(logical_index, value);
|
||||
break;
|
||||
case 0x02u:
|
||||
/* clear_or_abort: candidate clear/abort path with no immediate response builder
|
||||
* candidate effect: state_clear_candidate; target serial_session_flags_candidate; clear bit 7; state H'FAA2
|
||||
* evidence: H'BC08, H'BC0C, H'BC29, H'BC2B
|
||||
*/
|
||||
candidate_clear_or_abort(logical_index, value);
|
||||
break;
|
||||
case 0x04u:
|
||||
/* set_value_no_immediate_reply: candidate write/update path that stores a value without an immediate serial response
|
||||
* availability: valid checksum/no RX physical error && FAA2 != 0
|
||||
* candidate effect: table_write_candidate; target primary_value_table_candidate; source RX[3:4] value bytes, with an observed 0x80 fallback when decoded index is zero; table H'E000
|
||||
* candidate effect: flag_update_candidate; target per_index_flag_table_candidate; set bit 7; table H'EC00
|
||||
* evidence: H'BC08, H'BC0C, H'BC45, H'BC47
|
||||
@@ -372,14 +434,20 @@ void sci1_process_candidate_protocol_command(void)
|
||||
candidate_set_value_no_immediate_reply(logical_index, value);
|
||||
break;
|
||||
case 0x05u:
|
||||
/* ack_or_clear_pending: candidate pending/event acknowledgement path
|
||||
* candidate effect: pending_acknowledgement_candidate; target selected event/pending state; clear selected pending flags and then clear serial session state
|
||||
/* ack_or_clear_pending: continuation-only conditional acknowledgement/session clear path
|
||||
* availability: valid checksum/no RX physical error && FAA2 != 0
|
||||
* note: Only accepted on the continuation dispatcher path when FAA2 != 0.
|
||||
* note: For selector 0x0040, frame 05 00 40 00 00 1F performs no response staging.
|
||||
* note: The handler clears FAA3/FAA2; F9B5 advances only when FAA2.bit3 was set from a queued report.
|
||||
* note: If FAA2 == 0, command 5 falls through the initial dispatcher instead of doing acknowledgement work.
|
||||
* candidate effect: conditional_ack_session_clear_candidate; target selected event/pending state; when FAA2 != 0, clear FAA3/FAA2; advance F9B5 only if FAA2.bit3 was set from queued-report state; selector 0x0040 stages no response; selector H'0040 has no response
|
||||
* evidence: H'BC08, H'BC0C, H'BC4A, H'BC4C
|
||||
*/
|
||||
candidate_ack_or_clear_pending(logical_index, value);
|
||||
break;
|
||||
case 0x06u:
|
||||
/* set_secondary_value: candidate secondary-table value write path
|
||||
* availability: valid checksum/no RX physical error && FAA2 != 0
|
||||
* candidate effect: table_write_candidate; target secondary_value_table_candidate; source RX[3:4] value bytes; table H'E400
|
||||
* candidate effect: flag_update_candidate; target per_index_flag_table_candidate; set bit 6; table H'EC00
|
||||
* evidence: H'BC08, H'BC0C, H'BC4F, H'BC51
|
||||
@@ -387,8 +455,12 @@ void sci1_process_candidate_protocol_command(void)
|
||||
candidate_set_secondary_value(logical_index, value);
|
||||
break;
|
||||
case 0x07u:
|
||||
/* retransmit_or_error_reply: candidate retransmit/NAK-style path; error handling also builds command 0x07 responses
|
||||
/* retransmit_or_error_reply: candidate retransmit path; retry/error handling also builds a command 0x07 RX-payload echo
|
||||
* availability: valid checksum/no RX physical error && FAA2 == 0 OR valid checksum/no RX physical error && FAA2 != 0
|
||||
* note: loc_BE4D is a retry/error echo path: F850=0x07 and F861-F864 are copied into F851-F854 before loc_BA26.
|
||||
* note: Observed frame 07 80 40 20 90 2D means RX bytes F861-F864 were 80 40 20 90; it is not a table value.
|
||||
* candidate effect: retransmit_candidate; target TX staging bytes H'F850-H'F854 before loc_BA26; source previous TX frame bytes H'F858-H'F85C
|
||||
* candidate effect: retry_error_echo_candidate; target F850=0x07, F851-F854=F861-F864 before loc_BA26; source RX payload bytes F861-F864; 07 80 40 20 90 2D echoes RX payload 80 40 20 90; it is not a table value
|
||||
* candidate effect: response_staging_candidate; stage F850-F854 and call loc_BA26
|
||||
* evidence: H'BC08, H'BC0C, H'BC2E, H'BC30, H'BC54, H'BC56, H'BE09, H'BE11, H'BE19, H'BE22
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user