EMualtor adjustments
This commit is contained in:
@@ -403,6 +403,7 @@ class SerialPseudocodeTest(unittest.TestCase):
|
||||
self.assertIn("host_ack_can_advance_queue: Commands 0x05/0x06 can ack or advance F9B5", text)
|
||||
self.assertIn("static bool sci1_candidate_main_report_gate_open(void)", text)
|
||||
self.assertIn("static bool sci1_candidate_report_queue_nonempty(void)", text)
|
||||
self.assertIn("static bool sci1_candidate_idle_heartbeat_enqueue_gate_open(void)", text)
|
||||
self.assertIn("static bool sci1_candidate_periodic_resend_gate_open(void)", text)
|
||||
self.assertIn("TX/autonomous report model candidate:", text)
|
||||
self.assertIn("loc_BB43 -> loc_BA26: bytes 0..2 encode candidate logical index/report id; bytes 3..4 come from current_value_table_candidate", text)
|
||||
@@ -421,6 +422,41 @@ class SerialPseudocodeTest(unittest.TestCase):
|
||||
self.assertIn("MEM8[0xF9C6u] = (u8)(MEM8[0xF9C6u] - 1u);", text)
|
||||
self.assertIn("candidate effect: table_write_candidate; target primary_value_table_candidate", text)
|
||||
|
||||
def test_timer_source_models_emit_separate_tick_isrs(self):
|
||||
analysis = {
|
||||
"protocol_semantics": [
|
||||
{
|
||||
"confidence": "medium",
|
||||
"confidence_score": 0.6,
|
||||
"timer_interrupt_model": {
|
||||
"sources": [
|
||||
{
|
||||
"source": "FRT2 OCIA",
|
||||
"handler_address_hex": "H'BF23",
|
||||
"summary": "Candidate periodic tick ISR for idle heartbeat/report counters.",
|
||||
"counters": [
|
||||
{
|
||||
"address": 0xF9C4,
|
||||
"address_hex": "H'F9C4",
|
||||
"name_candidate": "idle_heartbeat_gate_countdown_candidate",
|
||||
"role": "candidate idle/default report enqueue countdown.",
|
||||
}
|
||||
],
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
with patch("h8536.serial_pseudocode.analyze_serial_semantics", return_value=analysis):
|
||||
text = generate_serial_pseudocode(candidate_payload())
|
||||
|
||||
self.assertIn("FRT2 OCIA H'BF23", text)
|
||||
self.assertIn("H'F9C4 idle_heartbeat_gate_countdown_candidate", text)
|
||||
self.assertIn("void frt2_ocia_candidate_tick_isr(void)", text)
|
||||
self.assertIn("MEM8[0xF9C4u] = (u8)(MEM8[0xF9C4u] - 1u);", text)
|
||||
|
||||
def test_tx_only_option_omits_rx_functions(self):
|
||||
text = generate_serial_pseudocode(
|
||||
candidate_payload(),
|
||||
|
||||
Reference in New Issue
Block a user