Files
CCSModuleSW30Web/Core/Inc/serial.h

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