/******************************************************************************* ** ** Function: nativeLlcpConnectionlessSocket_doSendTo ** ** Description: Send data to peer. ** e: JVM environment. ** o: Java object. ** nsap: service access point. ** data: buffer for data. ** ** Returns: True if ok. ** *******************************************************************************/ static jboolean nativeLlcpConnectionlessSocket_doSendTo (JNIEnv *e, jobject o, jint nsap, jbyteArray data) { ALOGD ("%s: nsap = %d", __FUNCTION__, nsap); ScopedLocalRef<jclass> c(e, e->GetObjectClass(o)); jfieldID f = e->GetFieldID(c.get(), "mHandle", "I"); jint handle = e->GetIntField(o, f); ScopedByteArrayRO bytes(e, data); if (bytes.get() == NULL) { return JNI_FALSE; } size_t byte_count = bytes.size(); ALOGD("NFA_P2pSendUI: len = %d", byte_count); UINT8* raw_ptr = const_cast<UINT8*>(reinterpret_cast<const UINT8*>(&bytes[0])); // TODO: API bug; NFA_P2pSendUI should take const*! tNFA_STATUS status = NFA_P2pSendUI((tNFA_HANDLE) handle, nsap, byte_count, raw_ptr); ALOGD("%s: NFA_P2pSendUI done, status = %d", __FUNCTION__, status); if (status != NFA_STATUS_OK) { ALOGE("%s: NFA_P2pSendUI failed, status = %d", __FUNCTION__, status); return JNI_FALSE; } return JNI_TRUE; }
INT32 nativeNfcLlcp_ConnLessSendMessage(UINT8* msg, UINT32 length) { tNFA_STATUS bNfaStatus; NXPLOG_API_D ("%s: enter\n", __FUNCTION__); if(msg == NULL || length <= 0){ NXPLOG_API_E ("%s: Invalid buffer or length", __FUNCTION__); return NFA_STATUS_FAILED; } NXPLOG_API_D("nfaLlcpServerCallBack: remote sap ID 0x%04x\n ", bDestSap); bNfaStatus = NFA_P2pSendUI(sLlcpConnLessHandle, bDestSap, length, msg); if(bNfaStatus != NFA_STATUS_OK) { NXPLOG_API_E ("%s: Error in send message\n", __FUNCTION__); return NFA_STATUS_FAILED; } NXPLOG_API_D ("%s: exit\n", __FUNCTION__); return NFA_STATUS_OK; }