Revision 7021191e periphALtypes.h

View differences:

periphALtypes.h
51 51
 * @brief Status values used as return value for all (or most) function calls.
52 52
 * @note  The status can be used as mask of flags.
53 53
 */
54
typedef enum {
55
  APAL_STATUS_OK                = 0x00u, /**< success, no error occurred                          */
56
  APAL_STATUS_SUCCESS           = 0x00u, /**< success, no error occurred                          */
57
  APAL_STATUS_ERROR             = 0x01u, /**< failed, some unspecified error occured              */
58
  APAL_STATUS_FAILURE           = 0x01u, /**< failed, some unspecified error occured              */
59
  APAL_STATUS_TIMEOUT           = 0x02u, /**< failed, timeout occurred                            */
60
  APAL_STATUS_INVALIDARGUMENTS  = 0x04u, /**< failed, invalid arguments                           */
61
  APAL_STATUS_UNAVAILABLE       = 0x08u, /**< failed, function unavailable                        */
62
  APAL_STATUS_WARNING           = 0x10u, /**< success, but the result is probably not as expected */
63
} apalExitStatus_t;
54
typedef int8_t apalExitStatus_t;
55

  
56
/**
57
 * @brief   Status value for success (no error or warning occurred).
58
 */
59
#define APAL_STATUS_OK                          ((apalExitStatus_t)0)
60
#define APAL_STATUS_SUCCESS                     ((apalExitStatus_t)0)
61

  
62
/**
63
 * @brief   Status value for unspecified failure.
64
 */
65
#define APAL_STATUS_ERROR                       ((apalExitStatus_t)-1)
66
#define APAL_STATUS_FAILURE                     ((apalExitStatus_t)-1)
67

  
68
/**
69
 * @brief   Status value for timeout failure.
70
 */
71
#define APAL_STATUS_TIMEOUT                     ((apalExitStatus_t)-2)
72

  
73
/**
74
 * @brief   Status value for failure because of invalid arguments.
75
 */
76
#define APAL_STATUS_INVALIDARGUMENTS            ((apalExitStatus_t)-4)
77

  
78
/**
79
 * @brief   Status value for failure because the function is not available/implemented.
80
 */
81
#define APAL_STATUS_UNAVAILABLE                 ((apalExitStatus_t)-8)
82

  
83
/**
84
 * @brief   Status value for unspecified warning.
85
 */
86
#define APAL_STATUS_WARNING                     ((apalExitStatus_t)1)
64 87

  
65 88
/*============================================================================*/
66 89
/* GPIO                                                                       */
......
75 98
/**
76 99
 * @brief Status values to read/write a GPIO port.
77 100
 */
78
typedef enum {
79
  APAL_GPIO_LOW   = 0,  /**< logical low state  */
80
  APAL_GPIO_HIGH  = 1,  /**< logical high state */
81
} apalGpioState_t;
101
typedef uint8_t apalGpioState_t;
102

  
103
/**
104
 * @brief   GPIO physical low state.
105
 */
106
#define APAL_GPIO_LOW                           ((apalGpioState_t)0)
82 107

  
83 108
/**
84
 * @brief Status values to turn a control GPIO 'on' and 'off'.
109
 * @brief   GPIO physical high state.
85 110
 */
86
typedef enum {
87
  APAL_GPIO_OFF = 0,  /**< logical 'turned off' state */
88
  APAL_GPIO_ON  = 1,  /**< logical 'turned on' state  */
89
} apalControlGpioState_t;
111
#define APAL_GPIO_HIGH                          ((apalGpioState_t)1)
112

  
113
/**
114
 * @brief   Invert a physical GPIO state.
115
 *
116
 * @param[in] state   GPIO state to invert.
117
 *
118
 * @return  Inverted physical GPIO state.
119
 */
120
#define APAL_GPIO_STATE_INVERT(state) (                                       \
121
  (apalGpioState_t)state ^ APAL_GPIO_HIGH                                     \
122
)
123

  
124
/**
125
 * @brief Logical status values to turn a control GPIO 'on' and 'off'.
126
 */
127
typedef uint8_t apalControlGpioState_t;
128

  
129
/**
130
 * @brief   GPIO logical off state.
131
 */
132
#define APAL_GPIO_OFF                           ((apalControlGpioState_t)0)
133

  
134
/**
135
 * @brief   GPIO logical on state.
136
 */
137
#define APAL_GPIO_ON                            ((apalControlGpioState_t)1)
90 138

  
91 139
/**
92 140
 * @brief   Polarity state of the control GPIO.
93 141
 */
