aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-04-08 10:57:16 -0700
committerJosh Blum <josh@joshknows.com>2010-04-08 10:57:16 -0700
commitd743784919b362d93e6408f05bdef6e543e3fc7e (patch)
tree41bd275d4cb06c5d56a1858c3023ce4498381042 /host/include
parentb66a74ff1f629af714e26040b410d472c08be522 (diff)
downloaduhd-d743784919b362d93e6408f05bdef6e543e3fc7e.tar.gz
uhd-d743784919b362d93e6408f05bdef6e543e3fc7e.tar.bz2
uhd-d743784919b362d93e6408f05bdef6e543e3fc7e.zip
converted timespec to use nanoseconds for fractional part
Diffstat (limited to 'host/include')
-rw-r--r--host/include/uhd/transport/vrt.hpp8
-rw-r--r--host/include/uhd/types/metadata.hpp1
-rw-r--r--host/include/uhd/types/time_spec.hpp36
3 files changed, 30 insertions, 15 deletions
diff --git a/host/include/uhd/transport/vrt.hpp b/host/include/uhd/transport/vrt.hpp
index 04945b347..137698e57 100644
--- a/host/include/uhd/transport/vrt.hpp
+++ b/host/include/uhd/transport/vrt.hpp
@@ -36,6 +36,7 @@ namespace vrt{
* \param num_payload_words32 the length of the payload
* \param num_packet_words32 the length of the packet
* \param packet_count the packet count sequence number
+ * \param tick_rate ticks per second used in time conversion
*/
UHD_API void pack(
const tx_metadata_t &metadata, //input
@@ -43,7 +44,8 @@ namespace vrt{
size_t &num_header_words32, //output
size_t num_payload_words32, //input
size_t &num_packet_words32, //output
- size_t packet_count //input
+ size_t packet_count, //input
+ double tick_rate //input
);
/*!
@@ -54,6 +56,7 @@ namespace vrt{
* \param num_payload_words32 the length of the payload
* \param num_packet_words32 the length of the packet
* \param packet_count the packet count sequence number
+ * \param tick_rate ticks per second used in time conversion
*/
UHD_API void unpack(
rx_metadata_t &metadata, //output
@@ -61,7 +64,8 @@ namespace vrt{
size_t &num_header_words32, //output
size_t &num_payload_words32, //output
size_t num_packet_words32, //input
- size_t &packet_count //output
+ size_t &packet_count, //output
+ double tick_rate //input
);
} //namespace vrt
diff --git a/host/include/uhd/types/metadata.hpp b/host/include/uhd/types/metadata.hpp
index 20f483bed..d93b38b50 100644
--- a/host/include/uhd/types/metadata.hpp
+++ b/host/include/uhd/types/metadata.hpp
@@ -19,6 +19,7 @@
#define INCLUDED_UHD_TYPES_METADATA_HPP
#include <uhd/config.hpp>
+#include <boost/cstdint.hpp>
#include <uhd/types/time_spec.hpp>
namespace uhd{
diff --git a/host/include/uhd/types/time_spec.hpp b/host/include/uhd/types/time_spec.hpp
index 8c8f2bc25..f06d27118 100644
--- a/host/include/uhd/types/time_spec.hpp
+++ b/host/include/uhd/types/time_spec.hpp
@@ -20,33 +20,43 @@
#include <uhd/config.hpp>
#include <boost/cstdint.hpp>
-#include <boost/date_time/posix_time/posix_time.hpp>
namespace uhd{
/*!
- * A time_spec_t holds a seconds and ticks time value.
- * The temporal width of a tick depends on the device's clock rate.
- * The time_spec_t can be used when setting the time on devices
+ * A time_spec_t holds a seconds and fractional seconds time value.
+ * The time_spec_t can be used when setting the time on devices,
+ * and for dealing with time stamped samples though the metadata.
* and for controlling the start of streaming for applicable dsps.
*/
struct UHD_API time_spec_t{
+
+ //! whole seconds count
boost::uint32_t secs;
- boost::uint32_t ticks;
+
+ //! fractional seconds count in nano-seconds
+ double nsecs;
/*!
- * Create a time_spec_t from seconds and ticks.
- * \param new_secs the new seconds (default = 0)
- * \param new_ticks the new ticks (default = 0)
+ * Convert the fractional nsecs to clock ticks.
+ * \param tick_rate the number of ticks per second
+ * \return the number of ticks in this time spec
*/
- time_spec_t(boost::uint32_t new_secs = 0, boost::uint32_t new_ticks = 0);
+ boost::uint32_t get_ticks(double tick_rate) const;
/*!
- * Create a time_spec_t from boost posix time.
- * \param time fine-grained boost posix time
- * \param tick_rate the rate of ticks per second
+ * Set the fractional nsecs from clock ticks.
+ * \param ticks the fractional seconds tick count
+ * \param tick_rate the number of ticks per second
+ */
+ void set_ticks(boost::uint32_t ticks, double tick_rate);
+
+ /*!
+ * Create a time_spec_t from seconds and ticks.
+ * \param new_secs the new seconds (default = 0)
+ * \param new_nsecs the new nano-seconds (default = 0)
*/
- time_spec_t(boost::posix_time::ptime time, double tick_rate);
+ time_spec_t(boost::uint32_t new_secs = 0, double new_nsecs = 0);
};