Statistics
| Branch: | Tag: | Revision:

root / host / include / uhd / transport / usb_control.hpp @ 38746242

History | View | Annotate | Download (2.5 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 <uhd/config.hpp>
22
#include <uhd/types/usb_descriptor.hpp>
23
#include <boost/utility.hpp>
24
#include <boost/shared_ptr.hpp>
25
#include <vector>
26

    
27
namespace uhd { namespace transport {
28

    
29
class UHD_API usb_control : boost::noncopyable {
30
public:
31
    typedef boost::shared_ptr<usb_control> sptr;
32

    
33
    /*!
34
     * Create a new usb control transport:
35
     * This transport is for sending and receiving control information from
36
     * the host to device using the Default Control Pipe.
37
     *
38
     * \param descriptor a descriptor that identifies a USB device
39
     */
40
    static sptr make(usb_descriptor_t descriptor);
41

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

    
66
    /*!
67
     * Get a vector of USB device descriptors 
68
     *
69
     * \return a vector of usb_descriptors
70
     */
71
    static usb_descriptors_t get_device_list();
72
};
73

    
74
}} //namespace
75

    
76
#endif /* INCLUDED_UHD_TRANSPORT_USB_CONTROL_HPP */