#include #include #include #include #include #include #include namespace attn { // these are in the attn_lib but not all exposed via headers int handleSpecial(Attention* i_attention); int handleCheckstop(Attention* i_attention); int handleVital(Attention* i_attention); } // namespace attn /** @brief Attention handler test application */ int main(int argc, char* argv[]) { int rc = 0; // return code // initialize pdbg targets pdbg_targets_init(nullptr); // create attention handler config object attn::Config attnConfig; // convert cmd line args to config values parseConfig(argv, argv + argc, &attnConfig); // exercise attention gpio event path attn::attnHandler(&attnConfig); // Get first enabled proc for testing pdbg_target* target = nullptr; pdbg_for_each_class_target("proc", target) { trace::inf("proc: %u", pdbg_target_index(target)); if (PDBG_TARGET_ENABLED == pdbg_target_probe(target)) { trace::inf("target enabled"); break; } } // Exercise special, checkstop and vital attention handler paths if ((nullptr != target) && (PDBG_TARGET_ENABLED == pdbg_target_probe(target))) { std::vector attentions; attentions.emplace_back(attn::Attention::AttentionType::Special, attn::handleSpecial, target, &attnConfig); attentions.emplace_back(attn::Attention::AttentionType::Checkstop, attn::handleCheckstop, target, &attnConfig); attentions.emplace_back(attn::Attention::AttentionType::Vital, attn::handleVital, target, &attnConfig); std::for_each(std::begin(attentions), std::end(attentions), [](attn::Attention attention) { trace::inf("calling handler"); attention.handle(); }); } return rc; }