diff --git a/src/CoreMidi/MidiServices.cs b/src/CoreMidi/MidiServices.cs index 16cdde831554..0e5f71d4ad16 100644 --- a/src/CoreMidi/MidiServices.cs +++ b/src/CoreMidi/MidiServices.cs @@ -2544,6 +2544,23 @@ public bool UmpCanTransmitGroupless { SetInt (MidiPropertyExtensions.kMIDIPropertyUMPCanTransmitGroupless, value ? 1 : 0); } } + +#if NET + [SupportedOSPlatform ("ios18.0")] + [SupportedOSPlatform ("maccatalyst18.0")] + [SupportedOSPlatform ("macos15.0")] + [UnsupportedOSPlatform ("tvos")] +#else + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] +#endif + public int AssociatedEndpoint { + get { + return GetInt (MidiPropertyExtensions.kMIDIPropertyAssociatedEndpoint); + } + set { + SetInt (MidiPropertyExtensions.kMIDIPropertyAssociatedEndpoint, value); + } + } // MidiEndpoint #endif // !COREBUILD } @@ -2557,6 +2574,14 @@ enum MidiNotificationMessageId : int { ThruConnectionsChanged, SerialPortOwnerChanged, IOError, +#if !MONOMAC +#if NET + [SupportedOSPlatform ("ios")] + [SupportedOSPlatform ("maccatalyst")] + [UnsupportedOSPlatform ("macos")] +#endif + InternalStart = 0x1000, +#endif } // diff --git a/src/CoreMidi/MidiStructs.cs b/src/CoreMidi/MidiStructs.cs new file mode 100644 index 000000000000..4832946a4a46 --- /dev/null +++ b/src/CoreMidi/MidiStructs.cs @@ -0,0 +1,165 @@ +#if !TVOS && !WATCH +#nullable enable + +using System; +using System.Runtime.InteropServices; + +using ObjCRuntime; +using CoreFoundation; +using Foundation; + +using MidiObjectRef = System.Int32; +using MidiClientRef = System.Int32; +using MidiDeviceRef = System.Int32; +using MidiDeviceListRef = System.Int32; +using MidiPortRef = System.Int32; +using MidiEndpointRef = System.Int32; +using MidiEntityRef = System.Int32; + +namespace CoreMidi { +#if NET + [SupportedOSPlatform ("ios18.0")] + [SupportedOSPlatform ("maccatalyst18.0")] + [SupportedOSPlatform ("macos15.0")] + [SupportedOSPlatform ("tvos18.0")] +#else + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] +#endif + [NativeName ("MIDI2DeviceManufacturer")] + public struct Midi2DeviceManufacturer { + // Byte sysExIDByte[3]; // 1-byte SysEx IDs are padded with trailing zeroes + byte sysExIdByte0; + byte sysExIdByte1; + byte sysExIdByte2; + + public byte [] SysExIdByte { + get { + return new byte [] { sysExIdByte0, sysExIdByte1, sysExIdByte2 }; + } + set { + if (value is null) + ObjCRuntime.ThrowHelper.ThrowArgumentNullException (nameof (value)); + if (value.Length != 3) + ObjCRuntime.ThrowHelper.ThrowArgumentOutOfRangeException (nameof (value), "Length must be 3"); + + sysExIdByte0 = value [0]; + sysExIdByte1 = value [1]; + sysExIdByte2 = value [2]; + } + } + } + +#if NET + [SupportedOSPlatform ("ios18.0")] + [SupportedOSPlatform ("maccatalyst18.0")] + [SupportedOSPlatform ("macos15.0")] + [SupportedOSPlatform ("tvos18.0")] +#else + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] +#endif + [NativeName ("MIDI2DeviceRevisionLevel")] + public struct Midi2DeviceRevisionLevel { + // Byte revisionLevel[4]; + byte revisionLevel0; + byte revisionLevel1; + byte revisionLevel2; + byte revisionLevel3; + + public byte [] RevisionLevel { + get { + return new byte [] { revisionLevel0, revisionLevel1, revisionLevel2, revisionLevel3 }; + } + set { + if (value is null) + ObjCRuntime.ThrowHelper.ThrowArgumentNullException (nameof (value)); + if (value.Length != 4) + ObjCRuntime.ThrowHelper.ThrowArgumentOutOfRangeException (nameof (value), "Length must be 4"); + + revisionLevel0 = value [0]; + revisionLevel1 = value [1]; + revisionLevel2 = value [2]; + revisionLevel3 = value [3]; + } + } + } + +#if NET + [SupportedOSPlatform ("ios18.0")] + [SupportedOSPlatform ("maccatalyst18.0")] + [SupportedOSPlatform ("macos15.0")] + [SupportedOSPlatform ("tvos18.0")] +#else + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] +#endif + [NativeName ("MIDICIProfileIDStandard")] + public struct MidiCIProfileIdStandard { + public byte /* MIDIUInteger7 */ ProfileIdByte1; + public byte /* MIDIUInteger7 */ ProfileBank; + public byte /* MIDIUInteger7 */ ProfileNumber; + public byte /* MIDIUInteger7 */ ProfileVersion; + public byte /* MIDIUInteger7 */ ProfileLevel; + } + +#if NET + [SupportedOSPlatform ("ios18.0")] + [SupportedOSPlatform ("maccatalyst18.0")] + [SupportedOSPlatform ("macos15.0")] + [SupportedOSPlatform ("tvos18.0")] +#else + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] +#endif + [NativeName ("MIDICIProfileIDManufacturerSpecific")] + public struct MidiCIProfileIdManufacturerSpecific { + public byte /* MIDIUInteger7 */ SysExId1; + public byte /* MIDIUInteger7 */ SysExId2; + public byte /* MIDIUInteger7 */ SysExId3; + public byte /* MIDIUInteger7 */ Info1; + public byte /* MIDIUInteger7 */ Info2; + } + +#if NET + [SupportedOSPlatform ("ios18.0")] + [SupportedOSPlatform ("maccatalyst18.0")] + [SupportedOSPlatform ("macos15.0")] + [SupportedOSPlatform ("tvos18.0")] +#else + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] +#endif + [NativeName ("MIDICIProfileID")] + public struct MidiCIProfileId { + // This is a union between MidiCIProfileIdStandard and MidiCIProfileIdManufacturerSpecific, each with the same size (5 bytes) + // So declare a struct with 5 bytes, and then do some memory copies to convert to each element of the union. + byte /* MIDIUInteger7 */ Value0; + byte /* MIDIUInteger7 */ Value1; + byte /* MIDIUInteger7 */ Value2; + byte /* MIDIUInteger7 */ Value3; + byte /* MIDIUInteger7 */ Value4; + + public unsafe MidiCIProfileIdStandard Standard { + get { + fixed (MidiCIProfileId* self = &this) { + return *(MidiCIProfileIdStandard*) self; + } + } + set { + fixed (MidiCIProfileId* self = &this) { + *self = *(MidiCIProfileId*) &value; + } + } + } + + public unsafe MidiCIProfileIdManufacturerSpecific ManufacturerSpecific { + get { + fixed (MidiCIProfileId* self = &this) { + return *(MidiCIProfileIdManufacturerSpecific*) self; + } + } + set { + fixed (MidiCIProfileId* self = &this) { + *self = *(MidiCIProfileId*) &value; + } + } + } + } +} +#endif diff --git a/src/coremidi.cs b/src/coremidi.cs index 4ff8de0b0b8e..c8e3b1e51852 100644 --- a/src/coremidi.cs +++ b/src/coremidi.cs @@ -32,6 +32,10 @@ using ObjCRuntime; using MidiObjectRef = System.Int32; +using MidiEndpointRef = System.Int32; +using MidiUmpFunctionBlockId = System.Byte; +using MidiUmpGroupNumber = System.Byte; +using MidiChannelNumber = System.Byte; #if !NET using NativeHandle = System.IntPtr; @@ -41,6 +45,9 @@ using MidiEndpoint = System.Object; using MidiCIDeviceIdentification = System.Object; using MidiCIDeviceIdentification_Blittable = System.Object; +using MidiCIProfileId = System.Object; +using Midi2DeviceManufacturer = System.Object; +using Midi2DeviceRevisionLevel = System.Object; #endif namespace CoreMidi { @@ -97,7 +104,17 @@ public enum MidiMessageType : uint { SysEx = 3, ChannelVoice2 = 4, Data128 = 5, - UnknownF = 15, + FlexData = 0xD, +#if !XAMCORE_5_0 + [Deprecated (PlatformName.iOS, 18, 0, message: "Use 'Stream' instead.")] + [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use 'Stream' instead.")] + [Deprecated (PlatformName.TvOS, 18, 0, message: "Use 'Stream' instead.")] + [Deprecated (PlatformName.WatchOS, 11, 0, message: "Use 'Stream' instead.")] + [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use 'Stream' instead.")] + UnknownF = Stream, +#endif + Stream = 0xF, + Invalid = 0xFF, } [Mac (11, 0), iOS (14, 0), TV (15, 0), Watch (8, 0)] @@ -160,6 +177,158 @@ public enum MidiUtilityStatus : uint { Noop = 0, JitterReductionClock = 1, JitterReductionTimestamp = 2, + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + DeltaClockstampTicksPerQuarterNote = 0x3, + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + TicksSinceLastEvent = 0x4 + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("UMPStreamMessageStatus")] + public enum UmpStreamMessageStatus : uint { + EndpointDiscovery = 0x00, + EndpointInfoNotification = 0x01, + DeviceIdentityNotification = 0x02, + EndpointNameNotification = 0x03, + ProductInstanceIDNotification = 0x04, + StreamConfigurationRequest = 0x05, + StreamConfigurationNotification = 0x06, + FunctionBlockDiscovery = 0x10, + FunctionBlockInfoNotification = 0x11, + FunctionBlockNameNotification = 0x12, + StartOfClip = 0x20, + EndOfClip = 0x21, + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDIUMPFunctionBlockMIDI1Info")] + public enum MidiUmpFunctionBlockMidi1Info { + NotMidi1 = 0, + UnrestrictedBandwidth = 1, + RestrictedBandwidth = 2 + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDIUMPFunctionBlockUIHint")] + public enum MidiUmpFunctionBlockUIHint { + Unknown = 0, + Receiver = 1, + Sender = 2, + SenderReceiver = 3 + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDIUMPFunctionBlockDirection")] + public enum MidiUmpFunctionBlockDirection { + Unknown = 0, + Input = 1, + Output = 2, + Bidirectional = 3 + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("UMPStreamMessageFormat")] + public enum UmpStreamMessageFormat : byte { + Complete = 0x00, + Start = 0x01, + Continuing = 0x02, + End = 0x03 + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDICICategoryOptions")] + public enum MidiCICategoryOptions : byte /* MIDIUInteger7 = typedef UInt8 MIDIUInteger7; //! 7 bits usable; allowed values 0x0~0x7F */ { + ProtocolNegotiation = (1 << 1), + ProfileConfigurationSupported = (1 << 2), + PropertyExchangeSupported = (1 << 3), + ProcessInquirySupported = (1 << 4), + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDICIDeviceType")] + public enum MidiCIDeviceType : byte /* UInt8 */ { + Unknown = 0, + LegacyMidi1, + Virtual, + UsbMidi, + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDICIProfileMessageType")] + public enum MidiCIProfileMessageType : byte /* MIDIUInteger7 = typedef UInt8 MIDIUInteger7; //! 7 bits usable; allowed values 0x0~0x7F */ { + ProfileInquiry = 0x20, + ReplyToProfileInquiry = 0x21, + SetProfileOn = 0x22, + SetProfileOff = 0x23, + ProfileEnabledReport = 0x24, + ProfileDisabledReport = 0x25, + ProfileAdded = 0x26, + ProfileRemoved = 0x27, + DetailsInquiry = 0x28, + ReplyToDetailsInquiry = 0x29, + ProfileSpecificData = 0x2F, + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDICIPropertyExchangeMessageType")] + public enum MidiCIPropertyExchangeMessageType : byte /* MIDIUInteger7 = typedef UInt8 MIDIUInteger7; //! 7 bits usable; allowed values 0x0~0x7F */ { + InquiryPropertyExchangeCapabilities = 0x30, + ReplyToPropertyExchangeCapabilities = 0x31, + InquiryHasPropertyData_Reserved = 0x32, + InquiryReplyToHasPropertyData_Reserved = 0x33, + InquiryGetPropertyData = 0x34, + ReplyToGetProperty = 0x35, + InquirySetPropertyData = 0x36, + ReplyToSetPropertyData = 0x37, + Subscription = 0x38, + ReplyToSubscription = 0x39, + Notify = 0x3F, + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDICIProcessInquiryMessageType")] + public enum MidiCIProcessInquiryMessageType : byte /* MIDIUInteger7 = typedef UInt8 MIDIUInteger7; //! 7 bits usable; allowed values 0x0~0x7F */ { + InquiryProcessInquiryCapabilities = 0x40, + ReplyToProcessInquiryCapabilities = 0x41, + InquiryMidiMessageReport = 0x42, + ReplyToMidiMessageReport = 0x43, + EndOfMidiMessageReport = 0x44, + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDICIManagementMessageType")] + public enum MidiCIManagementMessageType : byte /* MIDIUInteger7 = typedef UInt8 MIDIUInteger7; //! 7 bits usable; allowed values 0x0~0x7F */ { + Discovery = 0x70, + ReplyToDiscovery = 0x71, + InquiryEndpointInformation = 0x72, + ReplyToEndpointInformation = 0x73, + MIDICIACK = 0x7D, + InvalidateMUID = 0x7E, + MIDICINAK = 0x7F, + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDICIProfileType")] + public enum MidiCIProfileType : byte /* UInt8 */ { + SingleChannel = 1, + Group = 2, + FunctionBlock = 3, + Multichannel = 4, + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDIUMPCIObjectBackingType")] + public enum MidiUmpCIObjectBackingType : byte /* UInt8 */ { + Unknown = 0, + Virtual, + DriverDevice, + UsbMidi, + } + + [Watch (11, 0), TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDICIPropertyExchangeRequestID")] + public enum MidiCIPropertyExchangeRequestID : byte /* UInt8 */ { + BadRequest = 0xFF, } /// A remote MIDI host. @@ -329,6 +498,17 @@ interface MidiCIProfile : NSSecureCoding { [MacCatalyst (14, 0)] [Export ("initWithData:")] NativeHandle Constructor (NSData data); + + /* Notifications */ + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [Field ("MIDICIProfileWasUpdatedNotification")] + [Notification] + NSString WasUpdatedNotification { get; } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [Field ("MIDICIProfileWasRemovedNotification")] + [Notification] + NSString WasRemovedNotification { get; } } [NoWatch, NoTV, iOS (12, 0)] @@ -342,15 +522,15 @@ interface MidiCIProfileState : NSSecureCoding { [Export ("disabledProfiles")] MidiCIProfile [] DisabledProfiles { get; } - [Deprecated (PlatformName.iOS, 14, 0, message: "Use the '(byte midiChannel, MidiCIProfile[] enabled, MidiCIProfile[] disabled)' constructor instead.")] - [Deprecated (PlatformName.MacOSX, 11, 0, message: "Use the '(byte midiChannel, MidiCIProfile[] enabled, MidiCIProfile[] disabled)' constructor instead.")] - [Deprecated (PlatformName.MacCatalyst, 14, 0, message: "Use the '(byte midiChannel, MidiCIProfile[] enabled, MidiCIProfile[] disabled)' constructor instead.")] [Export ("initWithEnabledProfiles:disabledProfiles:")] NativeHandle Constructor (MidiCIProfile [] enabled, MidiCIProfile [] disabled); [Mac (11, 0), iOS (14, 0)] [MacCatalyst (14, 0)] [Export ("initWithChannel:enabledProfiles:disabledProfiles:")] + [Deprecated (PlatformName.iOS, 18, 0, message: "Use the other constructor instead (without the 'midiChannelNumber' parameter).")] + [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "Use the other constructor instead (without the 'midiChannelNumber' parameter).")] + [Deprecated (PlatformName.MacOSX, 15, 0, message: "Use the other constructor instead (without the 'midiChannelNumber' parameter).")] NativeHandle Constructor (byte midiChannelNumber, MidiCIProfile [] enabled, MidiCIProfile [] disabled); [Mac (11, 0), iOS (14, 0)] @@ -367,6 +547,9 @@ interface MidiCIProfileState : NSSecureCoding { [MacCatalyst (13, 1)] [BaseType (typeof (NSObject), Name = "MIDICISession")] [DisableDefaultCtor] + [Deprecated (PlatformName.iOS, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacOSX, 15, 0, message: "No longer supported.")] interface MidiCISession { [Export ("entity")] uint Entity { get; } @@ -444,6 +627,9 @@ interface MidiCISession { [MacCatalyst (14, 0)] [BaseType (typeof (NSObject), Name = "MIDICIDeviceInfo")] [DisableDefaultCtor] + [Deprecated (PlatformName.iOS, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacOSX, 15, 0, message: "No longer supported.")] interface MidiCIDeviceInfo : NSSecureCoding { [Export ("manufacturerID")] NSData ManufacturerId { get; } @@ -476,6 +662,9 @@ interface MidiCIDeviceInfo : NSSecureCoding { [MacCatalyst (14, 0)] [BaseType (typeof (NSObject), Name = "MIDICIDiscoveredNode")] [DisableDefaultCtor] + [Deprecated (PlatformName.iOS, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacOSX, 15, 0, message: "No longer supported.")] interface MidiCIDiscoveredNode : NSSecureCoding { [Internal] [Export ("destination")] @@ -504,6 +693,9 @@ interface MidiCIDiscoveredNode : NSSecureCoding { [MacCatalyst (14, 0)] [DisableDefaultCtor] [BaseType (typeof (NSObject), Name = "MIDICIDiscoveryManager")] + [Deprecated (PlatformName.iOS, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacOSX, 15, 0, message: "No longer supported.")] interface MidiCIDiscoveryManager { [Static] [Export ("sharedInstance")] @@ -543,6 +735,9 @@ interface MidiCIProfileResponderDelegate { [MacCatalyst (14, 0)] [BaseType (typeof (NSObject), Name = "MIDICIResponder")] [DisableDefaultCtor] + [Deprecated (PlatformName.iOS, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacCatalyst, 18, 0, message: "No longer supported.")] + [Deprecated (PlatformName.MacOSX, 15, 0, message: "No longer supported.")] interface MidiCIResponder { [BindAs (typeof (int []))] [Export ("initiators")] @@ -774,5 +969,302 @@ enum MidiProperty { [Mac (14, 0), iOS (17, 0), MacCatalyst (17, 0), NoTV, NoWatch] [Field ("kMIDIPropertyUMPCanTransmitGroupless")] UmpCanTransmitGroupless, + + [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoTV, NoWatch] + [Field ("kMIDIPropertyAssociatedEndpoint")] + AssociatedEndpoint, + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (NSObject), Name = "MIDICIDevice")] + [DisableDefaultCtor] + interface MidiCIDevice { + [Export ("deviceInfo")] + Midi2DeviceInfo DeviceInfo { get; } + + [Export ("MUID")] + /* MIDICIMUID -> MIDIUInteger28 -> UInt32 */ + uint Muid { get; } + + [Export ("supportsProtocolNegotiation")] + bool SupportsProtocolNegotiation { get; } + + [Export ("supportsProfileConfiguration")] + bool SupportsProfileConfiguration { get; } + + [Export ("supportsPropertyExchange")] + bool SupportsPropertyExchange { get; } + + [Export ("supportsProcessInquiry")] + bool SupportsProcessInquiry { get; } + + [Export ("maxSysExSize")] + nuint MaxSysExSize { get; } + + [Export ("maxPropertyExchangeRequests")] + nuint MaxPropertyExchangeRequests { get; } + + [Export ("deviceType")] + MidiCIDeviceType DeviceType { get; } + + [Export ("profiles")] + MidiUmpCIProfile [] Profiles { get; } + + /* Notifications */ + [Field ("MIDICIDeviceWasAddedNotification")] + [Notification] + NSString WasAddedNotification { get; } + + [Field ("MIDICIDeviceWasRemovedNotification")] + [Notification] + NSString WasRemovedNotification { get; } + + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (NSObject), Name = "MIDICIDeviceManager")] + [DisableDefaultCtor] + interface MidiCIDeviceManager { + [Static] + [Export ("sharedInstance")] + MidiCIDeviceManager SharedInstance { get; } + + [Export ("discoveredCIDevices", ArgumentSemantic.Copy)] + MidiCIDevice [] DiscoveredCIDevices { get; } + + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (NSObject), Name = "MIDIUMPCIProfile")] + [DisableDefaultCtor] + interface MidiUmpCIProfile { + [Export ("name")] + string Name { get; } + + [Export ("profileID")] + MidiCIProfileId ProfileId { get; } + + [Export ("profileType")] + MidiCIProfileType ProfileType { get; } + + [Export ("groupOffset")] + MidiUmpGroupNumber GroupOffset { get; } + + [Export ("firstChannel")] + MidiChannelNumber FirstChannel { get; } + + [Export ("enabledChannelCount")] + ushort /* MIDIUInteger14 */ EnabledChannelCount { get; } + + [Export ("totalChannelCount")] + ushort /* MIDIUInteger14 */ TotalChannelCount { get; } + + [Export ("isEnabled")] + bool IsEnabled { get; } + + [Export ("setProfileState:enabledChannelCount:error:")] + bool SetProfileState (bool isEnabled, ushort enabledChannelCount, out NSError error); + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (NSObject), Name = "MIDI2DeviceInfo")] + [DisableDefaultCtor] + interface Midi2DeviceInfo { + [Export ("manufacturerID")] + Midi2DeviceManufacturer ManufacturerId { get; } + + [Export ("family")] + ushort /* MIDIUInteger14 */ Family { get; } + + [Export ("modelNumber")] + ushort /* MIDIUInteger14 */ ModelNumber { get; } + + [Export ("revisionLevel")] + Midi2DeviceRevisionLevel RevisionLevel { get; } + + [Export ("initWithManufacturerID:family:modelNumber:revisionLevel:")] + NativeHandle Constructor (Midi2DeviceManufacturer manufacturerId, ushort family, ushort modelNumber, Midi2DeviceRevisionLevel revisionLevel); + } + + [Flags] + [NoWatch, TV (18, 0), Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [NativeName ("MIDIUMPProtocolOptions")] + public enum MidiUmpProtocolOptions : byte /* MIDIUInteger4 */ { + SupportedProtocolMidi1 = 1, + SupportedProtocolMidi2 = 1 << 1, + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (NSObject), Name = "MIDIUMPEndpoint")] + [DisableDefaultCtor] + interface MidiUmpEndpoint { + [Export ("name")] + string Name { get; } + + [Export ("MIDIProtocol")] + MidiProtocolId MidiProtocol { get; } + + [Export ("supportedMIDIProtocols")] + MidiUmpProtocolOptions SupportedMidiProtocols { get; } + + [Export ("MIDIDestination")] + MidiEndpointRef MidiDestination { get; } + + [Export ("MIDISource")] + MidiEndpointRef MidiSource { get; } + + [Export ("deviceInfo")] + Midi2DeviceInfo DeviceInfo { get; } + + [Export ("productInstanceID")] + string ProductInstanceId { get; } + + [Export ("hasStaticFunctionBlocks")] + bool HasStaticFunctionBlocks { get; } + + [Export ("hasJRTSReceiveCapability")] + bool HasJrtsReceiveCapability { get; } + + [Export ("hasJRTSTransmitCapability")] + bool HasJrtsTransmitCapability { get; } + + [Export ("endpointType")] + MidiUmpCIObjectBackingType EndpointType { get; } + + [Export ("functionBlocks", ArgumentSemantic.Copy)] + MidiUmpFunctionBlock [] FunctionBlocks { get; set; } + + /* Notifications */ + [Notification] + [Field ("MIDIUMPEndpointWasAddedNotification")] + NSString WasAddedNotification { get; } + + [Notification] + [Field ("MIDIUMPEndpointWasRemovedNotification")] + NSString WasRemovedNotification { get; } + + [Notification] + [Field ("MIDIUMPEndpointWasUpdatedNotification")] + NSString WasUpdatedNotification { get; } + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (NSObject), Name = "MIDIUMPFunctionBlock")] + [DisableDefaultCtor] + interface MidiUmpFunctionBlock { + [Export ("name")] + string Name { get; } + + [Export ("functionBlockID")] + MidiUmpFunctionBlockId FunctionBlockId { get; } + + [Export ("direction")] + MidiUmpFunctionBlockDirection Direction { get; } + + [Export ("firstGroup")] + MidiUmpGroupNumber FirstGroup { get; } + + [Export ("totalGroupsSpanned")] + byte /* MIDIUInteger7 */ TotalGroupsSpanned { get; } + + [Export ("maxSysEx8Streams")] + byte MaxSysEx8Streams { get; } + + [Export ("MIDI1Info")] + MidiUmpFunctionBlockMidi1Info Midi1Info { get; } + + [Export ("UIHint")] + MidiUmpFunctionBlockUIHint UIHint { get; } + + [Export ("UMPEndpoint", ArgumentSemantic.Weak), NullAllowed] + MidiUmpEndpoint UmpEndpoint { get; } + + [Export ("midiCIDevice", ArgumentSemantic.Weak), NullAllowed] + MidiCIDevice MidiCIDevice { get; } + + [Export ("isEnabled")] + bool IsEnabled { get; } + + /* Notifications */ + [Notification] + [Field ("MIDIUMPFunctionBlockWasUpdatedNotification")] + NSString WasUpdatedNotification { get; } + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [Static] + interface MidiCIDeviceManagerDictionaryKey { + [Field ("MIDICIDeviceObjectKey")] + NSString CIDeviceObject { get; } + + [Field ("MIDICIProfileObjectKey")] + NSString CIProfileObjectKey { get; } + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [Static] + interface MidiUmpEndpointManagerDictionaryKey { + [Field ("MIDIUMPEndpointObjectKey")] + NSString UmpEndpointObject { get; } + + [Field ("MIDIUMPFunctionBlockObjectKey")] + NSString UmpFunctionBlockObject { get; } + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (NSObject), Name = "MIDIUMPEndpointManager")] + [DisableDefaultCtor] + interface MidiUmpEndpointManager { + [Static] + [Export ("sharedInstance")] + MidiUmpEndpointManager SharedInstance { get; } + + [Export ("UMPEndpoints", ArgumentSemantic.Copy)] + MidiUmpEndpoint [] UmpEndpoints { get; } + } + + delegate void MidiReceiveBlock (IntPtr eventList, IntPtr srcConnRefCon); + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (MidiUmpEndpoint), Name = "MIDIUMPMutableEndpoint")] + [DisableDefaultCtor] + interface MidiUmpMutableEndpoint { + [Export ("mutableFunctionBlocks", ArgumentSemantic.Copy)] + MidiUmpMutableFunctionBlock [] MutableFunctionBlocks { get; set; } + + [Export ("isEnabled")] + bool IsEnabled { get; } + + [Export ("initWithName:deviceInfo:productInstanceID:MIDIProtocol:destinationCallback:")] + NativeHandle Constructor (string name, Midi2DeviceInfo deviceInfo, string productInstanceId, MidiProtocolId midiProtocol, MidiReceiveBlock destinationCallback); + + [Export ("setName:error:")] + bool SetName (string name, out NSError error); + + [Export ("registerFunctionBlocks:markAsStatic:error:")] + bool RegisterFunctionBlocks (MidiUmpMutableFunctionBlock [] functionBlocks, bool markAsStatic, out NSError error); + + [Export ("setEnabled:error:")] + bool SetEnabled (bool isEnabled, out NSError error); + } + + [NoWatch, NoTV, Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0)] + [BaseType (typeof (MidiUmpFunctionBlock), Name = "MIDIUMPMutableFunctionBlock")] + [DisableDefaultCtor] + interface MidiUmpMutableFunctionBlock { + [Export ("UMPEndpoint", ArgumentSemantic.Weak), NullAllowed] + MidiUmpMutableEndpoint UmpEndpoint { get; } + + [Export ("initWithName:direction:firstGroup:totalGroupsSpanned:maxSysEx8Streams:MIDI1Info:UIHint:isEnabled:")] + NativeHandle Constructor (string name, MidiUmpFunctionBlockDirection direction, MidiUmpGroupNumber firstGroup, byte /* MIDIUInteger7 */ totalGroupsSpanned, byte /* MIDIUInteger7 */ maxSysEx8Streams, MidiUmpFunctionBlockMidi1Info midi1Info, MidiUmpFunctionBlockUIHint uiHint, bool isEnabled); + + [Export ("setEnabled:error:")] + bool SetEnabled (bool isEnabled, out NSError error); + + [Export ("setName:error:")] + bool SetName (string name, out NSError error); + + [Export ("reconfigureWithFirstGroup:direction:MIDI1Info:UIHint:error:")] + bool ReconfigureWithFirstGroup (MidiUmpGroupNumber firstGroup, MidiUmpFunctionBlockDirection direction, MidiUmpFunctionBlockMidi1Info midi1Info, MidiUmpFunctionBlockUIHint uiHint, out NSError error); } } diff --git a/src/frameworks.sources b/src/frameworks.sources index 0183ff55da04..e706f621c6f8 100644 --- a/src/frameworks.sources +++ b/src/frameworks.sources @@ -617,6 +617,7 @@ COREMIDI_CORE_SOURCES = \ CoreMidi/MidiCompat.cs \ CoreMidi/MidiCIDeviceIdentification.cs \ CoreMidi/MidiServices.cs \ + CoreMidi/MidiStructs.cs \ CoreMidi/MidiThruConnection.cs \ CoreMidi/MidiThruConnectionParams.cs \ diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index a8215195ae6e..9020ef989d64 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -7478,11 +7478,68 @@ F:CoreMedia.LensStabilizationStatus.None F:CoreMedia.LensStabilizationStatus.Off F:CoreMedia.LensStabilizationStatus.OutOfRange F:CoreMedia.LensStabilizationStatus.Unavailable +F:CoreMidi.MidiCICategoryOptions.ProcessInquirySupported +F:CoreMidi.MidiCICategoryOptions.ProfileConfigurationSupported +F:CoreMidi.MidiCICategoryOptions.PropertyExchangeSupported +F:CoreMidi.MidiCICategoryOptions.ProtocolNegotiation F:CoreMidi.MidiCIDeviceIdentification.Family F:CoreMidi.MidiCIDeviceIdentification.Manufacturer F:CoreMidi.MidiCIDeviceIdentification.ModelNumber F:CoreMidi.MidiCIDeviceIdentification.Reserved F:CoreMidi.MidiCIDeviceIdentification.RevisionLevel +F:CoreMidi.MidiCIDeviceType.LegacyMidi1 +F:CoreMidi.MidiCIDeviceType.Unknown +F:CoreMidi.MidiCIDeviceType.UsbMidi +F:CoreMidi.MidiCIDeviceType.Virtual +F:CoreMidi.MidiCIManagementMessageType.Discovery +F:CoreMidi.MidiCIManagementMessageType.InquiryEndpointInformation +F:CoreMidi.MidiCIManagementMessageType.InvalidateMUID +F:CoreMidi.MidiCIManagementMessageType.MIDICIACK +F:CoreMidi.MidiCIManagementMessageType.MIDICINAK +F:CoreMidi.MidiCIManagementMessageType.ReplyToDiscovery +F:CoreMidi.MidiCIManagementMessageType.ReplyToEndpointInformation +F:CoreMidi.MidiCIProcessInquiryMessageType.EndOfMidiMessageReport +F:CoreMidi.MidiCIProcessInquiryMessageType.InquiryMidiMessageReport +F:CoreMidi.MidiCIProcessInquiryMessageType.InquiryProcessInquiryCapabilities +F:CoreMidi.MidiCIProcessInquiryMessageType.ReplyToMidiMessageReport +F:CoreMidi.MidiCIProcessInquiryMessageType.ReplyToProcessInquiryCapabilities +F:CoreMidi.MidiCIProfileIdManufacturerSpecific.Info1 +F:CoreMidi.MidiCIProfileIdManufacturerSpecific.Info2 +F:CoreMidi.MidiCIProfileIdManufacturerSpecific.SysExId1 +F:CoreMidi.MidiCIProfileIdManufacturerSpecific.SysExId2 +F:CoreMidi.MidiCIProfileIdManufacturerSpecific.SysExId3 +F:CoreMidi.MidiCIProfileIdStandard.ProfileBank +F:CoreMidi.MidiCIProfileIdStandard.ProfileIdByte1 +F:CoreMidi.MidiCIProfileIdStandard.ProfileLevel +F:CoreMidi.MidiCIProfileIdStandard.ProfileNumber +F:CoreMidi.MidiCIProfileIdStandard.ProfileVersion +F:CoreMidi.MidiCIProfileMessageType.DetailsInquiry +F:CoreMidi.MidiCIProfileMessageType.ProfileAdded +F:CoreMidi.MidiCIProfileMessageType.ProfileDisabledReport +F:CoreMidi.MidiCIProfileMessageType.ProfileEnabledReport +F:CoreMidi.MidiCIProfileMessageType.ProfileInquiry +F:CoreMidi.MidiCIProfileMessageType.ProfileRemoved +F:CoreMidi.MidiCIProfileMessageType.ProfileSpecificData +F:CoreMidi.MidiCIProfileMessageType.ReplyToDetailsInquiry +F:CoreMidi.MidiCIProfileMessageType.ReplyToProfileInquiry +F:CoreMidi.MidiCIProfileMessageType.SetProfileOff +F:CoreMidi.MidiCIProfileMessageType.SetProfileOn +F:CoreMidi.MidiCIProfileType.FunctionBlock +F:CoreMidi.MidiCIProfileType.Group +F:CoreMidi.MidiCIProfileType.Multichannel +F:CoreMidi.MidiCIProfileType.SingleChannel +F:CoreMidi.MidiCIPropertyExchangeMessageType.InquiryGetPropertyData +F:CoreMidi.MidiCIPropertyExchangeMessageType.InquiryHasPropertyData_Reserved +F:CoreMidi.MidiCIPropertyExchangeMessageType.InquiryPropertyExchangeCapabilities +F:CoreMidi.MidiCIPropertyExchangeMessageType.InquiryReplyToHasPropertyData_Reserved +F:CoreMidi.MidiCIPropertyExchangeMessageType.InquirySetPropertyData +F:CoreMidi.MidiCIPropertyExchangeMessageType.Notify +F:CoreMidi.MidiCIPropertyExchangeMessageType.ReplyToGetProperty +F:CoreMidi.MidiCIPropertyExchangeMessageType.ReplyToPropertyExchangeCapabilities +F:CoreMidi.MidiCIPropertyExchangeMessageType.ReplyToSetPropertyData +F:CoreMidi.MidiCIPropertyExchangeMessageType.ReplyToSubscription +F:CoreMidi.MidiCIPropertyExchangeMessageType.Subscription +F:CoreMidi.MidiCIPropertyExchangeRequestID.BadRequest F:CoreMidi.MidiControlTransform.ControlNumber F:CoreMidi.MidiControlTransform.ControlType F:CoreMidi.MidiControlTransform.Param @@ -7522,6 +7579,9 @@ F:CoreMidi.MidiError.WrongThread F:CoreMidi.MidiMessageType.ChannelVoice1 F:CoreMidi.MidiMessageType.ChannelVoice2 F:CoreMidi.MidiMessageType.Data128 +F:CoreMidi.MidiMessageType.FlexData +F:CoreMidi.MidiMessageType.Invalid +F:CoreMidi.MidiMessageType.Stream F:CoreMidi.MidiMessageType.SysEx F:CoreMidi.MidiMessageType.System F:CoreMidi.MidiMessageType.UnknownF @@ -7576,9 +7636,44 @@ F:CoreMidi.MidiTransformType.MaxValue F:CoreMidi.MidiTransformType.MinValue F:CoreMidi.MidiTransformType.None F:CoreMidi.MidiTransformType.Scale +F:CoreMidi.MidiUmpCIObjectBackingType.DriverDevice +F:CoreMidi.MidiUmpCIObjectBackingType.Unknown +F:CoreMidi.MidiUmpCIObjectBackingType.UsbMidi +F:CoreMidi.MidiUmpCIObjectBackingType.Virtual +F:CoreMidi.MidiUmpFunctionBlockDirection.Bidirectional +F:CoreMidi.MidiUmpFunctionBlockDirection.Input +F:CoreMidi.MidiUmpFunctionBlockDirection.Output +F:CoreMidi.MidiUmpFunctionBlockDirection.Unknown +F:CoreMidi.MidiUmpFunctionBlockMidi1Info.NotMidi1 +F:CoreMidi.MidiUmpFunctionBlockMidi1Info.RestrictedBandwidth +F:CoreMidi.MidiUmpFunctionBlockMidi1Info.UnrestrictedBandwidth +F:CoreMidi.MidiUmpFunctionBlockUIHint.Receiver +F:CoreMidi.MidiUmpFunctionBlockUIHint.Sender +F:CoreMidi.MidiUmpFunctionBlockUIHint.SenderReceiver +F:CoreMidi.MidiUmpFunctionBlockUIHint.Unknown +F:CoreMidi.MidiUmpProtocolOptions.SupportedProtocolMidi1 +F:CoreMidi.MidiUmpProtocolOptions.SupportedProtocolMidi2 +F:CoreMidi.MidiUtilityStatus.DeltaClockstampTicksPerQuarterNote F:CoreMidi.MidiUtilityStatus.JitterReductionClock F:CoreMidi.MidiUtilityStatus.JitterReductionTimestamp F:CoreMidi.MidiUtilityStatus.Noop +F:CoreMidi.MidiUtilityStatus.TicksSinceLastEvent +F:CoreMidi.UmpStreamMessageFormat.Complete +F:CoreMidi.UmpStreamMessageFormat.Continuing +F:CoreMidi.UmpStreamMessageFormat.End +F:CoreMidi.UmpStreamMessageFormat.Start +F:CoreMidi.UmpStreamMessageStatus.DeviceIdentityNotification +F:CoreMidi.UmpStreamMessageStatus.EndOfClip +F:CoreMidi.UmpStreamMessageStatus.EndpointDiscovery +F:CoreMidi.UmpStreamMessageStatus.EndpointInfoNotification +F:CoreMidi.UmpStreamMessageStatus.EndpointNameNotification +F:CoreMidi.UmpStreamMessageStatus.FunctionBlockDiscovery +F:CoreMidi.UmpStreamMessageStatus.FunctionBlockInfoNotification +F:CoreMidi.UmpStreamMessageStatus.FunctionBlockNameNotification +F:CoreMidi.UmpStreamMessageStatus.ProductInstanceIDNotification +F:CoreMidi.UmpStreamMessageStatus.StartOfClip +F:CoreMidi.UmpStreamMessageStatus.StreamConfigurationNotification +F:CoreMidi.UmpStreamMessageStatus.StreamConfigurationRequest F:CoreML.MLComputeUnits.All F:CoreML.MLComputeUnits.CpuAndGpu F:CoreML.MLComputeUnits.CPUAndNeuralEngine @@ -32608,6 +32703,7 @@ M:CoreMidi.IOErrorEventArgs.#ctor(CoreMidi.MidiDevice,System.Int32) M:CoreMidi.Midi.GetDevice(System.IntPtr) M:CoreMidi.Midi.GetExternalDevice(System.IntPtr) M:CoreMidi.Midi.Restart +M:CoreMidi.Midi2DeviceInfo.#ctor(CoreMidi.Midi2DeviceManufacturer,System.UInt16,System.UInt16,CoreMidi.Midi2DeviceRevisionLevel) M:CoreMidi.MidiBluetoothDriver.#ctor M:CoreMidi.MidiBluetoothDriver.ActivateAllConnections M:CoreMidi.MidiBluetoothDriver.Disconnect(Foundation.NSString) @@ -32727,6 +32823,17 @@ M:CoreMidi.MidiThruConnection.SetParams(CoreMidi.MidiThruConnectionParams) M:CoreMidi.MidiThruConnectionEndpoint.#ctor(System.Int32,System.Int32) M:CoreMidi.MidiThruConnectionParams.#ctor M:CoreMidi.MidiTransform.#ctor(CoreMidi.MidiTransformType,System.Int16) +M:CoreMidi.MidiUmpCIProfile.SetProfileState(System.Boolean,System.UInt16,Foundation.NSError@) +M:CoreMidi.MidiUmpFunctionBlock.Dispose(System.Boolean) +M:CoreMidi.MidiUmpMutableEndpoint.#ctor(System.String,CoreMidi.Midi2DeviceInfo,System.String,CoreMidi.MidiProtocolId,CoreMidi.MidiReceiveBlock) +M:CoreMidi.MidiUmpMutableEndpoint.RegisterFunctionBlocks(CoreMidi.MidiUmpMutableFunctionBlock[],System.Boolean,Foundation.NSError@) +M:CoreMidi.MidiUmpMutableEndpoint.SetEnabled(System.Boolean,Foundation.NSError@) +M:CoreMidi.MidiUmpMutableEndpoint.SetName(System.String,Foundation.NSError@) +M:CoreMidi.MidiUmpMutableFunctionBlock.#ctor(System.String,CoreMidi.MidiUmpFunctionBlockDirection,System.Byte,System.Byte,System.Byte,CoreMidi.MidiUmpFunctionBlockMidi1Info,CoreMidi.MidiUmpFunctionBlockUIHint,System.Boolean) +M:CoreMidi.MidiUmpMutableFunctionBlock.Dispose(System.Boolean) +M:CoreMidi.MidiUmpMutableFunctionBlock.ReconfigureWithFirstGroup(System.Byte,CoreMidi.MidiUmpFunctionBlockDirection,CoreMidi.MidiUmpFunctionBlockMidi1Info,CoreMidi.MidiUmpFunctionBlockUIHint,Foundation.NSError@) +M:CoreMidi.MidiUmpMutableFunctionBlock.SetEnabled(System.Boolean,Foundation.NSError@) +M:CoreMidi.MidiUmpMutableFunctionBlock.SetName(System.String,Foundation.NSError@) M:CoreMidi.ObjectAddedOrRemovedEventArgs.#ctor(CoreMidi.MidiObject,CoreMidi.MidiObject) M:CoreMidi.ObjectPropertyChangedEventArgs.#ctor(CoreMidi.MidiObject,System.String) M:CoreML.IMLBatchProvider.GetFeatures(System.IntPtr) @@ -63532,10 +63639,32 @@ P:CoreMidi.Midi.NetworkBonjourServiceType P:CoreMidi.Midi.NetworkNotificationContactsDidChange P:CoreMidi.Midi.NetworkNotificationSessionDidChange P:CoreMidi.Midi.SourceCount +P:CoreMidi.Midi2DeviceInfo.Family +P:CoreMidi.Midi2DeviceInfo.ManufacturerId +P:CoreMidi.Midi2DeviceInfo.ModelNumber +P:CoreMidi.Midi2DeviceInfo.RevisionLevel +P:CoreMidi.Midi2DeviceManufacturer.SysExIdByte +P:CoreMidi.Midi2DeviceRevisionLevel.RevisionLevel +P:CoreMidi.MidiCIDevice.DeviceInfo +P:CoreMidi.MidiCIDevice.DeviceType +P:CoreMidi.MidiCIDevice.MaxPropertyExchangeRequests +P:CoreMidi.MidiCIDevice.MaxSysExSize +P:CoreMidi.MidiCIDevice.Muid +P:CoreMidi.MidiCIDevice.Profiles +P:CoreMidi.MidiCIDevice.SupportsProcessInquiry +P:CoreMidi.MidiCIDevice.SupportsProfileConfiguration +P:CoreMidi.MidiCIDevice.SupportsPropertyExchange +P:CoreMidi.MidiCIDevice.SupportsProtocolNegotiation +P:CoreMidi.MidiCIDevice.WasAddedNotification +P:CoreMidi.MidiCIDevice.WasRemovedNotification P:CoreMidi.MidiCIDeviceInfo.Family P:CoreMidi.MidiCIDeviceInfo.ManufacturerId P:CoreMidi.MidiCIDeviceInfo.ModelNumber P:CoreMidi.MidiCIDeviceInfo.RevisionLevel +P:CoreMidi.MidiCIDeviceManager.DiscoveredCIDevices +P:CoreMidi.MidiCIDeviceManager.SharedInstance +P:CoreMidi.MidiCIDeviceManagerDictionaryKey.CIDeviceObject +P:CoreMidi.MidiCIDeviceManagerDictionaryKey.CIProfileObjectKey P:CoreMidi.MidiCIDiscoveredNode.DeviceInfo P:CoreMidi.MidiCIDiscoveredNode.MaximumSysExSize P:CoreMidi.MidiCIDiscoveredNode.SupportsProfiles @@ -63543,6 +63672,10 @@ P:CoreMidi.MidiCIDiscoveredNode.SupportsProperties P:CoreMidi.MidiCIDiscoveryManager.SharedInstance P:CoreMidi.MidiCIProfile.Name P:CoreMidi.MidiCIProfile.ProfileId +P:CoreMidi.MidiCIProfile.WasRemovedNotification +P:CoreMidi.MidiCIProfile.WasUpdatedNotification +P:CoreMidi.MidiCIProfileId.ManufacturerSpecific +P:CoreMidi.MidiCIProfileId.Standard P:CoreMidi.MidiCIProfileState.DisabledProfiles P:CoreMidi.MidiCIProfileState.EnabledProfiles P:CoreMidi.MidiCIProfileState.MidiChannel @@ -63607,6 +63740,7 @@ P:CoreMidi.MidiDevice.TransmitsProgramChanges P:CoreMidi.MidiDevice.UniqueID P:CoreMidi.MidiDevice.UsesSerial P:CoreMidi.MidiEndpoint.AdvanceScheduleTimeMuSec +P:CoreMidi.MidiEndpoint.AssociatedEndpoint P:CoreMidi.MidiEndpoint.ConnectionUniqueIDData P:CoreMidi.MidiEndpoint.ConnectionUniqueIDInt P:CoreMidi.MidiEndpoint.DisplayName @@ -63712,6 +63846,48 @@ P:CoreMidi.MidiThruConnectionParams.PitchBend P:CoreMidi.MidiThruConnectionParams.ProgramChange P:CoreMidi.MidiThruConnectionParams.Sources P:CoreMidi.MidiThruConnectionParams.Velocity +P:CoreMidi.MidiUmpCIProfile.EnabledChannelCount +P:CoreMidi.MidiUmpCIProfile.FirstChannel +P:CoreMidi.MidiUmpCIProfile.GroupOffset +P:CoreMidi.MidiUmpCIProfile.IsEnabled +P:CoreMidi.MidiUmpCIProfile.Name +P:CoreMidi.MidiUmpCIProfile.ProfileId +P:CoreMidi.MidiUmpCIProfile.ProfileType +P:CoreMidi.MidiUmpCIProfile.TotalChannelCount +P:CoreMidi.MidiUmpEndpoint.DeviceInfo +P:CoreMidi.MidiUmpEndpoint.EndpointType +P:CoreMidi.MidiUmpEndpoint.FunctionBlocks +P:CoreMidi.MidiUmpEndpoint.HasJrtsReceiveCapability +P:CoreMidi.MidiUmpEndpoint.HasJrtsTransmitCapability +P:CoreMidi.MidiUmpEndpoint.HasStaticFunctionBlocks +P:CoreMidi.MidiUmpEndpoint.MidiDestination +P:CoreMidi.MidiUmpEndpoint.MidiProtocol +P:CoreMidi.MidiUmpEndpoint.MidiSource +P:CoreMidi.MidiUmpEndpoint.Name +P:CoreMidi.MidiUmpEndpoint.ProductInstanceId +P:CoreMidi.MidiUmpEndpoint.SupportedMidiProtocols +P:CoreMidi.MidiUmpEndpoint.WasAddedNotification +P:CoreMidi.MidiUmpEndpoint.WasRemovedNotification +P:CoreMidi.MidiUmpEndpoint.WasUpdatedNotification +P:CoreMidi.MidiUmpEndpointManager.SharedInstance +P:CoreMidi.MidiUmpEndpointManager.UmpEndpoints +P:CoreMidi.MidiUmpEndpointManagerDictionaryKey.UmpEndpointObject +P:CoreMidi.MidiUmpEndpointManagerDictionaryKey.UmpFunctionBlockObject +P:CoreMidi.MidiUmpFunctionBlock.Direction +P:CoreMidi.MidiUmpFunctionBlock.FirstGroup +P:CoreMidi.MidiUmpFunctionBlock.FunctionBlockId +P:CoreMidi.MidiUmpFunctionBlock.IsEnabled +P:CoreMidi.MidiUmpFunctionBlock.MaxSysEx8Streams +P:CoreMidi.MidiUmpFunctionBlock.Midi1Info +P:CoreMidi.MidiUmpFunctionBlock.MidiCIDevice +P:CoreMidi.MidiUmpFunctionBlock.Name +P:CoreMidi.MidiUmpFunctionBlock.TotalGroupsSpanned +P:CoreMidi.MidiUmpFunctionBlock.UIHint +P:CoreMidi.MidiUmpFunctionBlock.UmpEndpoint +P:CoreMidi.MidiUmpFunctionBlock.WasUpdatedNotification +P:CoreMidi.MidiUmpMutableEndpoint.IsEnabled +P:CoreMidi.MidiUmpMutableEndpoint.MutableFunctionBlocks +P:CoreMidi.MidiUmpMutableFunctionBlock.UmpEndpoint P:CoreMidi.MidiValueMap.Value P:CoreMidi.ObjectAddedOrRemovedEventArgs.Child P:CoreMidi.ObjectAddedOrRemovedEventArgs.Parent @@ -80642,17 +80818,34 @@ T:CoreMedia.LensStabilizationStatus T:CoreMedia.TextMarkupColor T:CoreMidi.IMidiCIProfileResponderDelegate T:CoreMidi.IOErrorEventArgs +T:CoreMidi.Midi2DeviceInfo +T:CoreMidi.Midi2DeviceManufacturer +T:CoreMidi.Midi2DeviceRevisionLevel T:CoreMidi.MidiBluetoothDriver +T:CoreMidi.MidiCICategoryOptions +T:CoreMidi.MidiCIDevice T:CoreMidi.MidiCIDeviceIdentification T:CoreMidi.MidiCIDeviceInfo +T:CoreMidi.MidiCIDeviceManager +T:CoreMidi.MidiCIDeviceManagerDictionaryKey +T:CoreMidi.MidiCIDeviceType T:CoreMidi.MidiCIDiscoveredNode T:CoreMidi.MidiCIDiscoveryManager T:CoreMidi.MidiCIDiscoveryResponseDelegate +T:CoreMidi.MidiCIManagementMessageType +T:CoreMidi.MidiCIProcessInquiryMessageType T:CoreMidi.MidiCIProfile T:CoreMidi.MidiCIProfileChangedHandler +T:CoreMidi.MidiCIProfileId +T:CoreMidi.MidiCIProfileIdManufacturerSpecific +T:CoreMidi.MidiCIProfileIdStandard +T:CoreMidi.MidiCIProfileMessageType T:CoreMidi.MidiCIProfileResponderDelegate T:CoreMidi.MidiCIProfileSpecificDataHandler T:CoreMidi.MidiCIProfileState +T:CoreMidi.MidiCIProfileType +T:CoreMidi.MidiCIPropertyExchangeMessageType +T:CoreMidi.MidiCIPropertyExchangeRequestID T:CoreMidi.MidiCIResponder T:CoreMidi.MidiCISession T:CoreMidi.MidiCISessionDisconnectHandler @@ -80675,6 +80868,7 @@ T:CoreMidi.MidiPerNoteManagementOptions T:CoreMidi.MidiPort T:CoreMidi.MidiProgramChangeOptions T:CoreMidi.MidiProtocolId +T:CoreMidi.MidiReceiveBlock T:CoreMidi.MidiSysExStatus T:CoreMidi.MidiSystemStatus T:CoreMidi.MidiThruConnection @@ -80683,10 +80877,24 @@ T:CoreMidi.MidiThruConnectionParams T:CoreMidi.MidiTransform T:CoreMidi.MidiTransformControlType T:CoreMidi.MidiTransformType +T:CoreMidi.MidiUmpCIObjectBackingType +T:CoreMidi.MidiUmpCIProfile +T:CoreMidi.MidiUmpEndpoint +T:CoreMidi.MidiUmpEndpointManager +T:CoreMidi.MidiUmpEndpointManagerDictionaryKey +T:CoreMidi.MidiUmpFunctionBlock +T:CoreMidi.MidiUmpFunctionBlockDirection +T:CoreMidi.MidiUmpFunctionBlockMidi1Info +T:CoreMidi.MidiUmpFunctionBlockUIHint +T:CoreMidi.MidiUmpMutableEndpoint +T:CoreMidi.MidiUmpMutableFunctionBlock +T:CoreMidi.MidiUmpProtocolOptions T:CoreMidi.MidiUtilityStatus T:CoreMidi.MidiValueMap T:CoreMidi.ObjectAddedOrRemovedEventArgs T:CoreMidi.ObjectPropertyChangedEventArgs +T:CoreMidi.UmpStreamMessageFormat +T:CoreMidi.UmpStreamMessageStatus T:CoreML.IMLComputeDeviceProtocol T:CoreML.IMLWritable T:CoreML.MLComputePlan diff --git a/tests/monotouch-test/CoreMidi/Midi2DeviceManufacturerTest.cs b/tests/monotouch-test/CoreMidi/Midi2DeviceManufacturerTest.cs new file mode 100644 index 000000000000..2c0fc4a208e0 --- /dev/null +++ b/tests/monotouch-test/CoreMidi/Midi2DeviceManufacturerTest.cs @@ -0,0 +1,29 @@ +// +// Unit tests for Midi2DeviceManufacturer +// + +#if !__TVOS__ && !__WATCHOS__ +using System; +using Foundation; +using CoreMidi; +using NUnit.Framework; + +namespace MonoTouchFixtures.CoreMidi { + [TestFixture] + [Preserve (AllMembers = true)] + public class Midi2DeviceManufacturerTest { + [Test] + public void SysExIdByte () + { + var value = default (Midi2DeviceManufacturer); + CollectionAssert.AreEqual (new byte [] { 0, 0, 0 }, value.SysExIdByte, "A"); + + value.SysExIdByte = new byte [] { 1, 2, 3 }; + CollectionAssert.AreEqual (new byte [] { 1, 2, 3 }, value.SysExIdByte, "B"); + + Assert.Throws (() => value.SysExIdByte = null, "C"); + Assert.Throws (() => value.SysExIdByte = new byte [2], "D"); + } + } +} +#endif diff --git a/tests/monotouch-test/CoreMidi/Midi2DeviceRevisionLevelTest.cs b/tests/monotouch-test/CoreMidi/Midi2DeviceRevisionLevelTest.cs new file mode 100644 index 000000000000..b3e1bb4905d0 --- /dev/null +++ b/tests/monotouch-test/CoreMidi/Midi2DeviceRevisionLevelTest.cs @@ -0,0 +1,29 @@ +// +// Unit tests for Midi2DeviceRevisionLevel +// + +#if !__TVOS__ && !__WATCHOS__ +using System; +using Foundation; +using CoreMidi; +using NUnit.Framework; + +namespace MonoTouchFixtures.CoreMidi { + [TestFixture] + [Preserve (AllMembers = true)] + public class Midi2DeviceRevisionLevelTest { + [Test] + public void RevisionLevel () + { + var value = default (Midi2DeviceRevisionLevel); + CollectionAssert.AreEqual (new byte [] { 0, 0, 0, 0 }, value.RevisionLevel, "A"); + + value.RevisionLevel = new byte [] { 1, 2, 3, 4 }; + CollectionAssert.AreEqual (new byte [] { 1, 2, 3, 4 }, value.RevisionLevel, "B"); + + Assert.Throws (() => value.RevisionLevel = null, "C"); + Assert.Throws (() => value.RevisionLevel = new byte [2], "D"); + } + } +} +#endif diff --git a/tests/monotouch-test/CoreMidi/MidiCIProfileIdTest.cs b/tests/monotouch-test/CoreMidi/MidiCIProfileIdTest.cs new file mode 100644 index 000000000000..120a30721c3b --- /dev/null +++ b/tests/monotouch-test/CoreMidi/MidiCIProfileIdTest.cs @@ -0,0 +1,66 @@ +// +// Unit tests for MidiCIProfileId +// + +#if !__TVOS__ && !__WATCHOS__ +using System; +using Foundation; +using CoreMidi; +using NUnit.Framework; + +namespace MonoTouchFixtures.CoreMidi { + [TestFixture] + [Preserve (AllMembers = true)] + public class MidiCIProfileIdTest { + [Test] + public void Standard () + { + var value = default (MidiCIProfileId); + Assert.AreEqual (0, value.Standard.ProfileIdByte1, "ProfileIdByte1 A"); + Assert.AreEqual (0, value.Standard.ProfileBank, "ProfileBank A"); + Assert.AreEqual (0, value.Standard.ProfileNumber, "ProfileNumber A"); + Assert.AreEqual (0, value.Standard.ProfileVersion, "ProfileVersion A"); + Assert.AreEqual (0, value.Standard.ProfileLevel, "ProfileLevel A"); + + value.Standard = new MidiCIProfileIdStandard () { + ProfileIdByte1 = 1, + ProfileBank = 2, + ProfileNumber = 3, + ProfileVersion = 4, + ProfileLevel = 5, + }; + + Assert.AreEqual (1, value.Standard.ProfileIdByte1, "ProfileIdByte1 B"); + Assert.AreEqual (2, value.Standard.ProfileBank, "ProfileBank B"); + Assert.AreEqual (3, value.Standard.ProfileNumber, "ProfileNumber B"); + Assert.AreEqual (4, value.Standard.ProfileVersion, "ProfileVersion B"); + Assert.AreEqual (5, value.Standard.ProfileLevel, "ProfileLevel B"); + } + + [Test] + public void ManufacturerSpecific () + { + var value = default (MidiCIProfileId); + Assert.AreEqual (0, value.ManufacturerSpecific.SysExId1, "SysExId1 A"); + Assert.AreEqual (0, value.ManufacturerSpecific.SysExId2, "SysExId2 A"); + Assert.AreEqual (0, value.ManufacturerSpecific.SysExId3, "SysExId3 A"); + Assert.AreEqual (0, value.ManufacturerSpecific.Info1, "Info1 A"); + Assert.AreEqual (0, value.ManufacturerSpecific.Info2, "Info2 A"); + + value.ManufacturerSpecific = new MidiCIProfileIdManufacturerSpecific () { + SysExId1 = 1, + SysExId2 = 2, + SysExId3 = 3, + Info1 = 4, + Info2 = 5, + }; + + Assert.AreEqual (1, value.ManufacturerSpecific.SysExId1, "SysExId1 B"); + Assert.AreEqual (2, value.ManufacturerSpecific.SysExId2, "SysExId2 B"); + Assert.AreEqual (3, value.ManufacturerSpecific.SysExId3, "SysExId3 B"); + Assert.AreEqual (4, value.ManufacturerSpecific.Info1, "Info1 B"); + Assert.AreEqual (5, value.ManufacturerSpecific.Info2, "Info2 B"); + } + } +} +#endif diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-CoreMIDI.ignore b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-CoreMIDI.ignore index fb581291134c..df40d9225eae 100644 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-CoreMIDI.ignore +++ b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-CoreMIDI.ignore @@ -25,3 +25,6 @@ !missing-pinvoke! MIDIReceivedEventList is not bound !missing-pinvoke! MIDISendEventList is not bound !missing-pinvoke! MIDISourceCreateWithProtocol is not bound +!missing-pinvoke! MIDIEventPacketSysexBytesForGroup is not bound +!missing-pinvoke! MIDISendUMPSysex is not bound +!missing-pinvoke! MIDISendUMPSysex8 is not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-CoreMIDI.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-CoreMIDI.todo deleted file mode 100644 index d2fc1ad6beb8..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-CoreMIDI.todo +++ /dev/null @@ -1,115 +0,0 @@ -!missing-pinvoke! MIDIEventListForEachEvent is not bound -!missing-pinvoke! MIDIEventPacketSysexBytesForGroup is not bound -!missing-pinvoke! MIDISendUMPSysex is not bound -!missing-pinvoke! MIDISendUMPSysex8 is not bound -!deprecated-attribute-missing! MIDICIDeviceInfo missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveredNode missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveryManager missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIProfileState::initWithChannel:enabledProfiles:disabledProfiles: missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIResponder missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICISession missing a [Deprecated] attribute -!missing-enum! MIDICICategoryOptions not bound -!missing-enum! MIDICIDeviceType not bound -!missing-enum! MIDICIManagementMessageType not bound -!missing-enum! MIDICIProcessInquiryMessageType not bound -!missing-enum! MIDICIProfileMessageType not bound -!missing-enum! MIDICIProfileType not bound -!missing-enum! MIDICIPropertyExchangeMessageType not bound -!missing-enum! MIDIUMPCIObjectBackingType not bound -!missing-enum! MIDIUMPFunctionBlockDirection not bound -!missing-enum! MIDIUMPFunctionBlockMIDI1Info not bound -!missing-enum! MIDIUMPFunctionBlockUIHint not bound -!missing-enum! MIDIUMPProtocolOptions not bound -!missing-enum! UMPStreamMessageFormat not bound -!missing-enum! UMPStreamMessageStatus not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeFlexData = 13 not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeInvalid = 255 not bound -!missing-enum-value! MidiNotificationMessageId native value kMIDIMsgInternalStart = 4096 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote = 3 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusTicksSinceLastEvent = 4 not bound -!missing-field! kMIDIPropertyAssociatedEndpoint not bound -!missing-field! MIDICIDeviceObjectKey not bound -!missing-field! MIDICIDeviceWasAddedNotification not bound -!missing-field! MIDICIDeviceWasRemovedNotification not bound -!missing-field! MIDICIProfileObjectKey not bound -!missing-field! MIDICIProfileWasRemovedNotification not bound -!missing-field! MIDICIProfileWasUpdatedNotification not bound -!missing-field! MIDIUMPEndpointObjectKey not bound -!missing-field! MIDIUMPEndpointWasAddedNotification not bound -!missing-field! MIDIUMPEndpointWasRemovedNotification not bound -!missing-field! MIDIUMPEndpointWasUpdatedNotification not bound -!missing-field! MIDIUMPFunctionBlockObjectKey not bound -!missing-field! MIDIUMPFunctionBlockWasUpdatedNotification not bound -!missing-selector! +MIDICIDeviceManager::sharedInstance not bound -!missing-selector! +MIDIUMPEndpointManager::sharedInstance not bound -!missing-selector! MIDI2DeviceInfo::family not bound -!missing-selector! MIDI2DeviceInfo::initWithManufacturerID:family:modelNumber:revisionLevel: not bound -!missing-selector! MIDI2DeviceInfo::manufacturerID not bound -!missing-selector! MIDI2DeviceInfo::modelNumber not bound -!missing-selector! MIDI2DeviceInfo::revisionLevel not bound -!missing-selector! MIDICIDevice::deviceInfo not bound -!missing-selector! MIDICIDevice::deviceType not bound -!missing-selector! MIDICIDevice::maxPropertyExchangeRequests not bound -!missing-selector! MIDICIDevice::maxSysExSize not bound -!missing-selector! MIDICIDevice::MUID not bound -!missing-selector! MIDICIDevice::profiles not bound -!missing-selector! MIDICIDevice::supportsProcessInquiry not bound -!missing-selector! MIDICIDevice::supportsProfileConfiguration not bound -!missing-selector! MIDICIDevice::supportsPropertyExchange not bound -!missing-selector! MIDICIDevice::supportsProtocolNegotiation not bound -!missing-selector! MIDICIDeviceManager::discoveredCIDevices not bound -!missing-selector! MIDIUMPCIProfile::enabledChannelCount not bound -!missing-selector! MIDIUMPCIProfile::firstChannel not bound -!missing-selector! MIDIUMPCIProfile::groupOffset not bound -!missing-selector! MIDIUMPCIProfile::isEnabled not bound -!missing-selector! MIDIUMPCIProfile::name not bound -!missing-selector! MIDIUMPCIProfile::profileID not bound -!missing-selector! MIDIUMPCIProfile::profileType not bound -!missing-selector! MIDIUMPCIProfile::setProfileState:enabledChannelCount:error: not bound -!missing-selector! MIDIUMPCIProfile::totalChannelCount not bound -!missing-selector! MIDIUMPEndpoint::deviceInfo not bound -!missing-selector! MIDIUMPEndpoint::endpointType not bound -!missing-selector! MIDIUMPEndpoint::functionBlocks not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSReceiveCapability not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSTransmitCapability not bound -!missing-selector! MIDIUMPEndpoint::hasStaticFunctionBlocks not bound -!missing-selector! MIDIUMPEndpoint::MIDIDestination not bound -!missing-selector! MIDIUMPEndpoint::MIDIProtocol not bound -!missing-selector! MIDIUMPEndpoint::MIDISource not bound -!missing-selector! MIDIUMPEndpoint::name not bound -!missing-selector! MIDIUMPEndpoint::productInstanceID not bound -!missing-selector! MIDIUMPEndpoint::setFunctionBlocks: not bound -!missing-selector! MIDIUMPEndpoint::supportedMIDIProtocols not bound -!missing-selector! MIDIUMPEndpointManager::UMPEndpoints not bound -!missing-selector! MIDIUMPFunctionBlock::direction not bound -!missing-selector! MIDIUMPFunctionBlock::firstGroup not bound -!missing-selector! MIDIUMPFunctionBlock::functionBlockID not bound -!missing-selector! MIDIUMPFunctionBlock::isEnabled not bound -!missing-selector! MIDIUMPFunctionBlock::maxSysEx8Streams not bound -!missing-selector! MIDIUMPFunctionBlock::MIDI1Info not bound -!missing-selector! MIDIUMPFunctionBlock::midiCIDevice not bound -!missing-selector! MIDIUMPFunctionBlock::name not bound -!missing-selector! MIDIUMPFunctionBlock::totalGroupsSpanned not bound -!missing-selector! MIDIUMPFunctionBlock::UIHint not bound -!missing-selector! MIDIUMPFunctionBlock::UMPEndpoint not bound -!missing-selector! MIDIUMPMutableEndpoint::initWithName:deviceInfo:productInstanceID:MIDIProtocol:destinationCallback: not bound -!missing-selector! MIDIUMPMutableEndpoint::isEnabled not bound -!missing-selector! MIDIUMPMutableEndpoint::mutableFunctionBlocks not bound -!missing-selector! MIDIUMPMutableEndpoint::registerFunctionBlocks:markAsStatic:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setMutableFunctionBlocks: not bound -!missing-selector! MIDIUMPMutableEndpoint::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::initWithName:direction:firstGroup:totalGroupsSpanned:maxSysEx8Streams:MIDI1Info:UIHint:isEnabled: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::reconfigureWithFirstGroup:direction:MIDI1Info:UIHint:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::UMPEndpoint not bound -!missing-type! MIDI2DeviceInfo not bound -!missing-type! MIDICIDevice not bound -!missing-type! MIDICIDeviceManager not bound -!missing-type! MIDIUMPCIProfile not bound -!missing-type! MIDIUMPEndpoint not bound -!missing-type! MIDIUMPEndpointManager not bound -!missing-type! MIDIUMPFunctionBlock not bound -!missing-type! MIDIUMPMutableEndpoint not bound -!missing-type! MIDIUMPMutableFunctionBlock not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/common-CoreMIDI.ignore b/tests/xtro-sharpie/api-annotations-dotnet/common-CoreMIDI.ignore index cf41239c51e9..f5f3a3b4ae0b 100644 --- a/tests/xtro-sharpie/api-annotations-dotnet/common-CoreMIDI.ignore +++ b/tests/xtro-sharpie/api-annotations-dotnet/common-CoreMIDI.ignore @@ -1,3 +1,4 @@ # https://github.com/xamarin/xamarin-macios/issues/4452#issuecomment-660220392 !missing-pinvoke! MIDIEventListAdd is not bound !missing-pinvoke! MIDIEventListInit is not bound +!missing-pinvoke! MIDIEventListForEachEvent is not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-CoreMIDI.ignore b/tests/xtro-sharpie/api-annotations-dotnet/iOS-CoreMIDI.ignore index fb581291134c..df40d9225eae 100644 --- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-CoreMIDI.ignore +++ b/tests/xtro-sharpie/api-annotations-dotnet/iOS-CoreMIDI.ignore @@ -25,3 +25,6 @@ !missing-pinvoke! MIDIReceivedEventList is not bound !missing-pinvoke! MIDISendEventList is not bound !missing-pinvoke! MIDISourceCreateWithProtocol is not bound +!missing-pinvoke! MIDIEventPacketSysexBytesForGroup is not bound +!missing-pinvoke! MIDISendUMPSysex is not bound +!missing-pinvoke! MIDISendUMPSysex8 is not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-CoreMIDI.todo b/tests/xtro-sharpie/api-annotations-dotnet/iOS-CoreMIDI.todo deleted file mode 100644 index 38b73ab32af3..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-CoreMIDI.todo +++ /dev/null @@ -1,115 +0,0 @@ -!missing-pinvoke! MIDIEventListForEachEvent is not bound -!missing-pinvoke! MIDIEventPacketSysexBytesForGroup is not bound -!missing-pinvoke! MIDISendUMPSysex is not bound -!missing-pinvoke! MIDISendUMPSysex8 is not bound -!deprecated-attribute-missing! MIDICIDeviceInfo missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveredNode missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveryManager missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIProfileState::initWithChannel:enabledProfiles:disabledProfiles: missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIResponder missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICISession missing a [Deprecated] attribute -!missing-enum! MIDICIDeviceType not bound -!missing-enum! MIDICIManagementMessageType not bound -!missing-enum! MIDICIProcessInquiryMessageType not bound -!missing-enum! MIDICIProfileMessageType not bound -!missing-enum! MIDICIProfileType not bound -!missing-enum! MIDICIPropertyExchangeMessageType not bound -!missing-enum! MIDIUMPCIObjectBackingType not bound -!missing-enum! MIDIUMPFunctionBlockDirection not bound -!missing-enum! MIDIUMPFunctionBlockMIDI1Info not bound -!missing-enum! MIDIUMPFunctionBlockUIHint not bound -!missing-enum! UMPStreamMessageFormat not bound -!missing-enum! UMPStreamMessageStatus not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeFlexData = 13 not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeInvalid = 255 not bound -!missing-enum-value! MidiNotificationMessageId native value kMIDIMsgInternalStart = 4096 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote = 3 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusTicksSinceLastEvent = 4 not bound -!missing-field! kMIDIPropertyAssociatedEndpoint not bound -!missing-field! MIDICIDeviceObjectKey not bound -!missing-field! MIDICIDeviceWasAddedNotification not bound -!missing-field! MIDICIDeviceWasRemovedNotification not bound -!missing-field! MIDICIProfileObjectKey not bound -!missing-field! MIDICIProfileWasRemovedNotification not bound -!missing-field! MIDIUMPEndpointObjectKey not bound -!missing-field! MIDIUMPEndpointWasAddedNotification not bound -!missing-field! MIDIUMPEndpointWasRemovedNotification not bound -!missing-field! MIDIUMPFunctionBlockObjectKey not bound -!missing-selector! +MIDICIDeviceManager::sharedInstance not bound -!missing-selector! +MIDIUMPEndpointManager::sharedInstance not bound -!missing-selector! MIDI2DeviceInfo::family not bound -!missing-selector! MIDI2DeviceInfo::initWithManufacturerID:family:modelNumber:revisionLevel: not bound -!missing-selector! MIDI2DeviceInfo::manufacturerID not bound -!missing-selector! MIDI2DeviceInfo::modelNumber not bound -!missing-selector! MIDI2DeviceInfo::revisionLevel not bound -!missing-selector! MIDICIDevice::deviceInfo not bound -!missing-selector! MIDICIDevice::deviceType not bound -!missing-selector! MIDICIDevice::maxPropertyExchangeRequests not bound -!missing-selector! MIDICIDevice::maxSysExSize not bound -!missing-selector! MIDICIDevice::MUID not bound -!missing-selector! MIDICIDevice::profiles not bound -!missing-selector! MIDICIDevice::supportsProcessInquiry not bound -!missing-selector! MIDICIDevice::supportsProfileConfiguration not bound -!missing-selector! MIDICIDevice::supportsPropertyExchange not bound -!missing-selector! MIDICIDevice::supportsProtocolNegotiation not bound -!missing-selector! MIDICIDeviceManager::discoveredCIDevices not bound -!missing-selector! MIDIUMPCIProfile::enabledChannelCount not bound -!missing-selector! MIDIUMPCIProfile::firstChannel not bound -!missing-selector! MIDIUMPCIProfile::groupOffset not bound -!missing-selector! MIDIUMPCIProfile::isEnabled not bound -!missing-selector! MIDIUMPCIProfile::name not bound -!missing-selector! MIDIUMPCIProfile::profileID not bound -!missing-selector! MIDIUMPCIProfile::profileType not bound -!missing-selector! MIDIUMPCIProfile::setProfileState:enabledChannelCount:error: not bound -!missing-selector! MIDIUMPCIProfile::totalChannelCount not bound -!missing-selector! MIDIUMPEndpoint::deviceInfo not bound -!missing-selector! MIDIUMPEndpoint::endpointType not bound -!missing-selector! MIDIUMPEndpoint::functionBlocks not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSReceiveCapability not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSTransmitCapability not bound -!missing-selector! MIDIUMPEndpoint::hasStaticFunctionBlocks not bound -!missing-selector! MIDIUMPEndpoint::MIDIDestination not bound -!missing-selector! MIDIUMPEndpoint::MIDIProtocol not bound -!missing-selector! MIDIUMPEndpoint::MIDISource not bound -!missing-selector! MIDIUMPEndpoint::name not bound -!missing-selector! MIDIUMPEndpoint::productInstanceID not bound -!missing-selector! MIDIUMPEndpoint::setFunctionBlocks: not bound -!missing-selector! MIDIUMPEndpoint::supportedMIDIProtocols not bound -!missing-selector! MIDIUMPEndpointManager::UMPEndpoints not bound -!missing-selector! MIDIUMPFunctionBlock::direction not bound -!missing-selector! MIDIUMPFunctionBlock::firstGroup not bound -!missing-selector! MIDIUMPFunctionBlock::functionBlockID not bound -!missing-selector! MIDIUMPFunctionBlock::isEnabled not bound -!missing-selector! MIDIUMPFunctionBlock::maxSysEx8Streams not bound -!missing-selector! MIDIUMPFunctionBlock::MIDI1Info not bound -!missing-selector! MIDIUMPFunctionBlock::midiCIDevice not bound -!missing-selector! MIDIUMPFunctionBlock::name not bound -!missing-selector! MIDIUMPFunctionBlock::totalGroupsSpanned not bound -!missing-selector! MIDIUMPFunctionBlock::UIHint not bound -!missing-selector! MIDIUMPFunctionBlock::UMPEndpoint not bound -!missing-selector! MIDIUMPMutableEndpoint::initWithName:deviceInfo:productInstanceID:MIDIProtocol:destinationCallback: not bound -!missing-selector! MIDIUMPMutableEndpoint::isEnabled not bound -!missing-selector! MIDIUMPMutableEndpoint::mutableFunctionBlocks not bound -!missing-selector! MIDIUMPMutableEndpoint::registerFunctionBlocks:markAsStatic:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setMutableFunctionBlocks: not bound -!missing-selector! MIDIUMPMutableEndpoint::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::initWithName:direction:firstGroup:totalGroupsSpanned:maxSysEx8Streams:MIDI1Info:UIHint:isEnabled: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::reconfigureWithFirstGroup:direction:MIDI1Info:UIHint:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::UMPEndpoint not bound -!missing-type! MIDI2DeviceInfo not bound -!missing-type! MIDICIDevice not bound -!missing-type! MIDICIDeviceManager not bound -!missing-type! MIDIUMPCIProfile not bound -!missing-type! MIDIUMPEndpoint not bound -!missing-type! MIDIUMPEndpointManager not bound -!missing-type! MIDIUMPFunctionBlock not bound -!missing-type! MIDIUMPMutableEndpoint not bound -!missing-type! MIDIUMPMutableFunctionBlock not bound -!missing-enum! MIDICICategoryOptions not bound -!missing-enum! MIDIUMPProtocolOptions not bound -!missing-field! MIDICIProfileWasUpdatedNotification not bound -!missing-field! MIDIUMPEndpointWasUpdatedNotification not bound -!missing-field! MIDIUMPFunctionBlockWasUpdatedNotification not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-CoreMIDI.ignore b/tests/xtro-sharpie/api-annotations-dotnet/macOS-CoreMIDI.ignore index bd67333c4287..20bfae56def7 100644 --- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-CoreMIDI.ignore +++ b/tests/xtro-sharpie/api-annotations-dotnet/macOS-CoreMIDI.ignore @@ -30,3 +30,9 @@ !missing-pinvoke! MIDIReceivedEventList is not bound !missing-pinvoke! MIDISendEventList is not bound !missing-pinvoke! MIDISourceCreateWithProtocol is not bound + +# header's clearly say this enum value is not supported on macOS, yet xtro claims it is +!missing-enum-value! MidiNotificationMessageId native value kMIDIMsgInternalStart = 4096 not bound +!missing-pinvoke! MIDIEventPacketSysexBytesForGroup is not bound +!missing-pinvoke! MIDISendUMPSysex is not bound +!missing-pinvoke! MIDISendUMPSysex8 is not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-CoreMIDI.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-CoreMIDI.todo deleted file mode 100644 index 38b73ab32af3..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-CoreMIDI.todo +++ /dev/null @@ -1,115 +0,0 @@ -!missing-pinvoke! MIDIEventListForEachEvent is not bound -!missing-pinvoke! MIDIEventPacketSysexBytesForGroup is not bound -!missing-pinvoke! MIDISendUMPSysex is not bound -!missing-pinvoke! MIDISendUMPSysex8 is not bound -!deprecated-attribute-missing! MIDICIDeviceInfo missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveredNode missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveryManager missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIProfileState::initWithChannel:enabledProfiles:disabledProfiles: missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIResponder missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICISession missing a [Deprecated] attribute -!missing-enum! MIDICIDeviceType not bound -!missing-enum! MIDICIManagementMessageType not bound -!missing-enum! MIDICIProcessInquiryMessageType not bound -!missing-enum! MIDICIProfileMessageType not bound -!missing-enum! MIDICIProfileType not bound -!missing-enum! MIDICIPropertyExchangeMessageType not bound -!missing-enum! MIDIUMPCIObjectBackingType not bound -!missing-enum! MIDIUMPFunctionBlockDirection not bound -!missing-enum! MIDIUMPFunctionBlockMIDI1Info not bound -!missing-enum! MIDIUMPFunctionBlockUIHint not bound -!missing-enum! UMPStreamMessageFormat not bound -!missing-enum! UMPStreamMessageStatus not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeFlexData = 13 not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeInvalid = 255 not bound -!missing-enum-value! MidiNotificationMessageId native value kMIDIMsgInternalStart = 4096 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote = 3 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusTicksSinceLastEvent = 4 not bound -!missing-field! kMIDIPropertyAssociatedEndpoint not bound -!missing-field! MIDICIDeviceObjectKey not bound -!missing-field! MIDICIDeviceWasAddedNotification not bound -!missing-field! MIDICIDeviceWasRemovedNotification not bound -!missing-field! MIDICIProfileObjectKey not bound -!missing-field! MIDICIProfileWasRemovedNotification not bound -!missing-field! MIDIUMPEndpointObjectKey not bound -!missing-field! MIDIUMPEndpointWasAddedNotification not bound -!missing-field! MIDIUMPEndpointWasRemovedNotification not bound -!missing-field! MIDIUMPFunctionBlockObjectKey not bound -!missing-selector! +MIDICIDeviceManager::sharedInstance not bound -!missing-selector! +MIDIUMPEndpointManager::sharedInstance not bound -!missing-selector! MIDI2DeviceInfo::family not bound -!missing-selector! MIDI2DeviceInfo::initWithManufacturerID:family:modelNumber:revisionLevel: not bound -!missing-selector! MIDI2DeviceInfo::manufacturerID not bound -!missing-selector! MIDI2DeviceInfo::modelNumber not bound -!missing-selector! MIDI2DeviceInfo::revisionLevel not bound -!missing-selector! MIDICIDevice::deviceInfo not bound -!missing-selector! MIDICIDevice::deviceType not bound -!missing-selector! MIDICIDevice::maxPropertyExchangeRequests not bound -!missing-selector! MIDICIDevice::maxSysExSize not bound -!missing-selector! MIDICIDevice::MUID not bound -!missing-selector! MIDICIDevice::profiles not bound -!missing-selector! MIDICIDevice::supportsProcessInquiry not bound -!missing-selector! MIDICIDevice::supportsProfileConfiguration not bound -!missing-selector! MIDICIDevice::supportsPropertyExchange not bound -!missing-selector! MIDICIDevice::supportsProtocolNegotiation not bound -!missing-selector! MIDICIDeviceManager::discoveredCIDevices not bound -!missing-selector! MIDIUMPCIProfile::enabledChannelCount not bound -!missing-selector! MIDIUMPCIProfile::firstChannel not bound -!missing-selector! MIDIUMPCIProfile::groupOffset not bound -!missing-selector! MIDIUMPCIProfile::isEnabled not bound -!missing-selector! MIDIUMPCIProfile::name not bound -!missing-selector! MIDIUMPCIProfile::profileID not bound -!missing-selector! MIDIUMPCIProfile::profileType not bound -!missing-selector! MIDIUMPCIProfile::setProfileState:enabledChannelCount:error: not bound -!missing-selector! MIDIUMPCIProfile::totalChannelCount not bound -!missing-selector! MIDIUMPEndpoint::deviceInfo not bound -!missing-selector! MIDIUMPEndpoint::endpointType not bound -!missing-selector! MIDIUMPEndpoint::functionBlocks not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSReceiveCapability not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSTransmitCapability not bound -!missing-selector! MIDIUMPEndpoint::hasStaticFunctionBlocks not bound -!missing-selector! MIDIUMPEndpoint::MIDIDestination not bound -!missing-selector! MIDIUMPEndpoint::MIDIProtocol not bound -!missing-selector! MIDIUMPEndpoint::MIDISource not bound -!missing-selector! MIDIUMPEndpoint::name not bound -!missing-selector! MIDIUMPEndpoint::productInstanceID not bound -!missing-selector! MIDIUMPEndpoint::setFunctionBlocks: not bound -!missing-selector! MIDIUMPEndpoint::supportedMIDIProtocols not bound -!missing-selector! MIDIUMPEndpointManager::UMPEndpoints not bound -!missing-selector! MIDIUMPFunctionBlock::direction not bound -!missing-selector! MIDIUMPFunctionBlock::firstGroup not bound -!missing-selector! MIDIUMPFunctionBlock::functionBlockID not bound -!missing-selector! MIDIUMPFunctionBlock::isEnabled not bound -!missing-selector! MIDIUMPFunctionBlock::maxSysEx8Streams not bound -!missing-selector! MIDIUMPFunctionBlock::MIDI1Info not bound -!missing-selector! MIDIUMPFunctionBlock::midiCIDevice not bound -!missing-selector! MIDIUMPFunctionBlock::name not bound -!missing-selector! MIDIUMPFunctionBlock::totalGroupsSpanned not bound -!missing-selector! MIDIUMPFunctionBlock::UIHint not bound -!missing-selector! MIDIUMPFunctionBlock::UMPEndpoint not bound -!missing-selector! MIDIUMPMutableEndpoint::initWithName:deviceInfo:productInstanceID:MIDIProtocol:destinationCallback: not bound -!missing-selector! MIDIUMPMutableEndpoint::isEnabled not bound -!missing-selector! MIDIUMPMutableEndpoint::mutableFunctionBlocks not bound -!missing-selector! MIDIUMPMutableEndpoint::registerFunctionBlocks:markAsStatic:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setMutableFunctionBlocks: not bound -!missing-selector! MIDIUMPMutableEndpoint::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::initWithName:direction:firstGroup:totalGroupsSpanned:maxSysEx8Streams:MIDI1Info:UIHint:isEnabled: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::reconfigureWithFirstGroup:direction:MIDI1Info:UIHint:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::UMPEndpoint not bound -!missing-type! MIDI2DeviceInfo not bound -!missing-type! MIDICIDevice not bound -!missing-type! MIDICIDeviceManager not bound -!missing-type! MIDIUMPCIProfile not bound -!missing-type! MIDIUMPEndpoint not bound -!missing-type! MIDIUMPEndpointManager not bound -!missing-type! MIDIUMPFunctionBlock not bound -!missing-type! MIDIUMPMutableEndpoint not bound -!missing-type! MIDIUMPMutableFunctionBlock not bound -!missing-enum! MIDICICategoryOptions not bound -!missing-enum! MIDIUMPProtocolOptions not bound -!missing-field! MIDICIProfileWasUpdatedNotification not bound -!missing-field! MIDIUMPEndpointWasUpdatedNotification not bound -!missing-field! MIDIUMPFunctionBlockWasUpdatedNotification not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-CoreMIDI.todo b/tests/xtro-sharpie/api-annotations-dotnet/tvOS-CoreMIDI.todo deleted file mode 100644 index 810f1f56d5af..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-CoreMIDI.todo +++ /dev/null @@ -1,19 +0,0 @@ -!missing-pinvoke! MIDIEventListForEachEvent is not bound -!missing-enum! MIDICIDeviceType not bound -!missing-enum! MIDICIManagementMessageType not bound -!missing-enum! MIDICIProcessInquiryMessageType not bound -!missing-enum! MIDICIProfileMessageType not bound -!missing-enum! MIDICIProfileType not bound -!missing-enum! MIDICIPropertyExchangeMessageType not bound -!missing-enum! MIDIUMPCIObjectBackingType not bound -!missing-enum! MIDIUMPFunctionBlockDirection not bound -!missing-enum! MIDIUMPFunctionBlockMIDI1Info not bound -!missing-enum! MIDIUMPFunctionBlockUIHint not bound -!missing-enum! UMPStreamMessageFormat not bound -!missing-enum! UMPStreamMessageStatus not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeFlexData = 13 not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeInvalid = 255 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote = 3 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusTicksSinceLastEvent = 4 not bound -!missing-enum! MIDICICategoryOptions not bound -!missing-enum! MIDIUMPProtocolOptions not bound diff --git a/tests/xtro-sharpie/iOS-CoreMIDI.todo b/tests/xtro-sharpie/iOS-CoreMIDI.todo index 38b73ab32af3..bb58aad14417 100644 --- a/tests/xtro-sharpie/iOS-CoreMIDI.todo +++ b/tests/xtro-sharpie/iOS-CoreMIDI.todo @@ -2,114 +2,3 @@ !missing-pinvoke! MIDIEventPacketSysexBytesForGroup is not bound !missing-pinvoke! MIDISendUMPSysex is not bound !missing-pinvoke! MIDISendUMPSysex8 is not bound -!deprecated-attribute-missing! MIDICIDeviceInfo missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveredNode missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveryManager missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIProfileState::initWithChannel:enabledProfiles:disabledProfiles: missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIResponder missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICISession missing a [Deprecated] attribute -!missing-enum! MIDICIDeviceType not bound -!missing-enum! MIDICIManagementMessageType not bound -!missing-enum! MIDICIProcessInquiryMessageType not bound -!missing-enum! MIDICIProfileMessageType not bound -!missing-enum! MIDICIProfileType not bound -!missing-enum! MIDICIPropertyExchangeMessageType not bound -!missing-enum! MIDIUMPCIObjectBackingType not bound -!missing-enum! MIDIUMPFunctionBlockDirection not bound -!missing-enum! MIDIUMPFunctionBlockMIDI1Info not bound -!missing-enum! MIDIUMPFunctionBlockUIHint not bound -!missing-enum! UMPStreamMessageFormat not bound -!missing-enum! UMPStreamMessageStatus not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeFlexData = 13 not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeInvalid = 255 not bound -!missing-enum-value! MidiNotificationMessageId native value kMIDIMsgInternalStart = 4096 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote = 3 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusTicksSinceLastEvent = 4 not bound -!missing-field! kMIDIPropertyAssociatedEndpoint not bound -!missing-field! MIDICIDeviceObjectKey not bound -!missing-field! MIDICIDeviceWasAddedNotification not bound -!missing-field! MIDICIDeviceWasRemovedNotification not bound -!missing-field! MIDICIProfileObjectKey not bound -!missing-field! MIDICIProfileWasRemovedNotification not bound -!missing-field! MIDIUMPEndpointObjectKey not bound -!missing-field! MIDIUMPEndpointWasAddedNotification not bound -!missing-field! MIDIUMPEndpointWasRemovedNotification not bound -!missing-field! MIDIUMPFunctionBlockObjectKey not bound -!missing-selector! +MIDICIDeviceManager::sharedInstance not bound -!missing-selector! +MIDIUMPEndpointManager::sharedInstance not bound -!missing-selector! MIDI2DeviceInfo::family not bound -!missing-selector! MIDI2DeviceInfo::initWithManufacturerID:family:modelNumber:revisionLevel: not bound -!missing-selector! MIDI2DeviceInfo::manufacturerID not bound -!missing-selector! MIDI2DeviceInfo::modelNumber not bound -!missing-selector! MIDI2DeviceInfo::revisionLevel not bound -!missing-selector! MIDICIDevice::deviceInfo not bound -!missing-selector! MIDICIDevice::deviceType not bound -!missing-selector! MIDICIDevice::maxPropertyExchangeRequests not bound -!missing-selector! MIDICIDevice::maxSysExSize not bound -!missing-selector! MIDICIDevice::MUID not bound -!missing-selector! MIDICIDevice::profiles not bound -!missing-selector! MIDICIDevice::supportsProcessInquiry not bound -!missing-selector! MIDICIDevice::supportsProfileConfiguration not bound -!missing-selector! MIDICIDevice::supportsPropertyExchange not bound -!missing-selector! MIDICIDevice::supportsProtocolNegotiation not bound -!missing-selector! MIDICIDeviceManager::discoveredCIDevices not bound -!missing-selector! MIDIUMPCIProfile::enabledChannelCount not bound -!missing-selector! MIDIUMPCIProfile::firstChannel not bound -!missing-selector! MIDIUMPCIProfile::groupOffset not bound -!missing-selector! MIDIUMPCIProfile::isEnabled not bound -!missing-selector! MIDIUMPCIProfile::name not bound -!missing-selector! MIDIUMPCIProfile::profileID not bound -!missing-selector! MIDIUMPCIProfile::profileType not bound -!missing-selector! MIDIUMPCIProfile::setProfileState:enabledChannelCount:error: not bound -!missing-selector! MIDIUMPCIProfile::totalChannelCount not bound -!missing-selector! MIDIUMPEndpoint::deviceInfo not bound -!missing-selector! MIDIUMPEndpoint::endpointType not bound -!missing-selector! MIDIUMPEndpoint::functionBlocks not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSReceiveCapability not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSTransmitCapability not bound -!missing-selector! MIDIUMPEndpoint::hasStaticFunctionBlocks not bound -!missing-selector! MIDIUMPEndpoint::MIDIDestination not bound -!missing-selector! MIDIUMPEndpoint::MIDIProtocol not bound -!missing-selector! MIDIUMPEndpoint::MIDISource not bound -!missing-selector! MIDIUMPEndpoint::name not bound -!missing-selector! MIDIUMPEndpoint::productInstanceID not bound -!missing-selector! MIDIUMPEndpoint::setFunctionBlocks: not bound -!missing-selector! MIDIUMPEndpoint::supportedMIDIProtocols not bound -!missing-selector! MIDIUMPEndpointManager::UMPEndpoints not bound -!missing-selector! MIDIUMPFunctionBlock::direction not bound -!missing-selector! MIDIUMPFunctionBlock::firstGroup not bound -!missing-selector! MIDIUMPFunctionBlock::functionBlockID not bound -!missing-selector! MIDIUMPFunctionBlock::isEnabled not bound -!missing-selector! MIDIUMPFunctionBlock::maxSysEx8Streams not bound -!missing-selector! MIDIUMPFunctionBlock::MIDI1Info not bound -!missing-selector! MIDIUMPFunctionBlock::midiCIDevice not bound -!missing-selector! MIDIUMPFunctionBlock::name not bound -!missing-selector! MIDIUMPFunctionBlock::totalGroupsSpanned not bound -!missing-selector! MIDIUMPFunctionBlock::UIHint not bound -!missing-selector! MIDIUMPFunctionBlock::UMPEndpoint not bound -!missing-selector! MIDIUMPMutableEndpoint::initWithName:deviceInfo:productInstanceID:MIDIProtocol:destinationCallback: not bound -!missing-selector! MIDIUMPMutableEndpoint::isEnabled not bound -!missing-selector! MIDIUMPMutableEndpoint::mutableFunctionBlocks not bound -!missing-selector! MIDIUMPMutableEndpoint::registerFunctionBlocks:markAsStatic:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setMutableFunctionBlocks: not bound -!missing-selector! MIDIUMPMutableEndpoint::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::initWithName:direction:firstGroup:totalGroupsSpanned:maxSysEx8Streams:MIDI1Info:UIHint:isEnabled: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::reconfigureWithFirstGroup:direction:MIDI1Info:UIHint:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::UMPEndpoint not bound -!missing-type! MIDI2DeviceInfo not bound -!missing-type! MIDICIDevice not bound -!missing-type! MIDICIDeviceManager not bound -!missing-type! MIDIUMPCIProfile not bound -!missing-type! MIDIUMPEndpoint not bound -!missing-type! MIDIUMPEndpointManager not bound -!missing-type! MIDIUMPFunctionBlock not bound -!missing-type! MIDIUMPMutableEndpoint not bound -!missing-type! MIDIUMPMutableFunctionBlock not bound -!missing-enum! MIDICICategoryOptions not bound -!missing-enum! MIDIUMPProtocolOptions not bound -!missing-field! MIDICIProfileWasUpdatedNotification not bound -!missing-field! MIDIUMPEndpointWasUpdatedNotification not bound -!missing-field! MIDIUMPFunctionBlockWasUpdatedNotification not bound diff --git a/tests/xtro-sharpie/macOS-CoreMIDI.todo b/tests/xtro-sharpie/macOS-CoreMIDI.todo index 38b73ab32af3..ee524653cbf2 100644 --- a/tests/xtro-sharpie/macOS-CoreMIDI.todo +++ b/tests/xtro-sharpie/macOS-CoreMIDI.todo @@ -2,114 +2,4 @@ !missing-pinvoke! MIDIEventPacketSysexBytesForGroup is not bound !missing-pinvoke! MIDISendUMPSysex is not bound !missing-pinvoke! MIDISendUMPSysex8 is not bound -!deprecated-attribute-missing! MIDICIDeviceInfo missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveredNode missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIDiscoveryManager missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIProfileState::initWithChannel:enabledProfiles:disabledProfiles: missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICIResponder missing a [Deprecated] attribute -!deprecated-attribute-missing! MIDICISession missing a [Deprecated] attribute -!missing-enum! MIDICIDeviceType not bound -!missing-enum! MIDICIManagementMessageType not bound -!missing-enum! MIDICIProcessInquiryMessageType not bound -!missing-enum! MIDICIProfileMessageType not bound -!missing-enum! MIDICIProfileType not bound -!missing-enum! MIDICIPropertyExchangeMessageType not bound -!missing-enum! MIDIUMPCIObjectBackingType not bound -!missing-enum! MIDIUMPFunctionBlockDirection not bound -!missing-enum! MIDIUMPFunctionBlockMIDI1Info not bound -!missing-enum! MIDIUMPFunctionBlockUIHint not bound -!missing-enum! UMPStreamMessageFormat not bound -!missing-enum! UMPStreamMessageStatus not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeFlexData = 13 not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeInvalid = 255 not bound !missing-enum-value! MidiNotificationMessageId native value kMIDIMsgInternalStart = 4096 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote = 3 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusTicksSinceLastEvent = 4 not bound -!missing-field! kMIDIPropertyAssociatedEndpoint not bound -!missing-field! MIDICIDeviceObjectKey not bound -!missing-field! MIDICIDeviceWasAddedNotification not bound -!missing-field! MIDICIDeviceWasRemovedNotification not bound -!missing-field! MIDICIProfileObjectKey not bound -!missing-field! MIDICIProfileWasRemovedNotification not bound -!missing-field! MIDIUMPEndpointObjectKey not bound -!missing-field! MIDIUMPEndpointWasAddedNotification not bound -!missing-field! MIDIUMPEndpointWasRemovedNotification not bound -!missing-field! MIDIUMPFunctionBlockObjectKey not bound -!missing-selector! +MIDICIDeviceManager::sharedInstance not bound -!missing-selector! +MIDIUMPEndpointManager::sharedInstance not bound -!missing-selector! MIDI2DeviceInfo::family not bound -!missing-selector! MIDI2DeviceInfo::initWithManufacturerID:family:modelNumber:revisionLevel: not bound -!missing-selector! MIDI2DeviceInfo::manufacturerID not bound -!missing-selector! MIDI2DeviceInfo::modelNumber not bound -!missing-selector! MIDI2DeviceInfo::revisionLevel not bound -!missing-selector! MIDICIDevice::deviceInfo not bound -!missing-selector! MIDICIDevice::deviceType not bound -!missing-selector! MIDICIDevice::maxPropertyExchangeRequests not bound -!missing-selector! MIDICIDevice::maxSysExSize not bound -!missing-selector! MIDICIDevice::MUID not bound -!missing-selector! MIDICIDevice::profiles not bound -!missing-selector! MIDICIDevice::supportsProcessInquiry not bound -!missing-selector! MIDICIDevice::supportsProfileConfiguration not bound -!missing-selector! MIDICIDevice::supportsPropertyExchange not bound -!missing-selector! MIDICIDevice::supportsProtocolNegotiation not bound -!missing-selector! MIDICIDeviceManager::discoveredCIDevices not bound -!missing-selector! MIDIUMPCIProfile::enabledChannelCount not bound -!missing-selector! MIDIUMPCIProfile::firstChannel not bound -!missing-selector! MIDIUMPCIProfile::groupOffset not bound -!missing-selector! MIDIUMPCIProfile::isEnabled not bound -!missing-selector! MIDIUMPCIProfile::name not bound -!missing-selector! MIDIUMPCIProfile::profileID not bound -!missing-selector! MIDIUMPCIProfile::profileType not bound -!missing-selector! MIDIUMPCIProfile::setProfileState:enabledChannelCount:error: not bound -!missing-selector! MIDIUMPCIProfile::totalChannelCount not bound -!missing-selector! MIDIUMPEndpoint::deviceInfo not bound -!missing-selector! MIDIUMPEndpoint::endpointType not bound -!missing-selector! MIDIUMPEndpoint::functionBlocks not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSReceiveCapability not bound -!missing-selector! MIDIUMPEndpoint::hasJRTSTransmitCapability not bound -!missing-selector! MIDIUMPEndpoint::hasStaticFunctionBlocks not bound -!missing-selector! MIDIUMPEndpoint::MIDIDestination not bound -!missing-selector! MIDIUMPEndpoint::MIDIProtocol not bound -!missing-selector! MIDIUMPEndpoint::MIDISource not bound -!missing-selector! MIDIUMPEndpoint::name not bound -!missing-selector! MIDIUMPEndpoint::productInstanceID not bound -!missing-selector! MIDIUMPEndpoint::setFunctionBlocks: not bound -!missing-selector! MIDIUMPEndpoint::supportedMIDIProtocols not bound -!missing-selector! MIDIUMPEndpointManager::UMPEndpoints not bound -!missing-selector! MIDIUMPFunctionBlock::direction not bound -!missing-selector! MIDIUMPFunctionBlock::firstGroup not bound -!missing-selector! MIDIUMPFunctionBlock::functionBlockID not bound -!missing-selector! MIDIUMPFunctionBlock::isEnabled not bound -!missing-selector! MIDIUMPFunctionBlock::maxSysEx8Streams not bound -!missing-selector! MIDIUMPFunctionBlock::MIDI1Info not bound -!missing-selector! MIDIUMPFunctionBlock::midiCIDevice not bound -!missing-selector! MIDIUMPFunctionBlock::name not bound -!missing-selector! MIDIUMPFunctionBlock::totalGroupsSpanned not bound -!missing-selector! MIDIUMPFunctionBlock::UIHint not bound -!missing-selector! MIDIUMPFunctionBlock::UMPEndpoint not bound -!missing-selector! MIDIUMPMutableEndpoint::initWithName:deviceInfo:productInstanceID:MIDIProtocol:destinationCallback: not bound -!missing-selector! MIDIUMPMutableEndpoint::isEnabled not bound -!missing-selector! MIDIUMPMutableEndpoint::mutableFunctionBlocks not bound -!missing-selector! MIDIUMPMutableEndpoint::registerFunctionBlocks:markAsStatic:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableEndpoint::setMutableFunctionBlocks: not bound -!missing-selector! MIDIUMPMutableEndpoint::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::initWithName:direction:firstGroup:totalGroupsSpanned:maxSysEx8Streams:MIDI1Info:UIHint:isEnabled: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::reconfigureWithFirstGroup:direction:MIDI1Info:UIHint:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setEnabled:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::setName:error: not bound -!missing-selector! MIDIUMPMutableFunctionBlock::UMPEndpoint not bound -!missing-type! MIDI2DeviceInfo not bound -!missing-type! MIDICIDevice not bound -!missing-type! MIDICIDeviceManager not bound -!missing-type! MIDIUMPCIProfile not bound -!missing-type! MIDIUMPEndpoint not bound -!missing-type! MIDIUMPEndpointManager not bound -!missing-type! MIDIUMPFunctionBlock not bound -!missing-type! MIDIUMPMutableEndpoint not bound -!missing-type! MIDIUMPMutableFunctionBlock not bound -!missing-enum! MIDICICategoryOptions not bound -!missing-enum! MIDIUMPProtocolOptions not bound -!missing-field! MIDICIProfileWasUpdatedNotification not bound -!missing-field! MIDIUMPEndpointWasUpdatedNotification not bound -!missing-field! MIDIUMPFunctionBlockWasUpdatedNotification not bound diff --git a/tests/xtro-sharpie/tvOS-CoreMIDI.todo b/tests/xtro-sharpie/tvOS-CoreMIDI.todo index 810f1f56d5af..a12928239a94 100644 --- a/tests/xtro-sharpie/tvOS-CoreMIDI.todo +++ b/tests/xtro-sharpie/tvOS-CoreMIDI.todo @@ -1,19 +1 @@ !missing-pinvoke! MIDIEventListForEachEvent is not bound -!missing-enum! MIDICIDeviceType not bound -!missing-enum! MIDICIManagementMessageType not bound -!missing-enum! MIDICIProcessInquiryMessageType not bound -!missing-enum! MIDICIProfileMessageType not bound -!missing-enum! MIDICIProfileType not bound -!missing-enum! MIDICIPropertyExchangeMessageType not bound -!missing-enum! MIDIUMPCIObjectBackingType not bound -!missing-enum! MIDIUMPFunctionBlockDirection not bound -!missing-enum! MIDIUMPFunctionBlockMIDI1Info not bound -!missing-enum! MIDIUMPFunctionBlockUIHint not bound -!missing-enum! UMPStreamMessageFormat not bound -!missing-enum! UMPStreamMessageStatus not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeFlexData = 13 not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeInvalid = 255 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote = 3 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusTicksSinceLastEvent = 4 not bound -!missing-enum! MIDICICategoryOptions not bound -!missing-enum! MIDIUMPProtocolOptions not bound diff --git a/tests/xtro-sharpie/watchOS-CoreMIDI.todo b/tests/xtro-sharpie/watchOS-CoreMIDI.todo index 810f1f56d5af..d9cf98491e10 100644 --- a/tests/xtro-sharpie/watchOS-CoreMIDI.todo +++ b/tests/xtro-sharpie/watchOS-CoreMIDI.todo @@ -1,19 +1,2 @@ !missing-pinvoke! MIDIEventListForEachEvent is not bound -!missing-enum! MIDICIDeviceType not bound -!missing-enum! MIDICIManagementMessageType not bound -!missing-enum! MIDICIProcessInquiryMessageType not bound -!missing-enum! MIDICIProfileMessageType not bound -!missing-enum! MIDICIProfileType not bound -!missing-enum! MIDICIPropertyExchangeMessageType not bound -!missing-enum! MIDIUMPCIObjectBackingType not bound -!missing-enum! MIDIUMPFunctionBlockDirection not bound -!missing-enum! MIDIUMPFunctionBlockMIDI1Info not bound -!missing-enum! MIDIUMPFunctionBlockUIHint not bound -!missing-enum! UMPStreamMessageFormat not bound -!missing-enum! UMPStreamMessageStatus not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeFlexData = 13 not bound -!missing-enum-value! MidiMessageType native value kMIDIMessageTypeInvalid = 255 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusDeltaClockstampTicksPerQuarterNote = 3 not bound -!missing-enum-value! MidiUtilityStatus native value kMIDIUtilityStatusTicksSinceLastEvent = 4 not bound -!missing-enum! MIDICICategoryOptions not bound !missing-enum! MIDIUMPProtocolOptions not bound diff --git a/tests/xtro-sharpie/xtro-sharpie/EnumCheck.cs b/tests/xtro-sharpie/xtro-sharpie/EnumCheck.cs index 8fc99906ebe2..f583aaec68c2 100644 --- a/tests/xtro-sharpie/xtro-sharpie/EnumCheck.cs +++ b/tests/xtro-sharpie/xtro-sharpie/EnumCheck.cs @@ -127,6 +127,8 @@ public override void VisitEnumDecl (EnumDecl decl, VisitKind visitKind) case "UInt8": case "int8_t": case "uint8_t": + case "MIDIUInteger4": // 4 usable bits in 8 bits + case "MIDIUInteger7": // 7 usable bits in 8 bits native_size = 1; break; default: diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index 340d6a06a6dc..231f97165bf9 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -1713,14 +1713,22 @@ bool GetLegacyAvailabilityAttribute (ICustomAttribute ca, ApplePlatform platform switch (kind) { case AvailabilityKind.Introduced: if (shorthand) { - sdkVersion = new Version (majorVersion, minorVersion, subminorVersion); + if (subminorVersion == 0) { + sdkVersion = new Version (majorVersion, minorVersion); + } else { + sdkVersion = new Version (majorVersion, minorVersion, subminorVersion); + } } else { switch (ca.ConstructorArguments.Count) { case 5: sdkVersion = new Version (majorVersion, minorVersion); break; case 6: - sdkVersion = new Version (majorVersion, minorVersion, subminorVersion); + if (subminorVersion == 0) { + sdkVersion = new Version (majorVersion, minorVersion); + } else { + sdkVersion = new Version (majorVersion, minorVersion, subminorVersion); + } break; default: throw ErrorHelper.CreateError (4163, Errors.MT4163, caType.Name, ca.ConstructorArguments.Count);