[dif/alert_handler] restored ConfigTest.ClassInit unit test
Signed-off-by: Timothy Trippel <ttrippel@google.com>
diff --git a/sw/device/lib/dif/dif_alert_handler_unittest.cc b/sw/device/lib/dif/dif_alert_handler_unittest.cc
index 18e1d78..d742da0 100644
--- a/sw/device/lib/dif/dif_alert_handler_unittest.cc
+++ b/sw/device/lib/dif/dif_alert_handler_unittest.cc
@@ -94,7 +94,10 @@
.ping_timeout = 0,
};
- EXPECT_READ32(ALERT_HANDLER_PING_TIMER_EN_SHADOWED_REG_OFFSET, 1);
+ EXPECT_READ32(
+ ALERT_HANDLER_PING_TIMER_EN_SHADOWED_REG_OFFSET,
+ {{ALERT_HANDLER_PING_TIMER_EN_SHADOWED_PING_TIMER_EN_SHADOWED_BIT,
+ true}});
EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
kDifAlertHandlerConfigLocked);
@@ -141,384 +144,403 @@
kDifAlertHandlerConfigBadArg);
}
-// TEST_F(ConfigTest, ClassInit) {
-// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, 5};
-// std::vector<dif_alert_handler_local_alert_t> locals_a = {
-// kDifAlertHandlerLocalAlertEscalationPingFail,
-// };
-// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
-// {.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
-// {.phase = kDifAlertHandlerClassStatePhase2, .signal = 1},
-// };
-// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
-// {.phase = kDifAlertHandlerClassStatePhase1, .cycles = 20000},
-// {.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
-// };
+TEST_F(ConfigTest, ClassInit) {
+ std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, 5};
+ std::vector<dif_alert_handler_local_alert_t> locals_a = {
+ kDifAlertHandlerLocalAlertEscalationPingFail,
+ };
+ std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
+ {.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
+ {.phase = kDifAlertHandlerClassStatePhase2, .signal = 1},
+ };
+ std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
+ {.phase = kDifAlertHandlerClassStatePhase1, .cycles = 20000},
+ {.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
+ };
-// std::vector<dif_alert_handler_alert_t> alerts_b = {9, 6, 11};
-// std::vector<dif_alert_handler_local_alert_t> locals_b = {
-// kDifAlertHandlerLocalAlertAlertPingFail,
-// kDifAlertHandlerLocalAlertAlertIntegrityFail,
-// };
-// std::vector<dif_alert_handler_class_phase_signal_t> signals_b = {
-// {.phase = kDifAlertHandlerClassStatePhase1, .signal = 0},
-// };
-// std::vector<dif_alert_handler_class_phase_duration_t> durations_b = {
-// {.phase = kDifAlertHandlerClassStatePhase1, .cycles = 20000},
-// {.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
-// {.phase = kDifAlertHandlerClassStatePhase3, .cycles = 150000},
-// };
+ std::vector<dif_alert_handler_alert_t> alerts_b = {9, 6, 11};
+ std::vector<dif_alert_handler_local_alert_t> locals_b = {
+ kDifAlertHandlerLocalAlertAlertPingFail,
+ kDifAlertHandlerLocalAlertAlertIntegrityFail,
+ };
+ std::vector<dif_alert_handler_class_phase_signal_t> signals_b = {
+ {.phase = kDifAlertHandlerClassStatePhase1, .signal = 0},
+ };
+ std::vector<dif_alert_handler_class_phase_duration_t> durations_b = {
+ {.phase = kDifAlertHandlerClassStatePhase1, .cycles = 20000},
+ {.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
+ {.phase = kDifAlertHandlerClassStatePhase3, .cycles = 150000},
+ };
-// std::vector<dif_alert_handler_class_config_t> classes = {
-// {
-// .alert_class = kDifAlertHandlerClassA,
-// .alerts = alerts_a.data(),
-// .alerts_len = alerts_a.size(),
-// .local_alerts = locals_a.data(),
-// .local_alerts_len = locals_a.size(),
-// .use_escalation_protocol = kDifAlertHandlerToggleDisabled,
-// .automatic_locking = kDifAlertHandlerToggleEnabled,
-// .accumulator_threshold = 12,
-// .irq_deadline_cycles = 30000,
-// .phase_signals = signals_a.data(),
-// .phase_signals_len = signals_a.size(),
-// .phase_durations = durations_a.data(),
-// .phase_durations_len = durations_a.size(),
-// },
-// {
-// .alert_class = kDifAlertHandlerClassB,
-// .alerts = alerts_b.data(),
-// .alerts_len = alerts_b.size(),
-// .local_alerts = locals_b.data(),
-// .local_alerts_len = locals_b.size(),
-// .use_escalation_protocol = kDifAlertHandlerToggleEnabled,
-// .automatic_locking = kDifAlertHandlerToggleDisabled,
-// .accumulator_threshold = 8,
-// .irq_deadline_cycles = 2000,
-// .phase_signals = signals_b.data(),
-// .phase_signals_len = signals_b.size(),
-// .phase_durations = durations_b.data(),
-// .phase_durations_len = durations_b.size(),
-// },
-// };
+ std::vector<dif_alert_handler_class_config_t> classes = {
+ {
+ .alert_class = kDifAlertHandlerClassA,
+ .alerts = alerts_a.data(),
+ .alerts_len = alerts_a.size(),
+ .local_alerts = locals_a.data(),
+ .local_alerts_len = locals_a.size(),
+ .use_escalation_protocol = kDifAlertHandlerToggleDisabled,
+ .automatic_locking = kDifAlertHandlerToggleEnabled,
+ .accumulator_threshold = 12,
+ .irq_deadline_cycles = 30000,
+ .phase_signals = signals_a.data(),
+ .phase_signals_len = signals_a.size(),
+ .phase_durations = durations_a.data(),
+ .phase_durations_len = durations_a.size(),
+ },
+ {
+ .alert_class = kDifAlertHandlerClassB,
+ .alerts = alerts_b.data(),
+ .alerts_len = alerts_b.size(),
+ .local_alerts = locals_b.data(),
+ .local_alerts_len = locals_b.size(),
+ .use_escalation_protocol = kDifAlertHandlerToggleEnabled,
+ .automatic_locking = kDifAlertHandlerToggleDisabled,
+ .accumulator_threshold = 8,
+ .irq_deadline_cycles = 2000,
+ .phase_signals = signals_b.data(),
+ .phase_signals_len = signals_b.size(),
+ .phase_durations = durations_b.data(),
+ .phase_durations_len = durations_b.size(),
+ },
+ };
-// dif_alert_handler_config_t config = {
-// .ping_timeout = 50,
-// .classes = classes.data(),
-// .classes_len = classes.size(),
-// };
+ dif_alert_handler_config_t config = {
+ .ping_timeout = 50,
+ .classes = classes.data(),
+ .classes_len = classes.size(),
+ };
-// EXPECT_READ32(ALERT_HANDLER_PING_TIMER_EN_SHADOWED_REG_OFFSET,
-// {{ALERT_HANDLER_PING_TIMER_EN_SHADOWED_PING_TIMER_EN_SHADOWED_BIT,
-// true}});
+ // The alert handler needs to be unlocked for it to be configured.
+ EXPECT_READ32(
+ ALERT_HANDLER_PING_TIMER_EN_SHADOWED_REG_OFFSET,
+ {{ALERT_HANDLER_PING_TIMER_EN_SHADOWED_PING_TIMER_EN_SHADOWED_BIT,
+ false}});
-// // Unfortunately, we can't use EXPECT_MASK for these reads and writes,
-// // since there are not sequenced exactly.
-// EXPECT_READ32(ALERT_HANDLER_ALERT_EN_0_REG_OFFSET, 0);
-// EXPECT_READ32(ALERT_HANDLER_ALERT_CLASS_0_REG_OFFSET, kAllOnes);
+ // Configure class A alerts.
+ // Unfortunately, we can't use EXPECT_MASK for these reads/writes, since the
+ // target registers are shadowed.
+ for (auto alert : alerts_a) {
+ // The various alerts should be enabled.
+ ptrdiff_t alert_enable_reg_offset =
+ ALERT_HANDLER_ALERT_EN_SHADOWED_0_REG_OFFSET + alert * sizeof(uint32_t);
+ EXPECT_READ32(alert_enable_reg_offset, 0);
+ EXPECT_WRITE32_SHADOWED(
+ alert_enable_reg_offset,
+ {{ALERT_HANDLER_ALERT_EN_SHADOWED_0_EN_A_0_BIT, true}});
+ // The various alerts should be classified.
+ ptrdiff_t alert_class_reg_offset =
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET +
+ alert * sizeof(uint32_t);
+ EXPECT_READ32(alert_class_reg_offset, 0);
+ EXPECT_WRITE32_SHADOWED(
+ alert_class_reg_offset,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_CLASS_A_0_VALUE_CLASSA);
+ }
-// EXPECT_WRITE32(ALERT_HANDLER_ALERT_EN_0_REG_OFFSET, {
-// {1, true},
-// {2, true},
-// {5, true},
-// });
-// uint32_t reg_a = kAllOnes;
-// for (auto alert : alerts_a) {
-// reg_a =
-// bitfield_field32_write(reg_a, {.mask = 0b11, .index = alert * 2},
-// 0b00);
-// }
-// EXPECT_WRITE32(ALERT_HANDLER_ALERT_CLASS_0_REG_OFFSET, reg_a);
+ // Configure class A local alerts.
+ // Unfortunately, we can't use EXPECT_MASK for these reads/writes, since the
+ // target registers are shadowed.
+ EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1_REG_RESVAL);
+ EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_1_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_1_REG_RESVAL);
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1_REG_OFFSET,
+ {{ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1_EN_LA_1_BIT, true}});
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_1_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_CLASS_LA_0_VALUE_CLASSA);
-// EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_EN_0_REG_OFFSET, 0);
-// EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_CLASS_0_REG_OFFSET, kAllOnes);
+ // Configure class A control register.
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_CLASSA_CTRL_SHADOWED_REG_OFFSET,
+ {
+ {ALERT_HANDLER_CLASSA_CTRL_SHADOWED_EN_BIT, false},
+ {ALERT_HANDLER_CLASSA_CTRL_SHADOWED_LOCK_BIT, true},
+ {ALERT_HANDLER_CLASSA_CTRL_SHADOWED_EN_E0_BIT, true},
+ {ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E0_OFFSET, 3},
+ {ALERT_HANDLER_CLASSA_CTRL_SHADOWED_EN_E2_BIT, true},
+ {ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E2_OFFSET, 1},
+ });
-// EXPECT_WRITE32(ALERT_HANDLER_LOC_ALERT_EN_0_REG_OFFSET,
-// {
-// {ALERT_HANDLER_LOC_ALERT_EN_1_EN_LA_1_BIT, true},
-// });
-// uint32_t loc_reg_a = kAllOnes;
-// loc_reg_a = bitfield_field32_write(
-// loc_reg_a,
-// {
-// .mask = ALERT_HANDLER_LOC_ALERT_CLASS_1_CLASS_LA_1_MASK,
-// .index = ALERT_HANDLER_LOC_ALERT_CLASS_1_CLASS_LA_1_OFFSET,
-// },
-// 0b00);
-// EXPECT_WRITE32(ALERT_HANDLER_LOC_ALERT_CLASS_0_REG_OFFSET, loc_reg_a);
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSA_ACCUM_THRESH_SHADOWED_REG_OFFSET,
+ 12);
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSA_TIMEOUT_CYC_SHADOWED_REG_OFFSET,
+ 30000);
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSA_CTRL_REG_OFFSET,
-// {
-// {ALERT_HANDLER_CLASSA_CTRL_EN_BIT, false},
-// {ALERT_HANDLER_CLASSA_CTRL_LOCK_BIT, true},
-// {ALERT_HANDLER_CLASSA_CTRL_EN_E0_BIT, true},
-// {ALERT_HANDLER_CLASSA_CTRL_MAP_E0_OFFSET, 3},
-// {ALERT_HANDLER_CLASSA_CTRL_EN_E2_BIT, true},
-// {ALERT_HANDLER_CLASSA_CTRL_MAP_E2_OFFSET, 1},
-// });
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSA_PHASE1_CYC_SHADOWED_REG_OFFSET,
+ 20000);
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSA_PHASE2_CYC_SHADOWED_REG_OFFSET,
+ 15000);
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSA_ACCUM_THRESH_REG_OFFSET, 12);
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSA_TIMEOUT_CYC_REG_OFFSET, 30000);
+ // Configure class B alerts.
+ // Unfortunately, we can't use EXPECT_MASK for these reads/writes, since the
+ // target registers are shadowed.
+ for (auto alert : alerts_b) {
+ // The various alerts should be enabled.
+ ptrdiff_t alert_enable_reg_offset =
+ ALERT_HANDLER_ALERT_EN_SHADOWED_0_REG_OFFSET + alert * sizeof(uint32_t);
+ EXPECT_READ32(alert_enable_reg_offset, 0);
+ EXPECT_WRITE32_SHADOWED(
+ alert_enable_reg_offset,
+ {{ALERT_HANDLER_ALERT_EN_SHADOWED_0_EN_A_0_BIT, true}});
+ // The various alerts should be classified.
+ ptrdiff_t alert_class_reg_offset =
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET +
+ alert * sizeof(uint32_t);
+ EXPECT_READ32(alert_class_reg_offset, 0);
+ EXPECT_WRITE32_SHADOWED(
+ alert_class_reg_offset,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_CLASS_A_0_VALUE_CLASSB);
+ }
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSA_PHASE1_CYC_REG_OFFSET, 20000);
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSA_PHASE2_CYC_REG_OFFSET, 15000);
+ // Configure class B local alerts.
+ // Unfortunately, we can't use EXPECT_MASK for these reads/writes, since the
+ // target registers are shadowed.
+ EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_REG_RESVAL);
+ EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_RESVAL);
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_REG_OFFSET,
+ {{ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_EN_LA_0_BIT, true}});
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_CLASS_LA_0_VALUE_CLASSB);
+ EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2_REG_RESVAL);
+ EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_2_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_2_REG_RESVAL);
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2_REG_OFFSET,
+ {{ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2_EN_LA_2_BIT, true}});
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_2_REG_OFFSET,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_CLASS_LA_0_VALUE_CLASSB);
-// EXPECT_READ32(ALERT_HANDLER_ALERT_EN_0_REG_OFFSET, 0);
-// EXPECT_READ32(ALERT_HANDLER_ALERT_CLASS_0_REG_OFFSET, kAllOnes);
+ // Configure class B control register.
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_CLASSB_CTRL_SHADOWED_REG_OFFSET,
+ {
+ {ALERT_HANDLER_CLASSB_CTRL_SHADOWED_EN_BIT, true},
+ {ALERT_HANDLER_CLASSB_CTRL_SHADOWED_LOCK_BIT, false},
+ {ALERT_HANDLER_CLASSB_CTRL_SHADOWED_EN_E1_BIT, true},
+ {ALERT_HANDLER_CLASSB_CTRL_SHADOWED_MAP_E1_OFFSET, 0},
+ });
-// EXPECT_WRITE32(ALERT_HANDLER_ALERT_EN_0_REG_OFFSET, {
-// {9, true},
-// {6, true},
-// {11, true},
-// });
-// uint32_t reg_b = kAllOnes;
-// for (auto alert : alerts_b) {
-// reg_b =
-// bitfield_field32_write(reg_b, {.mask = 0b11, .index = alert * 2},
-// 0b01);
-// }
-// EXPECT_WRITE32(ALERT_HANDLER_ALERT_CLASS_0_REG_OFFSET, reg_b);
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSB_ACCUM_THRESH_SHADOWED_REG_OFFSET,
+ 8);
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSB_TIMEOUT_CYC_SHADOWED_REG_OFFSET,
+ 2000);
-// EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_EN_0_REG_OFFSET, 0);
-// EXPECT_READ32(ALERT_HANDLER_LOC_ALERT_CLASS_0_REG_OFFSET, kAllOnes);
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSB_PHASE1_CYC_SHADOWED_REG_OFFSET,
+ 20000);
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSB_PHASE2_CYC_SHADOWED_REG_OFFSET,
+ 15000);
+ EXPECT_WRITE32_SHADOWED(ALERT_HANDLER_CLASSB_PHASE3_CYC_SHADOWED_REG_OFFSET,
+ 150000);
-// EXPECT_WRITE32(ALERT_HANDLER_LOC_ALERT_EN_0_REG_OFFSET,
-// {
-// {ALERT_HANDLER_LOC_ALERT_EN_0_EN_LA_0_BIT, true},
-// {ALERT_HANDLER_LOC_ALERT_EN_2_EN_LA_2_BIT, true},
-// });
-// uint32_t loc_reg_b = kAllOnes;
-// loc_reg_b = bitfield_field32_write(
-// loc_reg_b,
-// {
-// .mask = ALERT_HANDLER_LOC_ALERT_CLASS_0_CLASS_LA_0_MASK,
-// .index = ALERT_HANDLER_LOC_ALERT_CLASS_0_CLASS_LA_0_OFFSET,
-// },
-// 0b01);
-// loc_reg_b = bitfield_field32_write(
-// loc_reg_b,
-// {
-// .mask = ALERT_HANDLER_LOC_ALERT_CLASS_2_CLASS_LA_2_MASK,
-// .index = ALERT_HANDLER_LOC_ALERT_CLASS_2_CLASS_LA_2_OFFSET,
-// },
-// 0b01);
-// EXPECT_WRITE32(ALERT_HANDLER_LOC_ALERT_CLASS_0_REG_OFFSET, loc_reg_b);
+ EXPECT_WRITE32_SHADOWED(
+ ALERT_HANDLER_PING_TIMEOUT_CYC_SHADOWED_REG_OFFSET,
+ {{ALERT_HANDLER_PING_TIMEOUT_CYC_SHADOWED_PING_TIMEOUT_CYC_SHADOWED_OFFSET,
+ 50}});
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSB_CTRL_REG_OFFSET,
-// {
-// {ALERT_HANDLER_CLASSB_CTRL_EN_BIT, true},
-// {ALERT_HANDLER_CLASSB_CTRL_LOCK_BIT, false},
-// {ALERT_HANDLER_CLASSB_CTRL_EN_E1_BIT, true},
-// {ALERT_HANDLER_CLASSB_CTRL_MAP_E1_OFFSET, 0},
-// });
-
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSB_ACCUM_THRESH_REG_OFFSET, 8);
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSB_TIMEOUT_CYC_REG_OFFSET, 2000);
-
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSB_PHASE1_CYC_REG_OFFSET, 20000);
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSB_PHASE2_CYC_REG_OFFSET, 15000);
-// EXPECT_WRITE32(ALERT_HANDLER_CLASSB_PHASE3_CYC_REG_OFFSET, 150000);
-
-// EXPECT_WRITE32(
-// ALERT_HANDLER_PING_TIMEOUT_CYC_SHADOWED_REG_OFFSET,
-// {{ALERT_HANDLER_PING_TIMEOUT_CYC_SHADOWED_PING_TIMEOUT_CYC_SHADOWED_OFFSET,
-// 50}});
-
-// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
-// kDifAlertHandlerConfigOk);
-// }
+ EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
+ kDifAlertHandlerConfigOk);
+}
// TEST_F(ConfigTest, BadAlert) {
-// IgnoreMmioCalls();
+// IgnoreMmioCalls();
-// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, kAlerts + 1};
-// std::vector<dif_alert_handler_local_alert_t> locals_a = {
-// kDifAlertHandlerLocalAlertEscalationPingFail,
-// };
-// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
-// {.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
-// {.phase = kDifAlertHandlerClassStatePhase2, .signal = 1},
-// };
-// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
-// {.phase = kDifAlertHandlerClassStatePhase1, .cycles = 20000},
-// {.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
-// };
+// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, kAlerts + 1};
+// std::vector<dif_alert_handler_local_alert_t> locals_a = {
+// kDifAlertHandlerLocalAlertEscalationPingFail,
+//};
+// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
+//{.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
+//{.phase = kDifAlertHandlerClassStatePhase2, .signal = 1},
+//};
+// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
+//{.phase = kDifAlertHandlerClassStatePhase1, .cycles = 20000},
+//{.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
+//};
-// std::vector<dif_alert_handler_class_config_t> classes = {
-// {
-// .alert_class = kDifAlertHandlerClassA,
-// .alerts = alerts_a.data(),
-// .alerts_len = alerts_a.size(),
-// .local_alerts = locals_a.data(),
-// .local_alerts_len = locals_a.size(),
-// .use_escalation_protocol = kDifAlertHandlerToggleDisabled,
-// .automatic_locking = kDifAlertHandlerToggleEnabled,
-// .accumulator_threshold = 12,
-// .irq_deadline_cycles = 30000,
-// .phase_signals = signals_a.data(),
-// .phase_signals_len = signals_a.size(),
-// .phase_durations = durations_a.data(),
-// .phase_durations_len = durations_a.size(),
-// },
-// };
+// std::vector<dif_alert_handler_class_config_t> classes = {
+//{
+//.alert_class = kDifAlertHandlerClassA,
+//.alerts = alerts_a.data(),
+//.alerts_len = alerts_a.size(),
+//.local_alerts = locals_a.data(),
+//.local_alerts_len = locals_a.size(),
+//.use_escalation_protocol = kDifAlertHandlerToggleDisabled,
+//.automatic_locking = kDifAlertHandlerToggleEnabled,
+//.accumulator_threshold = 12,
+//.irq_deadline_cycles = 30000,
+//.phase_signals = signals_a.data(),
+//.phase_signals_len = signals_a.size(),
+//.phase_durations = durations_a.data(),
+//.phase_durations_len = durations_a.size(),
+//},
+//};
-// dif_alert_handler_config_t config = {
-// .ping_timeout = 50,
-// .classes = classes.data(),
-// .classes_len = classes.size(),
-// };
+// dif_alert_handler_config_t config = {
+//.ping_timeout = 50,
+//.classes = classes.data(),
+//.classes_len = classes.size(),
+//};
-// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
-// kDifAlertHandlerConfigError);
-// }
+// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
+// kDifAlertHandlerConfigError);
+//}
// TEST_F(ConfigTest, BadSignalPhase) {
-// IgnoreMmioCalls();
+// IgnoreMmioCalls();
-// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, 5};
-// std::vector<dif_alert_handler_local_alert_t> locals_a = {
-// kDifAlertHandlerLocalAlertEscalationPingFail,
-// };
-// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
-// {.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
-// {.phase = kDifAlertHandlerClassStateTerminal, .signal = 1},
-// };
-// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
-// {.phase = kDifAlertHandlerClassStatePhase1, .cycles = 20000},
-// {.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
-// };
+// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, 5};
+// std::vector<dif_alert_handler_local_alert_t> locals_a = {
+// kDifAlertHandlerLocalAlertEscalationPingFail,
+//};
+// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
+//{.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
+//{.phase = kDifAlertHandlerClassStateTerminal, .signal = 1},
+//};
+// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
+//{.phase = kDifAlertHandlerClassStatePhase1, .cycles = 20000},
+//{.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
+//};
-// std::vector<dif_alert_handler_class_config_t> classes = {
-// {
-// .alert_class = kDifAlertHandlerClassA,
-// .alerts = alerts_a.data(),
-// .alerts_len = alerts_a.size(),
-// .local_alerts = locals_a.data(),
-// .local_alerts_len = locals_a.size(),
-// .use_escalation_protocol = kDifAlertHandlerToggleDisabled,
-// .automatic_locking = kDifAlertHandlerToggleEnabled,
-// .accumulator_threshold = 12,
-// .irq_deadline_cycles = 30000,
-// .phase_signals = signals_a.data(),
-// .phase_signals_len = signals_a.size(),
-// .phase_durations = durations_a.data(),
-// .phase_durations_len = durations_a.size(),
-// },
-// };
+// std::vector<dif_alert_handler_class_config_t> classes = {
+//{
+//.alert_class = kDifAlertHandlerClassA,
+//.alerts = alerts_a.data(),
+//.alerts_len = alerts_a.size(),
+//.local_alerts = locals_a.data(),
+//.local_alerts_len = locals_a.size(),
+//.use_escalation_protocol = kDifAlertHandlerToggleDisabled,
+//.automatic_locking = kDifAlertHandlerToggleEnabled,
+//.accumulator_threshold = 12,
+//.irq_deadline_cycles = 30000,
+//.phase_signals = signals_a.data(),
+//.phase_signals_len = signals_a.size(),
+//.phase_durations = durations_a.data(),
+//.phase_durations_len = durations_a.size(),
+//},
+//};
-// dif_alert_handler_config_t config = {
-// .ping_timeout = 50,
-// .classes = classes.data(),
-// .classes_len = classes.size(),
-// };
+// dif_alert_handler_config_t config = {
+//.ping_timeout = 50,
+//.classes = classes.data(),
+//.classes_len = classes.size(),
+//};
-// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
-// kDifAlertHandlerConfigError);
-// }
+// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
+// kDifAlertHandlerConfigError);
+//}
// TEST_F(ConfigTest, BadDurationPhase) {
-// IgnoreMmioCalls();
+// IgnoreMmioCalls();
-// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, 5};
-// std::vector<dif_alert_handler_local_alert_t> locals_a = {
-// kDifAlertHandlerLocalAlertEscalationPingFail,
-// };
-// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
-// {.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
-// {.phase = kDifAlertHandlerClassStatePhase2, .signal = 1},
-// };
-// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
-// {.phase = kDifAlertHandlerClassStateTerminal, .cycles = 20000},
-// {.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
-// };
+// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, 5};
+// std::vector<dif_alert_handler_local_alert_t> locals_a = {
+// kDifAlertHandlerLocalAlertEscalationPingFail,
+//};
+// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
+//{.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
+//{.phase = kDifAlertHandlerClassStatePhase2, .signal = 1},
+//};
+// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
+//{.phase = kDifAlertHandlerClassStateTerminal, .cycles = 20000},
+//{.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
+//};
-// std::vector<dif_alert_handler_class_config_t> classes = {
-// {
-// .alert_class = kDifAlertHandlerClassA,
-// .alerts = alerts_a.data(),
-// .alerts_len = alerts_a.size(),
-// .local_alerts = locals_a.data(),
-// .local_alerts_len = locals_a.size(),
-// .use_escalation_protocol = kDifAlertHandlerToggleDisabled,
-// .automatic_locking = kDifAlertHandlerToggleEnabled,
-// .accumulator_threshold = 12,
-// .irq_deadline_cycles = 30000,
-// .phase_signals = signals_a.data(),
-// .phase_signals_len = signals_a.size(),
-// .phase_durations = durations_a.data(),
-// .phase_durations_len = durations_a.size(),
-// },
-// };
+// std::vector<dif_alert_handler_class_config_t> classes = {
+//{
+//.alert_class = kDifAlertHandlerClassA,
+//.alerts = alerts_a.data(),
+//.alerts_len = alerts_a.size(),
+//.local_alerts = locals_a.data(),
+//.local_alerts_len = locals_a.size(),
+//.use_escalation_protocol = kDifAlertHandlerToggleDisabled,
+//.automatic_locking = kDifAlertHandlerToggleEnabled,
+//.accumulator_threshold = 12,
+//.irq_deadline_cycles = 30000,
+//.phase_signals = signals_a.data(),
+//.phase_signals_len = signals_a.size(),
+//.phase_durations = durations_a.data(),
+//.phase_durations_len = durations_a.size(),
+//},
+//};
-// dif_alert_handler_config_t config = {
-// .ping_timeout = 50,
-// .classes = classes.data(),
-// .classes_len = classes.size(),
-// };
+// dif_alert_handler_config_t config = {
+//.ping_timeout = 50,
+//.classes = classes.data(),
+//.classes_len = classes.size(),
+//};
-// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
-// kDifAlertHandlerConfigError);
-// }
+// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
+// kDifAlertHandlerConfigError);
+//}
// TEST_F(ConfigTest, BadPointers) {
-// IgnoreMmioCalls();
+// IgnoreMmioCalls();
-// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, 5};
-// std::vector<dif_alert_handler_local_alert_t> locals_a = {
-// kDifAlertHandlerLocalAlertEscalationPingFail,
-// };
-// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
-// {.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
-// {.phase = kDifAlertHandlerClassStatePhase2, .signal = 1},
-// };
-// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
-// {.phase = kDifAlertHandlerClassStateTerminal, .cycles = 20000},
-// {.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
-// };
+// std::vector<dif_alert_handler_alert_t> alerts_a = {1, 2, 5};
+// std::vector<dif_alert_handler_local_alert_t> locals_a = {
+// kDifAlertHandlerLocalAlertEscalationPingFail,
+//};
+// std::vector<dif_alert_handler_class_phase_signal_t> signals_a = {
+//{.phase = kDifAlertHandlerClassStatePhase0, .signal = 3},
+//{.phase = kDifAlertHandlerClassStatePhase2, .signal = 1},
+//};
+// std::vector<dif_alert_handler_class_phase_duration_t> durations_a = {
+//{.phase = kDifAlertHandlerClassStateTerminal, .cycles = 20000},
+//{.phase = kDifAlertHandlerClassStatePhase2, .cycles = 15000},
+//};
-// std::vector<dif_alert_handler_class_config_t> classes = {
-// {
-// .alert_class = kDifAlertHandlerClassA,
-// .alerts = alerts_a.data(),
-// .alerts_len = alerts_a.size(),
-// .local_alerts = locals_a.data(),
-// .local_alerts_len = locals_a.size(),
-// .use_escalation_protocol = kDifAlertHandlerToggleDisabled,
-// .automatic_locking = kDifAlertHandlerToggleEnabled,
-// .accumulator_threshold = 12,
-// .irq_deadline_cycles = 30000,
-// .phase_signals = signals_a.data(),
-// .phase_signals_len = signals_a.size(),
-// .phase_durations = durations_a.data(),
-// .phase_durations_len = durations_a.size(),
-// },
-// };
+// std::vector<dif_alert_handler_class_config_t> classes = {
+//{
+//.alert_class = kDifAlertHandlerClassA,
+//.alerts = alerts_a.data(),
+//.alerts_len = alerts_a.size(),
+//.local_alerts = locals_a.data(),
+//.local_alerts_len = locals_a.size(),
+//.use_escalation_protocol = kDifAlertHandlerToggleDisabled,
+//.automatic_locking = kDifAlertHandlerToggleEnabled,
+//.accumulator_threshold = 12,
+//.irq_deadline_cycles = 30000,
+//.phase_signals = signals_a.data(),
+//.phase_signals_len = signals_a.size(),
+//.phase_durations = durations_a.data(),
+//.phase_durations_len = durations_a.size(),
+//},
+//};
-// dif_alert_handler_config_t config = {
-// .ping_timeout = 50,
-// .classes = classes.data(),
-// .classes_len = classes.size(),
-// };
+// dif_alert_handler_config_t config = {
+//.ping_timeout = 50,
+//.classes = classes.data(),
+//.classes_len = classes.size(),
+//};
-// classes[0].alerts = nullptr;
-// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
-// kDifAlertHandlerConfigError);
-// classes[0].alerts = alerts_a.data();
+// classes[0].alerts = nullptr;
+// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
+// kDifAlertHandlerConfigError);
+// classes[0].alerts = alerts_a.data();
-// classes[0].local_alerts = nullptr;
-// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
-// kDifAlertHandlerConfigError);
-// classes[0].local_alerts = locals_a.data();
+// classes[0].local_alerts = nullptr;
+// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
+// kDifAlertHandlerConfigError);
+// classes[0].local_alerts = locals_a.data();
-// classes[0].phase_signals = nullptr;
-// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
-// kDifAlertHandlerConfigError);
-// classes[0].phase_signals = signals_a.data();
+// classes[0].phase_signals = nullptr;
+// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
+// kDifAlertHandlerConfigError);
+// classes[0].phase_signals = signals_a.data();
-// classes[0].phase_durations = nullptr;
-// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
-// kDifAlertHandlerConfigError);
-// }
+// classes[0].phase_durations = nullptr;
+// EXPECT_EQ(dif_alert_handler_configure(&handler_, config),
+// kDifAlertHandlerConfigError);
+//}
// TEST_F(ConfigTest, BadClass) {
// IgnoreMmioCalls();