From c75bde36c670d66ba049df23747caa8d1f967c39 Mon Sep 17 00:00:00 2001
From: Josh Blum <josh@joshknows.com>
Date: Tue, 20 Jul 2010 10:41:37 -0700
Subject: uhd: typedefed vrt pack/unpack so the vrt packet handler need not be
 templated

---
 host/lib/transport/vrt_packet_handler.hpp | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/host/lib/transport/vrt_packet_handler.hpp b/host/lib/transport/vrt_packet_handler.hpp
index bd76cbb8f..07ad9115c 100644
--- a/host/lib/transport/vrt_packet_handler.hpp
+++ b/host/lib/transport/vrt_packet_handler.hpp
@@ -41,6 +41,7 @@ namespace vrt_packet_handler{
     typedef std::vector<uhd::transport::managed_recv_buffer::sptr> managed_recv_buffs_t;
     typedef boost::function<bool(managed_recv_buffs_t &)> get_recv_buffs_t;
     typedef boost::function<void(size_t /*which channel*/)> handle_overrun_t;
+    typedef boost::function<void(const boost::uint32_t *, uhd::transport::vrt::if_packet_info_t &)> vrt_unpacker_t;
 
     static inline void handle_overrun_nop(size_t){}
 
@@ -69,12 +70,11 @@ namespace vrt_packet_handler{
      * Unpack a received vrt header and set the copy buffer.
      *  - helper function for vrt_packet_handler::_recv1
      ******************************************************************/
-    template<typename vrt_unpacker_type>
     static UHD_INLINE void _recv1_helper(
         recv_state &state,
         uhd::rx_metadata_t &metadata,
         double tick_rate,
-        vrt_unpacker_type vrt_unpacker,
+        const vrt_unpacker_t &vrt_unpacker,
         const handle_overrun_t &handle_overrun,
         size_t vrt_header_offset_words32
     ){
@@ -131,7 +131,6 @@ namespace vrt_packet_handler{
      * Recv data, unpack a vrt header, and copy-convert the data.
      *  - helper function for vrt_packet_handler::recv
      ******************************************************************/
-    template<typename vrt_unpacker_type>
     static UHD_INLINE size_t _recv1(
         recv_state &state,
         const std::vector<void *> &buffs,
@@ -141,7 +140,7 @@ namespace vrt_packet_handler{
         const uhd::io_type_t &io_type,
         const uhd::otw_type_t &otw_type,
         double tick_rate,
-        vrt_unpacker_type vrt_unpacker,
+        const vrt_unpacker_t &vrt_unpacker,
         const get_recv_buffs_t &get_recv_buffs,
         const handle_overrun_t &handle_overrun,
         size_t vrt_header_offset_words32
@@ -206,7 +205,6 @@ namespace vrt_packet_handler{
     /*******************************************************************
      * Recv vrt packets and copy convert the samples into the buffer.
      ******************************************************************/
-    template<typename vrt_unpacker_type>
     static UHD_INLINE size_t recv(
         recv_state &state,
         const std::vector<void *> &buffs,
@@ -216,7 +214,7 @@ namespace vrt_packet_handler{
         const uhd::io_type_t &io_type,
         const uhd::otw_type_t &otw_type,
         double tick_rate,
-        vrt_unpacker_type vrt_unpacker,
+        const vrt_unpacker_t &vrt_unpacker,
         const get_recv_buffs_t &get_recv_buffs,
         const handle_overrun_t &handle_overrun = &handle_overrun_nop,
         size_t vrt_header_offset_words32 = 0
@@ -273,6 +271,7 @@ namespace vrt_packet_handler{
  **********************************************************************/
     typedef std::vector<uhd::transport::managed_send_buffer::sptr> managed_send_buffs_t;
     typedef boost::function<bool(managed_send_buffs_t &)> get_send_buffs_t;
+    typedef boost::function<void(boost::uint32_t *, uhd::transport::vrt::if_packet_info_t &)> vrt_packer_t;
 
     struct send_state{
         //init the expected seq number
@@ -334,7 +333,6 @@ namespace vrt_packet_handler{
     /*******************************************************************
      * Send vrt packets and copy convert the samples into the buffer.
      ******************************************************************/
-    template<typename vrt_packer_type>
     static UHD_INLINE size_t send(
         send_state &state,
         const std::vector<const void *> &buffs,
@@ -344,7 +342,7 @@ namespace vrt_packet_handler{
         const uhd::io_type_t &io_type,
         const uhd::otw_type_t &otw_type,
         double tick_rate,
-        vrt_packer_type vrt_packer,
+        const vrt_packer_t &vrt_packer,
         const get_send_buffs_t &get_send_buffs,
         size_t max_samples_per_packet,
         size_t vrt_header_offset_words32 = 0
-- 
cgit v1.2.3