/
driver.h
52 lines (36 loc) · 1.22 KB
/
driver.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef DRIVER_H_
#define DRIVER_H_
#include "hardware.h"
#include <stdlib.h>
#include <stdint.h>
/* Dummy driver events for demonstrative purposes */
enum Driver_Event
{
DRIVER_EVENT_POWER_UP_COMPLETE,
DRIVER_EVENT_POWER_DOWN_COMPLETE,
DRIVER_EVENT_DATA_AVAILABLE,
DRIVER_EVENT_MAX
};
typedef void (*Driver_EventCallback)(enum Driver_Event);
typedef void *Config;
/* Showcasing complex pointer qualifiers in parameter list */
void Driver_Initialize(volatile const Hardware *const hardware, Driver_EventCallback callback);
/* Showcasing complex pointer qualifiers in return value */
volatile const Hardware *Driver_GetHardware(void);
/* Showcasing pointers */
size_t Driver_Write(const uint8_t *buffer, const size_t size);
/* Showcasing out-parameter pointers */
void Driver_GrabBuffer(const uint8_t **buffer, size_t *size);
uint16_t Driver_Hasmember(void);
/* Showcasing in-line function pointer parameters */
void Driver_PowerUp(Config (*config_cb)(void *arg));
void Driver_PowerDown(void);
int Driver_Deinitialize(void);
/* Showcasing inline definition workaround */
uint16_t Driver_GetRevision(void)
{
return 120;
}
/* Showcasing vararg/ellipsis parameters */
void debug_print(const char *format, ...);
#endif