ADD_DEFINITIONS("-DTIZEN_OS -DUSE_DLOG")
ENDIF(TIZEN_OS)
+SET(BT_SUPPORT OFF)
+IF(TIZEN_OS AND USE_EVENT_LOOP_EXTERNAL_GLIB)
+ ADD_DEFINITIONS("-DBT_SUPPORT")
+ SET(BT_SUPPORT ON)
+ENDIF(TIZEN_OS AND USE_EVENT_LOOP_EXTERNAL_GLIB)
+
IF(ENABLE_INSTRUMENTATION_MODE)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -finstrument-functions -finstrument-functions-exclude-file-list=src/logger")
ADD_DEFINITIONS("-DENABLE_INSTRUMENTATION_MODE")
ENDIF(USE_LIBWEBSOCKETS)
ADD_SUBDIRECTORY(plugins/dns-sd)
-IF(TIZEN_OS AND USE_EVENT_LOOP_EXTERNAL_GLIB)
+IF(BT_SUPPORT)
ADD_SUBDIRECTORY(plugins/ble)
-ENDIF(TIZEN_OS AND USE_EVENT_LOOP_EXTERNAL_GLIB)
+ENDIF(BT_SUPPORT)
ADD_SUBDIRECTORY(include)
ADD_SUBDIRECTORY(src/logger)
-DUSE_LIBWEBSOCKETS_STATIC=OFF \
%endif
%if %{with lws_static_prebuilt}
- -DUSE_LIBWEBSOCKETS_STATIC_PREBUILT=ON \
+ -DUSE_LIBWEBSOCKETS_STATIC_PREBUILT=ON \
%else
- -DUSE_LIBWEBSOCKETS_STATIC_PREBUILT=OFF \
+ -DUSE_LIBWEBSOCKETS_STATIC_PREBUILT=OFF \
%endif
-DWITH_UNITTEST=ON \
- -DENABLE_DATAPATH_PLUGIN_DEBUG=ON \
+ -DENABLE_DATAPATH_PLUGIN_DEBUG=ON \
-DWITH_VINE_TEST=ON
make %{?jobs:-j%jobs}
vine_ble_s *ble_handle = (vine_ble_s *)plugin_handle;
RET_VAL_IF(ble_handle->adv != NULL, VINE_DISC_ERROR_INVALID_PARAMETER, "Already published");
+ VINE_LOGD("Publish a service. plugin_handle[%p]\n", plugin_handle);
+
int ret = bt_adapter_le_create_advertiser(&ble_handle->adv);
RET_VAL_IF(ret != BT_ERROR_NONE, __convert_ble_error_to_vine_disc_error(ret),
"bt_adapter_le_create_advertiser() fails");
vine_ble_s *ble_handle = (vine_ble_s *)plugin_handle;
RET_VAL_IF(ble_handle->filter != NULL, VINE_DISC_ERROR_INVALID_PARAMETER, "Already subscribed");
+ VINE_LOGD("Subscribe a service. plugin_handle[%p]", plugin_handle);
+
int ret = bt_adapter_le_scan_filter_create(&ble_handle->filter);
RET_VAL_IF(ret != BT_ERROR_NONE, __convert_ble_error_to_vine_disc_error(ret),
"bt_adapter_le_scan_filter_create() fails");
int vine_event_queue_create(vine_event_queue_h *event_queue);
void vine_event_queue_destroy(vine_event_queue_h event_queue);
-void vine_event_loop_get_eventfd(vine_event_queue_h event_queue, int *eventfd);
+int vine_event_loop_get_eventfd(vine_event_queue_h event_queue, int *eventfd);
int vine_event_loop_process(vine_event_queue_h event_queue);
int vine_event_loop_add_io_handler(int fd, int events,
void (*stop)();
int (*event_queue_create)(vine_event_queue_h *event_queue);
void (*event_queue_destroy)(vine_event_queue_h event_queue);
- void (*get_eventfd)(vine_event_queue_h event_queue, int *eventfd);
+ int (*get_eventfd)(vine_event_queue_h event_queue, int *eventfd);
int (*process)(vine_event_queue_h event_queue);
int (*add_io_handler)(int fd, int events, vine_poll_handler handler, void *user_data);
int (*mod_io_handler)(int fd, int events, vine_poll_handler handler, void *user_data);
const char *path;
} __vine_disc_plugins_info[] = {
[VINE_DISCOVERY_METHOD_DNS_SD] = {"DNS-SD", DNS_SD_PLUGIN_PATH},
+#ifdef BT_SUPPORT
[VINE_DISCOVERY_METHOD_BLE] = {"BLE", BLE_PLUGIN_PATH},
+#endif
{NULL, NULL},
};
delete event_queue_handle;
}
-void vine_event_loop_epoll_get_eventfd(vine_event_queue_h event_queue, int *eventfd)
+int vine_event_loop_epoll_get_eventfd(vine_event_queue_h event_queue, int *eventfd)
{
vine_epoll_event_queue_s *event_queue_handle = (vine_epoll_event_queue_s *)event_queue;
*eventfd = event_queue_handle->fd;
+ return VINE_ERROR_NONE;
}
static void _add_io_event_handler(int fd, vine_epoll_io_event_handler *h)
{
}
-void vine_event_loop_glib_get_eventfd(vine_event_queue_h event_queue, int *eventfd)
+int vine_event_loop_glib_get_eventfd(vine_event_queue_h event_queue, int *eventfd)
{
+ return VINE_ERROR_NOT_SUPPORTED;
}
static void _add_io_event_handler(int fd, vine_glib_io_event_handler *h)
__event_loop[__event_loop_type].event_queue_destroy(event_queue);
}
-void vine_event_loop_get_eventfd(vine_event_queue_h event_queue, int *eventfd)
+int vine_event_loop_get_eventfd(vine_event_queue_h event_queue, int *eventfd)
{
- __event_loop[__event_loop_type].get_eventfd(event_queue, eventfd);
+ return __event_loop[__event_loop_type].get_eventfd(event_queue, eventfd);
}
int vine_event_loop_add_io_handler(
static bool __check_disc_method(vine_discovery_method_e method)
{
- return method >= VINE_DISCOVERY_METHOD_DNS_SD
- && method <= VINE_DISCOVERY_METHOD_BLE;
+ bool ret = (method == VINE_DISCOVERY_METHOD_DNS_SD);
+#ifdef BT_SUPPORT
+ ret = ret || (method == VINE_DISCOVERY_METHOD_BLE);
+#endif
+ return ret;
}
int _vine_session_set_discovery_method(vine_session_h session, vine_discovery_method_e method)
int ret = VINE_ERROR_NONE;
vine_session_s *s = (vine_session_s *)session;
+ RET_VAL_IF(s->disc_method == VINE_DISCOVERY_METHOD_BLE, VINE_ERROR_NOT_SUPPORTED,
+ "BLE discovery doesn't support vine_session_set_ip_resolved_cb()");
vine_disc_h disc_handle;
ret = vine_disc_create(s->disc_method, &disc_handle);
RET_VAL_IF(ret != VINE_ERROR_NONE, ret, "Fail to vine_disc_create");
VINE_LOGD("Cancel resolving IP address for a service[%p]. session[%p]", service, session);
+ vine_session_s *s = (vine_session_s *)session;
+ RET_VAL_IF(s->disc_method == VINE_DISCOVERY_METHOD_BLE, VINE_ERROR_NOT_SUPPORTED,
+ "BLE discovery doesn't support vine_session_unset_ip_resolved_cb()");
+
int ret = VINE_ERROR_NONE;
vine_disc_h disc_handle = NULL;
ret = _vine_service_get_disc_handle(service, VINE_DISCOVERY_METHOD_DNS_SD, &disc_handle);
RET_VAL_IF(session == NULL, VINE_ERROR_INVALID_PARAMETER, "session is NULL");
vine_session_s *s = (vine_session_s *)session;
- vine_event_loop_get_eventfd(s->event_queue, fd);
- return VINE_ERROR_NONE;
+ return vine_event_loop_get_eventfd(s->event_queue, fd);
}
int _vine_session_process_event(vine_session_h session)
vine_session_process_event(session);
}
+#ifdef BT_SUPPORT
static void _run_glib_event_loop()
{
GMainLoop *main_loop = g_main_loop_new(NULL, FALSE);
g_main_loop_unref(main_loop);
}
+#endif
static void _run_epoll_event_loop(vine_session_h session)
{
int fd;
static void run_event_loop(vine_session_h session)
{
+#ifdef BT_SUPPORT
if (vine_configs.with_ble)
_run_glib_event_loop();
else
+#endif
_run_epoll_event_loop(session);
}