ODeV framework  v2
IDriverVtbl.h
Go to the documentation of this file.
1 
32 #ifndef INCLUDE_DRIVERS_IDRIVERVTBL_H_
33 #define INCLUDE_DRIVERS_IDRIVERVTBL_H_
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 #include "systypes.h"
40 #include "syserror.h"
41 #include "systp.h"
42 
43 typedef struct _IDriver_vtbl IDriver_vtbl;
44 
45 
46 struct _IDriver_vtbl {
47  sys_error_code_t (*Init)(IDriver *this, void *pParams);
48  sys_error_code_t (*Start)(IDriver *this);
49  sys_error_code_t (*Stop)(IDriver *this);
50  sys_error_code_t (*DoEnterPowerMode)(IDriver *this, const EPowerMode eActivePowerMode, const EPowerMode eNewPowerMode);
51  sys_error_code_t (*Write)(IDriver *this, uint8_t *pDataBuffer, uint16_t nDataSize, uint16_t nChannel);
52  sys_error_code_t (*Read)(IDriver *this, uint8_t *pDataBuffer, uint16_t nDataSize, uint16_t nChannel);
53 };
54 
59 struct _IDriver {
60  const IDriver_vtbl *vptr;
61 };
62 
63 // Inline function definition.
64 //
65 
66 SYS_DEFINE_INLINE
67 sys_error_code_t IDrvInit(IDriver *this, void *pParams) {
68  return this->vptr->Init(this, pParams);
69 }
70 
71 SYS_DEFINE_INLINE
73  return this->vptr->Start(this);
74 }
75 
76 SYS_DEFINE_INLINE
78  return this->vptr->Stop(this);
79 }
80 
81 SYS_DEFINE_INLINE
82 sys_error_code_t IDrvDoEnterPowerMode(IDriver *this, const EPowerMode eActivePowerMode, const EPowerMode eNewPowerMode) {
83  return this->vptr->DoEnterPowerMode(this, eActivePowerMode, eNewPowerMode);
84 }
85 
86 SYS_DEFINE_INLINE
87 sys_error_code_t IDrvWrite(IDriver *this, uint8_t *pDataBuffer, uint16_t nDataSize, uint16_t nChannel) {
88  return this->vptr->Write(this, pDataBuffer, nDataSize, nChannel);
89 }
90 
91 SYS_DEFINE_INLINE
92 sys_error_code_t IDrvRead(IDriver *this, uint8_t *pDataBuffer, uint16_t nDataSize, uint16_t nChannel) {
93  return this->vptr->Read(this, pDataBuffer, nDataSize, nChannel);
94 }
95 
96 
97 #ifdef __cplusplus
98 }
99 #endif
100 
101 
102 #endif /* INCLUDE_DRIVERS_IDRIVERVTBL_H_ */
Define the global error management API.
SYS_DEFINE_INLINE sys_error_code_t IDrvDoEnterPowerMode(IDriver *this, const EPowerMode eActivePowerMode, const EPowerMode eNewPowerMode)
Definition: IDriverVtbl.h:82
SYS_DEFINE_INLINE sys_error_code_t IDrvStop(IDriver *this)
Definition: IDriverVtbl.h:77
SYS_DEFINE_INLINE sys_error_code_t IDrvWrite(IDriver *this, uint8_t *pDataBuffer, uint16_t nDataSize, uint16_t nChannel)
Definition: IDriverVtbl.h:87
Common type declaration.
Definition: IDriverVtbl.h:59
SYS_DEFINE_INLINE sys_error_code_t IDrvInit(IDriver *this, void *pParams)
Definition: IDriverVtbl.h:67
unsigned short sys_error_code_t
Definition: syserror.h:45
SYS_DEFINE_INLINE sys_error_code_t IDrvRead(IDriver *this, uint8_t *pDataBuffer, uint16_t nDataSize, uint16_t nChannel)
Definition: IDriverVtbl.h:92
Target platform definition.
SYS_DEFINE_INLINE sys_error_code_t IDrvStart(IDriver *this)
Definition: IDriverVtbl.h:72