from eive_tmtc.gomspace.gomspace_common import TableEntry


class PduConfigTable:
    out_en_0 = TableEntry(bytes([0x00, 0x48]), TableEntry.uint8_size)
    out_en_1 = TableEntry(bytes([0x00, 0x49]), TableEntry.uint8_size)
    out_en_2 = TableEntry(bytes([0x00, 0x4A]), TableEntry.uint8_size)
    out_en_3 = TableEntry(bytes([0x00, 0x4B]), TableEntry.uint8_size)
    out_en_4 = TableEntry(bytes([0x00, 0x4C]), TableEntry.uint8_size)
    out_en_5 = TableEntry(bytes([0x00, 0x4D]), TableEntry.uint8_size)
    out_en_6 = TableEntry(bytes([0x00, 0x4E]), TableEntry.uint8_size)
    out_en_7 = TableEntry(bytes([0x00, 0x4F]), TableEntry.uint8_size)
    out_en_8 = TableEntry(bytes([0x00, 0x50]), TableEntry.uint8_size)

    # When channel consumes more than cur_lu_lim, channel is turned off immediately
    cur_lu_lim_0 = TableEntry(bytearray([0x00, 0xB8]), TableEntry.uint16_size)
    INIT_OUT_SAFE_CH_0 = TableEntry(bytes([0x00, 0x80]), TableEntry.uint8_size)
    INIT_OUT_SAFE_CH_1 = TableEntry(bytes([0x00, 0x80 + 1]), TableEntry.uint8_size)
    INIT_OUT_SAFE_CH_2 = TableEntry(bytes([0x00, 0x80 + 2]), TableEntry.uint8_size)
    INIT_OUT_SAFE_CH_3 = TableEntry(bytes([0x00, 0x80 + 3]), TableEntry.uint8_size)
    INIT_OUT_SAFE_CH_4 = TableEntry(bytes([0x00, 0x80 + 4]), TableEntry.uint8_size)
    INIT_OUT_SAFE_CH_5 = TableEntry(bytes([0x00, 0x80 + 5]), TableEntry.uint8_size)
    INIT_OUT_SAFE_CH_6 = TableEntry(bytes([0x00, 0x80 + 6]), TableEntry.uint8_size)
    INIT_OUT_SAFE_CH_7 = TableEntry(bytes([0x00, 0x80 + 7]), TableEntry.uint8_size)
    INIT_OUT_SAFE_CH_8 = TableEntry(bytes([0x00, 0x80 + 8]), TableEntry.uint8_size)


OUT_ENABLE_LIST = [
    PduConfigTable.out_en_0,
    PduConfigTable.out_en_1,
    PduConfigTable.out_en_2,
    PduConfigTable.out_en_3,
    PduConfigTable.out_en_4,
    PduConfigTable.out_en_5,
    PduConfigTable.out_en_6,
    PduConfigTable.out_en_7,
    PduConfigTable.out_en_8,
]


class PduHkTable:
    temperature = TableEntry(bytearray([0x00, 0x28]), TableEntry.uint16_size)
    # Ground WDT value (remaining seconds until reboot)
    wdt_gnd_left = TableEntry(bytearray([0x00, 0x80]), TableEntry.uint32_size)