registerServices static method
Register the platform services availability callback with C++.
Matches Swift's CppBridge.Platform.register() callback wiring for
Foundation Models / System TTS / System STT availability checks.
Implementation
static Future<void> registerServices() async {
if (_servicesRegistered) return;
try {
final lib = PlatformLoader.loadCommons();
final registerCallback = lib
.lookupFunction<
Int32 Function(
Pointer<NativeFunction<Int32 Function(Int32, Pointer<Void>)>>,
),
int Function(
Pointer<NativeFunction<Int32 Function(Int32, Pointer<Void>)>>,
)
>('rac_platform_services_register_availability_callback');
_servicesAvailabilityCallback ??=
Pointer.fromFunction<_PlatformServiceAvailabilityCallbackNative>(
_platformServiceAvailabilityCallback,
_exceptionalReturnFalse,
);
final result = registerCallback(_servicesAvailabilityCallback!);
if (result != RacResultCode.success) {
_logger.warning(
'Failed to register platform services availability callback',
metadata: {'error_code': result},
);
return;
}
_servicesRegistered = true;
_logger.debug('Platform services registered');
} catch (_) {
// librac_commons.so may not export
// rac_platform_services_register_availability_callback in some
// configurations (B-FL-1-002). Log at warning so it's visible in
// non-debug builds, then mark as registered to avoid retry.
_logger.warning('Platform services registration not available');
_servicesRegistered = true;
}
}