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_ 52