-/* ****************************************************************
+/******************************************************************
*
* Copyright 2014 Samsung Electronics All Rights Reserved.
*
* This file provides the APIs to start and stop RFCOMM server.
*/
-
#include <string.h>
#include <bluetooth.h>
-#include "caedrinterface.h"
+#include "caedrinterface.h"
#include "caadapterutils.h"
#include "caedrutils.h"
#include "logger.h"
-#include "camutex.h"
+#include "octhread.h"
#include "cacommon.h"
#include "caedrdevicelist.h"
static int32_t g_maxPendingConnections = 10;
-CAResult_t CAEDRServerStart(const char *serviceUUID, int *serverFD, u_thread_pool_t handle)
+/**
+ * Storing RfcommserverUUID
+ */
+static int g_serverFD = -1;
+
+CAResult_t CAEDRServerStart()
{
OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "IN");
- VERIFY_NON_NULL(serviceUUID, EDR_ADAPTER_TAG, "Service UUID is null");
- VERIFY_NON_NULL(serverFD, EDR_ADAPTER_TAG, "Server fd holder is null");
-
- if (!serviceUUID[0])
+ if(-1 != g_serverFD)
{
- OIC_LOG(ERROR, EDR_ADAPTER_TAG, "Invalid input: Empty service uuid!");
- return CA_STATUS_INVALID_PARAM;
+ OIC_LOG_V(DEBUG, EDR_ADAPTER_TAG, "%s Already running", __func__);
+ return CA_STATUS_OK;
}
bool isRunning = false;
- bt_error_e err = bt_adapter_is_service_used(serviceUUID, &isRunning);
+ bt_error_e err = bt_adapter_is_service_used(OIC_EDR_SERVICE_ID, &isRunning);
if (BT_ERROR_NONE != err)
{
- OIC_LOG_V(DEBUG, EDR_ADAPTER_TAG,
- "Unable to find whether service is already running or not! erorr num[%x]", err);
+ OIC_LOG_V(ERROR, EDR_ADAPTER_TAG,
+ "Unable to find whether service is already running or not! error num[%x]", err);
return CA_STATUS_FAILED;
}
int socketFD = 0;
// Registers a rfcomm socket with a specific service_uuid.
- err = bt_socket_create_rfcomm(serviceUUID, &socketFD);
+ err = bt_socket_create_rfcomm(OIC_EDR_SERVICE_ID, &socketFD);
if (BT_ERROR_NONE != err)
{
- OIC_LOG_V(ERROR, EDR_ADAPTER_TAG, "Failed to create rfcomm socket!, error num [%x]",
- err);
+ OIC_LOG_V(ERROR, EDR_ADAPTER_TAG, "Failed to create rfcomm socket!, error num [%x]", err);
return CA_STATUS_FAILED;
}
// Start listening and accepting
- err = bt_socket_listen_and_accept_rfcomm(socketFD,
- g_maxPendingConnections);
+ err = bt_socket_listen_and_accept_rfcomm(socketFD, g_maxPendingConnections);
if (BT_ERROR_NONE != err)
{
- OIC_LOG_V(ERROR, EDR_ADAPTER_TAG, "Failed in listen rfcomm socket!, error num [%x]",
- err);
+ OIC_LOG_V(ERROR, EDR_ADAPTER_TAG, "Failed in listen rfcomm socket!, error num [%x]", err);
bt_socket_destroy_rfcomm(socketFD);
return CA_STATUS_FAILED;
}
- *serverFD = socketFD;
+ g_serverFD = socketFD;
OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "OUT");
return CA_STATUS_OK;
}
-CAResult_t CAEDRServerStop(int serverFD)
+CAResult_t CAEDRServerStop()
{
OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "IN");
- bt_error_e err = bt_socket_destroy_rfcomm(serverFD);
- if (BT_ERROR_NONE != err)
+ if (-1 < g_serverFD)
{
- OIC_LOG_V(ERROR, EDR_ADAPTER_TAG, "Failed close server socket!, error num [%x]",
- err);
- return CA_STATUS_FAILED;
+ bt_error_e err = bt_socket_destroy_rfcomm(g_serverFD);
+
+ if (BT_ERROR_NONE != err)
+ {
+ OIC_LOG_V(ERROR, EDR_ADAPTER_TAG, "Failed close server socket!, error num [%x]", err);
+ return CA_STATUS_FAILED;
+ }
+ g_serverFD = -1;
}
OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "OUT");
return CA_STATUS_OK;
}
+CAResult_t CAEDRServerInitialize(ca_thread_pool_t handle)
+{
+ OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "CAEDRServerInitialize");
+ return CA_STATUS_OK;
+}
+
void CAEDRServerTerminate()
{
// This is just a dummy
OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "OUT");
return CA_NOT_SUPPORTED;
}
-