//############################################################################################################################################################################################################# #ifndef _INC_IDIBUS_IMPL_H_ #define _INC_IDIBUS_IMPL_H_ //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #ifdef __cplusplus extern "C" { #endif #ifndef F_CPU #define F_CPU 16000000UL #endif #include #include #include #include #include "../Required/USART_COM.h" #include "../Required/SYSTEM.h" #include "IDIBUS_DEFS.h" #include "MODBUS_CRC.h" //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #define IDIBUS_LONGOP_VARSN_IP_WRITE_DURATION_MS 200 #define IDIBUS_LONGOP_VARSN_VERF_EXP_WRITE_DURATION_MS 200 #define IDIBUS_LONGOP_VARSN_AES_WRITE_DURATION_MS 200 // EEPROM_FAST BLOCK //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #define EEPROM_BUF_SIZE 32 extern uint16_t EEPROM_ADDR; extern uint8_t EEPROM_BUF[EEPROM_BUF_SIZE]; extern uint8_t EEPROM_BUF_COUNT; //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void EEPROM_WriteEepBuf(uint8_t count, uint16_t addr); //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #define IDIBUS_SYSTEM_SW_VERSION 0x3133U //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #ifdef _LONG_ADDR_SPACE_ void IdiBus_ModuleInit(USART_INTERFACE_TYPE *USART_INTERFACE, uint_farptr_t PROGMEM_SN); #else void IdiBus_ModuleInit(USART_INTERFACE_TYPE *USART_INTERFACE, const volatile uint8_t *PROGMEM_SN); #endif void IDIBUS_ModuleCommandHandler(idibus_farg_t *farg); uint8_t IDIBUS_CnannelStaticFunc(struct IDIBUS_CHANNEL_STR* CH, idibus_farg_t *farg); //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void IDIBUS_ResponseProtectedWrite(idibus_farg_t *farg, uint8_t *Data, uint16_t DataLength, uint8_t ErrorCode); void IDIBUS_ModuleBackgroundHandler(void); void IDIBUS_ChannelBackgroundHandler(void); //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void IDIBUS_ServiceFunc(uint8_t *InpData, uint16_t InpDataLength, uint8_t *OutData, uint16_t *OutDataLength); //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void IdiBus_pass_module(idibus_slave_module_t* MODULE); // Typedef for callback function typedef void (*idibus_func_t)(void); // Callback registration void IdiBus_register_init(idibus_func_t callback); void IdiBus_register_shutdown(idibus_func_t callback); void IdiBus_register_freeze(idibus_func_t callback); void IdiBus_register_resume(idibus_func_t callback); #ifdef __cplusplus } #endif //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #endif // #ifndef _INC_IDIBUS_IMPL_H_ //#############################################################################################################################################################################################################