import mmap
import struct

try:
    mm = mmap.mmap(-1, 48, 'AutoPOE2_VisualTool_v1')
    data = mm.read(48)
    magic, seqlock, zoom_cap, current_zoom, flags, status, camera_addr, fog_addr, pid, last_error = struct.unpack('<IIffIIQQII', data)
    print(f'magic: 0x{magic:08X}')
    print(f'seqlock: {seqlock}')
    print(f'zoom_cap: {zoom_cap:.1f}x')
    print(f'current_zoom: {current_zoom:.1f}x')
    print(f'flags: 0x{flags:08X}')
    print(f'status: 0x{status:08X} (Attached={bool(status & 1)}, CamOk={bool(status & 2)}, FogOk={bool(status & 4)}, Running={bool(status & 8)})')
    print(f'camera_addr: 0x{camera_addr:016X}')
    print(f'fog_addr: 0x{fog_addr:016X}')
    print(f'pid: {pid}')
    print(f'last_error: {last_error}')
except Exception as e:
    print('Error:', e)
