forked from achamaikin/CCSModuleSW30Web
128 lines
3.0 KiB
C
128 lines
3.0 KiB
C
#ifndef __SERIAL_H
|
|
#define __SERIAL_H
|
|
|
|
#include "main.h"
|
|
#include "charger_control.h"
|
|
#include "usart.h"
|
|
#include "cp.h"
|
|
|
|
void CCS_SerialLoop(void);
|
|
void CCS_Init(void);
|
|
void CCS_SendEmergencyStop(void);
|
|
void CCS_SendStart(void);
|
|
void CCS_RxEventCallback(UART_HandleTypeDef *huart, uint16_t size);
|
|
|
|
typedef enum {
|
|
CCS_DISABLED = 0,
|
|
CCS_UNPLUGGED = 1,
|
|
CCS_AUTH_REQUIRED = 2,
|
|
CCS_CONNECTED = 3,
|
|
CCS_REPLUGGING = 4,
|
|
} CCS_ConnectorState_t;
|
|
|
|
typedef enum {
|
|
PSU_OFF = 0,
|
|
PSU_ON = 1,
|
|
PSU_PREPARE = 2,
|
|
} EnablePSU_t;
|
|
|
|
typedef struct {
|
|
uint16_t maxVoltage;
|
|
uint16_t minVoltage;
|
|
uint16_t maxCurrent;
|
|
uint16_t minCurrent;
|
|
uint32_t maxPower;
|
|
} CCS_MaxLoad_t;
|
|
|
|
/* Commands Everest -> module. */
|
|
#define CMD_E2M_PWM_DUTY 0x40
|
|
#define CMD_E2M_ENABLE_OUTPUT 0x41
|
|
#define CMD_E2M_RESET 0x42
|
|
#define CMD_E2M_ENABLE 0x43
|
|
#define CMD_E2M_REPLUG 0x44
|
|
#define CMD_E2M_SET_OUTPUT_VOLTAGE 0x45
|
|
#define CMD_E2M_ISOLATION_CONTROL 0x46
|
|
#define CMD_E2M_EV_INFO 0x47
|
|
#define CMD_E2M_EVSE_STATE 0x48
|
|
#define CMD_E2M_KEEP_ALIVE 0x49
|
|
|
|
/* Commands module -> Everest. */
|
|
#define CMD_M2E_STATE 0x50
|
|
#define CMD_M2E_RESET 0x52
|
|
#define CMD_M2E_ESTOP 0x53
|
|
#define CMD_M2E_START 0x54
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t pwm_duty_percent;
|
|
} e2m_pwm_duty_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t enable_output;
|
|
} e2m_enable_output_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t reset;
|
|
} e2m_reset_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t enable;
|
|
} e2m_enable_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t replug;
|
|
} e2m_replug_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint16_t voltage_V;
|
|
uint16_t current_0p1A;
|
|
} e2m_set_output_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t command;
|
|
} e2m_isolation_control_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint16_t valid_mask;
|
|
uint16_t soc;
|
|
uint16_t present_voltage;
|
|
uint16_t present_current;
|
|
uint16_t target_voltage;
|
|
uint16_t target_current;
|
|
uint16_t max_current;
|
|
uint16_t min_current;
|
|
uint16_t max_voltage;
|
|
uint32_t max_power;
|
|
uint32_t remaining_energy;
|
|
uint16_t battery_capacity;
|
|
uint16_t battery_full_soc;
|
|
uint16_t battery_bulk_soc;
|
|
uint32_t estimated_time_full;
|
|
uint32_t departure_time;
|
|
uint32_t estimated_time_bulk;
|
|
} CCS_EvInfo_t;
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t DutyCycle;
|
|
uint8_t OutputEnabled;
|
|
uint16_t MeasuredVoltage;
|
|
uint16_t MeasuredCurrent;
|
|
uint32_t Power;
|
|
uint32_t Energy;
|
|
uint32_t IsolationResistance;
|
|
uint8_t IsolationValid;
|
|
uint8_t CpState;
|
|
uint16_t MaxVoltage;
|
|
uint16_t MinVoltage;
|
|
uint16_t MaxCurrent;
|
|
uint16_t MinCurrent;
|
|
uint32_t MaxPower;
|
|
} CCS_State_t;
|
|
|
|
extern CCS_MaxLoad_t CCS_MaxLoad;
|
|
extern CCS_EvInfo_t CCS_EvInfo;
|
|
extern CONN_State_t CCS_EvseState;
|
|
extern uint8_t REPLUG;
|
|
|
|
#endif
|
|
|