Commit 2a057a72 authored by Dean Camera's avatar Dean Camera
Browse files

Clean up CCID class driver and associated demos.

parent f1b06c5b
......@@ -169,9 +169,11 @@ uint8_t CALLBACK_CCID_IccPowerOn(USB_ClassInfo_CCID_Device_t* const CCIDInterfac
*error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
*error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
/** Event handler for the CCID_PC_to_RDR_IccPowerOff message. This message is sent to the device
......@@ -208,59 +210,56 @@ uint8_t CALLBACK_CCID_GetSlotStatus(USB_ClassInfo_CCID_Device_t* const CCIDInter
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
/** Event handler for the CCID_PC_to_RDR_SetParameters when T=0. This message is sent to
* the device whenever an application at the host wants to set the
* parameters for a given slot.
* the device whenever an application at the host wants to set the parameters for a
* given slot.
*/
uint8_t CALLBACK_CCID_SetParameters_T0(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const error,
USB_CCID_ProtocolData_T0_t* const t0)
uint8_t Slot,
uint8_t* const Error,
USB_CCID_ProtocolData_T0_t* const T0)
{
if (slot == 0)
if (Slot == 0)
{
//set parameters
memcpy(&CCIDInterfaceInfo->ProtocolData, t0, sizeof(USB_CCID_ProtocolData_T0_t));
*error = CCID_ERROR_NO_ERROR;
// Set parameters
memcpy(&CCIDInterfaceInfo->ProtocolData, T0, sizeof(USB_CCID_ProtocolData_T0_t));
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
/** Event handler for the CCID_PC_to_RDR_GetParameters when T=0. This message is sent to
* the device whenever an application at the host wants to get the current
* parameters for a given slot.
* the device whenever an application at the host wants to get the current parameters for
* a given slot.
*/
uint8_t CALLBACK_CCID_GetParameters_T0(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const error,
uint8_t Slot,
uint8_t* const Error,
uint8_t* const ProtocolNum,
USB_CCID_ProtocolData_T0_t* const t0)
USB_CCID_ProtocolData_T0_t* const T0)
{
if (slot == 0)
if (Slot == 0)
{
*ProtocolNum = CCID_PROTOCOLNUM_T0;
memcpy(t0, &CCIDInterfaceInfo->ProtocolData, sizeof(USB_CCID_ProtocolData_T0_t));
*ProtocolNum = CCID_PROTOCOLNUM_T0;
memcpy(T0, &CCIDInterfaceInfo->ProtocolData, sizeof(USB_CCID_ProtocolData_T0_t));
*error = CCID_ERROR_NO_ERROR;
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
......@@ -270,54 +269,56 @@ uint8_t CALLBACK_CCID_GetParameters_T0(USB_ClassInfo_CCID_Device_t* const CCIDIn
* THe device reply back with an array of bytes
*/
uint8_t CALLBACK_CCID_XfrBlock(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t* const receivedBuffer,
uint8_t receivedBufferSize,
uint8_t* const sendBuffer,
uint8_t* const sentBufferSize,
uint8_t* const error)
uint8_t Slot,
uint8_t* const ReceivedBuffer,
uint8_t ReceivedBufferSize,
uint8_t* const SendBuffer,
uint8_t* const SentBufferSize,
uint8_t* const Error)
{
if (slot < CCID_Interface.Config.TotalSlots)
if (Slot < CCID_Interface.Config.TotalSlots)
{
uint8_t okResponse[2] = {0x90, 0x00};
memcpy(sendBuffer, okResponse, sizeof(okResponse));
*sentBufferSize = sizeof(okResponse);
uint8_t OkResponse[2] = {0x90, 0x00};
*error = CCID_ERROR_NO_ERROR;
memcpy(SendBuffer, OkResponse, sizeof(OkResponse));
*SentBufferSize = sizeof(OkResponse);
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_NOICCPRESENT;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
uint8_t CALLBACK_CCID_Abort(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo,
uint8_t slot,
uint8_t seq,
uint8_t* const error)
uint8_t Slot,
uint8_t Seq,
uint8_t* const Error)
{
if (CCID_Interface.State.Aborted && slot == 0 && CCID_Interface.State.AbortedSeq == seq)
if (CCID_Interface.State.Aborted && Slot == 0 && CCID_Interface.State.AbortedSeq == Seq)
{
CCID_Interface.State.Aborted = false;
CCID_Interface.State.AbortedSeq = -1;
*error = CCID_ERROR_NO_ERROR;
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else if (!CCID_Interface.State.Aborted)
{
*error = CCID_ERROR_CMD_NOT_ABORTED;
*Error = CCID_ERROR_CMD_NOT_ABORTED;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else if (slot != 0)
else if (Slot != 0)
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
else
{
*error = CCID_ERROR_NOT_SUPPORTED;
*Error = CCID_ERROR_NOT_SUPPORTED;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
......@@ -52,21 +52,21 @@
static bool Aborted;
static uint8_t AbortedSeq;
static USB_CCID_ProtocolData_T0_t ProtocolData;
static USB_CCID_ProtocolData_T0_t ProtocolData =
{
.FindexDindex = 0x11,
.TCCKST0 = 0x00,
.GuardTimeT0 = 0x00,
.WaitingIntegerT0 = 0x0A,
.ClockStop = 0x00,
};
/** Main program entry point. This routine configures the hardware required by the application, then
* enters a loop to run the application tasks in sequence.
*/
int main(void)
{
ProtocolData.FindexDindex = 0x11;
ProtocolData.TCCKST0 = 0x00;
ProtocolData.GuardTimeT0 = 0x00;
ProtocolData.WaitingIntegerT0 = 0x0A;
ProtocolData.ClockStop = 0x00;
SetupHardware();
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
......@@ -175,6 +175,7 @@ void EVENT_USB_Device_ControlRequest(void)
break;
}
case CCID_GET_CLOCK_FREQUENCIES:
{
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
......@@ -186,6 +187,7 @@ void EVENT_USB_Device_ControlRequest(void)
break;
}
case CCID_GET_DATA_RATES:
{
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
......@@ -204,21 +206,21 @@ 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 CCID_IccPowerOn(uint8_t slot,
uint8_t* const atr,
uint8_t* const atrLength,
uint8_t* const error)
uint8_t CCID_IccPowerOn(uint8_t Slot,
uint8_t* const Atr,
uint8_t* const AtrLength,
uint8_t* const Error)
{
if (slot == 0)
if (Slot == 0)
{
Iso7816_CreateSimpleAtr(atr, atrLength);
Iso7816_CreateSimpleAtr(Atr, AtrLength);
*error = CCID_ERROR_NO_ERROR;
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
......@@ -226,17 +228,17 @@ uint8_t 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 CCID_IccPowerOff(uint8_t slot,
uint8_t* const error)
uint8_t CCID_IccPowerOff(uint8_t Slot,
uint8_t* const Error)
{
if (slot == 0)
if (Slot == 0)
{
*error = CCID_ERROR_NO_ERROR;
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_NOICCPRESENT;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
......@@ -245,65 +247,65 @@ uint8_t CCID_IccPowerOff(uint8_t slot,
* the device whenever an application at the host wants to get the current
* slot status.
*/
uint8_t CCID_GetSlotStatus(uint8_t slot,
uint8_t* const error)
uint8_t CCID_GetSlotStatus(uint8_t Slot,
uint8_t* const Error)
{
if (slot == 0)
if (Slot == 0)
{
*error = CCID_ERROR_NO_ERROR;
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
/** Event handler for the CCID_PC_to_RDR_SetParameters when T=0. This message is sent to
* the device whenever an application at the host wants to set the
* parameters for a given slot.
*/
uint8_t CCID_SetParameters_T0(uint8_t slot,
uint8_t* const error,
USB_CCID_ProtocolData_T0_t* const t0)
uint8_t CCID_SetParameters_T0(uint8_t Slot,
uint8_t* const Error,
USB_CCID_ProtocolData_T0_t* const T0)
{
if (slot == 0)
if (Slot == 0)
{
//set parameters
memcpy(&ProtocolData, t0, sizeof(USB_CCID_ProtocolData_T0_t));
*error = CCID_ERROR_NO_ERROR;
// Set parameters
memcpy(&ProtocolData, T0, sizeof(USB_CCID_ProtocolData_T0_t));
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
/** Event handler for the CCID_PC_to_RDR_GetParameters when T=0. This message is sent to
* the device whenever an application at the host wants to get the current
* parameters for a given slot.
*/
uint8_t CCID_GetParameters_T0(uint8_t slot,
uint8_t* const error,
uint8_t* ProtocolNum,
USB_CCID_ProtocolData_T0_t* const t0)
uint8_t CCID_GetParameters_T0(uint8_t Slot,
uint8_t* const Error,
uint8_t* ProtocolNum,
USB_CCID_ProtocolData_T0_t* const T0)
{
if (slot == 0)
if (Slot == 0)
{
*ProtocolNum = CCID_PROTOCOLNUM_T0;
memcpy(t0, &ProtocolData, sizeof(USB_CCID_ProtocolData_T0_t));
*ProtocolNum = CCID_PROTOCOLNUM_T0;
memcpy(T0, &ProtocolData, sizeof(USB_CCID_ProtocolData_T0_t));
*error = CCID_ERROR_NO_ERROR;
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
......@@ -312,25 +314,26 @@ uint8_t CCID_GetParameters_T0(uint8_t slot,
* whenever an application at the host wants to send a block of bytes to the device
* THe device reply back with an array of bytes
*/
uint8_t CCID_XfrBlock(uint8_t slot,
uint8_t* const receivedBuffer,
uint8_t receivedBufferSize,
uint8_t* const sendBuffer,
uint8_t* const sentBufferSize,
uint8_t* const error)
uint8_t CCID_XfrBlock(uint8_t Slot,
uint8_t* const ReceivedBuffer,
uint8_t ReceivedBufferSize,
uint8_t* const SendBuffer,
uint8_t* const SentBufferSize,
uint8_t* const Error)
{
if (slot == 0)
if (Slot == 0)
{
uint8_t okResponse[2] = {0x90, 0x00};
memcpy(sendBuffer, okResponse, sizeof(okResponse));
*sentBufferSize = sizeof(okResponse);
uint8_t OkResponse[2] = {0x90, 0x00};
*error = CCID_ERROR_NO_ERROR;
memcpy(SendBuffer, OkResponse, sizeof(OkResponse));
*SentBufferSize = sizeof(OkResponse);
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_NOICCPRESENT;
}
else
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
}
......@@ -339,36 +342,37 @@ uint8_t CCID_XfrBlock(uint8_t slot,
* whenever an application wants to abort the current operation. A previous CCID_ABORT
* control message has to be sent before this one in order to start the abort operation.
*/
uint8_t CCID_Abort(uint8_t slot,
uint8_t seq,
uint8_t* const error)
uint8_t CCID_Abort(uint8_t Slot,
uint8_t Seq,
uint8_t* const Error)
{
if (Aborted && slot == 0 && AbortedSeq == seq)
if (Aborted && Slot == 0 && AbortedSeq == Seq)
{
Aborted = false;
Aborted = false;
AbortedSeq = -1;
*error = CCID_ERROR_NO_ERROR;
*Error = CCID_ERROR_NO_ERROR;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else if (!Aborted)
{
*error = CCID_ERROR_CMD_NOT_ABORTED;
*Error = CCID_ERROR_CMD_NOT_ABORTED;
return CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
else if (slot != 0)
else if (Slot != 0)
{
*error = CCID_ERROR_SLOT_NOT_FOUND;
*Error = CCID_ERROR_SLOT_NOT_FOUND;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
*error = CCID_ERROR_NOT_SUPPORTED;
*Error = CCID_ERROR_NOT_SUPPORTED;
return CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_NOICCPRESENT;
}
/** Gets and status and verifies whether an error occurred. */
bool CCID_CheckStatusNoError(uint8_t status)
bool CCID_CheckStatusNoError(uint8_t Status)
{
return (status & 0xC0) == 0x0;
return (Status & 0xC0) == 0x0;
}
/** Function to manage CCID request parsing and responses back to the host. */
......@@ -477,6 +481,7 @@ void CCID_Task(void)
Endpoint_ClearIN();
break;
}
case CCID_PC_to_RDR_SetParameters:
{
uint8_t ProtocolNum = Endpoint_Read_8();
......@@ -490,14 +495,14 @@ void CCID_Task(void)
ResponseParametersStatus->CCIDHeader.Slot = CCIDHeader.Slot;
ResponseParametersStatus->CCIDHeader.Seq = CCIDHeader.Seq;
if(ProtocolNum == CCID_PROTOCOLNUM_T0)
if (ProtocolNum == CCID_PROTOCOLNUM_T0)
{
if(CCIDHeader.Length * sizeof(uint8_t) == sizeof(USB_CCID_ProtocolData_T0_t))
if ((CCIDHeader.Length * sizeof(uint8_t)) == sizeof(USB_CCID_ProtocolData_T0_t))
{
Endpoint_Read_Stream_LE(RequestBuffer, CCIDHeader.Length * sizeof(uint8_t), NULL);
Status = CCID_SetParameters_T0(CCIDHeader.Slot, &Error, (USB_CCID_ProtocolData_T0_t*) RequestBuffer);
if(CCID_CheckStatusNoError(Status))
Status = CCID_SetParameters_T0(CCIDHeader.Slot, &Error, (USB_CCID_ProtocolData_T0_t*)RequestBuffer);
if (CCID_CheckStatusNoError(Status))
{
ResponseParametersStatus->CCIDHeader.Length = CCIDHeader.Length;
Status = CCID_GetParameters_T0(CCIDHeader.Slot, &Error, &ResponseParametersStatus->ProtocolNum, (USB_CCID_ProtocolData_T0_t*) &ResponseParametersStatus->ProtocolData);
......@@ -505,15 +510,16 @@ void CCID_Task(void)
}
else
{
//unexpected length
// Unexpected length
Status = CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
}
else
{
ResponseParametersStatus->ProtocolNum = CCID_PROTOCOLNUM_T0;
//for now, we don't support T=1 protocol
Error = CCID_ERROR_PARAMETERS_PROTOCOL_NOT_SUPPORTED;
// For now, we don't support T=1 protocol
Error = CCID_ERROR_PARAMETERS_PROTOCOL_NOT_SUPPORTED;
Status = CCID_COMMANDSTATUS_ERROR | CCID_ICCSTATUS_PRESENTANDACTIVE;
}
......@@ -523,10 +529,11 @@ void CCID_Task(void)
Endpoint_ClearOUT();
Endpoint_SelectEndpoint(CCID_IN_EPADDR);
Endpoint_Write_Stream_LE(ResponseParametersStatus, sizeof(USB_CCID_BulkMessage_Header_t) + 3 + ResponseParametersStatus->CCIDHeader.Length , NULL);
Endpoint_Write_Stream_LE(ResponseParametersStatus, sizeof(USB_CCID_BulkMessage_Header_t) + 3 + ResponseParametersStatus->CCIDHeader.Length, NULL);
Endpoint_ClearIN();
break;
}
case CCID_PC_to_RDR_GetParameters:
{
USB_CCID_RDR_to_PC_Parameters_t* ResponseParametersStatus = (USB_CCID_RDR_to_PC_Parameters_t*)&ResponseBuffer;
......@@ -543,10 +550,11 @@ void CCID_Task(void)
Endpoint_ClearOUT();
Endpoint_SelectEndpoint(CCID_IN_EPADDR);
Endpoint_Write_Stream_LE(ResponseParametersStatus, sizeof(USB_CCID_BulkMessage_Header_t) + 3 + ResponseParametersStatus->CCIDHeader.Length , NULL);
Endpoint_Write_Stream_LE(ResponseParametersStatus, sizeof(USB_CCID_BulkMessage_Header_t) + 3 + ResponseParametersStatus->CCIDHeader.Length, NULL);
Endpoint_ClearIN();
break;
}
case CCID_PC_to_RDR_XfrBlock:
{
uint8_t Bwi = Endpoint_Read_8();
......@@ -575,7 +583,7 @@ void CCID_Task(void)
else if (Aborted)
{
Status = CCID_COMMANDSTATUS_FAILED | CCID_ICCSTATUS_PRESENTANDACTIVE;
Error = CCID_ERROR_CMD_ABORTED;
Error = CCID_ERROR_CMD_ABORTED;
ResponseDataLength = 0;
}
else
......@@ -616,6 +624,7 @@ void CCID_Task(void)
Endpoint_ClearIN();
break;
}
default:
{
memset(ResponseBuffer, 0x00, sizeof(ResponseBuffer));
......
......@@ -65,39 +65,39 @@
#endif
/* Macros: */
#define CCID_CURRENT_SPEC_RELEASE_NUMBER 0x0110
#define CCID_VOLTAGESUPPORT_5V 0
#define CCID_VOLTAGESUPPORT_3V (1 << 0)
#define CCID_VOLTAGESUPPORT_1V8 (1 << 1)
#define CCID_CURRENT_SPEC_RELEASE_NUMBER 0x0110
#define CCID_VOLTAGESUPPORT_5V 0
#define CCID_VOLTAGESUPPORT_3V (1 << 0)
#define CCID_VOLTAGESUPPORT_1V8 (1 << 1)
#define CCID_PROTOCOLS_T0 (1 << 0)
#define CCID_PROTOCOLS_T1 (1 << 1)
#define CCID_PROTOCOLS_T0 (1 << 0)
#define CCID_PROTOCOLS_T1 (1 << 1)
#define CCID_PROTOCOLNUM_T0 0
#define CCID_PROTOCOLNUM_T1 (1 << 0)
#define CCID_PROTOCOLNUM_T0 0
#define CCID_PROTOCOLNUM_T1 (1 << 0)
#define CCID_ICCSTATUS_PRESENTANDACTIVE 0
#define CCID_ICCSTATUS_PRESENTANDINACTIVE (1 << 0)
#define CCID_ICCSTATUS_NOICCPRESENT (1 << 1)
#define CCID_ICCSTATUS_PRESENTANDACTIVE 0
#define CCID_ICCSTATUS_PRESENTANDINACTIVE (1 << 0)
#define CCID_ICCSTATUS_NOICCPRESENT (1 << 1)
#define CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR 0
#define CCID_COMMANDSTATUS_ERROR 1
#define CCID_COMMANDSTATUS_FAILED (1 << 6)
#define CCID_COMMANDSTATUS_TIMEEXTENSIONREQUESTED (2 << 6)
#define CCID_COMMANDSTATUS_RFU (3 << 6)
#define CCID_COMMANDSTATUS_PROCESSEDWITHOUTERROR 0
#define CCID_COMMANDSTATUS_ERROR 1
#define CCID_COMMANDSTATUS_FAILED (1 << 6)
#define CCID_COMMANDSTATUS_TIMEEXTENSIONREQUESTED (2 << 6)
#define CCID_COMMANDSTATUS_RFU (3 << 6)
#define CCID_ERROR_RFU_START 0x80
#define CCID_ERROR_NO_ERROR 0x80
#define CCID_ERROR_NOT_SUPPORTED 0
#define CCID_ERROR_CMD_ABORTED 0xFF
#define CCID_ERROR_CMD_NOT_ABORTED 0xFF
#define CCID_ERROR_RFU_START 0x80
#define CCID_ERROR_NO_ERROR 0x80
#define CCID_ERROR_NOT_SUPPORTED 0
#define CCID_ERROR_CMD_ABORTED 0xFF
#define CCID_ERROR_CMD_NOT_ABORTED 0xFF
#define CCID_ERROR_PARAMETERS_PROTOCOL_NOT_SUPPORTED 0x7
#define CCID_ERROR_PARAMETERS_PROTOCOL_NOT_SUPPORTED 0x7
#define CCID_ERROR_SLOT_NOT_FOUND 5
#define CCID_ERROR_SLOT_NOT_FOUND 5
#define CCID_DESCRIPTOR_CLOCK_KHZ(khz) (khz)
#define CCID_DESCRIPTOR_CLOCK_MHZ(mhz) ((mhz) * 1000)
#define CCID_DESCRIPTOR_CLOCK_KHZ(khz) (khz)
#define CCID_DESCRIPTOR_CLOCK_MHZ(mhz) ((mhz) * 1000)
/* Enums: */
......
......@@ -39,9 +39,9 @@
#include "CCIDClassDevice.h"
bool CCID_CheckStatusNoError(uint8_t status)
bool CCID_CheckStatusNoError(uint8_t Status)
{
return (status & 0xC0) == 0x0;
return (Status & 0xC0) == 0x0;
}
void CCID_Device_ProcessControlRequest(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo)
......@@ -113,7 +113,7 @@ void CCID_Device_ProcessControlRequest(USB_ClassInfo_CCID_Device_t* const CCIDIn
bool CCID_Device_ConfigureEndpoints(USB_ClassInfo_CCID_Device_t* const CCIDInterfaceInfo)
{
CCIDInterfaceInfo