Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions src/accessoryaccess.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
using System;

using CoreFoundation;
using Foundation;
using ObjCRuntime;

// 'xpc_object_t' is an opaque OS_object that's shuttled across XPC boundaries; it has no managed API
// surface of its own, so macios binds it as NSObject everywhere (see src/browserenginekit.cs).
using OS_xpc_object = Foundation.NSObject;

namespace AccessoryAccess {

[Mac (27, 0)]
[Native]
[ErrorDomain ("AAErrorDomain")]
public enum AAErrorCode : long {
Internal = 1,
AccessoryListenerAlreadyRegistered = 2,
AccessoryNotAccessible = 3,
InvalidAccessoryState = 4,
}

[Mac (27, 0)]
[Native ("AAUSBAccessoryMatchingCriteriaInterfaceMatchingOption")]
public enum AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption : long {
MatchAll,
MatchAny,
}

/// <summary>A completion handler for opening a USB accessory.</summary>
/// <param name="device">A live IOUSBHostDevice handle that remains valid until the accessory is closed.</param>
/// <param name="error">The error that was encountered, or <see langword="null" /> if no error occurred.</param>
/// <remarks>IOUSBHost is not bound in macios, so this handle is surfaced as a raw <see cref="IntPtr"/>. To perform USB I/O, hand the accessory to a native/Swift service via <see cref="AAUsbAccessory.CreateXpcRepresentation"/> or bridge the handle through native IOUSBHost code.</remarks>
delegate void AAUsbAccessoryOpenCompletionHandler (IntPtr device, [NullAllowed] NSError error);
delegate void AAUsbAccessoryCloseCompletionHandler ([NullAllowed] NSError error);

[Mac (27, 0)]
[BaseType (typeof (NSObject), Name = "AAUSBAccessory")]
[DisableDefaultCtor]
interface AAUsbAccessory : NSSecureCoding {
[Export ("initWithXPCRepresentation:")]
[DesignatedInitializer]
NativeHandle Constructor (OS_xpc_object xpcRepresentation);

[Export ("registryID")]
ulong RegistryId { get; }

[Export ("deviceDescriptorData")]
NSData DeviceDescriptorData { get; }

[NullAllowed, Export ("configurationDescriptorData")]
NSData ConfigurationDescriptorData { get; }

[Export ("createXPCRepresentation")]
OS_xpc_object CreateXpcRepresentation ();

[Export ("openWithServiceQueue:completionHandler:")]
[Async]
void Open ([NullAllowed] DispatchQueue serviceQueue, AAUsbAccessoryOpenCompletionHandler completionHandler);

[Export ("closeWithCompletionHandler:")]
[Async]
void Close (AAUsbAccessoryCloseCompletionHandler completionHandler);
}

interface IAAUsbAccessoryListener { }

[Mac (27, 0)]
[Protocol (BackwardsCompatibleCodeGeneration = false, Name = "AAUSBAccessoryListener"), Model]
[BaseType (typeof (NSObject))]
interface AAUsbAccessoryListener {
[Export ("usbAccessoryDidConnect:")]
void UsbAccessoryDidConnect (AAUsbAccessory usbAccessory);

[Export ("usbAccessoryDidDisconnect:")]
void UsbAccessoryDidDisconnect (AAUsbAccessory usbAccessory);
}

delegate void AAUsbAccessoryManagerRegisterListenerCompletionHandler (AAUsbAccessory [] accessories, [NullAllowed] NSError error);
delegate void AAUsbAccessoryManagerUnregisterListenerCompletionHandler ();

[Mac (27, 0)]
[BaseType (typeof (NSObject), Name = "AAUSBAccessoryManager")]
[DisableDefaultCtor]
interface AAUsbAccessoryManager {
[Static]
[Export ("sharedManager", ArgumentSemantic.Strong)]
AAUsbAccessoryManager SharedManager { get; }

[Export ("registerListener:withMatchingCriteria:completionHandler:")]
[Async]
void RegisterListener (IAAUsbAccessoryListener listener, AAUsbAccessoryMatchingCriteria [] matchingCriteria, AAUsbAccessoryManagerRegisterListenerCompletionHandler completionHandler);

[Export ("unregisterListener:completionHandler:")]
[Async]
void UnregisterListener (IAAUsbAccessoryListener listener, AAUsbAccessoryManagerUnregisterListenerCompletionHandler completionHandler);
}

[Mac (27, 0)]
[BaseType (typeof (NSObject), Name = "AAUSBAccessoryMatchingCriteria")]
[DisableDefaultCtor]
interface AAUsbAccessoryMatchingCriteria : NSCopying {
[Export ("initWithDeviceMatchingDictionary:")]
[DesignatedInitializer]
NativeHandle Constructor (NSDictionary<NSString, NSObject> dictionary);

[Export ("initWithDeviceMatchingDictionary:interfaceMatchingDictionaries:interfaceMatchingOption:")]
[DesignatedInitializer]
NativeHandle Constructor ([NullAllowed] NSDictionary<NSString, NSObject> deviceMatchingDictionary, NSDictionary<NSString, NSObject> [] interfaceMatchingDictionaries, AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption interfaceMatchingOption);
}
}
3 changes: 3 additions & 0 deletions src/build/dotnet/generator-frameworks.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ partial class Frameworks {
internal readonly HashSet<string> macosframeworks = new HashSet<string> {
"Accelerate",
"Accessibility",
"AccessoryAccess",
"Accounts",
"AdServices",
"AdSupport",
Expand Down Expand Up @@ -532,6 +533,7 @@ partial class Frameworks {
};
bool? _Accelerate;
bool? _Accessibility;
bool? _AccessoryAccess;
bool? _AccessorySetupKit;
bool? _Accounts;
bool? _AddressBook;
Expand Down Expand Up @@ -706,6 +708,7 @@ partial class Frameworks {
bool? _XKit;
public bool HaveAccelerate { get { if (!_Accelerate.HasValue) _Accelerate = GetValue ("Accelerate"); return _Accelerate.Value; } }
public bool HaveAccessibility { get { if (!_Accessibility.HasValue) _Accessibility = GetValue ("Accessibility"); return _Accessibility.Value; } }
public bool HaveAccessoryAccess { get { if (!_AccessoryAccess.HasValue) _AccessoryAccess = GetValue ("AccessoryAccess"); return _AccessoryAccess.Value; } }
public bool HaveAccessorySetupKit { get { if (!_AccessorySetupKit.HasValue) _AccessorySetupKit = GetValue ("AccessorySetupKit"); return _AccessorySetupKit.Value; } }
public bool HaveAccounts { get { if (!_Accounts.HasValue) _Accounts = GetValue ("Accounts"); return _Accounts.Value; } }
public bool HaveAddressBook { get { if (!_AddressBook.HasValue) _AddressBook = GetValue ("AddressBook"); return _AddressBook.Value; } }
Expand Down
1 change: 1 addition & 0 deletions src/frameworks.sources
Original file line number Diff line number Diff line change
Expand Up @@ -2022,6 +2022,7 @@ COMMON_FRAMEWORKS = \

MACOS_FRAMEWORKS = \
$(COMMON_FRAMEWORKS) \
AccessoryAccess \
Accounts \
AdServices \
AdSupport \
Expand Down
1 change: 1 addition & 0 deletions src/rsp/dotnet/macos-defines-dotnet.rsp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
-d:HAS_ACCELERATE
-d:HAS_ACCESSIBILITY
-d:HAS_ACCESSORYACCESS
-d:HAS_ACCOUNTS
-d:HAS_ADSERVICES
-d:HAS_ADSUPPORT
Expand Down
34 changes: 34 additions & 0 deletions tests/cecil-tests/Documentation.KnownFailures.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,12 @@ F:Accessibility.AXTechnology.SwitchControl
F:Accessibility.AXTechnology.VoiceControl
F:Accessibility.AXTechnology.VoiceOver
F:Accessibility.AXTechnology.Zoom
F:AccessoryAccess.AAErrorCode.AccessoryListenerAlreadyRegistered
F:AccessoryAccess.AAErrorCode.AccessoryNotAccessible
F:AccessoryAccess.AAErrorCode.Internal
F:AccessoryAccess.AAErrorCode.InvalidAccessoryState
F:AccessoryAccess.AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption.MatchAll
F:AccessoryAccess.AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption.MatchAny
F:AccessorySetupKit.ASAccessoryEventType.AccessoryAdded
F:AccessorySetupKit.ASAccessoryEventType.AccessoryChanged
F:AccessorySetupKit.ASAccessoryEventType.AccessoryRemoved
Expand Down Expand Up @@ -8350,6 +8356,22 @@ M:Accessibility.AXPrefers.ActionSliderAlternative
M:Accessibility.AXPrefers.HorizontalTextEnabled
M:Accessibility.AXPrefers.NonBlinkingTextInsertionIndicator
M:Accessibility.AXSettings.ShowBordersEnabled
M:AccessoryAccess.AAUsbAccessory.#ctor(Foundation.NSObject)
M:AccessoryAccess.AAUsbAccessory.Close(AccessoryAccess.AAUsbAccessoryCloseCompletionHandler)
M:AccessoryAccess.AAUsbAccessory.CloseAsync
M:AccessoryAccess.AAUsbAccessory.CreateXpcRepresentation
M:AccessoryAccess.AAUsbAccessory.Open(CoreFoundation.DispatchQueue,AccessoryAccess.AAUsbAccessoryOpenCompletionHandler)
M:AccessoryAccess.AAUsbAccessory.OpenAsync(CoreFoundation.DispatchQueue)
M:AccessoryAccess.AAUsbAccessoryListener.UsbAccessoryDidConnect(AccessoryAccess.AAUsbAccessory)
M:AccessoryAccess.AAUsbAccessoryListener.UsbAccessoryDidDisconnect(AccessoryAccess.AAUsbAccessory)
M:AccessoryAccess.AAUsbAccessoryManager.RegisterListener(AccessoryAccess.IAAUsbAccessoryListener,AccessoryAccess.AAUsbAccessoryMatchingCriteria[],AccessoryAccess.AAUsbAccessoryManagerRegisterListenerCompletionHandler)
M:AccessoryAccess.AAUsbAccessoryManager.RegisterListenerAsync(AccessoryAccess.IAAUsbAccessoryListener,AccessoryAccess.AAUsbAccessoryMatchingCriteria[])
M:AccessoryAccess.AAUsbAccessoryManager.UnregisterListener(AccessoryAccess.IAAUsbAccessoryListener,AccessoryAccess.AAUsbAccessoryManagerUnregisterListenerCompletionHandler)
M:AccessoryAccess.AAUsbAccessoryManager.UnregisterListenerAsync(AccessoryAccess.IAAUsbAccessoryListener)
M:AccessoryAccess.AAUsbAccessoryMatchingCriteria.#ctor(Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject},Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject}[],AccessoryAccess.AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption)
M:AccessoryAccess.AAUsbAccessoryMatchingCriteria.#ctor(Foundation.NSDictionary{Foundation.NSString,Foundation.NSObject})
M:AccessoryAccess.IAAUsbAccessoryListener.UsbAccessoryDidConnect(AccessoryAccess.AAUsbAccessory)
M:AccessoryAccess.IAAUsbAccessoryListener.UsbAccessoryDidDisconnect(AccessoryAccess.AAUsbAccessory)
M:AccessorySetupKit.ASAccessorySession.Activate(CoreFoundation.DispatchQueue,System.Action{AccessorySetupKit.ASAccessoryEvent})
M:AccessorySetupKit.ASAccessorySession.FailAuthorization(AccessorySetupKit.ASAccessory,AccessorySetupKit.ASAccessorySessionCompletionHandler)
M:AccessorySetupKit.ASAccessorySession.FailAuthorizationAsync(AccessorySetupKit.ASAccessory)
Expand Down Expand Up @@ -31417,6 +31439,10 @@ P:Accessibility.IAXCustomContentProvider.AccessibilityCustomContentHandler
P:Accessibility.IAXDataAxisDescriptor.AttributedTitle
P:Accessibility.IAXDataAxisDescriptor.Title
P:Accessibility.IAXMathExpressionProvider.AccessibilityMathExpression
P:AccessoryAccess.AAUsbAccessory.ConfigurationDescriptorData
P:AccessoryAccess.AAUsbAccessory.DeviceDescriptorData
P:AccessoryAccess.AAUsbAccessory.RegistryId
P:AccessoryAccess.AAUsbAccessoryManager.SharedManager
P:AccessorySetupKit.ASAccessory.BluetoothIdentifier
P:AccessorySetupKit.ASAccessory.BluetoothTransportBridgingIdentifier
P:AccessorySetupKit.ASAccessory.Descriptor
Expand Down Expand Up @@ -55850,6 +55876,14 @@ T:Accessibility.AXSettings
T:Accessibility.AXSettingsFeature
T:Accessibility.AXTechnology
T:Accessibility.ValueDescriptionProviderHandler
T:AccessoryAccess.AAErrorCode
T:AccessoryAccess.AAUsbAccessory
T:AccessoryAccess.AAUsbAccessoryCloseCompletionHandler
T:AccessoryAccess.AAUsbAccessoryManager
T:AccessoryAccess.AAUsbAccessoryManagerRegisterListenerCompletionHandler
T:AccessoryAccess.AAUsbAccessoryManagerUnregisterListenerCompletionHandler
T:AccessoryAccess.AAUsbAccessoryMatchingCriteria
T:AccessoryAccess.AAUsbAccessoryMatchingCriteriaInterfaceMatchingOption
T:AccessorySetupKit.ASAccessory
T:AccessorySetupKit.ASAccessoryEvent
T:AccessorySetupKit.ASAccessoryEventType
Expand Down
1 change: 1 addition & 0 deletions tests/dotnet/UnitTests/ProjectTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3398,6 +3398,7 @@ public void AppendRuntimeIdentifierToOutputPath_DisableDirectoryBuildProps (Appl
"@executable_path/../../Contents/MonoBundle/libSystem.Security.Cryptography.Native.Apple.dylib",
"/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate",
"/System/Library/Frameworks/Accessibility.framework/Versions/A/Accessibility",
"/System/Library/Frameworks/AccessoryAccess.framework/Versions/A/AccessoryAccess",
"/System/Library/Frameworks/Accounts.framework/Versions/A/Accounts",
"/System/Library/Frameworks/AdServices.framework/Versions/A/AdServices",
"/System/Library/Frameworks/AdSupport.framework/Versions/A/AdSupport",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
AppBundleSize: 258,452,232 bytes (252,394.8 KB = 246.5 MB)
AppBundleSize: 258,521,450 bytes (252,462.4 KB = 246.5 MB)
# The following list of files and their sizes is just informational / for review, and isn't used in the test:
Contents/Info.plist:
723 bytes (0.7 KB = 0.0 MB)
741 bytes (0.7 KB = 0.0 MB)
Contents/MacOS/SizeTestApp:
7,355,192 bytes (7,182.8 KB = 7.0 MB)
7,373,192 bytes (7,200.4 KB = 7.0 MB)
Contents/MonoBundle/.xamarin/osx-arm64/_Microsoft.macOS.TypeMap.dll:
4,875,776 bytes (4,761.5 KB = 4.6 MB)
4,880,384 bytes (4,766.0 KB = 4.7 MB)
Contents/MonoBundle/.xamarin/osx-arm64/_SizeTestApp.TypeMap.dll:
3,072 bytes (3.0 KB = 0.0 MB)
Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll:
892,752 bytes (871.8 KB = 0.9 MB)
Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll:
37,647,872 bytes (36,765.5 KB = 35.9 MB)
37,668,864 bytes (36,786.0 KB = 35.9 MB)
Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll:
1,334,608 bytes (1,303.3 KB = 1.3 MB)
Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll:
Expand Down Expand Up @@ -357,13 +357,13 @@ Contents/MonoBundle/.xamarin/osx-arm64/System.Xml.XPath.XDocument.dll:
Contents/MonoBundle/.xamarin/osx-arm64/WindowsBase.dll:
16,208 bytes (15.8 KB = 0.0 MB)
Contents/MonoBundle/.xamarin/osx-x64/_Microsoft.macOS.TypeMap.dll:
4,875,776 bytes (4,761.5 KB = 4.6 MB)
4,880,384 bytes (4,766.0 KB = 4.7 MB)
Contents/MonoBundle/.xamarin/osx-x64/_SizeTestApp.TypeMap.dll:
3,072 bytes (3.0 KB = 0.0 MB)
Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll:
795,984 bytes (777.3 KB = 0.8 MB)
Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll:
37,647,872 bytes (36,765.5 KB = 35.9 MB)
37,668,864 bytes (36,786.0 KB = 35.9 MB)
Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll:
1,166,160 bytes (1,138.8 KB = 1.1 MB)
Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
AppBundleSize: 248,786,358 bytes (242,955.4 KB = 237.3 MB)
AppBundleSize: 248,831,016 bytes (242,999.0 KB = 237.3 MB)
# The following list of files and their sizes is just informational / for review, and isn't used in the test:
Contents/Info.plist:
723 bytes (0.7 KB = 0.0 MB)
741 bytes (0.7 KB = 0.0 MB)
Contents/MacOS/SizeTestApp:
8,013,368 bytes (7,825.6 KB = 7.6 MB)
8,015,000 bytes (7,827.1 KB = 7.6 MB)
Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.CSharp.dll:
892,752 bytes (871.8 KB = 0.9 MB)
Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.macOS.dll:
37,364,224 bytes (36,488.5 KB = 35.6 MB)
37,385,728 bytes (36,509.5 KB = 35.7 MB)
Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.Core.dll:
1,334,608 bytes (1,303.3 KB = 1.3 MB)
Contents/MonoBundle/.xamarin/osx-arm64/Microsoft.VisualBasic.dll:
Expand Down Expand Up @@ -355,7 +355,7 @@ Contents/MonoBundle/.xamarin/osx-arm64/WindowsBase.dll:
Contents/MonoBundle/.xamarin/osx-x64/Microsoft.CSharp.dll:
795,984 bytes (777.3 KB = 0.8 MB)
Contents/MonoBundle/.xamarin/osx-x64/Microsoft.macOS.dll:
37,364,224 bytes (36,488.5 KB = 35.6 MB)
37,385,728 bytes (36,509.5 KB = 35.7 MB)
Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.Core.dll:
1,166,160 bytes (1,138.8 KB = 1.1 MB)
Contents/MonoBundle/.xamarin/osx-x64/Microsoft.VisualBasic.dll:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
AppBundleSize: 32,655,611 bytes (31,890.2 KB = 31.1 MB)
AppBundleSize: 32,672,029 bytes (31,906.3 KB = 31.2 MB)
# The following list of files and their sizes is just informational / for review, and isn't used in the test:
Contents/Info.plist:
723 bytes (0.7 KB = 0.0 MB)
741 bytes (0.7 KB = 0.0 MB)
Contents/MacOS/SizeTestApp:
29,566,328 bytes (28,873.4 KB = 28.2 MB)
29,582,728 bytes (28,889.4 KB = 28.2 MB)
Contents/MonoBundle/libSystem.Globalization.Native.dylib:
267,872 bytes (261.6 KB = 0.3 MB)
Contents/MonoBundle/libSystem.IO.Compression.Native.dylib:
Expand Down

This file was deleted.

2 changes: 2 additions & 0 deletions tools/common/Frameworks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,8 @@ public static Frameworks MacFrameworks {
{ "SecurityUI", "SecurityUI", 15, 4 },

{ "GameSave", "GameSave", 26, 0 },

{ "AccessoryAccess", "AccessoryAccess", 27, 0 },
};
}
return mac_frameworks;
Expand Down
Loading