#ifndef DRIVERS_AHW_DRIVERS_THRUSTER_SENSOR_EXO_TRAIL_INC_EXO_TRAIL_H_
#define DRIVERS_AHW_DRIVERS_THRUSTER_SENSOR_EXO_TRAIL_INC_EXO_TRAIL_H_


#include "exo_common.h"

typedef enum
{
    EXOTRAIL_THRUSTER_STANDBY_MODE = 1,
    EXOTRAIL_THRUSTER_THERMAL_CONDITIONING_MODE,
    EXOTRAIL_THRUSTER_FIRING_MODE,
    EXOTRAIL_THRUSTER_COOLING_MODE,
    EXOTRAIL_THRUSTER_COMMISIONING_MODE,
}exo_trail_thr_set_mode;

#define THRUSTER_MODE_REG                   0x1
#define THRUSTER_MODE_FIRING_REG            0x2
#define THRUSTER_RAD_LOW_TEMP               0x3
#define THRUSTER_ONBRD_TEMP                 0x4
#define THRUSTER_RAD_HIGH_TEMP              0x5
#define THRUSTER_REMNG_PROPLNT_LVL          0x6
#define THRUSTER_PWR_VOLTAGE_REG            0x7
#define THRUSTER_PWR_CURRENT_REG            0x8
#define THRUSTER_MIN_TNK_PRS                0x9
#define THRUSTER_MAX_TNK_PRS                0x10
#define THRUSTER_ACT_STS                    0x11

/*!
 * @brief This API function is used to write thruster data and len
 */
typedef uint8_t (*thruster_write_fptr_t)(uint8_t* data, uint16_t data_len);

/*!
 * @brief This API function is used to read thruster data and len
 */
typedef uint8_t (*thruster_read_fptr_t)(uint8_t* data, uint16_t data_len);

/*!
 * @brief This API function is used to set operation mode
 */
uint8_t thruster_simu_set_operating_mode(uint8_t thruster_id, uint8_t set_mde);

/*!
 * @brief This API function is used to get operation mode
 */
uint8_t thruster_simu_get_operating_mode(uint8_t thruster_id, uint8_t* get_mde);

/*!
 * @brief This API function is used to set firing duration
 */
uint8_t thruster_simu_set_firing_duration(uint8_t thruster_id, uint32_t thr_st_firng_dur);

/*!
 * @brief This API function is used to get firing duration
 */
uint8_t thruster_simu_get_firing_duration(uint8_t thruster_id, uint32_t* thr_gt_firng_dur);

/*!
 * @brief This API function is used to get onboard temperaure
 */
uint8_t thruster_simu_get_onbrd_temperature(uint8_t thruster_id,float* get_onbrd_temp);

/*!
 * @brief This API function is used to set radiator low temp threshold 
 */
uint8_t thruster_simu_set_radiator_low_temp_threshold(uint8_t thruster_id,float thr_st_rad_lw_temp);

/*!
 * @brief This API function is used to set radiator high temp threshold 
 */
uint8_t thruster_simu_set_radiator_high_temp_threshold(uint8_t thruster_id,float thr_st_rad_hg_temp);

/*!
 * @brief This API function is used to get radiator low temp threshold 
 */
uint8_t thruster_simu_get_radiator_low_temp_threshold(uint8_t thruster_id,float* thr_gt_rad_lw_temp);

/*!
 * @brief This API function is used to get radiator high temp threshold 
 */
uint8_t thruster_simu_get_radiator_high_temp_threshold(uint8_t thruster_id,float* thr_gt_rad_hg_temp);

/*!
 * @brief This API function is used to get remaining propellent level 
 */
uint8_t thruster_simu_get_remaining_propellant_level(uint8_t thruster_id,float* get_rmg_prplnt_lvl);

/*!
 * @brief This API function is used to get input power voltage consmp 
 */
uint8_t thruster_simu_get_input_power_voltage_consmp(uint8_t thruster_id,float* get_voltage);

/*!
 * @brief This API function is used to get input power current consmp 
 */
uint8_t thruster_simu_get_input_power_current_consmp(uint8_t thruster_id,float* get_current);

/*!
 * @brief This API function is used to set min tank pressure limit 
 */
uint8_t thruster_simu_set_min_tank_pressure_limit(uint8_t thruster_id,float set_min_tnk_prs);

/*!
 * @brief This API function is used to set max tank pressure limit 
 */
uint8_t thruster_simu_set_max_tank_pressure_limit(uint8_t thruster_id,float set_max_tnk_prs);

/*!
 * @brief This API function is used to get min tank pressure limit 
 */
uint8_t thruster_simu_get_min_tank_pressure_limit(uint8_t thruster_id,float* get_min_tnk_prs);

/*!
 * @brief This API function is used to get max tank pressure limit 
 */
uint8_t thruster_simu_get_max_tank_pressure_limit(uint8_t thruster_id,float* get_max_tnk_prs);

#endif /* DRIVERS_AHW_DRIVERS_THRUSTER_SENSOR_EXO_TRAIL_INC_EXO_TRAIL_H_ */