94
typedef enum {
95
  APAL_GPIO_ACTIVE_LOW  = 0x00,   /**< A logically low state is defined as 'on'.  */
96
  APAL_GPIO_ACTIVE_HIGH = 0x01,   /**< A locically high state is defined as 'on'. */
97
} apalGpioActive_t;
142
typedef uint8_t apalGpioActive_t;
143

  
144
/**
145
 * @brief   The control GPIO is never defined to be 'on' (does not apply).
146
 */
147
#define APAL_GPIO_ACTIVE_NONE                   ((apalGpioActive_t)0)
148

  
149
/**
150
 * @brief   The control GPIO is defined to be 'on' when it is phsically low.
151
 */
152
#define APAL_GPIO_ACTIVE_LOW                    ((apalGpioActive_t)1)
153

  
154
/**
155
 * @brief   The control GPIO is defined to be 'on' when it is physically high.
156
 */
157
#define APAL_GPIO_ACTIVE_HIGH                   ((apalGpioActive_t)2)
158

  
159
/**
160
 * @brief   The control GPIO is defined to be always 'on'.
161
 */
162
#define APAL_GPIO_ACTIVE_ANY                    ((apalGpioActive_t)3)
163

  
164
/**
165
 * @brief   Invert a GPIO active state.
166
 * @details The active state is inverted only if it was either low or high.
167
 *          In case it was set to none or any, the value is not modified.
168
 *
169
 * @param[in] active  Active state to be inverted.
170
 *
171
 * @return  Inverted active state.
172
 */
173
#define APAL_GPIO_ACTIVE_INVERT(active) (                                     \
174
  (((apalGpioActive_t)active & APAL_GPIO_ACTIVE_LOW) ^                        \
175
   ((apalGpioActive_t)active & APAL_GPIO_ACTIVE_HIGH)) ?                      \
176
  ((apalGpioActive_t)active ^ APAL_GPIO_ACTIVE_ANY) :                         \
177
  ((apalGpioActive_t)active)                                                  \
178
)
98 179

  
99 180
/**
100 181
 * @brief   Signal direction for the control GPIO.
101 182
 */
102
typedef enum {
103
  APAL_GPIO_DIRECTION_UNDEFINED     = 0x00,   /**< Signal direction is undefined.     */
104
  APAL_GPIO_DIRECTION_INPUT         = 0x01,   /**< Signal direction is input only.    */
105
  APAL_GPIO_DIRECTION_OUTPUT        = 0x02,   /**< Signal direction is output only    */
106
  APAL_GPIO_DIRECTION_BIDIRECTIONAL = 0x03,   /**< Signal direction is bidirectional. */
107
} apalGpioDirection_t;
183
typedef uint8_t apalGpioDirection_t;
184

  
185
/**
186
 * @brief   Signal direction for the control GPIO is undefined.
187
 */
188
#define APAL_GPIO_DIRECTION_UNDEFINED           ((apalGpioDirection_t)0)
189

  
190
/**
191
 * @brief   Signal direction for the control GPIO is input only.
192
 */
193
#define APAL_GPIO_DIRECTION_INPUT               ((apalGpioDirection_t)1)
194

  
195
/**
196
 * @brief   Signal direction for the control GPIO is output only.
197
 */
198
#define APAL_GPIO_DIRECTION_OUTPUT              ((apalGpioDirection_t)2)
199

  
200
/**
201
 * @brief   Signal direction for the control GPIO is didirectional.
202
 */
203
#define APAL_GPIO_DIRECTION_BIDIRECTIONAL       ((apalGpioDirection_t)3)
204

  
205
/**
206
 * @brief   Informative or effective signal edge for control GPIOs.
207
 */
208
typedef uint8_t apalGpioEdge_t;
108 209

  
109 210
/**
110
 * @brief   Informative signal edge for input control GPIOs.
211
 * @brief   No edges indicate an interrupt or trigger an action.
111 212
 */
112
typedef enum {
113
  APAL_GPIO_EDGE_NONE     = 0x00,   /**< No edge indicates an interrupt.                      */
114
  APAL_GPIO_EDGE_RISING   = 0x01,   /**< Rising edges indicate an interrupt.                  */
115
  APAL_GPIO_EDGE_FALLING  = 0x02,   /**< Falling edges indicate an interrupt.                 */
116
  APAL_GPIO_EDGE_BOTH     = 0x03,   /**< Both rising and falling edges indicate an interrupt. */
117
} apalGpioEdge_t;
213
#define APAL_GPIO_EDGE_NONE                     ((apalGpioEdge_t)0)
118 214

  
119 215
/**
120
 * @brief   Inverts the value of the informative signal edge for interrupts.
216
 * @brief   Rising edges indicate an interrupt or trigger an action.
217
 */
