GNU Radio Manual and C++ API Reference 3.10.2.0
The Free & Open Software Radio Ecosystem
udp_source_impl.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2020 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * SPDX-License-Identifier: GPL-3.0-or-later
8 *
9 */
10
11#ifndef INCLUDED_NETWORK_UDP_SOURCE_IMPL_H
12#define INCLUDED_NETWORK_UDP_SOURCE_IMPL_H
13
15#include <boost/asio.hpp>
16#include <boost/asio/ip/udp.hpp>
17#include <boost/circular_buffer.hpp>
18
20
21namespace gr {
22namespace network {
23
25{
26protected:
27 bool is_ipv6;
28 size_t d_itemsize;
29 size_t d_veclen;
30 int d_port;
31
35 uint16_t d_payloadsize;
36
37 uint64_t d_seq_num;
40
44
46
47 boost::system::error_code ec;
48
49 boost::asio::io_service d_io_service;
50 boost::asio::ip::udp::endpoint d_endpoint;
51 boost::asio::ip::udp::socket* d_udpsocket;
52
53 boost::asio::streambuf d_read_buffer;
54
55 // A queue is required because we have 2 different timing
56 // domains: The network packets and the GR work()/scheduler
57 boost::circular_buffer<char>* d_localqueue;
58
60
61public:
63 size_t veclen,
64 int port,
65 int header_type,
66 int payloadsize,
67 bool notify_missed,
68 bool source_zeros,
69 bool ipv6);
70 ~udp_source_impl() override;
71
72 bool start() override;
73 bool stop() override;
74
76 inline size_t netdata_available();
77
78 int work(int noutput_items,
79 gr_vector_const_void_star& input_items,
80 gr_vector_void_star& output_items) override;
81};
82
83} // namespace network
84} // namespace gr
85
86#endif /* INCLUDED_NETWORK_UDP_SOURCE_IMPL_H */
Definition: udp_source_impl.h:25
int d_port
Definition: udp_source_impl.h:30
boost::asio::io_service d_io_service
Definition: udp_source_impl.h:49
int d_precomp_data_size
Definition: udp_source_impl.h:41
boost::asio::ip::udp::socket * d_udpsocket
Definition: udp_source_impl.h:51
int d_partial_frame_counter
Definition: udp_source_impl.h:39
boost::circular_buffer< char > * d_localqueue
Definition: udp_source_impl.h:57
uint16_t d_payloadsize
Definition: udp_source_impl.h:35
udp_source_impl(size_t itemsize, size_t veclen, int port, int header_type, int payloadsize, bool notify_missed, bool source_zeros, bool ipv6)
char * d_local_buffer
Definition: udp_source_impl.h:45
size_t d_itemsize
Definition: udp_source_impl.h:28
boost::asio::ip::udp::endpoint d_endpoint
Definition: udp_source_impl.h:50
size_t d_block_size
Definition: udp_source_impl.h:43
bool d_notify_missed
Definition: udp_source_impl.h:32
int d_precomp_data_over_item_size
Definition: udp_source_impl.h:42
uint64_t d_seq_num
Definition: udp_source_impl.h:37
bool is_ipv6
Definition: udp_source_impl.h:27
size_t d_veclen
Definition: udp_source_impl.h:29
bool start() override
Called to enable drivers, etc for i/o devices.
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) override
just like gr::block::general_work, only this arranges to call consume_each for you
int d_header_size
Definition: udp_source_impl.h:38
int d_header_type
Definition: udp_source_impl.h:34
bool stop() override
Called to disable drivers, etc for i/o devices.
boost::system::error_code ec
Definition: udp_source_impl.h:47
boost::asio::streambuf d_read_buffer
Definition: udp_source_impl.h:53
bool d_source_zeros
Definition: udp_source_impl.h:33
This block provides a UDP source block that starts a listener on the specified port and waits for inb...
Definition: udp_source.h:47
#define NETWORK_API
Definition: gr-network/include/gnuradio/network/api.h:19
GR_RUNTIME_API size_t itemsize(types::vector_type type)
GNU Radio logging wrapper.
Definition: basic_block.h:29
std::vector< const void * > gr_vector_const_void_star
Definition: types.h:28
std::vector< void * > gr_vector_void_star
Definition: types.h:27