aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2019-03-30 20:14:48 -0700
committerMartin Braun <martin.braun@ettus.com>2019-11-26 11:49:08 -0800
commit3df500cb195adadcfeb6fdbdc3df960e42b127ab (patch)
treee7c944361a5cc844791881d2ee2407a85118c070 /host/include
parent2ed94af7726e0f22e765950618ae87bb507e773a (diff)
downloaduhd-3df500cb195adadcfeb6fdbdc3df960e42b127ab.tar.gz
uhd-3df500cb195adadcfeb6fdbdc3df960e42b127ab.tar.bz2
uhd-3df500cb195adadcfeb6fdbdc3df960e42b127ab.zip
uhd: Add new exceptions for RFNoC-specific errors
Add the following exception types: - rfnoc_error - op_failed - op_seqerr - op_timeout - op_timeerr - access_error - It is meant to be used when access violations have taken place, i.e., when a resource is being accessed without appropriate permissions. - resolve_error - This is a derivative of rfnoc_error, and will be used when a property resolution fails unexpectedly. - routing_error - For use when the framework has path setup issues or general routing-related errors
Diffstat (limited to 'host/include')
-rw-r--r--host/include/uhd/exception.hpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/host/include/uhd/exception.hpp b/host/include/uhd/exception.hpp
index 7189015a0..adedebe96 100644
--- a/host/include/uhd/exception.hpp
+++ b/host/include/uhd/exception.hpp
@@ -163,6 +163,17 @@ struct UHD_API not_implemented_error : runtime_error
virtual void dynamic_throw(void) const;
};
+/*! Raised when a resource is being accessed without having the appropriate
+ * permissions.
+ */
+struct UHD_API access_error : runtime_error
+{
+ access_error(const std::string& what);
+ virtual unsigned code(void) const;
+ virtual access_error* dynamic_clone(void) const;
+ virtual void dynamic_throw(void) const;
+};
+
/*! Base class for errors that occur outside of UHD.
*/
struct UHD_API environment_error : exception
@@ -215,6 +226,77 @@ struct UHD_API syntax_error : exception
virtual void dynamic_throw(void) const;
};
+/*! Base class for RFNoC-related errors
+ */
+struct UHD_API rfnoc_error : exception
+{
+ rfnoc_error(const std::string& what);
+ virtual unsigned code(void) const;
+ virtual rfnoc_error* dynamic_clone(void) const;
+ virtual void dynamic_throw(void) const;
+};
+
+/*! Gets thrown when a transaction with an RFNoC block fails (IO error)
+ */
+struct UHD_API op_failed : rfnoc_error
+{
+ op_failed(const std::string& what);
+ virtual unsigned code(void) const;
+ virtual op_failed* dynamic_clone(void) const;
+ virtual void dynamic_throw(void) const;
+};
+
+/*! Gets thrown when a transaction with an RFNoC block times out (e.g., no ACK
+ * received)
+ */
+struct UHD_API op_timeout : rfnoc_error
+{
+ op_timeout(const std::string& what);
+ virtual unsigned code(void) const;
+ virtual op_timeout* dynamic_clone(void) const;
+ virtual void dynamic_throw(void) const;
+};
+
+/*! Gets thrown when a transaction with an RFNoC yields a sequence error
+ */
+struct UHD_API op_seqerr : rfnoc_error
+{
+ op_seqerr(const std::string& what);
+ virtual unsigned code(void) const;
+ virtual op_seqerr* dynamic_clone(void) const;
+ virtual void dynamic_throw(void) const;
+};
+
+/*! Gets thrown when a transaction with an RFNoC yields a time error (late command)
+ */
+struct UHD_API op_timerr : rfnoc_error
+{
+ op_timerr(const std::string& what);
+ virtual unsigned code(void) const;
+ virtual op_timerr* dynamic_clone(void) const;
+ virtual void dynamic_throw(void) const;
+};
+
+/*! Gets thrown when a property resolution fails
+ */
+struct UHD_API resolve_error : rfnoc_error
+{
+ resolve_error(const std::string& what);
+ virtual unsigned code(void) const;
+ virtual resolve_error* dynamic_clone(void) const;
+ virtual void dynamic_throw(void) const;
+};
+
+/*! Gets thrown when there is a routing-related failure in RFNoC
+ */
+struct UHD_API routing_error : rfnoc_error
+{
+ routing_error(const std::string& what);
+ virtual unsigned code(void) const;
+ virtual routing_error* dynamic_clone(void) const;
+ virtual void dynamic_throw(void) const;
+};
+
/*!
* Create a formatted string with throw-site information.
* Fills in the function name, file name, and line number.