import React from 'react';
import {StyleSheet, Button} from 'react-native';
import {ThemedText} from '@/components/themed-text';
import {ThemedView} from '@/components/themed-view';
import {BLE_UUIDS, PROTOCOL_VERSION, useBleExplorer} from '@/ble';
import ParallaxScrollView from '@/components/parallax-scroll-view';
import {IconSymbol} from '@/components/ui/icon-symbol';
export default function TabTwoScreen() {
const {
isScanning,
isConnected,
connectedDevice,
deviceInfo,
version,
isActivated,
transferProgress,
discoveredDevices,
loading,
error,
startScan,
stopScan,
connectToDevice,
disconnectDevice,
queryActivationStatus,
queryDeviceVersion,
requestDeviceInfo,
updateActivationTime,
sendIdentityCheck,
transferMedia,
} = useBleExplorer();
return (
}>
BLE Explorer
{/* Connection Status */}
Connection Status
Scanning: {isScanning ? 'Yes' : 'No'}
Connected: {isConnected ? 'Yes' : 'No'}
Device: {connectedDevice?.name || 'None'}
{error && Error: {error}}
{/* Discovered Devices */}
Discovered Devices
Total devices
found: {discoveredDevices.length}
{discoveredDevices.length === 0 ? (
No devices discovered yet. Start scanning to find devices.
) : (
{discoveredDevices.map((item) => (
{item.name || 'Unknown Device'}
{item.id}
{item.serviceUUIDs && item.serviceUUIDs.length > 0 && (
Services: {item.serviceUUIDs.join(', ')}
)}
{item.connected && (
Connected
)}
))}
)}
{/* Device Info */}
Device Information
Activated: {isActivated ? 'Yes' : 'No'}
Version: {version || 'Unknown'}
{deviceInfo && (
<>
Name: {deviceInfo.devname}
Total Space: {deviceInfo.allspace} KB
Free Space: {deviceInfo.freespace} KB
Brand: {deviceInfo.brand}
>
)}
{/* Transfer Status */}
File Transfer
Converting: {loading.converting ? 'Yes' : 'No'}
Transferring: {loading.transferring ? 'Yes' : 'No'}
Progress: {transferProgress}%
{/* Control Buttons */}
Controls
{/* Protocol Info - Available in both modes */}
Protocol Information
Version: {PROTOCOL_VERSION}
Service UUID: {BLE_UUIDS.SERVICE}
Write UUID: {BLE_UUIDS.WRITE_CHARACTERISTIC}
Read UUID: {BLE_UUIDS.READ_CHARACTERISTIC}
);
}
const styles = StyleSheet.create({
headerImage: {
color: '#808080',
bottom: -90,
left: -35,
position: 'absolute',
},
titleContainer: {
flexDirection: 'row',
gap: 8,
},
section: {
gap: 8,
marginBottom: 8,
},
buttonRow: {
flexDirection: 'row',
justifyContent: 'space-between',
marginBottom: 8,
gap: 8,
},
logHeader: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
marginBottom: 8,
},
logContainer: {
maxHeight: 200,
padding: 8,
borderRadius: 4,
},
logText: {
fontSize: 12,
marginBottom: 2,
},
deviceItem: {
padding: 12,
marginBottom: 8,
borderRadius: 8,
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
},
deviceInfo: {
flex: 1,
marginRight: 12,
},
deviceId: {
fontSize: 12,
opacity: 0.7,
},
deviceCount: {
fontSize: 14,
opacity: 0.8,
marginTop: 4,
marginBottom: 8,
fontWeight: '500',
},
serviceUuids: {
fontSize: 11,
opacity: 0.6,
marginTop: 2,
fontStyle: 'italic',
},
connectionStatus: {
fontSize: 12,
fontWeight: 'bold',
marginTop: 4,
},
connectedDevice: {
borderWidth: 1,
borderColor: '#4CAF50',
},
connectedDeviceText: {
fontWeight: 'bold',
},
errorText: {
marginTop: 8,
fontWeight: 'bold',
},
modeSwitchContainer: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
marginVertical: 12,
},
modeLabel: {
fontSize: 16,
marginHorizontal: 8,
},
modeDescription: {
fontSize: 12,
opacity: 0.7,
marginTop: 8,
},
});