125 #ifndef GPIOTEM_PORTABLE_INC_LLD_OC_GPIO_LLD_H_ 126 #define GPIOTEM_PORTABLE_INC_LLD_OC_GPIO_LLD_H_ 129 #include <oc_errors.h> 132 #if oC_Channel_IsModuleDefined(GPIO) == false 133 #error GPIO module is not defined 141 #define _________________________________________TYPES_SECTION______________________________________________________________________________ 142 #define MODULE_NAME GPIO 165 oC_GPIO_LLD_Protection_DontUnlockProtectedPins ,
166 oC_GPIO_LLD_Protection_UnlockProtectedPins
167 } oC_GPIO_LLD_Protection_t;
179 oC_GPIO_LLD_Speed_Default ,
180 oC_GPIO_LLD_Speed_Minimum ,
181 oC_GPIO_LLD_Speed_Medium ,
182 oC_GPIO_LLD_Speed_Maximum ,
183 oC_GPIO_LLD_Speed_NumberOfElements
184 } oC_GPIO_LLD_Speed_t;
195 oC_GPIO_LLD_Current_Default ,
196 oC_GPIO_LLD_Current_Minimum ,
197 oC_GPIO_LLD_Current_Medium ,
198 oC_GPIO_LLD_Current_Maximum
199 } oC_GPIO_LLD_Current_t;
210 oC_GPIO_LLD_Mode_Default ,
211 oC_GPIO_LLD_Mode_Input ,
212 oC_GPIO_LLD_Mode_Output ,
213 oC_GPIO_LLD_Mode_Alternate
214 } oC_GPIO_LLD_Mode_t;
225 oC_GPIO_LLD_Pull_Default ,
226 oC_GPIO_LLD_Pull_Up ,
227 oC_GPIO_LLD_Pull_Down
228 } oC_GPIO_LLD_Pull_t;
239 oC_GPIO_LLD_OutputCircuit_Default ,
240 oC_GPIO_LLD_OutputCircuit_OpenDrain ,
241 oC_GPIO_LLD_OutputCircuit_PushPull
242 } oC_GPIO_LLD_OutputCircuit_t;
254 oC_GPIO_LLD_IntTrigger_Default ,
255 oC_GPIO_LLD_IntTrigger_Off = 0 ,
256 oC_GPIO_LLD_IntTrigger_RisingEdge = (1<<0),
257 oC_GPIO_LLD_IntTrigger_FallingEdge = (1<<1),
258 oC_GPIO_LLD_IntTrigger_BothEdges = (1<<0) | (1<<1),
259 oC_GPIO_LLD_IntTrigger_HighLevel = (1<<2),
260 oC_GPIO_LLD_IntTrigger_LowLevel = (1<<3),
261 oC_GPIO_LLD_IntTrigger_BothLevels = (1<<2) | (1<<3)
262 } oC_GPIO_LLD_IntTrigger_t;
274 oC_GPIO_LLD_PinsState_AllLow = 0,
275 oC_GPIO_LLD_PinsState_AllHigh = oC_Pin_PinsInPortMask
276 } oC_GPIO_LLD_PinsState_t;
288 typedef void (*oC_GPIO_LLD_Interrupt_t)( oC_Pins_t Pins );
291 #undef _________________________________________TYPES_SECTION______________________________________________________________________________ 299 #define _________________________________________MACROS_SECTION_____________________________________________________________________________ 325 #define oC_GPIO_LLD_ForEachPort( PortVariable ) oC_Channel_Foreach(GPIO , PortVariable ) 341 #define oC_GPIO_LLD_GetImportantBitsMaskForPins( Pins ) ( oC_Pin_ChannelMask | (oC_Pin_PinsInPortMask & Pins ) ) 343 #undef _________________________________________MACROS_SECTION_____________________________________________________________________________ 351 #define _________________________________________FUNCTIONS_SECTION__________________________________________________________________________ 365 extern oC_ErrorCode_t oC_GPIO_LLD_TurnOnDriver(
void );
377 extern oC_ErrorCode_t oC_GPIO_LLD_TurnOffDriver(
void );
389 extern bool oC_GPIO_LLD_IsPortCorrect( oC_Port_t Port );
401 extern bool oC_GPIO_LLD_IsPortIndexCorrect( oC_PortIndex_t PortIndex );
421 extern oC_PinsMask_t oC_GPIO_LLD_GetPinsMaskOfPins( oC_Pins_t Pins );
433 extern oC_Port_t oC_GPIO_LLD_GetPortOfPins( oC_Pins_t Pins );
445 extern oC_PortIndex_t oC_GPIO_LLD_PortToPortIndex( oC_Port_t Port );
457 extern oC_Port_t oC_GPIO_LLD_PortIndexToPort( oC_PortIndex_t PortIndex );
471 extern bool oC_GPIO_LLD_IsPinDefined( oC_Pin_t Pin );
484 extern bool oC_GPIO_LLD_ArePinsDefined( oC_Pins_t Pins );
496 extern bool oC_GPIO_LLD_ArePinsCorrect( oC_Pins_t Pins );
523 extern bool oC_GPIO_LLD_IsSinglePin( oC_Pins_t Pins );
544 extern oC_Pins_t oC_GPIO_LLD_GetPinsFor( oC_Port_t Port , oC_PinsMask_t Pins );
557 extern const char * oC_GPIO_LLD_GetPortName( oC_Port_t Port );
570 extern const char * oC_GPIO_LLD_GetPinName( oC_Pin_t Pin );
587 extern oC_ErrorCode_t oC_GPIO_LLD_SetDriverInterruptHandler( oC_GPIO_LLD_Interrupt_t Handler );
608 extern oC_ErrorCode_t oC_GPIO_LLD_BeginConfiguration( oC_Pins_t Pins );
629 extern oC_ErrorCode_t oC_GPIO_LLD_FinishConfiguration( oC_Pins_t Pins );
646 extern oC_ErrorCode_t oC_GPIO_LLD_SetPower( oC_Pins_t Pins ,
oC_Power_t Power );
662 extern oC_ErrorCode_t oC_GPIO_LLD_ReadPower( oC_Pins_t Pins ,
oC_Power_t * outPower );
675 extern bool oC_GPIO_LLD_IsPinProtected( oC_Pins_t Pins );
692 extern oC_ErrorCode_t oC_GPIO_LLD_UnlockProtection( oC_Pins_t Pins , oC_GPIO_LLD_Protection_t Protection );
708 extern oC_ErrorCode_t oC_GPIO_LLD_LockProtection( oC_Pins_t Pins );
721 extern oC_ErrorCode_t oC_GPIO_LLD_CheckIsPinUnlocked( oC_Pins_t Pins ,
bool * outPinUnlocked );
738 extern oC_ErrorCode_t oC_GPIO_LLD_SetSpeed( oC_Pins_t Pins , oC_GPIO_LLD_Speed_t Speed );
755 extern oC_ErrorCode_t oC_GPIO_LLD_ReadSpeed( oC_Pins_t Pins , oC_GPIO_LLD_Speed_t * outSpeed );
772 extern oC_ErrorCode_t oC_GPIO_LLD_SetCurrent( oC_Pins_t Pins , oC_GPIO_LLD_Current_t Current );
789 extern oC_ErrorCode_t oC_GPIO_LLD_ReadCurrent( oC_Pins_t Pins , oC_GPIO_LLD_Current_t * outCurrent );
805 extern oC_ErrorCode_t oC_GPIO_LLD_SetMode( oC_Pins_t Pins , oC_GPIO_LLD_Mode_t Mode );
821 extern oC_ErrorCode_t oC_GPIO_LLD_ReadMode( oC_Pins_t Pins , oC_GPIO_LLD_Mode_t * outMode );
837 extern oC_ErrorCode_t oC_GPIO_LLD_SetPull( oC_Pins_t Pins , oC_GPIO_LLD_Pull_t Pull );
853 extern oC_ErrorCode_t oC_GPIO_LLD_ReadPull( oC_Pins_t Pins , oC_GPIO_LLD_Pull_t * outPull );
870 extern oC_ErrorCode_t oC_GPIO_LLD_SetOutputCircuit( oC_Pins_t Pins , oC_GPIO_LLD_OutputCircuit_t OutputCircuit );
887 extern oC_ErrorCode_t oC_GPIO_LLD_ReadOutputCircuit( oC_Pins_t Pins , oC_GPIO_LLD_OutputCircuit_t * outOutputCircuit );
904 extern oC_ErrorCode_t oC_GPIO_LLD_SetInterruptTrigger( oC_Pins_t Pins , oC_GPIO_LLD_IntTrigger_t InterruptTrigger );
921 extern oC_ErrorCode_t oC_GPIO_LLD_ReadInterruptTrigger( oC_Pins_t Pins , oC_GPIO_LLD_IntTrigger_t * outInterruptTrigger );
935 extern oC_ErrorCode_t oC_GPIO_LLD_SetPinsUsed( oC_Pins_t Pins );
949 extern oC_ErrorCode_t oC_GPIO_LLD_SetPinsUnused( oC_Pins_t Pins );
964 extern oC_ErrorCode_t oC_GPIO_LLD_CheckIsPinUsed( oC_Pins_t Pins ,
bool * outPinUsed );
981 extern oC_ErrorCode_t oC_GPIO_LLD_ArePinsUnused( oC_Pins_t Pins ,
bool * outPinsUnused );
997 extern oC_ErrorCode_t oC_GPIO_LLD_WriteData( oC_Pins_t Pins , oC_PinsMask_t Data );
1012 extern oC_ErrorCode_t oC_GPIO_LLD_ReadData( oC_Pins_t Pins , oC_PinsMask_t * outData );
1053 extern oC_ErrorCode_t oC_GPIO_LLD_ReadDataReference( oC_Pins_t Pins , oC_UInt_t ** outDataReference );
1083 extern oC_Pins_t oC_GPIO_LLD_GetHighStatePins( oC_Pins_t Pins );
1115 extern oC_Pins_t oC_GPIO_LLD_GetLowStatePins( oC_Pins_t Pins );
1149 extern bool oC_GPIO_LLD_IsPinsState( oC_Pins_t Pins , oC_GPIO_LLD_PinsState_t ExpectedPinsState );
1171 extern void oC_GPIO_LLD_SetPinsState( oC_Pins_t Pins , oC_GPIO_LLD_PinsState_t PinsState );
1199 extern void oC_GPIO_LLD_TogglePinsState( oC_Pins_t Pins );
1201 #undef _________________________________________FUNCTIONS_SECTION__________________________________________________________________________ #define oC_ModuleChannel_DefineType
defines module channel type
The file with interface for the machine module.
oC_Power_t
stores registers power state