9F39

 avatar
unknown
c_cpp
11 days ago
1.7 kB
3
Indexable
int setCtlsEntryMode(uchar ucPathType, ushort* uiSubEntryMode, unsigned char ucKenrType)
{
	int iRet = OK_RESULT;
	unsigned char data[10]; int datalen = 0;
	memset(data, 0, sizeof(data));

	iRet= Clss_GetTLVData(0x9F39, data, &datalen, ucKenrType);
	//iRet= EMVGetTLVData(0x9F39, data, &datalen);
	
	if (iRet == OK_RESULT)
	{
		if (memcmp(data, "0x07", datalen) == 0)
		{
			(*uiSubEntryMode) = MODE_CONTACTLESS_EMV;
		}
		else if (memcmp(data, "0x91", datalen) == 0)
		{
			(*uiSubEntryMode) = MODE_CONTACTLESS_MSD;

			if (
				ucPathType == CLSS_VISA_MSD ||
				ucPathType == CLSS_VISA_MSD_CVN17 ||
				ucPathType == CLSS_VISA_MSD_LEGACY ||
				ucPathType == CLSS_MC_MAG ||
				ucPathType == CLSS_JCB_MAG ||
				ucPathType == CLSS_JCB_LEGACY ||
				ucPathType == CLSS_DPAS_MAG ||
				ucPathType == CLSS_DPAS_ZIP
				)
			{
				return ERROR_MCM_NO_SUPPORTED;
			}
		}
		else
		{
			(*uiSubEntryMode) = MODE_CONTACTLESS_EMV;
		}
	}
	else
	{
		switch (ucPathType)
		{
			case CLSS_VISA_MSD :
			case CLSS_VISA_MSD_CVN17:
			case CLSS_VISA_MSD_LEGACY:
			case CLSS_MC_MAG :
			case CLSS_JCB_MAG:
			case CLSS_JCB_LEGACY:
			case CLSS_DPAS_MAG:
			case CLSS_DPAS_ZIP:
				(*uiSubEntryMode) = MODE_CONTACTLESS_MSD;
				return ERROR_MCM_NO_SUPPORTED;
				break;
			case CLSS_VISA_CONTACT:
			case CLSS_VISA_QVSDC:
			case CLSS_VISA_VSDC:
			case CLSS_VISA_WAVE2:
			case CLSS_MC_MCHIP:
			case CLSS_JCB_EMV:
			case CLSS_JCB_WAVE2:
			case CLSS_DPAS_EMV:
				(*uiSubEntryMode) = MODE_CONTACTLESS_EMV;
				break;
			default:
				(*uiSubEntryMode) = MODE_CONTACTLESS_EMV;
				break;
		}
	}
	return iRet;
}
Leave a Comment