Upgrade doxygen configuration files to the latest version.
[pub/lufa.git] / LUFA / Drivers / USB / Class / Device / CCIDClassDevice.h
index 5acc33a..48803fd 100644 (file)
@@ -1,14 +1,14 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2018.
+     Copyright (C) Dean Camera, 2021.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2018  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-  Copyright 2018  Filipe Rodrigues (filipepazrodrigues [at] gmail [dot] com)
+  Copyright 2021  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2021  Filipe Rodrigues (filipepazrodrigues [at] gmail [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -84,6 +84,7 @@
                                } State; /**< State data for the USB class interface within the device. All elements in this section
                                          *   are reset to their defaults when the interface is enumerated.
                                          */
+                               USB_CCID_ProtocolData_T0_t ProtocolData;
                        } USB_ClassInfo_CCID_Device_t;
 
        /* Function Prototypes: */
                         *  When the ICC is inserted into a slot of a CCID, the CCID can activate the ICC, and the ICC will respond with an ATR
                         *  (answer to reset)
                         *
-                        *  \param[in]          slot    The slot currently being powered on
-                        *  \param[in, out]     atr             Pointer to an array where the ATR being sent to the device when the Icc is powered on is. 
-                        *  \param[out]         atrSize The size of the ATR being sent. Maximum size is 15
-                        *  \param[out]         error   The result of the operation, or error
+                        *      \param[in,out] CCIDInterfaceInfo        Pointer to a structure containing a CCID Class configuration and state.
+                        *  \param[in]     Slot                                 The slot ID currently being powered on.
+                        *  \param[in,out] Atr                                  Pointer to an array containing the Power On ATR being sent to the device.
+                        *  \param[out]    AtrSize                              The size of the ATR being sent (up to 15 bytes maximum).
+                        *  \param[out]    Error                                The result of the operation, or error.
                         *
-                        *  \return                     uint8_t The command result 
+                        *  \return     The command result code.
                         */
-                       uint8_t CALLBACK_CCID_IccPowerOn(uint8_t slot, uint8_t*  atr, uint8_t*  atrSize, uint8_t* error);
+                       uint8_t CALLBACK_CCID_IccPowerOn(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
+                                                        const uint8_t Slot,
+                                                        uint8_t* const Atr,
+                                                        uint8_t* const AtrSize,
+                                                        uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1);
 
                        /** CCID class driver callback for PC_TO_RDR_IccPowerOff CCID message
                         *  Turns off the ICC
-                        * 
-                        *  \param[in]          slot    The slot currently being powered off
-                        *  \param[out]         error   The result of the operation, or error
-                        * 
-                        *  \return                     uint8_t The command result 
+                        *
+                        *      \param[in,out] CCIDInterfaceInfo        Pointer to a structure containing a CCID Class configuration and state.
+                        *  \param[in]     Slot                                 The slot ID currently being powered off.
+                        *  \param[out]    Error                                The result of the operation, or error.
+                        *
+                        *  \return     The command result code.
                         */
-                       uint8_t CALLBACK_CCID_IccPowerOff(uint8_t slot, uint8_t* error);
+                       uint8_t CALLBACK_CCID_IccPowerOff(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
+                                                         const uint8_t Slot,
+                                                         uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1);
 
                        /** CCID class driver callback for PC_TO_RDR_GetSlotStatus CCID message
                         *  Retrieves the current status of a given slot
-                        * 
-                        *  \param[in]          slot    The slot from which we want to retrieve the status
-                        *  \param[out]         error   The result of the operation, or error
-                        * 
-                        *  \return                     uint8_t The command result 
+                        *
+                        *      \param[in,out] CCIDInterfaceInfo        Pointer to a structure containing a CCID Class configuration and state.
+                        *  \param[in]     Slot                                 The slot ID from which we want to retrieve the status.
+                        *  \param[out]    Error                                The result of the operation, or error.
+                        *
+                        *  \return     The command result code.
+                        */
+                       uint8_t CALLBACK_CCID_GetSlotStatus(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
+                                                           const uint8_t Slot,
+                                                           uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1);
+
+
+                       /** CCID class driver callback for PC_TO_RDR_SetParameters CCID message for T=0
+                        *  Sets the current parameters of a given slot
+                        *
+                        *  \param[in,out] CCIDInterfaceInfo    Pointer to a structure containing a CCID Class configuration, state and protocol data.
+                        *  \param[in]     Slot                                 The slot ID from which we want to retrieve the status.
+                        *  \param[out]    Error                                The result of the operation, or error.
+                        *  \param[out]    T0                                   Pointer to a buffer containing the new parameters
+                        *
+                        *  \return     The command result code.
                         */
