00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef INCLUDED_RX_16SC_HANDLER_H
00024 #define INCLUDED_RX_16SC_HANDLER_H
00025
00026 #include <usrp2/rx_nop_handler.h>
00027 #include <usrp2/copiers.h>
00028
00029 class rx_16sc_handler : public usrp2::rx_nop_handler
00030 {
00031 std::complex<int16_t> *d_dest;
00032
00033
00034 rx_16sc_handler(uint64_t max_samples, uint64_t max_quantum, std::complex<int16_t> *dest)
00035 : rx_nop_handler(max_samples, max_quantum), d_dest(dest) {}
00036
00037 public:
00038
00039 typedef boost::shared_ptr<rx_16sc_handler> sptr;
00040
00041
00042 static sptr make(uint64_t max_samples, uint64_t max_quantum, std::complex<int16_t> *dest)
00043 {
00044 return sptr(new rx_16sc_handler(max_samples, max_quantum, dest));
00045 }
00046
00047
00048 bool operator()(const uint32_t *items, size_t nitems, const usrp2::rx_metadata *metadata)
00049 {
00050
00051 usrp2::copy_u2_16sc_to_host_16sc(nitems, items, d_dest);
00052 d_dest += nitems;
00053
00054
00055
00056
00057 return rx_nop_handler::operator()(items, nitems, metadata);
00058 }
00059
00060 ~rx_16sc_handler();
00061 };
00062
00063 #endif