oc_pal.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017-2018 NXP
3  * All rights reserved.
4  *
5  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
6  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
7  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
8  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
9  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
10  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
11  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
12  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
13  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
14  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
15  * THE POSSIBILITY OF SUCH DAMAGE.
16  */
17 
18 #ifndef OC_PAL_H
19 #define OC_PAL_H
20 
21 #include "oc_pal_mapping.h"
22 #include "status.h"
23 #include "callbacks.h"
24 
34 /*******************************************************************************
35  * Definitions
36  ******************************************************************************/
37 
38 #if (defined(OC_PAL_OVER_EMIOS))
39 
44 typedef enum
45 {
46  OC_BUS_SEL_A = 0x00U,
47  OC_BUS_SEL_B = 0x01U,
48  OC_BUS_SEL_C = 0x02U,
49  OC_BUS_SEL_D = 0x03U,
50  OC_BUS_SEL_E = 0x04U,
51  OC_BUS_SEL_F = 0x05U,
52  OC_BUS_SEL_INTERNAL = 0x06U
53 } oc_bus_select_t;
54 
55 #endif
56 
57 
62 typedef enum
63 {
67  OC_SET_ON_MATCH = 0x03U
69 
74 typedef enum
75 {
79 
85 typedef struct
86 {
87  uint8_t hwChannelId;
89  uint16_t comparedValue;
94 
100 typedef struct
101 {
102  uint8_t nNumChannels;
104  void * extension;
105 } oc_config_t;
106 
107 #if (defined(OC_PAL_OVER_FTM))
108 
114 typedef struct
115 {
116  uint16_t maxCountValue;
117  ftm_clock_source_t ftmClockSource;
118  ftm_clock_ps_t ftmPrescaler;
120 } extension_ftm_for_oc_t;
121 #endif
122 
123 #if (defined(OC_PAL_OVER_EMIOS))
124 
130 typedef struct
131 {
132  oc_bus_select_t timebase;
133  uint32_t period;
135  emios_clock_internal_ps_t prescaler;
136 } channel_extension_emios_for_oc_t;
137 
144 typedef struct
145 {
146  uint16_t clkDivVal;
147  bool enableGlobalPrescaler;
148  bool enableGlobalTimeBase;
149 } extension_emios_for_oc_t;
150 #endif
151 
152 #if (defined(OC_PAL_OVER_ETIMER))
153 
159 typedef struct
160 {
161  etimer_input_config_t primaryInput;
162  etimer_output_config_t outputPin;
163 } channel_extension_etimer_for_oc_t;
164 #endif
165 
166 /*******************************************************************************
167  * API
168  ******************************************************************************/
169 
170 #if defined(__cplusplus)
171 extern "C" {
172 #endif
173 
188 status_t OC_Init(const oc_instance_t * const instance,
189  const oc_config_t * const configPtr);
190 
202 status_t OC_Deinit(const oc_instance_t * const instance);
203 
212 void OC_StartChannel(const oc_instance_t * const instance,
213  const uint8_t channel);
214 
223 void OC_StopChannel(const oc_instance_t * const instance,
224  const uint8_t channel);
225 
242 status_t OC_SetOutputState(const oc_instance_t * const instance,
243  const uint8_t channel,
244  bool outputValue);
245 
263 status_t OC_SetOutputAction(const oc_instance_t * const instance,
264  const uint8_t channel,
265  oc_option_mode_t channelMode);
266 
283 status_t OC_SetCompareValue(const oc_instance_t * const instance,
284  const uint8_t channel,
285  uint32_t nextCompareMatchValue,
286  oc_option_update_t typeOfupdate);
287 
296 void OC_EnableNotification(const oc_instance_t * const instance,
297  const uint8_t channel);
298 
307 void OC_DisableNotification(const oc_instance_t * const instance,
308  const uint8_t channel);
309 
310 #if defined(__cplusplus)
311 }
312 #endif
313 
315 #endif /* OC_PAL_H */
316 
317 
318 /*******************************************************************************
319  * EOF
320  ******************************************************************************/
status_t OC_SetCompareValue(const oc_instance_t *const instance, const uint8_t channel, uint32_t nextCompareMatchValue, oc_option_update_t typeOfupdate)
Update the match value on the channel.
Definition: oc_pal.c:1047
uint8_t nNumChannels
Definition: oc_pal.h:102
uint16_t comparedValue
Definition: oc_pal.h:89
The configuration structure of output compare parameters for each channel.
Definition: oc_pal.h:85
oc_callback_t channelCallbacks
Definition: oc_pal.h:92
void OC_StartChannel(const oc_instance_t *const instance, const uint8_t channel)
Start the counter.
Definition: oc_pal.c:817
void * channelExtension
Definition: oc_pal.h:90
const oc_output_ch_param_t * outputChConfig
Definition: oc_pal.h:103
void * channelCallbackParams
Definition: oc_pal.h:91
status_t OC_SetOutputState(const oc_instance_t *const instance, const uint8_t channel, bool outputValue)
Control the channel output by software.
Definition: oc_pal.c:925
ftm_clock_ps_t
FlexTimer pre-scaler factor selection for the clock source. In quadrature decoder mode set FTM_CLOCK_...
Definition: ftm_common.h:252
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:44
status_t OC_SetOutputAction(const oc_instance_t *const instance, const uint8_t channel, oc_option_mode_t channelMode)
Set the operation mode of channel output.
Definition: oc_pal.c:982
ftm_clock_source_t
FlexTimer clock source selection.
Definition: ftm_common.h:238
status_t OC_Deinit(const oc_instance_t *const instance)
De-initialize the output compare instance.
Definition: oc_pal.c:742
void OC_StopChannel(const oc_instance_t *const instance, const uint8_t channel)
Stop the counter.
Definition: oc_pal.c:874
oc_option_mode_t
The type of comparison for output compare mode Implements : oc_option_mode_t_Class.
Definition: oc_pal.h:62
void * extension
Definition: oc_pal.h:104
void OC_EnableNotification(const oc_instance_t *const instance, const uint8_t channel)
Enable channel notifications.
Definition: oc_pal.c:1146
uint8_t hwChannelId
Definition: oc_pal.h:87
void(* oc_callback_t)(oc_event_t event, void *userData)
Definition: callbacks.h:177
status_t OC_Init(const oc_instance_t *const instance, const oc_config_t *const configPtr)
Initializes the output compare mode.
Definition: oc_pal.c:688
void OC_DisableNotification(const oc_instance_t *const instance, const uint8_t channel)
Disable channel notifications.
Definition: oc_pal.c:1170
oc_option_update_t
The type of update on the channel match Implements : oc_option_mode_t_Class.
Definition: oc_pal.h:74
Defines the configuration structures are used in the output compare mode.
Definition: oc_pal.h:100
oc_option_mode_t chMode
Definition: oc_pal.h:88
Structure storing PAL instance information.