-
Notifications
You must be signed in to change notification settings - Fork 0
Core Physical Operations View Operation Mapping
Mr.P edited this page Aug 25, 2026
·
2 revisions
Read the mapping between physical device operations and assigned device functions.
- The device is connected and ready
- The device supports
DevicePhysicalOperationsAPI
AIBuds.xcframework
import AIBuds#import <AIBuds/AIBuds.h>
#import <AIBuds/AIBuds-Swift.h>The mapping is exposed as a property of DevicePhysicalOperationsAPI.
/// The protocol for device physical operations API.
protocol DevicePhysicalOperationsAPI: DeviceAPI {
/// Physical operations with functions mapping
/// - Returns: A dictionary mapping physical operation identifiers to function identifiers.
///
/// The dictionary is structured as follows:
/// - Keys: Physical operation identifiers. Defined in ``DeviceOperation``.
/// - Values: Function identifiers. Defined in ``DeviceFunction``.
var physicalOperationsMapping: [NSNumber: NSNumber]? { get }
}/// The protocol for device physical operations API.
@protocol AIBudsDevicePhysicalOperationsAPI <AIBudsDeviceAPI>
/// Physical operations with functions mapping
/// - Returns: A dictionary mapping physical operation identifiers to function identifiers.
///
/// The dictionary is structured as follows:
/// - Keys: Physical operation identifiers. Defined in ``DeviceOperation``.
/// - Values: Function identifiers. Defined in ``DeviceFunction``.
@property (nonatomic, readonly, copy) NSDictionary<NSNumber *, NSNumber *> * _Nullable physicalOperationsMapping;
@end| Property | Type | Description |
|---|---|---|
physicalOperationsMapping |
[NSNumber: NSNumber]? |
Maps each DeviceOperation raw value to a DeviceFunction raw value. |
This is a read-only optional property, not an asynchronous query method.
import AIBuds
guard let device = device as? DevicePhysicalOperationsAPI else {
print("Device does not support physical-operation mapping")
return
}
guard let mapping = device.physicalOperationsMapping else {
print("Mapping is unavailable")
return
}
for (operationValue, functionValue) in mapping {
let operation = DeviceOperation(rawValue: operationValue.intValue)
let function = DeviceFunction(rawValue: functionValue.intValue)
print("\(String(describing: operation)) → \(String(describing: function))")
}#import <AIBuds/AIBuds.h>
#import <AIBuds/AIBuds-Swift.h>
id<AIBudsDevicePhysicalOperationsAPI> device =
(id<AIBudsDevicePhysicalOperationsAPI>)self.device;
if (![device conformsToProtocol:@protocol(AIBudsDevicePhysicalOperationsAPI)]) {
NSLog(@"Device does not support physical-operation mapping");
return;
}
[device.physicalOperationsMapping enumerateKeysAndObjectsUsingBlock:^(
NSNumber *operation,
NSNumber *function,
BOOL *stop
) {
NSLog(@"Operation %@ → function %@", operation, function);
}];The property has no completion handler. Handle unsupported protocol conformance, a nil mapping, and raw values that do not initialize known enum cases.
-
Treat Values as Enum Raw Values: Convert keys and values through
DeviceOperationandDeviceFunction. - Do Not Infer Missing Entries: A missing operation is not documented as supported.
- Refresh UI After Assignment: Re-read the property after a successful assignment if the device updates it.
- The SDK Demo reads this property directly and sorts entries by operation raw value for display.
- The property does not use a
Resultcallback or aKeyMappingmodel.
AIBuds SDK documentation · Full documentation · API Reference
- Introduction
- Getting Started
- Core Concepts
-
Core Features
- Basic Features
- Device Info
- Find Device
- Physical Operations
- Work Mode
- Work Status
- Wear Detection
- Volume Control
- Music Control
- TWS
- Equalizer
- ANC
- Audio
- Camera
- Remote Camera
- File Import
- Teleprompter
- Segment Navigation
- Live Streaming
- Device Applications
- OTA
- Camera OTA
- Service Auth
- AI Services
- Voice Assistant
- Logging
- Advanced Topics
- Releases
- Troubleshooting