-                       uint8_t CALLBACK_CCID_GetSlotStatus(uint8_t slot, uint8_t* error);
+                       uint8_t CALLBACK_CCID_SetParameters_T0(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
+                                                                                                  const uint8_t Slot,
+                                                                                                  uint8_t* const Error,
+                                                                                                  USB_CCID_ProtocolData_T0_t* const T0) ATTR_NON_NULL_PTR_ARG(1);
+
+                       /** CCID class driver callback for PC_TO_RDR_SetParameters CCID message for T=0
+                        *  Retrieves the current parameters of a given slot
+                        *
+                        *  \param[in,out] CCIDInterfaceInfo    Pointer to a structure containing a CCID Class configuration, state and protocol data.
+                        *  \param[in]     Slot                                 The slot ID from which we want to retrieve the status.
+                        *  \param[out]    Error                                The result of the operation, or error.
+                        *  \param[out]    ProtocolNum                  The CCID protocol ID of the parameter being retrieved.
+                        *  \param[out]    T0                                   Pointer to a buffer where the parameters will be returned
+                        *
+                        *  \return     The command result code.
+                        */
+                       uint8_t CALLBACK_CCID_GetParameters_T0(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
+                                                                                                  const uint8_t Slot,
+                                                                                                  uint8_t* const Error,
+                                                                                                  uint8_t* const ProtocolNum,
+                                                                                                  USB_CCID_ProtocolData_T0_t* const T0) ATTR_NON_NULL_PTR_ARG(1);
+
+                       /** CCID class driver callback for PC_TO_RDR_XfrBlock CCID message
+                        *  Send a block of bytes from the host to a slot in the device
+                        *  and also received a block of bytes as a response
+                        *
+                        *  \param[in,out] CCIDInterfaceInfo    Pointer to a structure containing a CCID Class configuration and state.
+                        *  \param[in]     Slot                                 The slot ID from which we want to retrieve the status.
+                        *  \param[in]     ReceivedBuffer               Pointer to an array holding the received block of bytes
+                        *  \param[in]     ReceivedBufferSize   The size of the received block of bytes
+                        *  \param[out]    SendBuffer                   Pointer to a buffer which will hold the bytes being sent back to the host
+                        *  \param[out]    SentBufferSize               The size of the block of bytes being sent back to the host
+                        *  \param[out]    Error                                The result of the operation, or error.
+                        *
+                        *  \return     The command result code.
+                        */
+                       uint8_t CALLBACK_CCID_XfrBlock(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
+                                                                                  const uint8_t Slot,
+                                                                                  const uint8_t* ReceivedBuffer,
+                                                                                  const uint8_t ReceivedBufferSize,
+                                                                                  uint8_t* const SendBuffer,
+                                                                                  uint8_t* const SentBufferSize,
+                                                                                  uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1);
 
                        /** CCID class driver callback for CCID_PC_to_RDR_Abort CCID message
                         *  Aborts a BULK out message previously sent to a slot
-                        * 
-                        *  \param[in]          slot    The slot to where the message being aborted was sent to
-                        *  \param[in]          seq     The current sequence number for this message. Must be checked against to the current
-                        *                                                      abort massage being sent at the control pipe
-                        *  \param[out]         error   The result of the operation, or error
-                        * 
-                        *  \return                     uint8_t The command result 
+                        *
+                        *      \param[in,out] CCIDInterfaceInfo        Pointer to a structure containing a CCID Class configuration and state.
+                        *  \param[in]     Slot                                 The slot ID to where the message being aborted was sent to.
+                        *  \param[in]     Seq                                  The current sequence number for this message. Must be checked against
+                        *                                                              the current abort message being sent at the control pipe.
+                        *  \param[out]    Error                                The result of the operation, or error.
+                        *
+                        *  \return     The command result code.
                         */
-                       uint8_t CALLBACK_CCID_Abort(uint8_t slot, uint8_t seq, uint8_t* error);
+                       uint8_t CALLBACK_CCID_Abort(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
+                                                   const uint8_t Slot,
+                                                   const uint8_t Seq,
+                                                   uint8_t* const Error) ATTR_NON_NULL_PTR_ARG(1);
 
 
 #endif