Ardour  8.12
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 
25 
26 #include "midi_byte_array.h"
27 #include "types.h"
28 
29 namespace MIDI {
30  class Parser;
31  class Port;
32 }
33 
34 
35 namespace ARDOUR {
36  class AsyncMIDIPort;
37  class Port;
38 }
39 
40 namespace ArdourSurface {
41 
42 class US2400Protocol;
43 
44 namespace US2400
45 {
46 
47 class Surface;
48 
54 {
55  public:
57  virtual ~SurfacePort();
58 
60  int write (const MidiByteArray&);
61 
62  MIDI::Port& input_port() const { return *_input_port; }
63  MIDI::Port& output_port() const { return *_output_port; }
64 
65  ARDOUR::Port& input() const { return *_async_in; }
66  ARDOUR::Port& output() const { return *_async_out; }
67 
68  std::string input_name() const;
69  std::string output_name() const;
70 
71  void reconnect ();
72 
73  XMLNode& get_state () const;
74  int set_state (const XMLNode&, int version);
75 
76  protected:
77 
78  private:
82  std::shared_ptr<ARDOUR::Port> _async_in;
83  std::shared_ptr<ARDOUR::Port> _async_out;
84 };
85 
86 std::ostream& operator << (std::ostream& , const SurfacePort& port);
87 
88 }
89 }
90 
91 #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