USRP Hardware Driver and USRP Manual Version: 3.15.0.0-MacPorts-Release
UHD and USRP Manual
msg_task.hpp
Go to the documentation of this file.
1//
2// Copyright 2011-2015 Ettus Research LLC
3// Copyright 2018 Ettus Research, a National Instruments Company
4//
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
7
8#ifndef INCLUDED_UHD_UTILS_MSG_TASK_HPP
9#define INCLUDED_UHD_UTILS_MSG_TASK_HPP
10
11#include <uhd/config.hpp>
13#include <stdint.h>
14#include <boost/function.hpp>
15#include <boost/optional/optional.hpp>
16#include <boost/shared_ptr.hpp>
18#include <vector>
19
20namespace uhd {
22{
23public:
24 typedef boost::shared_ptr<msg_task> sptr;
25 typedef std::vector<uint8_t> msg_payload_t;
26 typedef std::pair<uint32_t, msg_payload_t> msg_type_t;
27 typedef boost::function<boost::optional<msg_type_t>(void)> task_fcn_type;
28
29 /*
30 * During shutdown message queues for radio control cores might not be available
31 * anymore. Such stranded messages get pushed into a dump queue. With this function
32 * radio_ctrl_core can check if one of the messages meant for it got stranded.
33 */
34 virtual msg_payload_t get_msg_from_dump_queue(uint32_t sid) = 0;
35
36 UHD_INLINE static std::vector<uint8_t> buff_to_vector(uint8_t* p, size_t n)
37 {
38 if (p and n > 0) {
39 std::vector<uint8_t> v(n);
40 memcpy(&v.front(), p, n);
41 return v;
42 }
43 return std::vector<uint8_t>();
44 }
45
46 virtual ~msg_task(void) = 0;
47
64 static sptr make(const task_fcn_type& task_fcn);
65};
66} // namespace uhd
67
68#endif /* INCLUDED_UHD_UTILS_MSG_TASK_HPP */
Definition: msg_task.hpp:22
virtual msg_payload_t get_msg_from_dump_queue(uint32_t sid)=0
std::vector< uint8_t > msg_payload_t
Definition: msg_task.hpp:25
std::pair< uint32_t, msg_payload_t > msg_type_t
Definition: msg_task.hpp:26
virtual ~msg_task(void)=0
static sptr make(const task_fcn_type &task_fcn)
static UHD_INLINE std::vector< uint8_t > buff_to_vector(uint8_t *p, size_t n)
Definition: msg_task.hpp:36
boost::shared_ptr< msg_task > sptr
Definition: msg_task.hpp:24
boost::function< boost::optional< msg_type_t >(void)> task_fcn_type
Definition: msg_task.hpp:27
#define UHD_INLINE
Definition: config.h:53
#define UHD_API
Definition: config.h:68
Definition: build_info.hpp:13
boost::noncopyable noncopyable
Definition: noncopyable.hpp:46