import obd

def detect_obd_adapter():
    print("Scanning available OBD ports...")
    ports = obd.scan_serial()  # returns list of available COM ports

    if not ports:
        print("❌ No OBD-II adapters found. Please check connection.")
        return None

    print(f"✅ Found OBD-II adapter on port: {ports[0]}")
    return ports[0]

def initialize_obd_connection(port):
    print(f"Initializing OBD connection on {port}...")
    connection = obd.OBD(port, fast=False)  # fast=False for compatibility

    if connection.is_connected():
        print("✅ OBD-II connection established successfully.")
    else:
        print("❌ Failed to connect to OBD-II adapter.")
    
    return connection

def main():
    port = detect_obd_adapter()
    if port:
        connection = initialize_obd_connection(port)

        if connection.is_connected():
            print("Ready to send OBD-II commands, sir.")
            # Example: Check engine RPM
            rpm_response = connection.query(obd.commands.RPM)
            if not rpm_response.is_null():
                print(f"Engine RPM: {rpm_response.value}")
            else:
                print("⚠️ No RPM data received.")
        else:
            print("Please troubleshoot the adapter or vehicle connection.")

if __name__ == "__main__":
    main()
