#ifndef PRIMARYCOMM_H_ #define PRIMARYCOMM_H_ //------------------------------------------------------------------------------ #include //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ // primary operative address //------------------------------------------------------------------------------ #define OP_ADDR_AUX (0x01) #define OP_ADDR_FAN (0x02) #define OP_ADDR_RELAY (0x03) #define OP_ADDR_IO_EXTEND (0x04) #define OP_ADDR_BROADCAST (0xFF) //------------------------------------------------------------------------------ // primary send packet command //------------------------------------------------------------------------------ #define CMD_QUERY_FW_VER (0x01) #define CMD_QUERY_HW_VER (0x02) #define CMD_QUERY_GPIO_IN (0x0a) #define CMD_CONFIG_GPIO_OUTPUT (0x86) #define CMD_CONFIG_RTC (0x87) #define CMD_CONFIG_MODEL_NAME (0x83) #define CMD_UPDATE_START (0xe0) #define CMD_UPDATE_ABORT (0xe1) #define CMD_UPDATE_TRANSFER (0xe2) #define CMD_UPDATE_FINISH (0xe3) //------------------------------------------------------------------------------ typedef struct Verion { char Version_FW[16]; char Version_HW[16]; } Ver; typedef struct GPIO_IN { uint8_t AC_Connector; uint8_t AC_MainBreaker; uint8_t SPD; uint8_t Door_Open; uint8_t GFD[2]; uint8_t AC_Drop; uint8_t Emergency_IO; uint8_t Emergency_Btn; uint8_t Button[2]; uint8_t Key[4]; } Gpio_in; typedef struct GPIO_OUT { uint8_t Button_LED[2]; uint8_t System_LED[4]; uint8_t AC_Connector; uint8_t AC_Breaker; } Gpio_out; typedef struct RTC { uint8_t RtcData[14]; } Rtc; int Query_FW_Ver(uint8_t fd, uint8_t targetAddr, Ver *Ret_Buf); int Query_HW_Ver(uint8_t fd, uint8_t targetAddr, Ver *Ret_Buf); int Query_Gpio_Input(uint8_t fd, uint8_t targetAddr, Gpio_in *Ret_Buf); int Config_Gpio_Output(uint8_t fd, uint8_t targetAddr, Gpio_out *Set_Buf); int Config_Rtc_Data(uint8_t fd, uint8_t targetAddr, Rtc *Set_Buf); int Config_Model_Name(uint8_t fd, uint8_t targetAddr, uint8_t *modelname); // 13 bytes // year : 4, month : 2, day : 2, hour : 2, min : 2, sec : 2 //int Config_RTC(); int Update_Start(uint8_t fd, uint8_t targetAddr, uint32_t crc32); int Update_Abord(uint8_t fd, uint8_t targetAddr); int Update_Transfer(uint8_t fd, uint8_t targetAddr, uint32_t startAddr, uint8_t *data, uint16_t length); int Update_Finish(uint8_t fd, uint8_t targetAddr); #endif /* PRIMARYCOMM_H_ */