Revision 9449d057

b/host/lib/usrp/usrp1/io_impl.cpp
38 38
struct usrp1_send_state {
39 39
    uhd::transport::managed_send_buffer::sptr send_buff;
40 40
    size_t bytes_written;
41
    size_t bytes_free;
42 41
    size_t underrun_poll_samp_count;
42

  
43
    size_t bytes_free()
44
    {
45
        if (send_buff != NULL)
46
            return send_buff->size() - bytes_written;
47
        else
48
            return 0;
49
    }
43 50
};
44 51

  
45 52
struct usrp1_recv_state {
46 53
    uhd::transport::managed_recv_buffer::sptr recv_buff;
47 54
    size_t bytes_read;
48
    size_t bytes_avail;
49 55
    size_t overrun_poll_samp_count;
56

  
57
    size_t bytes_avail()
58
    {
59
        if (recv_buff != NULL)
60
            return recv_buff->size() - bytes_read;
61
        else
62
            return 0;
63
    }
50 64
};
51 65

  
52 66
/***********************************************************************
......
113 127
        if (send_state.send_buff == NULL)
114 128
            return false;
115 129

  
116
        send_state.bytes_free = send_state.send_buff->size();
117 130
        send_state.bytes_written = 0;
118 131
    }
119 132

  
......
126 139
                                                    const io_type_t io_type,
127 140
                                                    otw_type_t otw_type)
128 141
{
129
    UHD_ASSERT_THROW(send_state.bytes_free % otw_type.get_sample_size() == 0);
142
    UHD_ASSERT_THROW(send_state.bytes_free() % otw_type.get_sample_size() == 0);
130 143

  
131
    size_t samps_free = send_state.bytes_free / otw_type.get_sample_size();
144
    size_t samps_free = send_state.bytes_free() / otw_type.get_sample_size();
132 145
    size_t copy_samps = std::min(num_samps - sample_offset, samps_free); 
133 146

  
134 147
    const boost::uint8_t *io_mem =
......
143 156
                                copy_samps);
144 157

  
145 158
    send_state.bytes_written += copy_samps * otw_type.get_sample_size();
146
    send_state.bytes_free -= copy_samps * otw_type.get_sample_size();
147 159
    send_state.underrun_poll_samp_count += copy_samps;
148 160

  
149 161
    return copy_samps;
......
154 166
    if (send_state.bytes_written % 512)
155 167
        return false;
156 168

  
157
    if (force || send_state.bytes_free == 0) {
169
    if (force || send_state.bytes_free() == 0) {
158 170
        send_state.send_buff->commit(send_state.bytes_written);
159 171
        send_state.send_buff = uhd::transport::managed_send_buffer::sptr();
160 172
        return true;
......
223 235
 **********************************************************************/
224 236
bool usrp1_impl::io_impl::get_recv_buffer(zero_copy_if::sptr zc_if)
225 237
{
226
    if ((recv_state.recv_buff == NULL) || (recv_state.bytes_avail == 0)) {
238
    if ((recv_state.recv_buff == NULL) || (recv_state.bytes_avail() == 0)) {
227 239

  
228 240
        recv_state.recv_buff = zc_if->get_recv_buff();
229 241
        if (recv_state.recv_buff == NULL)
230 242
            return false;
231 243

  
232 244
        recv_state.bytes_read = 0;
233
        recv_state.bytes_avail = recv_state.recv_buff->size();
234 245
    }
235 246

  
236 247
    return true;
......
242 253
                                                    const io_type_t io_type,
243 254
                                                    otw_type_t otw_type)
244 255
{
245
    UHD_ASSERT_THROW(recv_state.bytes_avail % otw_type.get_sample_size() == 0);
256
    UHD_ASSERT_THROW(recv_state.bytes_avail() % otw_type.get_sample_size() == 0);
246 257

  
247
    size_t samps_avail = recv_state.bytes_avail / otw_type.get_sample_size();
258
    size_t samps_avail = recv_state.bytes_avail() / otw_type.get_sample_size();
248 259
    size_t copy_samps = std::min(num_samps - sample_offset, samps_avail); 
249 260

  
250 261
    const boost::uint8_t *otw_mem =
......
259 270
                                copy_samps);
260 271

  
261 272
    recv_state.bytes_read += copy_samps * otw_type.get_sample_size();
262
    recv_state.bytes_avail -= copy_samps * otw_type.get_sample_size();
263 273
    recv_state.overrun_poll_samp_count += copy_samps;
264 274

  
265 275
    return copy_samps;

Also available in: Unified diff