From 43c505db2d05318b4ceb985e9810532fb4a9812c Mon Sep 17 00:00:00 2001 From: David Michaeli Date: Mon, 29 Jan 2024 16:24:13 +0200 Subject: [PATCH] sighandler explicit function --- software/libcariboulite/src/CaribouLite.hpp | 4 ++++ software/libcariboulite/src/CaribouLiteCpp.cpp | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/software/libcariboulite/src/CaribouLite.hpp b/software/libcariboulite/src/CaribouLite.hpp index ccf32f4..78a216c 100644 --- a/software/libcariboulite/src/CaribouLite.hpp +++ b/software/libcariboulite/src/CaribouLite.hpp @@ -243,6 +243,9 @@ public: std::string GetHwGuid(void); CaribouLiteRadio* GetRadioChannel(CaribouLiteRadio::RadioType ch); + // Signal Handler + void RegisterSignalHandler(std::function on_signal_caught); + // Static detection and factory static CaribouLite &GetInstance(bool forceFpgaProg = false, LogLevel logLvl = LogLevel::None); static bool DetectBoard(SysVersion *sysVer, std::string& name, std::string& guid); @@ -258,6 +261,7 @@ public: uint8_t GetPmodState (void); private: + std::function _on_signal_caught; std::vector _channels; SysVersion _systemVersion; std::string _productName; diff --git a/software/libcariboulite/src/CaribouLiteCpp.cpp b/software/libcariboulite/src/CaribouLiteCpp.cpp index ddc6c40..dbff73b 100644 --- a/software/libcariboulite/src/CaribouLiteCpp.cpp +++ b/software/libcariboulite/src/CaribouLiteCpp.cpp @@ -9,9 +9,17 @@ void CaribouLite::DefaultSignalHandler(void* context, int signal_number, siginfo { CaribouLite* cl = (CaribouLite*)context; std::cout << " >> Signal caught: " << signal_number << std::endl << std::flush; + + if (cl->_on_signal_caught) cl->_on_signal_caught(signal_number); //cl->ReleaseResources(); } +//================================================================== +void CaribouLite::RegisterSignalHandler(std::function on_signal_caught) +{ + _on_signal_caught = on_signal_caught; +} + //================================================================== bool CaribouLite::DetectBoard(SysVersion *sysVer, std::string& name, std::string& guid) {