⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acp.c

📁 本程序为ST公司开发的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*************************** ACP TASK FUNCTIONS ****************************//* Command *//******************************************************************************//* Function:  get_acp_cmd_event_data                                          *//*                                                                            *//*! \brief    ACP_CMD_EVENT data*             *  \param    *  \return    pointer to the acp command event*  \remark*******************************************************************************/t_acp_cmd_event acp_cmd_event[EVENT_MAX_STAGES];void* get_acp_cmd_event_data(t_event_stage i){  return (void*)&acp_cmd_event[i];}/******************************************************************************//* Function:  acp_command                                                     *//*                                                                            *//*! \brief    PLAYER task sends command to the ACP task*             *  \param     t_acp_cmd_event* acp_cmd*  \return*  \remark*******************************************************************************/void acp_command(t_acp_cmd_event* acp_cmd){  t_acp_cmd_event* pout_event;    pout_event = (t_acp_cmd_event *)pevent_get_out(ACP_CMD_EVENT);  *pout_event = *acp_cmd;  event_set_out(ACP_CMD_EVENT);     //priority dependent (semaphore signal immediatelly)  event_out_shedule(ACP_CMD_EVENT);  //event_cmd_set(ACP_CMD_EVENT);       //independent from priorities}/* Status *//******************************************************************************//* Function:  get_acp_status_event_data                                       *//*                                                                            *//*! \brief    ACP_STATUS_EVENT data*             *  \param    *  \return    pointer to the acp status event*  \remark*******************************************************************************/t_acp_status_event acp_status_event[EVENT_MAX_STAGES];void * get_acp_status_event_data(t_event_stage i){  return (void *)&acp_status_event[i];}/******************************************************************************//* Function:  acp_status                                                      *//*                                                                            *//*! \brief    ACP task sends status to the PLAYER task*             *  \param     t_acp_status_event* acp_stat*  \return*  \remark*******************************************************************************/void acp_status(t_acp_status_event* acp_stat){  t_acp_status_event *pout_event;    pout_event = (t_acp_status_event *)pevent_get_out(ACP_STATUS_EVENT);  *pout_event = *acp_stat;  event_set_out(ACP_STATUS_EVENT);     //priority dependent (semaphore signal immediatelly)  event_out_shedule(ACP_STATUS_EVENT);  //event_cmd_set(ACP_STATUS_EVENT);       //independent from priorities}/******************************************************************************//* Function:  ACPTask                                                         *//*                                                                            *//*! \brief    own ACP Task*  \param*  \return*  \remark    no Authentication Coprocessor communication yet*******************************************************************************/void ACPTask(void *unused){	//TBD	//t_acp_state status;	//TBD	//status = ACP_Init();	//if (status == ACP_OK)	{		while (1)		{			OSAL_wait_thread(OSAL_THREAD_ACPTask);			/* in scheduling */			event_disable_scheduling();			event_in_shedule(ACP_CMD_EVENT);			event_enable_scheduling();			acp_handler();			/* out scheduling */			event_disable_scheduling();			event_in_clear(ACP_CMD_EVENT);//			event_out_shedule(ACP_STATUS_EVENT);			event_enable_scheduling();      		}	}	//else	//{	//	DBG_PRINTF("usb: *E - USB_Init() failed\r\n");			//}}/******************************************************************************//* Function:  acp_handler                                                     *//*                                                                            *//*! \brief    acp task handler*             *  \param*  \return*  \remark    simulation of the Authentication Coprocessor*******************************************************************************/void acp_handler(void){	t_acp_cmd_event acp_cmd;	t_acp_status_event acp_stat;	//TBD	acp_stat.pData = gAcpBuffer;	if (EVENT_ACP_IS_CMD)	{		tAcpInitInfo* pInitInfo = (tAcpInitInfo*)(acp_stat.pData);		tAcpCertPageStatusData* pPageData = (tAcpCertPageStatusData*)(acp_stat.pData);		acp_cmd = EVENT_ACP_CMD;		switch(acp_cmd.Cmd)		{		case ACP_CMD_INIT:	/* 0 */			acp_stat.Error = ACP_OK;			acp_stat.ReplyStatusTo = acp_cmd.Cmd;			pInitInfo->pBuffer = gAcpBuffer;			pInitInfo->BufferLength = sizeof(gAcpBuffer);			gAcpPageNumIndex = 0;			acp_status(&acp_stat);			break;		case ACP_CMD_GET_INFO:		/* 1 */			acp_stat.Error = ACP_OK;			acp_stat.ReplyStatusTo = acp_cmd.Cmd;			memcpy(acp_stat.pData, M_ACP_INFO, sizeof(M_ACP_INFO));			//acp_stat.pData = M_ACP_INFO;			acp_status(&acp_stat);			break;		case ACP_CMD_GET_PAGE:		/* 2 */			acp_stat.Error = ACP_OK;			acp_stat.ReplyStatusTo = acp_cmd.Cmd;			//switch((tAcpPageCmdData)*(acp_cmd.pData))			switch(gAcpPageNumIndex++)			{			case 0:				pPageData->PageNum = 0;				pPageData->PageLen = 128;				memcpy(&(pPageData->PageData), Page81, sizeof(Page81));				break;			case 1:				pPageData->PageNum = 1;				pPageData->PageLen = 128;				memcpy(&(pPageData->PageData), Page82, sizeof(Page82));				break;			case 2:				pPageData->PageNum = 2;				pPageData->PageLen = 128;				memcpy(&(pPageData->PageData), Page83, sizeof(Page83));				break;			case 3:				pPageData->PageNum = 3;				pPageData->PageLen = 128;				memcpy(&(pPageData->PageData), Page84, sizeof(Page84));				break;			case 4:				pPageData->PageNum = 4;				pPageData->PageLen = 128;				memcpy(&(pPageData->PageData), Page85, sizeof(Page85));				break;			case 5:				pPageData->PageNum = 5;				pPageData->PageLen = 128;				memcpy(&(pPageData->PageData), Page86, sizeof(Page86));				break;			case 6:				pPageData->PageNum = 6;				pPageData->PageLen = 128;				memcpy(&(pPageData->PageData), Page87, sizeof(Page87));				break;			case 7:				pPageData->PageNum = 7;				pPageData->PageLen = 49;				memcpy(&(pPageData->PageData), Page88, sizeof(Page88));				gAcpPageNumIndex = 0;				break;			default:				acp_stat.Error = E_ACP;				gAcpPageNumIndex = 0;				break;			}			acp_status(&acp_stat);			break;		case ACP_CMD_GET_SIGNATURE:	/* 3 */			acp_stat.Error = E_ACP;			acp_stat.ReplyStatusTo = acp_cmd.Cmd;			//acp_status(&acp_stat);	//TBD - DO not FORGET to enable!			break;		default:			DBG_PRINTF("acp: *E - handler: unknown cmd\r\n");			break;		}	}}#endif /*IPOD_AP*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -