Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8472b11

Browse files
committed
Rename setJRProtocolRequest and setJRProtocolNotify to setStreamConfigRequest setStreamConfigNotify
Add refpoint passing to setCheckMUID handler startSysex7 now reset intTemp stopping bugs cleanup in umpProcessor.cpp Use FlexData falback call if other specific flexdata messages have not been setup
1 parent d4349a0 commit 8472b11

File tree

7 files changed

+37
-35
lines changed

7 files changed

+37
-35
lines changed

docs/umpProcessor.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ void midiEndpointCallback(uint8_t majVer, uint8_t minVer, uint8_t filter){
240240
### inline void setMidiEndpointProdIdNotify(void (\*fptr)(struct umpData mess))
241241
### inline void setMidiEndpointInfoNotify(void (\*fptr)(uint8_t majVer, uint8_t minVer, uint8_t numOfFuncBlocks, bool m2, bool m1, bool rxjr, bool txjr))
242242
### inline void setMidiEndpointDeviceInfoNotify(void (\*fptr)(std::array<uint8_t, 3> manuId, std::array<uint8_t, 2> familyId, std::array<uint8_t, 2> modelId, std::array<uint8_t, 4> version))
243-
### inline void setJRProtocolRequest(void (\*fptr)(uint8_t protocol, bool jrrx, bool jrtx))
244-
### inline void setJRProtocolNotify(void (\*fptr)(uint8_t protocol, bool jrrx, bool jrtx))
243+
### inline void setStreamConfigRequest(void (\*fptr)(uint8_t protocol, bool jrrx, bool jrtx))
244+
### inline void setStreamConfigNotify(void (\*fptr)(uint8_t protocol, bool jrrx, bool jrtx))
245245
### inline void setFunctionBlock(void (\*fptr)(uint8_t filter, uint8_t fbIdx))
246246
### inline void setFunctionBlockNotify(void (\*fptr)(uint8_t fbIdx, bool active, uint8_t direction, uint8_t firstGroup, uint8_t groupLength, bool midiCIValid, uint8_t midiCIVersion, uint8_t isMIDI1, uint8_t maxS8Streams))
247247
### inline void setFunctionBlockNotify(void (\*fptr)(struct umpData mess, uint8_t fbIdx))

include/midiCIProcessor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class midiCIProcessor{
7676
// EB: update callbacks step1 - update pointer definitions to:
7777
// std::function<void(..params..)> name = nullptr;
7878

79-
std::function<bool(uint8_t group, uint32_t muid)>
79+
std::function<bool(uint8_t group, uint32_t muid, void * refpoint)>
8080
checkMUID = nullptr;
8181
std::function<void(MIDICI ciDetails,
8282
std::array<uint8_t, 3> manuId, std::array<uint8_t, 2> familyId,
@@ -161,7 +161,7 @@ class midiCIProcessor{
161161
// Calling these functions from within a member class looks like:
162162
// MIDICIHandler->setCheckMUID(std::bind(&YourClass::checkMUID, this, std::placeholders::_1, std::placeholders::_2));
163163
void * refpoint;
164-
inline void setCheckMUID(std::function<bool(uint8_t group, uint32_t muid)> fptr){
164+
inline void setCheckMUID(std::function<bool(uint8_t group, uint32_t muid, void * refpoint)> fptr){
165165
checkMUID = fptr; }
166166
void endSysex7();
167167
void startSysex7(uint8_t group, uint8_t deviceId);

include/umpMessageCreate.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ inline std::array<uint32_t, 4> mtFEndOfFile(){
383383

384384
inline std::array<uint32_t, 4> mtFRequestProtocol(uint8_t protocol, bool jrrx, bool jrtx){
385385
std::array<uint32_t, 4> umpMess = {0,0,0,0};
386-
umpMess[0] = (0xF << 28) + (MIDIENDPOINT_PROTOCOL_REQUEST << 16)
386+
umpMess[0] = (0xF << 28) + (MIDIENDPOINT_STREAMCONFIG_REQUEST << 16)
387387
+ (protocol << 8)
388388
+ (jrrx << 1)
389389
+ jrtx;
@@ -393,7 +393,7 @@ inline std::array<uint32_t, 4> mtFRequestProtocol(uint8_t protocol, bool jrrx, b
393393

394394
inline std::array<uint32_t, 4> mtFNotifyProtocol( uint8_t protocol, bool jrrx, bool jrtx){
395395
std::array<uint32_t, 4> umpMess = {0,0,0,0};
396-
umpMess[0] = (0xF << 28) + (MIDIENDPOINT_PROTOCOL_NOTIFICATION << 16)
396+
umpMess[0] = (0xF << 28) + (MIDIENDPOINT_STREAMCONFIG_NOTIFICATION << 16)
397397
+ (protocol << 8)
398398
+ (jrrx << 1)
399399
+ jrtx;

include/umpProcessor.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ class umpProcessor{
120120
std::function<void(struct umpData mess)> midiEndpointName = nullptr;
121121
std::function<void(struct umpData mess)> midiEndpointProdId = nullptr;
122122

123-
std::function<void(uint8_t protocol, bool jrrx, bool jrtx)> midiEndpointJRProtocolReq = nullptr;
124-
std::function<void(uint8_t protocol, bool jrrx, bool jrtx)> midiEndpointJRProtocolNotify = nullptr;
123+
std::function<void(uint8_t protocol, bool jrrx, bool jrtx)> midiEndpointStreamConfigReq = nullptr;
124+
std::function<void(uint8_t protocol, bool jrrx, bool jrtx)> midiEndpointStreamConfigNotify = nullptr;
125125

126126
std::function<void(uint8_t fbIdx, bool active,
127127
uint8_t direction, bool sender, bool recv, uint8_t firstGroup, uint8_t groupLength,
@@ -184,9 +184,9 @@ class umpProcessor{
184184
inline void setMidiEndpointDeviceInfoNotify(std::function<void(std::array<uint8_t, 3> manuId, std::array<uint8_t, 2> familyId,
185185
std::array<uint8_t, 2> modelId, std::array<uint8_t, 4> version)> fptr){
186186
midiEndpointDeviceInfo = fptr; }
187-
inline void setJRProtocolRequest(std::function<void(uint8_t protocol, bool jrrx, bool jrtx)> fptr){ midiEndpointJRProtocolReq = fptr;}
188-
inline void setJRProtocolNotify(std::function<void(uint8_t protocol, bool jrrx, bool jrtx)> fptr){
189-
midiEndpointJRProtocolNotify = fptr;}
187+
inline void setStreamConfigRequest(std::function<void(uint8_t protocol, bool jrrx, bool jrtx)> fptr){ midiEndpointStreamConfigReq = fptr;}
188+
inline void setStreamConfigNotify(std::function<void(uint8_t protocol, bool jrrx, bool jrtx)> fptr){
189+
midiEndpointStreamConfigNotify = fptr;}
190190

191191
inline void setFunctionBlock(std::function<void(uint8_t filter, uint8_t fbIdx)> fptr){ functionBlock = fptr; }
192192
inline void setFunctionBlockNotify(std::function<void(uint8_t fbIdx, bool active,

include/utils.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@
7878
#define MIDIENDPOINT_DEVICEINFO_NOTIFICATION 0x002
7979
#define MIDIENDPOINT_NAME_NOTIFICATION 0x003
8080
#define MIDIENDPOINT_PRODID_NOTIFICATION 0x004
81-
#define MIDIENDPOINT_PROTOCOL_REQUEST 0x005
82-
#define MIDIENDPOINT_PROTOCOL_NOTIFICATION 0x006
81+
#define MIDIENDPOINT_STREAMCONFIG_REQUEST 0x005
82+
#define MIDIENDPOINT_STREAMCONFIG_NOTIFICATION 0x006
8383
#define STARTOFSEQ 0x020
8484
#define ENDOFFILE 0x021
8585

src/midiCIProcessor.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ void midiCIProcessor::startSysex7(uint8_t group, uint8_t deviceId){
3030

3131
sysexPos = 0;
3232
buffer[0]='\0';
33+
intTemp[0]=0;
34+
intTemp[1]=0;
35+
intTemp[2]=0;
36+
intTemp[3]=0;
3337
midici = MIDICI();
3438
midici.deviceId = deviceId;
3539
midici.umpGroup = group;
@@ -59,7 +63,7 @@ void midiCIProcessor::processMIDICI(uint8_t s7Byte){
5963

6064
if(sysexPos >= 12
6165
&& midici.localMUID != M2_CI_BROADCAST
62-
&& checkMUID && !checkMUID(midici.umpGroup, midici.localMUID)
66+
&& checkMUID && !checkMUID(midici.umpGroup, midici.localMUID, refpoint)
6367
){
6468
return; //Not for this device
6569
}

src/umpProcessor.cpp

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ void umpProcessor::processUMP(uint32_t UMP){
167167
case CC: //CC
168168
mess.index = val1;
169169
mess.value = umpMess[1];
170-
if(channelVoiceMessage != nullptr) channelVoiceMessage(mess);
170+
channelVoiceMessage(mess);
171171
break;
172172

173173
case RPN: //RPN
@@ -177,20 +177,20 @@ void umpProcessor::processUMP(uint32_t UMP){
177177
mess.bank = val1;
178178
mess.index = val2;
179179
mess.value = umpMess[1];
180-
if(channelVoiceMessage != nullptr) channelVoiceMessage(mess);
180+
channelVoiceMessage(mess);
181181
break;
182182

183183
case PROGRAM_CHANGE: //Program Change Message
184184
mess.value = umpMess[1] >> 24;
185185
mess.flag1 = umpMess[0] & 1;
186186
mess.bank = (umpMess[1] >> 8) & 0x7f;
187187
mess.index = umpMess[1] & 0x7f;
188-
if(channelVoiceMessage != nullptr) channelVoiceMessage(mess);
188+
channelVoiceMessage(mess);
189189
break;
190190

191191
case PITCH_BEND: //PitchBend
192192
mess.value = umpMess[1];
193-
if(channelVoiceMessage != nullptr) channelVoiceMessage(mess);
193+
channelVoiceMessage(mess);
194194
break;
195195

196196
case NRPN_PERNOTE: //Assignable Per-Note Controller 1
@@ -199,14 +199,14 @@ void umpProcessor::processUMP(uint32_t UMP){
199199
mess.note = val1;
200200
mess.index = val2;
201201
mess.value = umpMess[1];
202-
if(channelVoiceMessage != nullptr) channelVoiceMessage(mess);
202+
channelVoiceMessage(mess);
203203
break;
204204
case PERNOTE_MANAGE: //Per-Note Management Message
205205

206206
mess.note = val1;
207207
mess.flag1 =(bool)(val2 & 2);
208208
mess.flag2 = (bool)(val2 & 1);
209-
if(channelVoiceMessage != nullptr) channelVoiceMessage(mess);
209+
channelVoiceMessage(mess);
210210
break;
211211
default:
212212
if(unknownUMPMessage)unknownUMPMessage(umpMess, 2);
@@ -287,16 +287,16 @@ void umpProcessor::processUMP(uint32_t UMP){
287287
break;
288288
}
289289

290-
case MIDIENDPOINT_PROTOCOL_REQUEST: //JR Protocol Req
291-
if(midiEndpointJRProtocolReq != nullptr)
292-
midiEndpointJRProtocolReq((uint8_t) (umpMess[0] >> 8),
290+
case MIDIENDPOINT_STREAMCONFIG_REQUEST: //JR Protocol Req
291+
if(midiEndpointStreamConfigReq != nullptr)
292+
midiEndpointStreamConfigReq((uint8_t) (umpMess[0] >> 8),
293293
(umpMess[0] >> 1) & 1,
294294
umpMess[0] & 1
295295
);
296296
break;
297-
case MIDIENDPOINT_PROTOCOL_NOTIFICATION: //JR Protocol Req
298-
if(midiEndpointJRProtocolNotify != nullptr)
299-
midiEndpointJRProtocolNotify((uint8_t) (umpMess[0] >> 8),
297+
case MIDIENDPOINT_STREAMCONFIG_NOTIFICATION: //JR Protocol Req
298+
if(midiEndpointStreamConfigNotify != nullptr)
299+
midiEndpointStreamConfigNotify((uint8_t) (umpMess[0] >> 8),
300300
(umpMess[0] >> 1) & 1,
301301
umpMess[0] & 1
302302
);
@@ -453,6 +453,7 @@ void umpProcessor::processUMP(uint32_t UMP){
453453
switch (mess.status){
454454
case FLEXDATA_COMMON_TEMPO: { //Set Tempo Message
455455
if(flexTempo != nullptr) flexTempo(mess, umpMess[1]);
456+
else if (flexData != nullptr) flexData(mess);
456457
break;
457458
}
458459
case FLEXDATA_COMMON_TIMESIG: { //Set Time Signature Message
@@ -461,6 +462,7 @@ void umpProcessor::processUMP(uint32_t UMP){
461462
(umpMess[1] >> 16) & 0xFF,
462463
(umpMess[1] >> 8) & 0xFF
463464
);
465+
else if (flexData != nullptr) flexData(mess);
464466
break;
465467
}
466468
case FLEXDATA_COMMON_METRONOME: { //Set Metronome Message
@@ -472,13 +474,15 @@ void umpProcessor::processUMP(uint32_t UMP){
472474
(umpMess[2] >> 24) & 0xFF,
473475
(umpMess[2] >> 16) & 0xFF
474476
);
477+
else if (flexData != nullptr) flexData(mess);
475478
break;
476479
}
477480
case FLEXDATA_COMMON_KEYSIG: { //Set Key Signature Message
478481
if(flexKeySig != nullptr) flexKeySig(mess,
479482
(umpMess[1] >> 24) & 0xFF,
480483
(umpMess[1] >> 16) & 0xFF
481484
);
485+
else if (flexData != nullptr) flexData(mess);
482486
break;
483487
}
484488
case FLEXDATA_COMMON_CHORD: { //Set Chord Message
@@ -502,6 +506,7 @@ void umpProcessor::processUMP(uint32_t UMP){
502506
(umpMess[3] >> 4) & 0xF,//baAlt2Type
503507
umpMess[1] & 0xF//baAlt2Deg
504508
);
509+
else if (flexData != nullptr) flexData(mess);
505510
break;
506511
}
507512
default:
@@ -514,7 +519,6 @@ void umpProcessor::processUMP(uint32_t UMP){
514519
}
515520
case FLEXDATA_PERFORMANCE: //Performance Events
516521
case FLEXDATA_LYRIC:{ //Lyric Events
517-
518522
uint8_t dataLength = 0;
519523
uint8_t text[12];
520524

@@ -528,9 +532,9 @@ void umpProcessor::processUMP(uint32_t UMP){
528532
}
529533

530534
if(mess.statusBank== FLEXDATA_LYRIC && flexLyric != nullptr) flexLyric(mess, text,dataLength);
531-
if(mess.statusBank== FLEXDATA_PERFORMANCE && flexPerformance != nullptr) flexPerformance(mess,text,dataLength);
535+
else if(mess.statusBank== FLEXDATA_PERFORMANCE && flexPerformance != nullptr) flexPerformance(mess,text,dataLength);
536+
else if (flexData != nullptr) flexData(mess);
532537
break;
533-
534538
}
535539
default:
536540
if(flexData != nullptr) {
@@ -546,9 +550,3 @@ void umpProcessor::processUMP(uint32_t UMP){
546550
messPos++;
547551
}
548552
}
549-
550-
551-
552-
553-
554-

0 commit comments

Comments
 (0)