1.1 --- a/DJMFix.cpp Sun May 11 00:30:03 2025 +0200
1.2 +++ b/DJMFix.cpp Sun Jun 01 13:14:18 2025 +0200
1.3 @@ -63,14 +63,14 @@
1.4 Bytes hash1;
1.5 Bytes hash2;
1.6
1.7 - uint8_t version = 0x17;
1.8 + uint8_t model = 0x17;
1.9
1.10 void run() {
1.11 while (!stopped) {
1.12 logger->log(L::FINE, "DJMFixImpl::run()");
1.13 if (sendKeepAlive) send({
1.14 0xf0, 0x00, 0x40, 0x05,
1.15 - 0x00, 0x00, 0x00, version,
1.16 + 0x00, 0x00, 0x00, model,
1.17 0x00, 0x50, 0x01, 0xf7
1.18 });
1.19 std::this_thread::sleep_for(chro::milliseconds(keepAliveInterval));
1.20 @@ -179,11 +179,11 @@
1.21 logger->log(L::FINE, "DJMFixImpl::setDeviceName(" + name + ")");
1.22
1.23 std::regex djm250pattern("Pioneer DJ Corporation DJM-250MK2.*");
1.24 - std::regex djm450pattern(".*450.*"); // TODO: correct pattern
1.25 + std::regex djm450pattern("Pioneer DJ Corporation DJM-450.*");
1.26
1.27 if (std::regex_match(name, djm250pattern)) {
1.28 // DJM-250MK2:
1.29 - version = 0x17;
1.30 + model = 0x17;
1.31 seed3 = {
1.32 0x59, 0xb5, 0x4b, 0xfe, 0xe4,
1.33 0x4a, 0x5a, 0xc8, 0xe4, 0xc5
1.34 @@ -192,7 +192,7 @@
1.35 } else if (std::regex_match(name, djm450pattern)) {
1.36 // DJM-450:
1.37 // DJM-450 - not tested yet:
1.38 - version = 0x13;
1.39 + model = 0x13;
1.40 seed0 = {0x8c, 0x5b, 0x3f, 0x5d};
1.41 seed3 = {
1.42 0x08, 0xef, 0x3f, 0x2f, 0x1e,
1.43 @@ -201,7 +201,7 @@
1.44 logger->log(L::FINE, "Switched to DJM-450 mode");
1.45 } else {
1.46 // DJM-V10:
1.47 - version = 0x34;
1.48 + model = 0x34;
1.49 seed3 = {
1.50 0x70, 0x01, 0x4d, 0x05, 0xbe,
1.51 0xf2, 0xe4, 0xde, 0x60, 0xd6
1.52 @@ -236,7 +236,7 @@
1.53
1.54 if (msgIn.type == MessageType::D11_GREETING && !greetingReceived) {
1.55 logger->log(L::INFO, "Received greeting message.");
1.56 - Message msgOut(MessageType::H12_SEED1, version,{
1.57 + Message msgOut(MessageType::H12_SEED1, model,{
1.58 {FieldType::F01, name1},
1.59 {FieldType::F02, name2},
1.60 {FieldType::F03, denormalize(seed1)}
1.61 @@ -265,7 +265,7 @@
1.62 logger->log(L::INFO, "Verification of hash1 was successful.");
1.63 hash2 = toBytes(fnv32hash(concat(seed2, xOR(seed0, seed2))));
1.64
1.65 - Message msgOut(MessageType::H14_HASH2, version,{
1.66 + Message msgOut(MessageType::H14_HASH2, model,{
1.67 {FieldType::F01, name1},
1.68 {FieldType::F02, name2},
1.69 {FieldType::F04, denormalize(hash2)},
1.70 @@ -304,14 +304,14 @@
1.71
1.72 send({
1.73 0xf0, 0x00, 0x40, 0x05,
1.74 - 0x00, 0x00, 0x00, version,
1.75 + 0x00, 0x00, 0x00, model,
1.76 0x00, 0x50, 0x01, 0xf7
1.77 });
1.78
1.79 // TODO: check whether this second message is neccessary for V10:
1.80 send({
1.81 0xf0, 0x00, 0x40, 0x05,
1.82 - 0x00, 0x00, 0x00, version,
1.83 + 0x00, 0x00, 0x00, model,
1.84 0x00, 0x03, 0x01, 0xf7
1.85 });
1.86 logger->log(L::INFO, "Sent greeting message.");
2.1 --- a/Message.cpp Sun May 11 00:30:03 2025 +0200
2.2 +++ b/Message.cpp Sun Jun 01 13:14:18 2025 +0200
2.3 @@ -23,8 +23,8 @@
2.4 std::string Message::toString() const {
2.5 std::stringstream s;
2.6 s << "<message";
2.7 - s << " type='" << std::hex << ((int) type) << "'";
2.8 - s << " version='" << std::hex << ((int) version) << "'";
2.9 + s << " type='" << std::hex << ((int) type) << "'";
2.10 + s << " model='" << std::hex << ((int) model) << "'";
2.11 s << ">";
2.12 for (const auto& field : fields) {
2.13 s << "<field type='" << std::hex << ((int) field.type) << "'>";
3.1 --- a/Message.h Sun May 11 00:30:03 2025 +0200
3.2 +++ b/Message.h Sun Jun 01 13:14:18 2025 +0200
3.3 @@ -71,12 +71,12 @@
3.4 class Message {
3.5 public:
3.6 MessageType type;
3.7 - /** 0x17 for DJM-250MK2 and 0x34 for V10 (maybe not a version) */
3.8 - uint8_t version;
3.9 + /** 0x17 for DJM-250MK2 and 0x34 for V10 */
3.10 + uint8_t model;
3.11 std::vector<Field> fields;
3.12
3.13 - Message(MessageType type, uint8_t version, std::vector<Field> fields) :
3.14 - type(type), version(version), fields(fields) {
3.15 + Message(MessageType type, uint8_t model, std::vector<Field> fields) :
3.16 + type(type), model(model), fields(fields) {
3.17 }
3.18
3.19 virtual ~Message() = default;
4.1 --- a/MessageCodec.cpp Sun May 11 00:30:03 2025 +0200
4.2 +++ b/MessageCodec.cpp Sun Jun 01 13:14:18 2025 +0200
4.3 @@ -35,9 +35,9 @@
4.4 || data[3] != 0x05)
4.5 throw ERR("wrong message Manufacturer MIDI SysEx ID");
4.6
4.7 - if (data.size() < 8) throw ERR("missing message version");
4.8 + if (data.size() < 8) throw ERR("missing model");
4.9
4.10 - uint8_t msgVersion = data[7];
4.11 + uint8_t model = data[7];
4.12
4.13 if (data.size() < 10) throw ERR("missing message type");
4.14
4.15 @@ -77,7 +77,7 @@
4.16 start += fieldSize;
4.17 }
4.18
4.19 - return Message(msgType, msgVersion, fields);
4.20 + return Message(msgType, model, fields);
4.21 }
4.22
4.23 std::vector<uint8_t> MessageCodec::encode(Message msg) {
4.24 @@ -95,7 +95,7 @@
4.25 data.push_back(0x00);
4.26 data.push_back(0x00);
4.27
4.28 - data.push_back(msg.version);
4.29 + data.push_back(msg.model);
4.30 data.push_back(0x00);
4.31 data.push_back((uint8_t) msg.type);
4.32