218
#define APAL_GPIO_EDGE_RISING                   ((apalGpioEdge_t)1)
219

  
220
/**
221
 * @brief   Falling edges indicate an interrupt or trigger an action.
222
 */
223
#define APAL_GPIO_EDGE_FALLING                  ((apalGpioEdge_t)2)
224

  
225
/**
226
 * @brief   Both rising and falling edges indicate an interrupt or trigger an action.
227
 */
228
#define APAL_GPIO_EDGE_BOTH                     ((apalGpioEdge_t)3)
229

  
230
/**
231
 * @brief   Inverts the value of the informative or effective signal edge for interrupts.
121 232
 * @details Rising edge is inverted to falling and vice versa.
122 233
 *          If none or both edges are enabled, the identical value is returned.
123 234
 */
124
#define APAL_GPIO_EDGE_INVERT(edge)                                 \
125
  ((edge == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_EDGE_FALLING :       \
126
   (edge == APAL_GPIO_EDGE_FALLING) ? APAL_GPIO_EDGE_RISING : edge) \
235
#define APAL_GPIO_EDGE_INVERT(edge) (                                         \
236
  (((apalGpioEdge_t)edge & APAL_GPIO_EDGE_RISING) ^                           \
237
   ((apalGpioEdge_t)edge & APAL_GPIO_EDGE_FALLING)) ?                         \
238
  ((apalGpioEdge_t)edge ^ APAL_GPIO_EDGE_BOTH) :                              \
239
  ((apalGpioEdge_t)edge)                                                      \
240
)
127 241

  
128 242
/**
129 243
 * @brief Control GPIO meta information
130 244
 */
131 245
typedef struct {
132 246
  apalGpioDirection_t direction : 2;  /**< Direction configuration for according signals */
133
  apalGpioActive_t active       : 1;  /**< Active state of the GPIO */
247
  apalGpioActive_t active       : 2;  /**< Active state of the GPIO */
134 248
  apalGpioEdge_t edge           : 2;  /**< Edge configuration for according signals */
135 249
} apalGpioMeta_t;
136 250

  
......
167 281
typedef uint32_t  apalPWMperiod_t;
168 282

  
169 283
/**
170
 * @brief PWM width limits and special values.
284
 * @brief   PWM width to turn off the PWM.
171 285
 */
172
typedef enum {
173
  APAL_PWM_WIDTH_OFF  = 0x0000u,  /**< PWM off            */
174
  APAL_PWM_WIDTH_MIN  = 0x0000u,  /**< PWM minimum width  */
175
  APAL_PWM_WIDTH_MAX  = 0xFFFFu,  /**< PWM maximum width  */
176
} apalPWMWidthLimit_t;
286
#define APAL_PWM_WIDTH_OFF                      ((apalPWMwidth_t)0x0000u)
287

  
288
/**
289
 * @brief   Minimum allowed PWM width.
290
 */
291
#define APAL_PWM_WIDTH_MIN                      ((apalPWMwidth_t)0x0000u)
292

  
293
/**
294
 * @brief   Maximum allowed PWM width.
295
 */
296
#define APAL_PWM_WIDTH_MAX                      ((apalPWMwidth_t)0xFFFFu)
177 297

  
178 298
/*============================================================================*/
179 299
/* QEI                                                                        */
......
187 307
/**
188 308
 * @brief Direction of the QEI.
189 309
 */
190
typedef enum {
191
  APAL_QEI_DIRECTION_UP   = 0,  /**< QEI counted up   */
192
  APAL_QEI_DIRECTION_DOWN = 1,  /**< QEI counted down */
193
} apalQEIDirection_t;
310
typedef uint8_t apalQEIDirection_t;
311

  
312
/*
313
 * @brief   QEI counts upwards.
314
 */
315
#define APAL_QEI_DIRECTION_UP                   ((apalQEIDirection_t)0)
316

  
317
/*
318
 * @brief   QEI counts downwards.
319
 */
320
#define APAL_QEI_DIRECTION_DOWN                 ((apalQEIDirection_t)1)
194 321

  
195 322
/*============================================================================*/
196 323
/* I2C                                                                        */
......
205 332
/* SPI                                                                        */
206 333
/*============================================================================*/
207 334

  
335
/* nothing defined for SPI */
208 336

  
209 337
#endif /* AMIROLLD_PERIPHALTYPES_H */

Also available in: Unified diff