• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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   };
UsbMidiJackUsbMidiJack24   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 
directionUsbMidiJack41   Direction direction() const {
42     return (endpoint_address & 0x80) ? DIRECTION_IN : DIRECTION_OUT;
43   }
endpoint_numberUsbMidiJack44   uint8 endpoint_number() const {
45     return (endpoint_address & 0xf);
46   }
47 };
48 
49 }  // namespace media
50 
51 #endif  // MEDIA_MIDI_USB_MIDI_JACK_H_
52