28 #ifndef INC_DRIVERS_OC_IOCTL_H_ 29 #define INC_DRIVERS_OC_IOCTL_H_ 39 #define _________________________________________MACROS_SECTION_____________________________________________________________________________ 43 #define oC_IOCTL_SPECIAL_COMMAND_ID 0xF2 44 #define oC_IOCTL_NORMAL_COMMAND_ID 0xA2 47 #define _oC_Ioctl_MakeCommand(GROUP,INDEX,SIZE) (((GROUP) << 16) | ((SIZE & 0xFF) << 8) | ((INDEX) << 0)) 48 #define oC_Ioctl_MakeCommand(GROUP,INDEX,TYPE) ((oC_IOCTL_NORMAL_COMMAND_ID << 24) | _oC_Ioctl_MakeCommand(GROUP,INDEX,sizeof(TYPE)) ) 49 #define oC_Ioctl_MakeSpecialCommand(GROUP,INDEX,TYPE) ((oC_IOCTL_SPECIAL_COMMAND_ID << 24) | _oC_Ioctl_MakeCommand(GROUP,INDEX,sizeof(TYPE)) ) 51 #define oC_Ioctl_IsNormalCommand(COMMAND) (((COMMAND) >> 24) == oC_IOCTL_NORMAL_COMMAND_ID) 52 #define oC_Ioctl_IsSpecialCommand(COMMAND) (((COMMAND) >> 24) == oC_IOCTL_SPECIAL_COMMAND_ID) 53 #define oC_Ioctl_IsCorrectCommand(COMMAND) oC_Ioctl_IsNormalCommand(COMMAND) || oC_Ioctl_IsSpecialCommand(COMMAND) 55 #undef _________________________________________MACROS_SECTION_____________________________________________________________________________ 63 #define _________________________________________TYPES_SECTION______________________________________________________________________________ 67 typedef uint32_t oC_Ioctl_Command_t;
69 #undef _________________________________________TYPES_SECTION______________________________________________________________________________ 77 #define _________________________________________SPECIAL_COMMANDS_SECTION___________________________________________________________________ 79 #define oC_IOCTL_COMMAND_GET_DRIVER_VERSION oC_Ioctl_MakeSpecialCommand(0x00,uint32_t) 83 oC_Ioctl_SpecialGroup_Driver ,
84 oC_Ioctl_SpecialGroup_DevFs ,
85 oC_Ioctl_SpecialGroup_FileSystem ,
86 } oC_Ioctl_SpecialGroup_t;
90 oC_Ioctl_Group_Configure ,
96 oC_IoCtl_SpecialCommand_GetDriverVersion = oC_Ioctl_MakeSpecialCommand(oC_Ioctl_SpecialGroup_Driver , 0x01 , uint32_t) ,
98 oC_IoCtl_SpecialCommand_SetDriverContext = oC_Ioctl_MakeSpecialCommand(oC_Ioctl_SpecialGroup_DevFs , 0x01 , uint32_t) ,
100 oC_IoCtl_SpecialCommand_SetFileOffset = oC_Ioctl_MakeSpecialCommand(oC_Ioctl_SpecialGroup_FileSystem , 0x01 , uint32_t) ,
101 oC_IoCtl_SpecialCommand_ClearRxFifo = oC_Ioctl_MakeSpecialCommand(oC_Ioctl_SpecialGroup_FileSystem , 0x02 , uint32_t) ,
102 oC_IoCtl_SpecialCommand_ClearTxFifo = oC_Ioctl_MakeSpecialCommand(oC_Ioctl_SpecialGroup_FileSystem , 0x03 , uint32_t) ,
103 } oC_IoCtl_SpecialCommand_t;
107 oC_Ioctl_NormalCommand_Enable = oC_Ioctl_MakeCommand(oC_Ioctl_Group_Configure , 0x01 ,
NULL ) ,
108 oC_Ioctl_NormalCommand_Disable = oC_Ioctl_MakeCommand(oC_Ioctl_Group_Configure , 0x02 ,
NULL ) ,
109 } oC_Ioctl_NormalCommand_t;
111 #undef _________________________________________SPECIAL_COMMANDS_SECTION___________________________________________________________________ Definition of the null pointer.
#define NULL
pointer to a zero