/*******************************************************************************
**
** 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;
}
コード例 #2
0
 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;
 }