Add missing MIDI-CI message reply classes #14
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add Missing MIDI-CI Message Reply Classes
This PR ports missing MIDI-CI message classes from the
ktmidi-ciKotlin implementation to the C++midi-ciimplementation in order to resolve compilation errors and complete the message class hierarchy.Changes Made
Added Missing MessageType Enum Values
PropertyGetCapabilitiesReply = 0x31GetPropertyDataReply = 0x35SetPropertyDataReply = 0x36SubscribePropertyReply = 0x37PropertyNotify = 0x38ProcessInquiryCapabilitiesReply = 0x41Added Missing Message Classes
Property Reply Classes:
PropertyGetCapabilitiesReply- Single packet reply for property capabilities inquiryGetPropertyDataReply- Multi-packet reply for property data requestsSetPropertyDataReply- Multi-packet reply for property data updatesSubscribePropertyReply- Multi-packet reply for property subscriptionsProfile Classes:
ProfileReply- Reply to profile inquiry with enabled/disabled profilesProfileAdded- Report when profile is addedProfileRemoved- Report when profile is removedProfileEnabled- Report when profile is enabled with channel countProfileDisabled- Report when profile is disabled with channel countProfileDetailsReply- Reply with profile-specific detailsProcess Inquiry Classes:
ProcessInquiryCapabilitiesReply- Reply with supported process featuresImplementation Details
All classes follow the existing C++ patterns:
SinglePacketMessageorMultiPacketMessageas appropriateserialize(),deserialize(),get_label(),get_body_string()serialize_multi()CommonparameterThe implementations are ported from the corresponding Kotlin classes in
ktmidi-ci/src/commonMain/kotlin/dev/atsushieno/ktmidi/ci/Message.kt, adapted to C++ patterns and data types.Problem Solved
This resolves compilation errors like:
These errors occurred because the facade classes (
PropertyClientFacade,PropertyHostFacade,ProfileClientFacade) were referencing message types that existed in the Kotlin implementation but were missing from the C++ port.Testing
Link to Devin run
https://app.devin.ai/sessions/cbfc76c15f224152b36eb1863a6aaf03
Requested by: Atsushi Eno (atsushieno@gmail.com)