From 95dc3b114ced4b2a92b786e2d157cc74ee5affe4 Mon Sep 17 00:00:00 2001 From: Pascal Bauer Date: Mon, 26 Aug 2024 13:04:22 +0200 Subject: [PATCH] add card parser --- fpga/include/villas/fpga/card_parser.hpp | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 fpga/include/villas/fpga/card_parser.hpp diff --git a/fpga/include/villas/fpga/card_parser.hpp b/fpga/include/villas/fpga/card_parser.hpp new file mode 100644 index 000000000..92c9124a5 --- /dev/null +++ b/fpga/include/villas/fpga/card_parser.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include +#include +#include +#include + +class CardParser { +public: + std::shared_ptr logger; + + json_t *json_ips = nullptr; + json_t *json_paths = nullptr; + const char *pci_slot = nullptr; + const char *pci_id = nullptr; + int do_reset = 0; + int affinity = 0; + int polling = 0; + + CardParser(json_t *json_card) : logger(villas::Log::get("CardParser")) { + json_error_t err; + int ret = json_unpack_ex( + json_card, &err, 0, "{ s: o, s?: i, s?: b, s?: s, s?: s, s?: b, s?: o}", + "ips", &json_ips, "affinity", &affinity, "do_reset", &do_reset, "slot", + &pci_slot, "id", &pci_id, "polling", &polling, "paths", &json_paths); + + if (ret != 0) + throw villas::ConfigError(json_card, err, "", "Failed to parse card"); + } +};