Choco OS  V.0.16.9.0
Join to the chocolate world
oc_dma_lld.c
1 
28 #include <oc_dma_lld.h>
29 #include <oc_mem_lld.h>
30 #include <oc_math.h>
31 #include <oc_array.h>
32 
38 #define _________________________________________MACROS_SECTION_____________________________________________________________________________
39 
40 
41 #undef _________________________________________MACROS_SECTION_____________________________________________________________________________
42 
43 
49 #define _________________________________________LOCAL_TYPES_SECTION________________________________________________________________________
50 
51 #undef _________________________________________LOCAL_TYPES_SECTION________________________________________________________________________
52 
58 #define _________________________________________LOCAL_PROTOTYPES_SECTION___________________________________________________________________
59 
60 #undef _________________________________________LOCAL_PROTOTYPES_SECTION___________________________________________________________________
61 
67 #define _________________________________________LOCAL_VARIABLES_SECTION___________________________________________________________________
68 
69 static bool ModuleEnabledFlag = false;
70 static bool ChannelUsedArray[oC_ModuleChannel_NumberOfElements(DMA)];
71 
72 #undef _________________________________________LOCAL_VARIABLES_SECTION___________________________________________________________________
73 
79 #define _________________________________________INTERFACE_SECTION__________________________________________________________________________
80 
81 //==========================================================================================================================================
86 //==========================================================================================================================================
87 oC_ErrorCode_t oC_DMA_LLD_TurnOnDriver( void )
88 {
89  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
90 
91 
92 
93  return errorCode;
94 }
95 
96 //==========================================================================================================================================
101 //==========================================================================================================================================
102 oC_ErrorCode_t oC_DMA_LLD_TurnOffDriver( void )
103 {
104  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
105 
106 
107  return errorCode;
108 }
109 
110 //==========================================================================================================================================
115 //==========================================================================================================================================
116 bool oC_DMA_LLD_IsChannelAvailable( oC_DMA_Channel_t Channel )
117 {
118  return ChannelUsedArray[oC_Channel_ToIndex(DMA,Channel)] == false;
119 }
120 
121 //==========================================================================================================================================
126 //==========================================================================================================================================
127 void oC_DMA_LLD_RestoreDefaultStateOnChannel( oC_DMA_Channel_t Channel )
128 {
129 
130 }
131 
132 //==========================================================================================================================================
137 //==========================================================================================================================================
138 bool oC_DMA_LLD_IsChannelSupportedOnDmaChannel( oC_DMA_Channel_t DmaChannel , oC_Channel_t Channel , oC_Machine_DmaSignalType_t SignalType )
139 {
140  bool registerMapSupported = false;
141 
142 
143  return registerMapSupported;
144 }
145 
146 //==========================================================================================================================================
151 //==========================================================================================================================================
152 bool oC_DMA_LLD_IsSoftwareTradeSupportedOnDmaChannel( oC_DMA_Channel_t Channel )
153 {
154  bool softwareTradeSupported = false;
155 
156  return softwareTradeSupported;
157 }
158 
159 //==========================================================================================================================================
164 //==========================================================================================================================================
165 bool oC_DMA_LLD_DoesDmaHasAccessToAddress( oC_DMA_Channel_t Channel , const void * Address )
166 {
167  return oC_MEM_LLD_IsRamAddress(Address);
168 }
169 
170 //==========================================================================================================================================
175 //==========================================================================================================================================
176 oC_ErrorCode_t oC_DMA_LLD_ConfigureSoftwareTrade( oC_DMA_Channel_t Channel , const oC_DMA_LLD_SoftwareTradeConfig_t * Config )
177 {
178  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
179 
180  return errorCode;
181 }
182 
183 //==========================================================================================================================================
188 //==========================================================================================================================================
189 oC_ErrorCode_t oC_DMA_LLD_ConfigurePeripheralTrade( oC_DMA_Channel_t Channel , const oC_DMA_LLD_PeripheralTradeConfig_t * Config )
190 {
191  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
192 
193 
194  return errorCode;
195 }
196 
197 //==========================================================================================================================================
202 //==========================================================================================================================================
203 bool oC_DMA_LLD_IsTransferCompleteOnChannel( oC_DMA_Channel_t Channel )
204 {
205  oC_ChannelIndex_t channelIndex = oC_Channel_ToIndex(DMA,Channel);
206 
207  return ModuleEnabledFlag && oC_Channel_IsCorrect(DMA,Channel) && (ChannelUsedArray[channelIndex] == false);
208 }
209 
210 //==========================================================================================================================================
215 //==========================================================================================================================================
216 oC_ErrorCode_t oC_DMA_LLD_ReadChannelUsedReference( oC_DMA_Channel_t Channel , bool ** outChannelUsedFlag )
217 {
218  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
219 
220 
221 
222  return errorCode;
223 }
224 
225 //==========================================================================================================================================
230 //==========================================================================================================================================
231 oC_ErrorCode_t oC_DMA_LLD_FindFreeDmaChannelForPeripheralTrade( oC_DMA_Channel_t * outDmaChannel , oC_Channel_t Channel , oC_Machine_DmaSignalType_t SignalType )
232 {
233  oC_ErrorCode_t errorCode = oC_ErrorCode_ImplementError;
234 
235  if(
236  oC_AssignErrorCodeIfFalse(&errorCode , ModuleEnabledFlag , oC_ErrorCode_ModuleNotStartedYet)
237  )
238  {
239  errorCode = oC_ErrorCode_NoChannelAvailable;
240 
241  oC_ARRAY_FOREACH_IN_ARRAY(oC_DmaChannelAssignments,DmaChannelAssignment)
242  {
243  if(
244  (oC_Machine_DmaChannelAssignment_GetChannel( *DmaChannelAssignment) == Channel ) &&
245  (oC_Machine_DmaChannelAssignment_GetDmaSignalType( *DmaChannelAssignment) == SignalType )
246  )
247  {
248  *outDmaChannel = oC_Machine_DmaChannelAssignment_GetDmaChannel(*DmaChannelAssignment);
249  errorCode = oC_ErrorCode_None;
250  oC_ARRAY_FOREACH_BREAK(oC_DmaChannelAssignments);
251  }
252  }
253  }
254 
255  return errorCode;
256 }
257 
258 #undef _________________________________________INTERFACE_SECTION__________________________________________________________________________
259 
260 
266 #define _________________________________________LOCAL_FUNCTIONS_SECTION____________________________________________________________________
267 
268 
269 #undef _________________________________________LOCAL_FUNCTIONS_SECTION____________________________________________________________________
270 
276 #define _________________________________________LOCAL_INTERRUPTS_SECTION___________________________________________________________________
277 
278 
279 #undef _________________________________________LOCAL_INTERRUPTS_SECTION___________________________________________________________________
oC_Machine_DmaSignalType_t
type with DMA signal types
Definition: oc_machine.h:429
Basic math operations.
static bool ModuleEnabledFlag
Definition: oc_memman.c:211
#define oC_Machine_DmaChannelAssignment_GetChannel(Assignment)
returns channel from oC_Machine_DmaChannelAssignment_t type
Definition: oc_machine.h:358
#define oC_Machine_DmaChannelAssignment_GetDmaSignalType(Assignment)
returns DMA signal type from oC_Machine_DmaChannelAssignment_t type
Definition: oc_machine.h:365
The file with LLD interface for the MEM driver.
#define oC_Machine_DmaChannelAssignment_GetDmaChannel(Assignment)
returns DMA channel from oC_Machine_DmaChannelAssignment_t type
Definition: oc_machine.h:351
oC_Channel_t
stores machine channel
Definition: oc_channels.h:573
#define oC_Channel_IsCorrect(MODULE_NAME, Channel)
checks if channel is correct
Definition: oc_channels.h:283
#define oC_ModuleChannel_NumberOfElements(MODULE_NAME)
Number of elements in module channel.
Definition: oc_channels.h:465
Static array definitions.
#define oC_Channel_ToIndex(MODULE_NAME, Channel)
returns index in module according to channel
Definition: oc_channels.h:298
The file with LLD interface for the DMA driver.
bool oC_MEM_LLD_IsRamAddress(const void *Address)
checks if the pointer is in ram section
Definition: oc_mem_lld.c:400
const oC_Machine_DmaChannelAssignment_t oC_DmaChannelAssignments[oC_Machine_DmaChannelAssignmentIndex_NumberOfElements]
array with DMA channel assignments
Definition: oc_machine.h:496