#ifndef EZUSB_IIDX_SECPLUG_CMD_H
#define EZUSB_IIDX_SECPLUG_CMD_H

enum ezusb_iidx_secplug_dongle_slot {
    EZUSB_IIDX_SECPLUG_DONGLE_SLOT_BLACK = 0x00,
    EZUSB_IIDX_SECPLUG_DONGLE_SLOT_WHITE = 0x01,
};

enum ezusb_iidx_secplug_dongle_memory {
    EZUSB_IIDX_SECPLUG_DONGLE_MEM_ROM = 0x00,
    EZUSB_IIDX_SECPLUG_DONGLE_MEM_DATA = 0x01
};

enum ezusb_iidx_secplug_command_v1 {
    EZUSB_IIDX_SECPLUG_CMD_V1_READ_ROM = 0x01,
    EZUSB_IIDX_SECPLUG_CMD_V1_READ_DATA = 0x02,
    EZUSB_IIDX_SECPLUG_CMD_V1_WRITE_DATA = 0x03,
    // Black dongle
    EZUSB_IIDX_SECPLUG_CMD_V1_SELECT_DONGLE_1 = 0x04,
    // Used by D01 to also address black dongle?
    EZUSB_IIDX_SECPLUG_CMD_V1_SELECT_DONGLE_2 = 0x05,
};

enum ezusb_iidx_secplug_command_status_v1 {
    EZUSB_IIDX_SECPLUG_CMD_STATUS_V1_OK = 0x00,
    EZUSB_IIDX_SECPLUG_CMD_STATUS_V1_FAULT = 0xFE
};

enum ezusb_iidx_secplug_command_v2 {
    EZUSB_IIDX_SECPLUG_CMD_V2_SEARCH = 0x01,
    EZUSB_IIDX_SECPLUG_CMD_V2_READ_DATA = 0x02,
    EZUSB_IIDX_SECPLUG_CMD_V2_WRITE_DATA = 0x03,
    EZUSB_IIDX_SECPLUG_CMD_V2_READ_ROM = 0x06,
    EZUSB_IIDX_SECPLUG_CMD_V2_SELECT_DONGLE_1 = 0x07,
    EZUSB_IIDX_SECPLUG_CMD_V2_SELECT_DONGLE_2 = 0x08,
    EZUSB_IIDX_SECPLUG_CMD_V2_SELECT_DONGLE_3 = 0x09,
    EZUSB_IIDX_SECPLUG_CMD_V2_SELECT_DONGLE_4 = 0x0a,
    EZUSB_IIDX_SECPLUG_CMD_V2_SELECT_DONGLE_5 = 0x0b,
};

enum ezusb_iidx_secplug_command_status_v2 {
    EZUSB_IIDX_SECPLUG_CMD_STATUS_V2_SEARCH_OK = 0x12,
    EZUSB_IIDX_SECPLUG_CMD_STATUS_V2_READ_DATA_OK = 0x13,
    EZUSB_IIDX_SECPLUG_CMD_STATUS_V2_WRITE_DATA_OK = 0x14,
    EZUSB_IIDX_SECPLUG_CMD_STATUS_V2_READ_ROM_OK = 0x15,
    EZUSB_IIDX_SECPLUG_CMD_STATUS_V2_SECURITY_SEL_OK = 0x16,
    EZUSB_IIDX_SECPLUG_CMD_STATUS_V2_FAIL = 0xFE
};

#endif