#pragma once #include typedef enum{ RELAY_AUX0 = 0, RELAY_AUX1, RELAY3, RELAY_DC, RELAY_AC, RELAY_CP, RELAY_CC, RELAY_DC1, // RELAY_COUNT } relay_t; void RELAY_Write(relay_t num, uint8_t state); uint8_t RELAY_Read(relay_t num); void Init_Peripheral(); uint8_t GBT_LockGetState(); void GBT_Lock(uint8_t state); uint8_t SW_GetAddr(); void ADC_Select_Channel(uint32_t ch); uint8_t ADC_TryLock(void); void ADC_LockBlocking(void); void ADC_Unlock(void); int16_t GBT_ReadTemp(uint8_t ch); int16_t CONN_ReadTemp(uint8_t ch); typedef enum{ IN_SW0 = 0, IN_SW1, IN0, IN_ESTOP, IN_FB1, IN_CONT_FB_DC, ISO_IN, } inputNum_t; uint8_t IN_ReadInput(inputNum_t input_n); // Версия устройства #define VERSION_OFFSET (0x1E4) typedef struct __attribute__((packed)) { uint32_t serialNumber; // Байты 0-3 uint8_t stationType; // Байт 4 uint8_t boardVersion; // Байт 5 uint8_t addrEdcan; // Байт 6 uint8_t maxPower; // Байт 7 uint8_t pad[7]; // bytes 8-14, see edcan.h uint16_t connector1CurrentLimitA; // Байты 15-16, A; 0 = legacy PSU_MAX_CURRENT uint8_t reserved[45]; // Байты 17-63 } InfoBlock_t; extern InfoBlock_t *InfoBlock; void Board_LoadInfoBlockLimits(void); uint16_t Board_GetConnectorCurrentLimit_0p1A(void); uint16_t Board_ClampCurrent_0p1A(uint16_t current_0p1A);