aboutsummaryrefslogtreecommitdiffstats
path: root/daemon/src/types.h
diff options
context:
space:
mode:
authorEddy Pedroni <epedroni@pm.me>2025-07-23 14:05:13 +0200
committerEddy Pedroni <epedroni@pm.me>2025-07-23 14:05:13 +0200
commit41f95375a65a3f67a75258680d6d8b03bb4d678b (patch)
tree57a2ffafc6d9203fa1dde1249b2ec83110fff72e /daemon/src/types.h
parent29ca6bac4565d754a67414e503a215627d3aa566 (diff)
Working with hardcoded routing table
Diffstat (limited to 'daemon/src/types.h')
-rw-r--r--daemon/src/types.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/daemon/src/types.h b/daemon/src/types.h
index 2942c0b..a5c6165 100644
--- a/daemon/src/types.h
+++ b/daemon/src/types.h
@@ -1,5 +1,7 @@
#pragma once
+#include "sender.h"
+
#include <cstdint>
#include <array>
#include <string>
@@ -29,9 +31,20 @@ enum class Message_Type
using Device_Id = std::string;
using Device_Map = std::map<std::string, Device_Id>;
-
-using Send_Callback = std::function<void(std::array<std::uint8_t, 3> const & payload)>;
-using Target_List = std::vector<Send_Callback>;
+using Target_List = std::vector<std::reference_wrapper<Sender>>;
using Route_Map = std::map<Device_Id, std::map<Message_Type, Target_List>>;
+struct Message
+{
+ Device_Id const * source_id;
+ std::array<std::uint8_t, 3> bytes;
+
+ Message_Type
+ type() const
+ {
+ if ((bytes[0] & 0xF0) == 0xF0) return static_cast<Message_Type>(bytes[0]);
+ else return static_cast<Message_Type>(bytes[0] >> 4);
+ }
+};
+
} // namespace midi_router