/** * Mock BLE Manager for development/testing * Replace this with the actual react-native-sdk-ble-v3 package */ class MockBLEManager { private listeners: Map = new Map(); async isBluetoothEnabled(): Promise { console.log('📱 Mock: Checking Bluetooth status...'); return true; } async requestPermissions(): Promise { console.log('📱 Mock: Requesting permissions...'); return Promise.resolve(); } async startScan(options: any): Promise { console.log('📱 Mock: Starting scan with options:', options); // Simulate finding devices setTimeout(() => { this.emit('scanResult', { device: { id: 'mock-device-1', name: 'Mock BLE Device 1', rssi: -65, }, }); }, 1000); setTimeout(() => { this.emit('scanResult', { device: { id: 'mock-device-2', name: 'Mock BLE Device 2', rssi: -75, }, }); }, 2000); return Promise.resolve(); } async stopScan(): Promise { console.log('📱 Mock: Stopping scan...'); return Promise.resolve(); } async connect(deviceId: string): Promise { console.log('📱 Mock: Connecting to device:', deviceId); setTimeout(() => { this.emit('connected', { deviceId }); // Simulate characteristic notifications setTimeout(() => { this.emit('characteristicChanged', { deviceId, serviceUuid: '0000FF00-0000-1000-8000-00805F9B34FB', characteristicUuid: '0000FF21-0000-1000-8000-00805F9B34FB', value: [1, 2, 3, 4], }); }, 2000); }, 500); return Promise.resolve(); } async disconnect(deviceId: string): Promise { console.log('📱 Mock: Disconnecting from device:', deviceId); setTimeout(() => { this.emit('disconnected', { deviceId }); }, 500); return Promise.resolve(); } on(event: string, callback: Function): void { if (!this.listeners.has(event)) { this.listeners.set(event, []); } this.listeners.get(event)!.push(callback); console.log(`📱 Mock: Registered listener for '${event}'`); } removeAllListeners(): void { console.log('📱 Mock: Removing all listeners'); this.listeners.clear(); } private emit(event: string, data: any): void { const callbacks = this.listeners.get(event) || []; callbacks.forEach((callback) => callback(data)); } } export default new MockBLEManager();