aboutsummaryrefslogtreecommitdiffstats
path: root/daemon/src/connection_manager.cpp
diff options
context:
space:
mode:
authorEddy Pedroni <epedroni@pm.me>2025-07-23 22:33:05 +0200
committerEddy Pedroni <epedroni@pm.me>2025-07-23 22:33:05 +0200
commitc5c195ff5318f00d544c0fbceb133abcc4ba7a5a (patch)
tree1c7a3e646f6eb72d748dd606fe9e8e12175b39bd /daemon/src/connection_manager.cpp
parent41f95375a65a3f67a75258680d6d8b03bb4d678b (diff)
MVP
Diffstat (limited to 'daemon/src/connection_manager.cpp')
-rw-r--r--daemon/src/connection_manager.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/daemon/src/connection_manager.cpp b/daemon/src/connection_manager.cpp
index f6a02c1..6de1800 100644
--- a/daemon/src/connection_manager.cpp
+++ b/daemon/src/connection_manager.cpp
@@ -21,13 +21,19 @@ struct Device_Connection : public Sender
RtMidiOut midi_out {};
void
- send(std::array<std::uint8_t, 3> const & payload) override
+ send(std::vector<std::uint8_t> const & payload) override
{
if (midi_out.isPortOpen())
{
- midi_out.sendMessage(payload.data(), 3);
+ midi_out.sendMessage(&payload);
}
}
+
+ std::string
+ get_id() const override
+ {
+ return source_id;
+ }
};
static void
@@ -35,12 +41,15 @@ callback(double time_stamp, std::vector<unsigned char> *raw, void *user_data)
{
Device_Connection* device = static_cast<Device_Connection*>(user_data);
- if (raw->size() != 3)
+ if (raw->size() > 3)
{
- std::cerr << "Received message with wrong size from " << device->source_id << ", dropping\n";
+ std::cerr << "Received message with wrong size (" << raw->size() << ") from " << device->source_id << ", dropping\n";
+ for (auto const & byte : *raw) std::cerr << static_cast<unsigned>(byte);
+ std::cerr << "\n";
+ return;
}
- Message message { &device->source_id, {raw->at(0), raw->at(1), raw->at(2)} };
+ Message message { &device->source_id, *raw };
device->submitter.submit(message);
}
@@ -55,7 +64,7 @@ Connection_Manager::Connection_Manager(Device_Map const & device_map, Submitter
auto & connection = m_connections[id];
connection->midi_in.setCallback(&callback, connection.get());
- connection->midi_in.ignoreTypes(true, true, true);
+ connection->midi_in.ignoreTypes(true, false, true);
if (!open_port(&connection->midi_in, name))
{