1 /*""FILE COMMENT""*******************************************************
2 * System Name	: Multi-function Timer Pulse Unit API for RX62N
3 * File Name		: r_pdl_MTU2_RX62Nxx.h
4 * Version		: 1.02
5 * Contents		: MTU2 API header
6 * Customer		:
7 * Model			:
8 * Order			:
9 * CPU			: RX
10 * Compiler		: RXC
11 * OS			: Nothing
12 * Programmer	:
13 * Note			:
14 ************************************************************************
15 * Copyright, 2011. Renesas Electronics Corporation
16 * and Renesas Solutions Corporation
17 ************************************************************************
18 * History		: 2011.04.08
19 *				: Ver 1.02
20 *				: CS-5 release.
21 *""FILE COMMENT END""**************************************************/
22 
23 #ifndef R_PDL_MTU2_RX62Nxx_H
24 #define R_PDL_MTU2_RX62Nxx_H
25 
26 #define MTU2_UNITS 				2
27 #define MTU2_CHANNELS_PER_UNIT	6
28 #define MTU2_CHANNELS (uint8_t)(MTU2_UNITS * MTU2_CHANNELS_PER_UNIT)
29 
30 /* Callback function storage */
31 extern VoidCallBackFunc rpdl_MTU2_func1_callback_func[MTU2_CHANNELS];
32 extern VoidCallBackFunc rpdl_MTU2_func2_callback_func[MTU2_CHANNELS];
33 extern VoidCallBackFunc rpdl_MTU2_func3_callback_func[MTU2_CHANNELS];
34 extern VoidCallBackFunc rpdl_MTU2_func4_callback_func[MTU2_CHANNELS];
35 extern VoidCallBackFunc rpdl_MTU2_TGRE_callback_func[MTU2_CHANNELS];
36 extern VoidCallBackFunc rpdl_MTU2_TGRF_callback_func[MTU2_CHANNELS];
37 extern VoidCallBackFunc rpdl_MTU2_Overflow_callback_func[MTU2_CHANNELS];
38 extern VoidCallBackFunc rpdl_MTU2_Underflow_callback_func[MTU2_CHANNELS];
39 
40 typedef struct R_MTU2_Create_parameters
41 {
42 	uint32_t data2;
43 	uint32_t data3;
44 	uint32_t data4;
45 	uint16_t data5;
46 	uint32_t data6;
47 	uint32_t data7;
48 	uint32_t data8;
49 	uint16_t data9;
50 	uint16_t data10;
51 	uint16_t data11;
52 	uint16_t data12;
53 	uint16_t data13;
54 	uint16_t data14;
55 	uint16_t data15;
56 	uint16_t data16;
57 	uint16_t data17;
58 	uint16_t data18;
59 	VoidCallBackFunc func1;
60 	VoidCallBackFunc func2;
61 	VoidCallBackFunc func3;
62 	VoidCallBackFunc func4;
63 	uint8_t data19;
64 	VoidCallBackFunc func5;
65 	VoidCallBackFunc func6;
66 	VoidCallBackFunc func7;
67 	VoidCallBackFunc func8;
68 	uint8_t data20;
69 } R_MTU2_Create_structure;
70 
71 typedef struct R_MTU2_ControlChannel_parameters
72 {
73 	uint8_t data2;
74 	uint16_t data3;
75 	uint16_t data4;
76 	uint16_t data5;
77 	uint16_t data6;
78 	uint16_t data7;
79 	uint16_t data8;
80 	uint16_t data9;
81 	uint16_t data10;
82 	uint16_t data11;
83 	uint16_t data12;
84 } R_MTU2_ControlChannel_structure;
85 
86 typedef struct R_MTU2_ControlUnit_parameters
87 {
88 	uint16_t data2;
89 	uint32_t data3;
90 	uint32_t data4;
91 	uint16_t data5;
92 	uint32_t data6;
93 	uint8_t data7;
94 	uint16_t data8;
95 	uint16_t data9;
96 	uint16_t data10;
97 } R_MTU2_ControlUnit_structure;
98 
99 /* Library prototypes */
100 bool R_MTU2_SetAll(
101 	const uint16_t
102 );
103 bool R_MTU2_CreateAll(
104 	const uint8_t,
105 	R_MTU2_Create_structure * const
106 );
107 bool R_MTU2_DestroyAll(
108 	const uint8_t
109 );
110 bool R_MTU2_ControlChannelAll(
111 	const uint8_t,
112 	R_MTU2_ControlChannel_structure * const
113 );
114 bool R_MTU2_ControlUnitAll(
115 	const uint8_t,
116 	R_MTU2_ControlUnit_structure * const
117 );
118 bool R_MTU2_ReadChannelAll(
119 	const uint8_t,
120 	volatile uint8_t * const,
121 	volatile uint16_t * const,
122 	volatile uint16_t * const,
123 	volatile uint16_t * const,
124 	volatile uint16_t * const,
125 	volatile uint16_t * const,
126 	volatile uint16_t * const,
127 	volatile uint16_t * const
128 );
129 bool R_MTU2_ReadUnitAll(
130 	const uint8_t,
131 	volatile uint16_t * const,
132 	volatile uint8_t * const
133 );
134 bool ReturnFalse(void);
135 void R_MTU2_Create_load_defaults(R_MTU2_Create_structure * const);
136 
137 /* Macro definitions */
138 
139 #define R_MTU2_Set(a) \
140 ( \
141 R_MTU2_SetAll( (a) ) \
142 )
143 
144 #define R_MTU2_Create(a, b) \
145 ( \
146 ( (a) < MTU2_CHANNELS ) ? \
147 R_MTU2_CreateAll( (a), (b) ) : \
148 ReturnFalse() \
149 )
150 
151 #define R_MTU2_ControlChannel(a, b) \
152 ( \
153 ( (a) < MTU2_CHANNELS ) ? \
154 R_MTU2_ControlChannelAll( (a), (b) ) : \
155 ReturnFalse() \
156 )
157 
158 #define R_MTU2_ControlUnit(a, b) \
159 ( \
160 ( (a) < MTU2_UNITS ) ? \
161 R_MTU2_ControlUnitAll( (a), (b) ) : \
162 ReturnFalse() \
163 )
164 
165 #define R_MTU2_ReadChannel(a, b, c, d, e, f, g, h, i) \
166 ( \
167 ( (a) < MTU2_CHANNELS ) ? \
168 R_MTU2_ReadChannelAll( (a), (b), (c), (d), (e), (f), (g), (h), (i) ) : \
169 ReturnFalse() \
170 )
171 
172 #define R_MTU2_ReadUnit(a, b, c) \
173 ( \
174 ( (a) < MTU2_UNITS ) ? \
175 R_MTU2_ReadUnitAll( (a), (b), (c) ) : \
176 ReturnFalse() \
177 )
178 
179 #define R_MTU2_Destroy(a) \
180 ( \
181 ( (a) < MTU2_UNITS ) ? \
182 R_MTU2_DestroyAll( (a) ) : \
183 ReturnFalse() \
184 )
185 
186 #endif
187 /* End of file */
188