from enum import Enum


class SenmlNames(Enum):
    # ========== DV ==========
    # DV:control
    DV_CONTROL = "DV:controls:actuator"
    DV_CONTROL_BRAKE = "DV:controls:brake"
    DV_CONTROL_STEERING = "DV:controls:steering"
    DV_CONTROL_THROTTLE = "DV:controls:throttle"
    # DV:cfg- TODO remove (depricated)
    DV_CFG = "DV:cfg:controller"
    DV_CFG_AS = "DV:cfg:AS"
    DV_CFG_EBS = "DV:cfg:EBS"
    DV_CFG_AMI = "DV:cfg:AMI"
    # DV:ctrl - TODO remove (depricated)
    DV_CTRL = "DV:ctrl:controller"
    DV_CTRL_BRAKE = "DV:ctrl:brake"
    DV_CTRL_STEERING = "DV:ctrl:steering"
    DV_CTRL_THROTTLE = "DV:ctrl:throttle"
    DV_CTRL_STATUS = "DV:ctrl:status"
    # DV:stat - TODO remove (depricated)
    DV_STAT = "DV:stat:controller"
    DV_STAT_LAPS = "DV:stat:laps"
    DV_STAT_CONESACT = "DV:stat:conesAct"
    DV_STAT_CONESALL = "DV:stat:conesAll"
    # DV:acc - TODO remove (depricated)
    DV_ACC = "DV:acc:controller"
    DV_ACC_X = "DV:acc:X"
    DV_ACC_Y = "DV:acc:Y"
    DV_ACC_Z = "DV:acc:Z"
    # ========== ECU ==========
    # ECU:pedal
    ECU_PEDAL = "ECU:pedal:sensor"
    ECU_PEDAL_BRAKE = "ECU:pedal:sensor:brake"
    ECU_PEDAL_BRAKE_FRONT = "ECU:pedal:sensor:brakeFront"
    ECU_PEDAL_BRAKE_BACK = "ECU:pedal:sensor:brakeBack"
    ECU_PEDAL_STEERING = "ECU:pedal:sensor:steering"
    ECU_PEDAL_THROTTLE = "ECU:pedal:sensor:throttle"
    ECU_PEDAL_THROTTLE_LEFT = "ECU:pedal:sensor:throttleLeft"
    ECU_PEDAL_THROTTLE_RIGHT = "ECU:pedal:sensor:throttleRight"
    # ECU:cockpit
    ECU_COCKPIT = "ECU:cockpit:sensor"
    ECU_COCKPIT_X = "ECU:cockpit:sensor:x"
    ECU_COCKPIT_Y = "ECU:cockpit:sensor:y"
    ECU_COCKPIT_Z = "ECU:cockpit:sensor:z"
    # ECU:HVCB:sensor
    ECU_HVCB_SENSOR = "ECU:HVCB:sensor"
    ECU_HVCB_SENSOR_LVACCU = "ECU:HVCB:sensor:LVAccu"
    ECU_HVCB_SENSOR_24V = "ECU:HVCB:sensor:24V"
    ECU_HVCB_SENSOR_12V = "ECU:HVCB:sensor:12V"
    ECU_HVCB_SENSOR_LVSHUTDOWN = "ECU:HVCB:sensor:LVShutdown"
    # ECU:HVCB:actuator
    ECU_HVCB_ACTUATOR = "ECU:HVCB:actuator"
    ECU_HVCB_ACTUATOR_BEEPER = "ECU:HVCB:actuator:beeper"
    ECU_HVCB_ACTUATOR_DISRELAY = "ECU:HVCB:actuator:disRelay"
    # ECU:accu:sensor
    ECU_ACCU_SENSOR = "ECU:accu:sensor"
    ECU_ACCU_SENSOR_CHARGE = "ECU:accu:sensor:charge"
    ECU_ACCU_SENSOR_TEMP = "ECU:accu:sensor:temp"
    ECU_ACCU_SENSOR_AIRPOS = "ECU:accu:sensor:AIRPos"
    ECU_ACCU_SENSOR_AIRNEG = "ECU:accu:sensor:AIRNeg"
    ECU_ACCU_SENSOR_PRERELAY = "ECU:accu:sensor:preRelay"
    # ECU:accu:actuator
    ECU_ACCU_ACTUATOR = "ECU:accu:actuator"
    ECU_ACCU_ACTUATOR_AIRPOS = "ECU:accu:actuator:AIRPos"
    ECU_ACCU_ACTUATOR_AIRNEG = "ECU:accu:actuator:AIRNeg"
    ECU_ACCU_ACTUATOR_PRERELAY = "ECU:accu:actuator:preRelay"
    # ECU:btn:sensor
    ECU_BTN_SENSOR = "ECU:btn:sensor"
    ECU_BTN_SENSOR_INIT = "ECU:btn:sensor:init"
    ECU_BTN_SENSOR_SIG1 = "ECU:btn:sensor:sig1"
    ECU_BTN_SENSOR_LED1 = "ECU:btn:sensor:led1"
    ECU_BTN_SENSOR_SIG2 = "ECU:btn:sensor:sig2"
    ECU_BTN_SENSOR_LED2 = "ECU:btn:sensor:led2"
    ECU_BTN_SENSOR_SIG3 = "ECU:btn:sensor:sig3"
    ECU_BTN_SENSOR_LED3 = "ECU:btn:sensor:led3"
    # ECU:assi:actuator
    ECU_ASSI_ACTUATOR = "ECU:assi:actuator"
    ECU_ASSI_ACTUATOR_R1 = "ECU:assi:actuator:r1"
    ECU_ASSI_ACTUATOR_G1 = "ECU:assi:actuator:g1"
    ECU_ASSI_ACTUATOR_B1 = "ECU:assi:actuator:b1"
    ECU_ASSI_ACTUATOR_R2 = "ECU:assi:actuator:r2"
    ECU_ASSI_ACTUATOR_G2 = "ECU:assi:actuator:g2"
    ECU_ASSI_ACTUATOR_B2 = "ECU:assi:actuator:b2"
    ECU_ASSI_ACTUATOR_R3 = "ECU:assi:actuator:r3"
    ECU_ASSI_ACTUATOR_G3 = "ECU:assi:actuator:g3"
    ECU_ASSI_ACTUATOR_B3 = "ECU:assi:actuator:b3"
    # ECU:spring:sensor
    ECU_SPRING_SENSOR = "ECU:spring:sensor"
    ECU_SPRING_SENSOR_BL = "ECU:spring:sensor:BL"
    ECU_SPRING_SENSOR_BR = "ECU:spring:sensor:BR"
    ECU_SPRING_SENSOR_FL = "ECU:spring:sensor:FL"
    ECU_SPRING_SENSOR_FR = "ECU:spring:sensor:FR"
    # ECU:DV:sensor
    ECU_DV_SENSOR = "ECU:DV:sensor"
    ECU_DV_SENSOR_MODESEL = "ECU:DV:sensor:modeSel"
    ECU_DV_SENSOR_MODEACK = "ECU:DV:sensor:modeACK"
    ECU_DV_SENSOR_RESET = "ECU:DV:sensor:reset"
    # ECU:brakeLight:actuator
    ECU_BRAKELIGHT_ACTUATOR = "ECU:brakelight:actuator"
    ECU_BRAKELIGHT_ACTUATOR_ON = "ECU:brakelight:actuator:on"
    # ECU:inverter:target
    ECU_INVERTER_TARGET = "ECU:inverter:target"
    ECU_INVERTER_TARGET_TORQUE_FL = "ECU:inverter:target:FLtorque"
    ECU_INVERTER_TARGET_LIMPOS_FL = "ECU:inverter:target:FLlimPos"
    ECU_INVERTER_TARGET_LIMNEG_FL = "ECU:inverter:target:FLlimNeg"
    ECU_INVERTER_TARGET_TORQUE_FR = "ECU:inverter:target:FRtorque"
    ECU_INVERTER_TARGET_LIMPOS_FR = "ECU:inverter:target:FRlimPos"
    ECU_INVERTER_TARGET_LIMNEG_FR = "ECU:inverter:target:FRlimNeg"
    ECU_INVERTER_TARGET_TORQUE_BL = "ECU:inverter:target:BLtorque"
    ECU_INVERTER_TARGET_LIMPOS_BL = "ECU:inverter:target:BLlimPos"
    ECU_INVERTER_TARGET_LIMNEG_BL = "ECU:inverter:target:BLlimneg"
    ECU_INVERTER_TARGET_TORQUE_BR = "ECU:inverter:target:BRtorque"
    ECU_INVERTER_TARGET_LIMPOS_BR = "ECU:inverter:target:BRlimPos"
    ECU_INVERTER_TARGET_LIMNEG_BR = "ECU:inverter:target:BRlimNeg"
    # ECU:inverter:actual
    ECU_INVERTER_ACTUAL = "ECU:inverter:actual"
    ECU_INVERTER_ACTUAL_VELOCITY = "ECU:inverter:actual:velocity"  # virtual
    ECU_INVERTER_ACTUAL_TORQUE_FL = "ECU:inverter:actual:FLtorque"
    ECU_INVERTER_ACTUAL_VELOCITY_FL = "ECU:inverter:actual:FLvelocity"
    ECU_INVERTER_ACTUAL_TORQUE_FR = "ECU:inverter:actual:FRtorque"
    ECU_INVERTER_ACTUAL_VELOCITY_FR = "ECU:inverter:actual:FRvelocity"
    ECU_INVERTER_ACTUAL_TORQUE_BL = "ECU:inverter:actual:BLtorque"
    ECU_INVERTER_ACTUAL_VELOCITY_BL = "ECU:inverter:actual:BLvelocity"
    ECU_INVERTER_ACTUAL_TORQUE_BR = "ECU:inverter:actual:BRtorque"
    ECU_INVERTER_ACTUAL_VELOCITY_BR = "ECU:inverter:actual:BRvelocity"
    # ECU:inverter:info
    ECU_INVERTER_INFO = "ECU:inverter:info"
    ECU_INVERTER_INFO_MOTORTEMP_FL = "ECU:inverter:info:FLmotorTemp"
    ECU_INVERTER_INFO_INVERTERTEMP_FL = "ECU:inverter:info:FLinverterTemp"
    ECU_INVERTER_INFO_IGBTTEMP_FL = "ECU:inverter:info:FLIGBTTemp"
    ECU_INVERTER_INFO_MOTORTEMP_FR = "ECU:inverter:info:FRmotorTemp"
    ECU_INVERTER_INFO_INVERTERTEMP_FR = "ECU:inverter:info:FRinverterTemp"
    ECU_INVERTER_INFO_IGBTTEMP_FR = "ECU:inverter:info:FRIGBTTemp"
    ECU_INVERTER_INFO_MOTORTEMP_BL = "ECU:inverter:info:BLmotorTemp"
    ECU_INVERTER_INFO_INVERTERTEMP_BL = "ECU:inverter:info:BLinverterTemp"
    ECU_INVERTER_INFO_IGBTTEMP_BL = "ECU:inverter:info:BLIGTTemp"
    ECU_INVERTER_INFO_MOTORTEMP_BR = "ECU:inverter:info:BRmotorTemp"
    ECU_INVERTER_INFO_INVERTERTEMP_BR = "ECU:inverter:info:BRinverterTemp"
    ECU_INVERTER_INFO_IGBTTEMP_BR = "ECU:inverter:info:BRIGBTTemp"
    # ECU:error:info
    ECU_ERROR_INFO = "ECU:error:info"
    ECU_ERROR_INFO_ICON = "ECU:error:info:icon"
    ECU_ERROR_INFO_MESSAGE = "ECU:error:info:message"
    # TODO resolve temporary message definitions
    ECU_TEMPORARY_INFO = "ECU:temp:info"
    ECU_TEMPORARY_INFO_AVAILABLE = "ECU:temp:info:available"
    ECU_TEMPORARY_INFO_MISSION_SEL = "ECU:temp:info:missionSel"
    ECU_TEMPORARY_INFO_MISSION_ACK = "ECU:temp:info:missionAck"
    ECU_TEMPORARY_INFO_STARTUP = "ECU:temp:info:startup"
    ECU_TEMPORARY_INFO_SHUTDOWN = "ECU:temp:info:shutdown"
    # TODO new definitions
    ECU_INVERTER_INFO_VELOCITY_FL = "ECU:inverter:info:FLspeed"
    ECU_INVERTER_INFO_VELOCITY_FR = "ECU:inverter:info:FRspeed"
    ECU_INVERTER_INFO_VELOCITY_RL = "ECU:inverter:info:RLSpeed"
    ECU_INVERTER_INFO_VELOCITY_RR = "ECU:inverter:info:RRspeed"
    ECU_ACCU_SENSOR_ACCUPOWER = "ECU:accu:sensor:accuPower"
    ECU_ACCU_SENSOR_AVERAGEPOWER = "ECU:accu:sensor:averagePower"
    ECU_ACCU_SENSOR_VOLATGE = "ECU:accu:sensor:voltage"
    ECU_ACCU_SENSOR_CURRENT = "ECU:accu:sensor:current"
