import bluetooth, time

results = []

def bt_irq(event, data):
    if event == 5:
        addr_type, addr, adv_type, rssi, adv_data = data
        mac = ":".join(f"{b:02X}" for b in bytes(addr))
        name = ""
        i = 0
        d = bytes(adv_data)
        while i < len(d):
            l = d[i]
            if l == 0 or i+l >= len(d): break
            t = d[i+1]
            if t in (8, 9):
                try: name = d[i+2:i+l+1].decode('utf-8', errors='ignore')
                except: pass
            i += l + 1
        entry = f"{mac} {name}".strip()
        if entry not in results:
            results.append(entry)

ble = bluetooth.BLE()
ble.active(True)
ble.irq(bt_irq)
ble.gap_scan(10000, 30000, 30000)
time.sleep(11)
ble.gap_scan(None)

with open("/scan_results.txt", "w") as f:
    f.write("\n".join(results))
print("SAVED", len(results))
