From c5c195ff5318f00d544c0fbceb133abcc4ba7a5a Mon Sep 17 00:00:00 2001 From: Eddy Pedroni Date: Wed, 23 Jul 2025 22:33:05 +0200 Subject: MVP --- daemon/src/connection_manager.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'daemon/src/connection_manager.cpp') 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 const & payload) override + send(std::vector 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 *raw, void *user_data) { Device_Connection* device = static_cast(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(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)) { -- cgit v1.2.3