import zmq
import msgpack
import time

ctx = zmq.Context()
pupil_remote = zmq.Socket(ctx, zmq.REQ)
pupil_remote.connect('tcp://127.0.0.1:50020')

# start recording
pupil_remote.send_string('R')
print(pupil_remote.recv_string())

sleep(5)
pupil_remote.send_string('r')
print(pupil_remote.recv_string())

def send_command(command):
    try:
        packed_cmd = msgpack.packb(command)
        socket.send(packed_cmd)
        response = socket.recv()  # ✅ Always use recv() for binary
        unpacked = msgpack.unpackb(response, raw=False)
        print("✅ Response from Pupil:", unpacked)
        return unpacked
    except Exception as e:
        print("❌ Error sending command:", e)
        return None

def main():
    print("🔌 Connecting to Pupil Capture at", PUPIL_REMOTE_ADDR)

    # Start recording
    print("🎬 Starting recording...")
    send_command({"subject": "start_recording"})

    record_duration = 10  # seconds
    print(f"⏳ Recording for {record_duration} seconds...")
    time.sleep(record_duration)

    # Stop recording
    print("🛑 Stopping recording...")
    send_command({"subject": "stop_recording"})

    print("✅ Recording complete! Check your pupil_recordings folder.")

if __name__ == "__main__":
    main()
