Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / media / midi / usb_midi_jack.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef MEDIA_MIDI_USB_MIDI_JACK_H_
6 #define MEDIA_MIDI_USB_MIDI_JACK_H_
7
8 #include "base/basictypes.h"
9 #include "media/base/media_export.h"
10
11 namespace media {
12
13 class UsbMidiDevice;
14
15 // UsbMidiJack represents an EMBEDDED MIDI jack.
16 struct MEDIA_EXPORT UsbMidiJack {
17   // The direction of the endpoint associated with an EMBEDDED MIDI jack.
18   // Note that an IN MIDI jack associated with an OUT endpoint has
19   // ***DIRECTION_OUT*** direction.
20   enum Direction {
21     DIRECTION_IN,
22     DIRECTION_OUT,
23   };
24   UsbMidiJack(UsbMidiDevice* device,
25               uint8 jack_id,
26               uint8 cable_number,
27               uint8 endpoint_address)
28       : device(device),
29         jack_id(jack_id),
30         cable_number(cable_number),
31         endpoint_address(endpoint_address) {}
32   // Not owned
33   UsbMidiDevice* device;
34   // The id of this jack unique in the interface.
35   uint8 jack_id;
36   // The cable number of this jack in the associated endpoint.
37   uint8 cable_number;
38   // The address of the endpoint that this jack is associated with.
39   uint8 endpoint_address;
40
41   Direction direction() const {
42     return (endpoint_address & 0x80) ? DIRECTION_IN : DIRECTION_OUT;
43   }
44   uint8 endpoint_number() const {
45     return (endpoint_address & 0xf);
46   }
47 };
48
49 }  // namespace media
50
51 #endif  // MEDIA_MIDI_USB_MIDI_JACK_H_