Commit bc57f4ea authored by Dean Camera's avatar Dean Camera
Browse files

Reformatting and add const qualifiers.

parent 8e590e6c
......@@ -157,10 +157,11 @@ void EVENT_USB_Device_ControlRequest(void)
* whenever an application at the host wants to send a power off signal to a slot.
* THe slot must reply back with a recognizable ATR (answer to reset)
*/
uint8_t CALLBACK_CCID_IccPowerOn(uint8_t slot,
uint8_t* atr,
uint8_t* attrSize,
uint8_t* error)
uint8_t CALLBACK_CCID_IccPowerOn(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const atr,
uint8_t* const attrSize,
uint8_t* const error)
{
if (slot < CCID_Interface.Config.TotalSlots)
{
......@@ -176,7 +177,9 @@ uint8_t CALLBACK_CCID_IccPowerOn(uint8_t slot,
/** Event handler for the CCID_PC_to_RDR_IccPowerOff message. This message is sent to the device
* whenever an application at the host wants to send a power off signal to a slot.
*/
uint8_t CALLBACK_CCID_IccPowerOff(uint8_t slot, uint8_t* error)
uint8_t CALLBACK_CCID_IccPowerOff(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const error)
{
if (slot < CCID_Interface.Config.TotalSlots)
{
......@@ -194,7 +197,9 @@ uint8_t CALLBACK_CCID_IccPowerOff(uint8_t slot, uint8_t* error)
* whenever an application at the host wants to the get the current slot status
*
*/
uint8_t CALLBACK_CCID_GetSlotStatus(uint8_t slot, uint8_t* error)
uint8_t CALLBACK_CCID_GetSlotStatus(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const error)
{
if (slot < CCID_Interface.Config.TotalSlots)
{
......@@ -208,9 +213,10 @@ uint8_t CALLBACK_CCID_GetSlotStatus(uint8_t slot, uint8_t* error)
}
}
uint8_t CALLBACK_CCID_Abort(uint8_t slot,
uint8_t CALLBACK_CCID_Abort(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t seq,
uint8_t* error)
uint8_t* const error)
{
if (CCID_Interface.State.Aborted && slot == 0 && CCID_Interface.State.AbortedSeq == seq)
{
......
......@@ -75,16 +75,21 @@
void EVENT_USB_Device_ConfigurationChanged(void);
void EVENT_USB_Device_ControlRequest(void);
uint8_t CALLBACK_CCID_IccPowerOn(uint8_t slot,
uint8_t* atr,
uint8_t* atrSize,
uint8_t* error);
uint8_t CALLBACK_CCID_IccPowerOff(uint8_t slot, uint8_t* error);
uint8_t CALLBACK_CCID_GetSlotStatus(uint8_t slot, uint8_t* error);
uint8_t CALLBACK_CCID_Abort(uint8_t slot,
uint8_t seq,
uint8_t *error);
uint8_t CALLBACK_CCID_IccPowerOn(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const atr,
uint8_t* const atrSize,
uint8_t* const error);
uint8_t CALLBACK_CCID_IccPowerOff(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const error);
uint8_t CALLBACK_CCID_GetSlotStatus(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const error);
uint8_t CALLBACK_CCID_Abort(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t seq,
uint8_t* const error);
#endif
......@@ -31,7 +31,9 @@
#include "Iso7816.h"
void Iso7816_CreateSimpleAtr(uint8_t* attr, uint8_t* attrLength)
void Iso7816_CreateSimpleAtr(uint8_t* const attr,
uint8_t* const attrLength)
{
attr[0] = 0x3B; //TS: direct convention
......
......@@ -36,7 +36,9 @@
#include <avr/power.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <string.h>
/* Function Prototypes: */
void Iso7816_CreateSimpleAtr(uint8_t* attr, uint8_t* attrLength);
void Iso7816_CreateSimpleAtr(uint8_t* const attr,
uint8_t* const attrLength);
#endif
......@@ -197,9 +197,9 @@ void EVENT_USB_Device_ControlRequest(void)
* THe slot must reply back with a recognizable ATR (answer to reset)
*/
uint8_t CCID_IccPowerOn(uint8_t slot,
uint8_t* atr,
uint8_t* atrLength,
uint8_t* error)
uint8_t* const atr,
uint8_t* const atrLength,
uint8_t* const error)
{
if (slot == 0)
{
......@@ -219,7 +219,7 @@ uint8_t CCID_IccPowerOn(uint8_t slot,
* whenever an application at the host wants to send a power off signal to a slot.
*/
uint8_t CCID_IccPowerOff(uint8_t slot,
uint8_t* error)
uint8_t* const error)
{
if (slot == 0)
{
......@@ -238,7 +238,7 @@ uint8_t CCID_IccPowerOff(uint8_t slot,
* slot status.
*/
uint8_t CCID_GetSlotStatus(uint8_t slot,
uint8_t* error)
uint8_t* const error)
{
if (slot == 0)
{
......@@ -258,7 +258,7 @@ uint8_t CCID_GetSlotStatus(uint8_t slot,
*/
uint8_t CCID_Abort(uint8_t slot,
uint8_t seq,
uint8_t* error)
uint8_t* const error)
{
if (Aborted && slot == 0 && AbortedSeq == seq)
{
......@@ -283,7 +283,7 @@ uint8_t CCID_Abort(uint8_t slot,
}
/** Gets and status and verifies whether an error occurred. */
bool CCID_CheckStatusNoError(int status)
bool CCID_CheckStatusNoError(uint8_t status)
{
return (status & 0xC0) == 0x0;
}
......
......@@ -72,11 +72,18 @@
void SetupHardware(void);
void CCID_Task(void);
uint8_t CCID_IccPowerOn(uint8_t slot, uint8_t* attr, uint8_t* attrLength, uint8_t* error);
uint8_t CCID_IccPowerOff(uint8_t slot, uint8_t* error);
uint8_t CCID_GetSlotStatus(uint8_t slot, uint8_t* error);
uint8_t CCID_Abort(uint8_t slot, uint8_t seq, uint8_t* error);
bool CCID_CheckStatusNoError(int status);
uint8_t CCID_IccPowerOn(uint8_t slot,
uint8_t* const attr,
uint8_t* const attrLength,
uint8_t* const error);
uint8_t CCID_IccPowerOff(uint8_t slot,
uint8_t* const error);
uint8_t CCID_GetSlotStatus(uint8_t slot,
uint8_t* const error);
uint8_t CCID_Abort(uint8_t slot,
uint8_t seq,
uint8_t* const error);
bool CCID_CheckStatusNoError(uint8_t status);
void EVENT_USB_Device_Connect(void);
void EVENT_USB_Device_Disconnect(void);
......
......@@ -31,7 +31,8 @@
#include "Iso7816.h"
void Iso7816_CreateSimpleAtr(uint8_t* atr, uint8_t* atrLength)
void Iso7816_CreateSimpleAtr(uint8_t* const atr,
uint8_t* const atrLength)
{
atr[0] = 0x3B; // TS: direct convention
......
......@@ -38,8 +38,10 @@
#include <avr/power.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <string.h>
/* Function Prototypes: */
void Iso7816_CreateSimpleAtr(uint8_t* atr, uint8_t* atrLength);
void Iso7816_CreateSimpleAtr(uint8_t* const atr,
uint8_t* const atrLength);
#endif
......@@ -45,15 +45,14 @@
* \section Sec_USBClassCCID_Dependencies Module Source Dependencies
* The following files must be built with any user project that uses this module:
* - LUFA/Drivers/USB/Class/Device/CCIDClassDevice.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
* - LUFA/Drivers/USB/Class/Host/CCIDClassHost.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
*
* \section Sec_USBClassCCID_ModDescription Module Description
* CCID Class Driver module. This module contains an internal implementation of the USB CCID Class, for both Device
* and Host USB modes. User applications can use this class driver instead of implementing the CCID class manually
* via the low-level LUFA APIs.
* CCID Class Driver module. This module contains an internal implementation of the USB CCID Class, for Device USB
* mode. User applications can use this class driver instead of implementing the CCID class manually via the low-level
* LUFA APIs.
*
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
* Hosts or Devices using the USB CCID Class.
* Devices using the USB CCID Class.
*
* \warning
* LUFA is not a secure USB stack, and has not undergone, not is it expected to pass, any form of security audit. The
......
......@@ -233,7 +233,8 @@
uint8_t Status;
uint8_t Error;
uint8_t ProtocolNum;
union {
union
{
USB_CCID_ProtocolData_T0_t T0;
USB_CCID_ProtocolData_T1_t T1;
} ProtocolData;
......
......@@ -39,7 +39,7 @@
#include "CCIDClassDevice.h"
bool CCID_CheckStatusNoError(int status)
bool CCID_CheckStatusNoError(uint8_t status)
{
return (status & 0xC0) == 0x0;
}
......@@ -84,6 +84,7 @@ void CCID_Device_ProcessControlRequest(USB_ClassInfo_CCID_Device_t* const CCIDIn
break;
}
case CCID_GET_CLOCK_FREQUENCIES:
{
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
......@@ -95,6 +96,7 @@ void CCID_Device_ProcessControlRequest(USB_ClassInfo_CCID_Device_t* const CCIDIn
}
break;
}
case CCID_GET_DATA_RATES:
{
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
......@@ -154,7 +156,7 @@ void CCID_Device_USBTask(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo)
ResponseATR->CCIDHeader.Seq = CCIDHeader.Seq;
ResponseATR->ChainParam = 0;
Status = CALLBACK_CCID_IccPowerOn(ResponseATR->CCIDHeader.Slot, (uint8_t*)ResponseATR->Data, &AtrLength, &Error);
Status = CALLBACK_CCID_IccPowerOn(CCIDInterfaceInfo, ResponseATR->CCIDHeader.Slot, (uint8_t*)ResponseATR->Data, &AtrLength, &Error);
if (CCID_CheckStatusNoError(Status) && !CCIDInterfaceInfo->State.Aborted)
{
......@@ -192,7 +194,7 @@ void CCID_Device_USBTask(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo)
ResponsePowerOff->ClockStatus = 0;
Status = CALLBACK_CCID_IccPowerOff(CCIDHeader.Slot, &Error);
Status = CALLBACK_CCID_IccPowerOff(CCIDInterfaceInfo, CCIDHeader.Slot, &Error);
ResponsePowerOff->Status = Status;
ResponsePowerOff->Error = Error;
......@@ -215,7 +217,7 @@ void CCID_Device_USBTask(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo)
ResponseSlotStatus->ClockStatus = 0;
Status = CALLBACK_CCID_GetSlotStatus(CCIDHeader.Slot, &Error);
Status = CALLBACK_CCID_GetSlotStatus(CCIDInterfaceInfo, CCIDHeader.Slot, &Error);
ResponseSlotStatus->Status = Status;
ResponseSlotStatus->Error = Error;
......@@ -238,7 +240,7 @@ void CCID_Device_USBTask(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo)
ResponseAbort->ClockStatus = 0;
Status = CALLBACK_CCID_Abort(CCIDHeader.Slot, CCIDHeader.Seq, &Error);
Status = CALLBACK_CCID_Abort(CCIDInterfaceInfo, CCIDHeader.Slot, CCIDHeader.Seq, &Error);
ResponseAbort->Status = Status;
ResponseAbort->Error = Error;
......@@ -250,6 +252,7 @@ void CCID_Device_USBTask(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo)
Endpoint_ClearIN();
break;
}
default:
{
memset(BlockBuffer, 0x00, sizeof(BlockBuffer));
......
......@@ -115,46 +115,61 @@
* 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,
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,
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(uint8_t slot, uint8_t* error);
uint8_t CALLBACK_CCID_GetSlotStatus(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
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,
uint8_t slot,
uint8_t seq,
uint8_t* const error) ATTR_NON_NULL_PTR_ARG(1);
#endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment