static int CecSendMessage ( char opCode, char dest ) { CEC_FrameData_t cecFrame; cecFrame.opcode = opCode; cecFrame.srcDestAddr = MAKE_SRCDEST( Cec.address_logic, dest ); cecFrame.argCount = 0; return CecSendFrame( &cecFrame ); }
/** * Cbus RAP operation: RAP error process * * * @param[in] channel Cbus channel, always 0 in SiI1292 * @param[in] rapStatusCode including Unrecognized Action Code, Unsupported Action Code, responder busy * * @return Result * *****************************************************************************/ bool_t SI_RapErrProcess(uint8_t channel, uint8_t rapStatusCode) { #ifdef CONFIG_MHL_SII1292_CEC SI_CpiData_t cecFrame; #endif uint8_t retry; switch (rapStatusCode) { case RAP_UNRECOGNIZED: case RAP_UNSUPPORTED: #ifdef SUPPORT_MSCMSG_IGNORE_LIST //add to ignore list SI_CbusOQCleanActiveReq(channel); if (rapStatusCode == MHL_RAP_CMD_CONTENT_ON) SI_CbusPushKeytoIgnoreList(channel, MHL_RAP_CMD_CONTENT_ON_IREG, CBUS_OUT); if (rapStatusCode == MHL_RAP_CMD_CONTENT_OFF) SI_CbusPushKeytoIgnoreList(channel, MHL_RAP_CMD_CONTENT_OFF_IREG, CBUS_OUT); #endif #if defined(CONFIG_MHL_SII1292_CEC) //feature abort cecFrame.opcode = CECOP_FEATURE_ABORT; cecFrame.srcDestAddr = MAKE_SRCDEST( g_cecAddress, CEC_LOGADDR_TV ); cecFrame.args[0] = rapStatusCode; cecFrame.args[1] = CECAR_UNRECOG_OPCODE; cecFrame.argCount = 2; SI_CpiWrite( &cecFrame ); #endif break; case RAP_BUSY: retry = SI_CbusOQReqRetry(channel); if (retry > 0) { SI_CbusOQReduceReqRetry(channel); SI_CbusOQSetReqStatus(channel, CBUS_REQ_PENDING); } else if (retry == 0) { SI_CbusOQCleanActiveReq(channel); } break; } return SUCCESS; }