DRV_IOCTL_TYPE,
/**
- * ioctl(..., char *dest[4])
+ * ioctl(..., char *dest[32])
* \brief Get driver identifier string
* \return 0 on no error
*
- * This call sets the 4-byte array \a dest to the drivers 4-byte
+ * This call sets the 32-byte array \a dest to the drivers 31 charater
* identifier. This identifier must be unique to the driver series.
*/
DRV_IOCTL_IDENT,
/**
* ioctl(...)
* \brief Get driver version number
- * \return 24-bit BCD version number (2.2)
+ * \return 24-bit BCD version number (2.2.2)
*
- * This call returns the 6-digit (2 major, 2 minor, 2 patch) version number
- * of the driver.
+ * This call returns the 6-digit (2 major, 2 minor, 2 patch) version
+ * number of the driver.
*/
DRV_IOCTL_VERSION,
DRV_IOCTL_LOOKUP
};
-//! \brief eTplDrv_IOCtl.DRV_IOCTL_LOOKUP names for the core IOCtls
-//! These are the official lookup names of the core calls
+/**
+ * \brief eTplDrv_IOCtl.DRV_IOCTL_LOOKUP names for the core IOCtls
+ * These are the official lookup names of the core calls
+ */
#define DRV_IOCTLNAMES "type", "ident", "version", "lookup"
+/**
+ * \brief Helper macro for the base IOCtl calls
+ * \param _type Type number from eTplDrv_Type to return
+ * \param _ident String of max 32-characters that identifies this driver
+ * \param _version Driver's 8.8.8 BCD version number
+ * \param _ioctls Pointer to the IOCtls string array
+ * \warning If you have DEBUG enabled in the calling file, this function
+ * will do LEAVE()s before returning, so make sure that the
+ * IOCtl function is ENTER()ed when using debug with this macro
+ *
+ * Usage: (Id is the IOCtl call ID)
+ * \code
+ * switch(Id)
+ * {
+ * BASE_IOCTLS(DRV_TYPE_MISC, "Ident", 0x100, csaIOCtls)
+ * // Your IOCtls go here, starting at index 4
+ * }
+ * \endcode
+ */
+#define BASE_IOCTLS(_type, _ident, _version, _ioctls) \
+ case DRV_IOCTL_TYPE: LEAVE('i', (_type)); return (_type);\
+ case DRV_IOCTL_IDENT: {\
+ int tmp = ModUtil_SetIdent(Data, (_ident));\
+ LEAVE('i', tmp); return tmp;\
+ }\
+ case DRV_IOCTL_VERSION: LEAVE('x', (_version)); return (_version);\
+ case DRV_IOCTL_LOOKUP:{\
+ int tmp = ModUtil_LookupString( _ioctls, (const char*)Data );\
+ LEAVE('i', tmp);\
+ return tmp;\
+ }
+
/**
* \enum eTplDrv_Type
* \brief Driver Types returned by DRV_IOCTL_TYPE