30 #ifndef SYSTEM_PORTABLE_INC_OC_MACHINE_H_ 31 #define SYSTEM_PORTABLE_INC_OC_MACHINE_H_ 42 #include <oc_machine_defs.h> 49 #define _________________________________________MACROS_SECTION_____________________________________________________________________________ 59 #define oC_Machine_DmaSignalType_(NAME) oC_1WORD_FROM_2(oC_Machine_DmaSignalType_ , NAME) 67 #define oC_Machine_DmaChannelAssignment_( DMA_CHANNEL_NAME , CHANNEL_NAME , SIGNAL_TYPE , TYPE , ENC , ...) oC_1WORD_FROM_6(oC_Machine_DmaChannelAssignment_ , DMA_CHANNEL_NAME , CHANNEL_NAME , SIGNAL_TYPE , TYPE , ENC) 75 #define oC_Machine_DmaChannelAssignmentIndex_( DMA_CHANNEL_NAME , CHANNEL_NAME , SIGNAL_TYPE , TYPE , ENC , ...) oC_1WORD_FROM_6(oC_Machine_DmaChannelAssignmentIndex_ , DMA_CHANNEL_NAME , CHANNEL_NAME , SIGNAL_TYPE , TYPE , ENC) 91 #define oC_Machine_RegisterIndirectDynamic(BaseAddress , RegisterOffset) (*((oC_Register_t*)(((void*)BaseAddress)+((oC_UInt_t)RegisterOffset)))) 106 #define oC_Machine_RegisterIndirectStaticOffset(BaseAddress , REGISTER_NAME) oC_RegisterByBaseAddress(BaseAddress,REGISTER_NAME) 118 #define oC_Machine_RegisterIndirectStatic(BASE_NAME,REGISTER_NAME) oC_Register(BASE_NAME,REGISTER_NAME) 132 #define oC_Machine_Register(Channel,REGISTER_NAME) oC_Machine_RegisterIndirectStaticOffset(oC_Channel_GetBaseAddress(Channel),REGISTER_NAME) 146 #define oC_Machine_GetRegisterAddress(Channel,REGISTER_NAME) ((void*)(oC_Channel_GetBaseAddress(Channel) + oC_RegisterOffset_(REGISTER_NAME))) 162 #define oC_Machine_IsRegisterWritable(REGISTER_NAME) (oC_RegisterAccess_(REGISTER_NAME) & oC_Access_(W)) 177 #define oC_Machine_IsRegisterReadable(REGISTER_NAME) (oC_RegisterAccess_(REGISTER_NAME) & oC_Access_(R)) 193 #define oC_Machine_WriteRegisterDirectStaticOffset(Channel,REGISTER_NAME,Value) oC_Machine_WriteRegisterDirectDynamic(Channel,oC_RegisterOffset_(REGISTER_NAME),Value) 200 #define oC_Machine_WriteRegister(Channel,REGISTER_NAME,Value) oC_Machine_WriteRegisterDirectStaticOffset(Channel,REGISTER_NAME,Value) 214 #define oC_Machine_ReadRegisterDirectStaticOffset(Channel,REGISTER_NAME) oC_Machine_ReadRegisterDirectDynamic(Channel,oC_RegisterOffset_(REGISTER_NAME)) 221 #define oC_Machine_ReadRegister(Channel,REGISTER_NAME) oC_Machine_ReadRegisterDirectStaticOffset(Channel,REGISTER_NAME) 228 #define oC_Machine_DmaSignalTypeMask ((1<<(oC_MACHINE_DMA_SIGNAL_TYPE_WIDTH))-1) 236 #define oC_Machine_DmaEncodingValueMask ((1<<oC_MACHINE_DMA_ENCODING_VALUE_WIDTH)-1) 244 #define oC_Machine_DmaChannelAssignment_DmaChannelMaskWidth (oC_CHANNEL_MASK_WIDTH) 251 #define oC_Machine_DmaChannelAssignment_ChannelMaskWidth (oC_CHANNEL_MASK_WIDTH) 258 #define oC_Machine_DmaChannelAssignment_DmaSignalTypeMaskWidth (oC_MACHINE_DMA_SIGNAL_TYPE_WIDTH) 265 #define oC_Machine_DmaChannelAssignment_DmaEncodingValueMaskWidth (oC_MACHINE_DMA_ENCODING_VALUE_WIDTH) 273 #define oC_Machine_DmaChannelAssignment_MaskWidth (\ 274 oC_Machine_DmaChannelAssignment_DmaChannelMaskWidth + \ 275 oC_Machine_DmaChannelAssignment_ChannelMaskWidth + \ 276 oC_Machine_DmaChannelAssignment_DmaSignalTypeMaskWidth + \ 277 oC_Machine_DmaChannelAssignment_DmaEncodingValueMaskWidth) 285 #define oC_Machine_DmaChannelAssignment_DmaChannelMaskStartBit (0) 292 #define oC_Machine_DmaChannelAssignment_ChannelMaskStartBit (oC_Machine_DmaChannelAssignment_DmaChannelMaskStartBit + oC_Machine_DmaChannelAssignment_DmaChannelMaskWidth) 299 #define oC_Machine_DmaChannelAssignment_DmaSignalTypeMaskStartBit (oC_Machine_DmaChannelAssignment_ChannelMaskStartBit + oC_Machine_DmaChannelAssignment_ChannelMaskWidth) 306 #define oC_Machine_DmaChannelAssignment_DmaEncodingValueMaskStartBit (oC_Machine_DmaChannelAssignment_DmaSignalTypeMaskStartBit + oC_Machine_DmaChannelAssignment_DmaSignalTypeMaskWidth) 314 #define oC_Machine_DmaChannelAssignment_DmaChannelMask ((oC_ChannelMask) << oC_Machine_DmaChannelAssignment_DmaChannelMaskStartBit) 321 #define oC_Machine_DmaChannelAssignment_ChannelMask ((oC_ChannelMask) << oC_Machine_DmaChannelAssignment_ChannelMaskStartBit) 328 #define oC_Machine_DmaChannelAssignment_DmaSignalTypeMask ((oC_Machine_DmaSignalTypeMask) << oC_Machine_DmaChannelAssignment_DmaSignalTypeMaskStartBit) 335 #define oC_Machine_DmaChannelAssignment_DmaEncodingValueMask ((oC_Machine_DmaEncodingValueMask) << oC_Machine_DmaChannelAssignment_DmaEncodingValueMaskStartBit) 343 #define oC_Machine_DmaChannelAssignmentMask ((1<<(oC_Machine_DmaChannelAssignment_MaskWidth))-1) 351 #define oC_Machine_DmaChannelAssignment_GetDmaChannel(Assignment) (((Assignment) & oC_Machine_DmaChannelAssignment_DmaChannelMask) >> (oC_Machine_DmaChannelAssignment_DmaChannelMaskStartBit)) 358 #define oC_Machine_DmaChannelAssignment_GetChannel(Assignment) (((Assignment) & oC_Machine_DmaChannelAssignment_ChannelMask) >> (oC_Machine_DmaChannelAssignment_ChannelMaskStartBit)) 365 #define oC_Machine_DmaChannelAssignment_GetDmaSignalType(Assignment) (((Assignment) & oC_Machine_DmaChannelAssignment_DmaSignalTypeMask) >> (oC_Machine_DmaChannelAssignment_DmaSignalTypeMaskStartBit)) 372 #define oC_Machine_DmaChannelAssignment_GetDmaEncodingValue(Assignment) (((Assignment) & oC_Machine_DmaChannelAssignment_DmaEncodingValueMask) >> (oC_Machine_DmaChannelAssignment_DmaEncodingValueMaskStartBit)) 374 #undef _________________________________________MACROS_SECTION_____________________________________________________________________________ 382 #define _________________________________________TYPES_SECTION______________________________________________________________________________ 386 #if oC_MACHINE_DMA_ENCODING_VALUE_WIDTH < 8 394 #elif oC_MACHINE_DMA_ENCODING_VALUE_WIDTH < 16 402 #elif oC_MACHINE_DMA_ENCODING_VALUE_WIDTH < 32 410 #elif oC_MACHINE_DMA_ENCODING_VALUE_WIDTH < 64 419 # error oC_MACHINE_DMA_ENCODING_VALUE_WIDTH is too big! 431 #define DEFINE_DMA_SIGNAL_TYPE(NAME) oC_Machine_DmaSignalType_(NAME) , 433 #undef DEFINE_DMA_SIGNAL_TYPE 434 oC_Machine_DmaSignalType_NumberOfElements
437 #if oC_Machine_DmaSignalType_NumberOfElements > oC_Machine_DmaSignalTypeMask 438 # error oC_MACHINE_DMA_SIGNAL_TYPE_WIDTH is too small! 450 #define DEFINE_DMA_CHANNEL_ASSIGNMENT( DMA_CHANNEL_NAME , CHANNEL_NAME , SIGNAL_TYPE , TYPE , ENC ) \ 451 oC_Machine_DmaChannelAssignment_( DMA_CHANNEL_NAME , CHANNEL_NAME , SIGNAL_TYPE , TYPE , ENC ) = \ 452 ( (oC_Channel_(DMA_CHANNEL_NAME) << oC_Machine_DmaChannelAssignment_DmaChannelMaskStartBit ) & oC_Machine_DmaChannelAssignment_DmaChannelMask ) | \ 453 ( (oC_Channel_(CHANNEL_NAME) << oC_Machine_DmaChannelAssignment_ChannelMaskStartBit ) & oC_Machine_DmaChannelAssignment_ChannelMask ) | \ 454 ( (oC_Machine_DmaSignalType_(SIGNAL_TYPE) << oC_Machine_DmaChannelAssignment_DmaSignalTypeMaskStartBit ) & oC_Machine_DmaChannelAssignment_DmaSignalTypeMask ) | \ 455 ( (ENC << oC_Machine_DmaChannelAssignment_DmaEncodingValueMaskStartBit ) & oC_Machine_DmaChannelAssignment_DmaEncodingValueMask ), 458 #undef DEFINE_DMA_CHANNEL_ASSIGNMENT 461 #if oC_Machine_DmaChannelAssignment_MaskWidth > 64 462 #error oC_Machine_DmaChannelAssignment_t type is too big! (it needs more than 64 bits!) 472 #define DEFINE_DMA_CHANNEL_ASSIGNMENT( DMA_CHANNEL_NAME , CHANNEL_NAME , SIGNAL_TYPE , TYPE , ENC ) \ 473 oC_Machine_DmaChannelAssignmentIndex_( DMA_CHANNEL_NAME , CHANNEL_NAME , SIGNAL_TYPE , TYPE , ENC ) , 475 oC_Machine_DmaChannelAssignmentIndex_NumberOfElements
476 #undef DEFINE_DMA_CHANNEL_ASSIGNMENT 479 #undef _________________________________________TYPES_SECTION______________________________________________________________________________ 487 #define _________________________________________VARIABLES_SECTION__________________________________________________________________________ 498 #undef _________________________________________VARIABLES_SECTION__________________________________________________________________________ 506 #define _________________________________________INTERFACE_FUNCTIONS_SECTION________________________________________________________________ 509 #undef _________________________________________INTERFACE_FUNCTIONS_SECTION________________________________________________________________ 516 #define _________________________________________STATIC_INLINE_SECTION______________________________________________________________________ 534 return oC_Channel_PowerBaseAddressExist(Channel) &&
535 oC_Channel_PowerBitIndexExist(Channel) &&
536 oC_Channel_PowerOffsetExist(Channel);
554 if(Channel < oC_Channel_MaximumChannelNumber)
595 bool success =
false;
597 if(Channel < oC_Channel_MaximumChannelNumber)
677 bool success =
false;
679 if(Channel < oC_Channel_MaximumChannelNumber)
689 oC_IMPLEMENT_FAILURE();
695 oC_IMPLEMENT_FAILURE();
717 if(Channel < oC_Channel_MaximumChannelNumber)
726 oC_IMPLEMENT_FAILURE();
732 oC_IMPLEMENT_FAILURE();
740 #undef _________________________________________STATIC_INLINE_SECTION______________________________________________________________________ The file with interface for registers module.
oC_Machine_DmaSignalType_t
type with DMA signal types
Something index is not correct.
Something power is not handled.
uint8_t oC_Machine_DmaEncodingValue_t
type for storing DMA encoding value
volatile oC_UInt_t oC_Register_t
type for storing registers
oC_RegisterOffset_t
Type for storing offset of registers.
oC_PowerBit_t
stores number of bit in the Power Register
#define oC_Channel_GetName(Channel)
returns name of channel
static bool oC_Machine_IsPowerRegisterSet(oC_Channel_t Channel)
checks if power for channel is turn on
oC_Machine_DmaChannelAssignment_t
type for storing assignment of DMA channels
#define oC_Machine_RegisterIndirectDynamic(BaseAddress, RegisterOffset)
allows for accessing registers in dynamic mode
Something is powered off.
oC_PowerOffset_t
stores offset of the Power Register
#define oC_Channel_GetBaseAddress(Channel)
returns base address assigned to the channel
#define oC_Channel_GetPowerOffset(Channel)
returns offset of power register
oC_Channel_t
stores machine channel
#define oC_MACHINE_DMA_SIGNAL_TYPE_LIST(ADD_SIGNAL)
oC_Machine_DmaChannelAssignmentIndex_t
stores index in oC_DmaChannelAssignments array
The file with interface for register maps module.
Contains machine core specific functions.
#define oC_Channel_GetPowerBitIndex(Channel)
returns index of bit for power register
static oC_Register_t oC_Machine_ReadRegisterDirectDynamic(oC_Channel_t Channel, oC_RegisterOffset_t RegisterOffset)
reads machine register
Contains interface of the pins module.
#define oC_Channel_GetPowerBaseAddress(Channel)
returns base address of power register
#define oC_MACHINE_DMA_CHANNELS_ASSIGNMENTS_LIST(ADD_CHANNEL_ASSIGNMENT)
static bool oC_Machine_IsChannelPoweredOn(oC_Channel_t Channel)
checks if channel is powered on
static oC_Power_t oC_Machine_GetPowerStateForChannel(oC_Channel_t Channel)
returns power state for channel
static const char * oC_Machine_GetChannelName(oC_Channel_t Channel)
returns printable name of channel
oC_PowerBaseAddress_t
stores base address of the Power Register
static bool oC_Machine_WriteRegisterDirectDynamic(oC_Channel_t Channel, oC_RegisterOffset_t RegisterOffset, oC_Register_t Value)
writes machine register
static bool oC_Machine_SetPowerStateForChannel(oC_Channel_t Channel, oC_Power_t Power)
configures power state for machine channel
The file with interface for Channel module.
oC_Power_t
stores registers power state
const oC_Machine_DmaChannelAssignment_t oC_DmaChannelAssignments[oC_Machine_DmaChannelAssignmentIndex_NumberOfElements]
array with DMA channel assignments
Interface for Machine Base Addresses (BA) module.