+ CAResult_t result = CAQueueingThreadStop(g_bleClientSendQueueHandle);
+
+ return result;
+#else
+ CAStopLEGattClient();
+
+ return CA_STATUS_OK;
+#endif
+}
+
+#ifdef __WITH_DTLS__
+static ssize_t CALESecureSendDataCB(CAEndpoint_t *endpoint, const void *data, size_t dataLen)
+{
+ VERIFY_NON_NULL(endpoint, CALEADAPTER_TAG, "endpoint is NULL");
+ VERIFY_NON_NULL(data, CALEADAPTER_TAG, "data is NULL");
+ OIC_LOG_V(DEBUG, CALEADAPTER_TAG, "IN %s", __func__);
+ OIC_LOG_V(DEBUG, CALEADAPTER_TAG, "encrypted datalen = %zd", dataLen);
+
+ CAResult_t result;
+ CADataType_t dataType = g_dataType;
+ ssize_t ret = 0;
+
+ if (ADAPTER_SERVER == g_adapterType ||
+ (ADAPTER_BOTH_CLIENT_SERVER == g_adapterType && CA_RESPONSE_DATA == dataType))
+ {
+ result = CALEAdapterServerSendData(endpoint, data, dataLen);
+ if (CA_STATUS_OK != result)
+ {
+ OIC_LOG(ERROR, CALEADAPTER_TAG, "Send unicast data for server failed" );
+
+ if (g_errorHandler)
+ {
+ g_errorHandler(endpoint, data, dataLen, result);
+ }
+ return ret;
+ }
+ ret = (ssize_t)dataLen;
+ }
+ else if (ADAPTER_CLIENT == g_adapterType ||
+ (ADAPTER_BOTH_CLIENT_SERVER == g_adapterType && CA_REQUEST_DATA == dataType) ||
+ (ADAPTER_BOTH_CLIENT_SERVER == g_adapterType && CA_RESPONSE_FOR_RES == dataType))
+ {
+ result = CALEAdapterClientSendData(endpoint, data, dataLen);
+ if (CA_STATUS_OK != result)
+ {
+ OIC_LOG(ERROR, CALEADAPTER_TAG, "Send unicast data for client failed" );
+
+ if (g_errorHandler)
+ {
+ g_errorHandler(endpoint, data, dataLen, result);
+ }
+ return ret;
+ }
+ ret = (ssize_t)dataLen;
+ }
+ else
+ {
+ OIC_LOG_V(ERROR, CALEADAPTER_TAG,
+ "Can't Send Message adapterType = %d, dataType = %d", g_adapterType, dataType);
+ return ret;
+ }
+ OIC_LOG_V(DEBUG, CALEADAPTER_TAG, "OUT %s", __func__);
+ return ret;
+}
+
+CAResult_t CALESecureReceiveDataCB(const CASecureEndpoint_t *sep, const void *data,
+ size_t dataLen)
+{
+ OIC_LOG_V(DEBUG, CALEADAPTER_TAG, "%s", __func__);
+
+ VERIFY_NON_NULL(sep, CALEADAPTER_TAG, "sep is NULL");
+ VERIFY_NON_NULL(data, CALEADAPTER_TAG, "data is NULL");
+
+ OIC_LOG_V(DEBUG, CALEADAPTER_TAG,
+ "Secure Data Receive - decrypted datalen = %zd", dataLen);
+
+ if (dataLen <= 0)
+ {
+ OIC_LOG(ERROR, CALEADAPTER_TAG, "incorrect dataLen, derecypt fail !");
+ return CA_STATUS_INVALID_PARAM;
+ }