Statistics
| Branch: | Tag: | Revision:

root / host / include / uhd / transport / usb_control.hpp @ 687e118e

History | View | Annotate | Download (2.2 kB)

1
//
2
// Copyright 2010 Ettus Research LLC
3
//
4
// This program is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
//
17

    
18
#ifndef INCLUDED_UHD_TRANSPORT_USB_CONTROL_HPP
19
#define INCLUDED_UHD_TRANSPORT_USB_CONTROL_HPP
20

    
21
#include "usb_device_handle.hpp"
22

    
23
namespace uhd { namespace transport {
24

    
25
class UHD_API usb_control : boost::noncopyable {
26
public:
27
    typedef boost::shared_ptr<usb_control> sptr;
28

    
29
    /*!
30
     * Create a new usb control transport:
31
     * This transport is for sending and receiving control information from
32
     * the host to device using the Default Control Pipe.
33
     *
34
     * \param handle a device handle that uniquely identifies a USB device
35
     */
36
    static sptr make(usb_device_handle::sptr handle);
37

    
38
    /*!
39
     * Submit a USB device request:
40
     * Blocks until the request returns
41
     *
42
     * For format and corresponding USB request fields
43
     * see USB Specification Revision 2.0 - 9.3 USB Device Requests
44
     *
45
     * Usage is device specific
46
     *
47
     * \param request_type 1-byte bitmask (bmRequestType)
48
     * \param request      1-byte (bRequest)
49
     * \param value        2-byte (wValue)
50
     * \param index        2-byte (wIndex)
51
     * \param buff         buffer to hold send or receive data
52
     * \param length       2-byte (wLength)
53
     * \return             number of bytes submitted
54
     */
55
    virtual size_t submit(boost::uint8_t request_type,
56
                          boost::uint8_t request,
57
                          boost::uint16_t value,
58
                          boost::uint16_t index, 
59
                          unsigned char *buff,
60
                          boost::uint16_t length) = 0; 
61
};
62

    
63
}} //namespace
64

    
65
#endif /* INCLUDED_UHD_TRANSPORT_USB_CONTROL_HPP */