Skip to content
Snippets Groups Projects
Commit bc57f4ea authored by Dean Camera's avatar Dean Camera
Browse files

Reformatting and add const qualifiers.

parent 8e590e6c
No related branches found
No related tags found
No related merge requests found
......@@ -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 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 *error);
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
* \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 uint8_t The command result
* \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
* \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 uint8_t The command result
* \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
* \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 uint8_t The command result
* \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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment