Ardour  9.0-pre0-582-g084a23a80d
us2400/surface_port.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 Ben Loftis <ben@harrisonconsoles.com>
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 2 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 along
15  * with this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 #ifndef surface_port_h
19 #define surface_port_h
20 
21 #include <midi++/types.h>
22 
23 #include "pbd/signals.h"
24 #include "pbd/xml++.h"
25 
26 
27 #include "midi_byte_array.h"
28 #include "types.h"
29 
30 namespace MIDI {
31  class Parser;
32  class Port;
33 }
34 
35 
36 namespace ARDOUR {
37  class AsyncMIDIPort;
38  class Port;
39 }
40 
41 namespace ArdourSurface {
42 
43 class US2400Protocol;
44 
45 namespace US2400
46 {
47 
48 class Surface;
49 
55 {
56  public:
58  virtual ~SurfacePort();
59 
61  int write (const MidiByteArray&);
62 
63  MIDI::Port& input_port() const { return *_input_port; }
64  MIDI::Port& output_port() const { return *_output_port; }
65 
66  ARDOUR::Port& input() const { return *_async_in; }
67  ARDOUR::Port& output() const { return *_async_out; }
68 
69  std::string input_name() const;
70  std::string output_name() const;
71 
72  void reconnect ();
73 
74  XMLNode& get_state () const;
75  int set_state (const XMLNode&, int version);
76 
77  protected:
78 
79  private:
83  std::shared_ptr<ARDOUR::Port> _async_in;
84  std::shared_ptr<ARDOUR::Port> _async_out;
85 };
86 
87 std::ostream& operator << (std::ostream& , const SurfacePort& port);
88 
89 }
90 }
91 
92 #endif
std::shared_ptr< ARDOUR::Port > _async_out
std::shared_ptr< ARDOUR::Port > _async_in
int set_state(const XMLNode &, int version)
int write(const MidiByteArray &)
an easier way to output bytes via midi
Definition: xml++.h:114
std::ostream & operator<<(std::ostream &, const SurfacePort &port)
DebugBits US2400