int main(int argc, const char** argv) { NFC_REQ req; memset(&req, 0, sizeof(NFC_REQ)); META_NFC_Register(nfc_info_callback); if (META_NFC_init() != 0) { META_LOG("META_NFC_init Failure\n"); return -1; } sleep(1); nfc_cnf.header.id = FT_NFC_CNF_ID; nfc_cnf.header.token = req->header.token; nfc_cnf.op = req->op; req.cmd.m_setting_req.debug_enable = 1; req.cmd.m_setting_req.get_capabilities = 1; req.cmd.m_setting_req.nfc_enable = 1; req.cmd.m_setting_req.sw_protocol = 1; req.header.id = 1; req.header.token = 1; req.op = NFC_OP_SETTING; META_NFC_OP(&req, NULL, 0); sleep(10); META_NFC_OP(&req, NULL, 0); sleep(1); META_NFC_deinit(); META_NFC_Register(NULL); return 0; }
int CMetaNfc::SendCommand(NFC_REQ *req, char *peer_buff, unsigned short peer_len, /*IN OUT*/NFC_CNF* resp) { LOGD("CMetaNfc::SendCommand, CMD=%d, NFC_OP_END=%d", req->op, NFC_OP_END); int idx = getOPIdx(req->op); mNewObjectLock->Lock(); LOGD("CMetaNfc::SendCommand locked"); if (respMap[idx] == 0) { LOGD("CMetaNfc::SendCommand new SyncedElement"); respMap[idx] = new SyncedElement(); } mNewObjectLock->Unlock(); LOGD("CMetaNfc::SendCommand unlocked"); respMap[idx]->TransferLock(); LOGD("CMetaNfc::SendCommand TransferLocked"); respMap[idx]->isReqSent = true; META_NFC_OP(req, peer_buff, peer_len); LOGD("META_NFC_OP() returned"); if (!respMap[idx]->TimedWait(50000))//wait for 50000sec, remove timeout { //timeout LOGE("META_NFC_OP 50000 Seconds TimeOut."); resp->status = RESULT_STATUS_TIMEOUT; respMap[idx]->isReqSent = false; respMap[idx]->TransferUnLock(); return ERR_TIMEOUT; } else { memcpy(resp, respMap[idx]->resp, sizeof(NFC_CNF)); } LOGD("META_NFC_OP() Sync returned"); respMap[idx]->isReqSent = false; respMap[idx]->TransferUnLock(); LOGD("CMetaNfc::SendCommand Transfer UnLocked"); return ERR_OK; }