gboolean start_bt_service(void* data)
{
	__COMMON_FUNC_ENTER__;
	char* start_address = (char*)data;
	int error, ret = 0;
	const char default_device_name[] = "Tizen-RHT";
	const char *device_name = NULL;
//	gMainLoop = g_main_loop_new(NULL, FALSE);


	MIN_LOG("Remote Hotspot Trigger started\n");

	device_name = default_device_name;
	bt_server_address = start_address;

	// Initialize bluetooth
	error = rhtf_initialize_bluetooth(device_name);
	if(error != 0) {
		ret = -2;
		return ret;
		//		goto error_end_without_socket;
	}
	MIN_LOG("succeed in rhtf_initialize_bluetooth()\n");

	ret = bt_socket_connect_rfcomm(bt_server_address, service_uuid);
	if(ret != BT_ERROR_NONE)
	{
		MIN_LOG("[%s] bt_socket_connect_rfcomm failed.", __FUNCTION__);
		return -50;
	}
	else
	{
		ALOGI("[%s] bt_socket_connect_rfcomm succeeded. bt_socket_connection_state_changed_cb will be called.", __FUNCTION__);
	
	}
	

	// If succeed to accept a connection, start a main loop.
//	g_main_loop_run(gMainLoop);

	ALOGI("Server is terminated successfully\n");

/*error_end_with_socket:
	// Finalized bluetooth
	rhtf_finalize_bluetooth_socket();
*/
//error_end_without_socket:
//	rhtf_finalize_bluetooth();
	__COMMON_FUNC_EXIT__;
	return ret;
}
void rhtf_state_changed_cb(int result, bt_adapter_state_e adapter_state, void *user_data) {
	if(adapter_state == BT_ADAPTER_ENABLED) {
		if(result == BT_ERROR_NONE) {
			MIN_LOG("RemoteKeyFW: bluetooth was enabled successfully.");
			gBtState = BT_ADAPTER_ENABLED;
		} else {
			MIN_LOG("RemoteKeyFW: failed to enable BT.: %x", result);
			gBtState = BT_ADAPTER_DISABLED;
		}
	}
	if(gMainLoop) {
		MIN_LOG("It will terminate gMainLoop.", result);
		g_main_loop_quit(gMainLoop);
	}
}
// bt_socket_data_received_cb
void rhtf_received_data_cb(bt_socket_received_data_s *data, void *user_data) {
	static char buffer[1024];
	size_t len;
	wifi_device_info_t* bt_tether_device = tether_device_get_singleton();
	memset(buffer, 0x0, 1024); 
	strncpy(buffer, data->data, 1024);
	buffer[data->data_size] = '\0';
	MIN_LOG("RemoteKeyFW: received a data!(%d) %s", strlen(buffer), buffer);

	//____________________________HYEMIN'S working part______________________
	// ACTION!
//	strcpy(bt_tether_device->ssid, buffer);
//	memcpy(bt_tether_device->ssid, buffer, 1024);
	bt_tether_device->ssid = "AndroidAP";	
	MIN_LOG("bt_tethered_device->ssid : %s", bt_tether_device->ssid);

}
gboolean timeout_func_cb(gpointer data)
{
	MIN_LOG("timeout_func_cb");
	if(gMainLoop)
	{
		g_main_loop_quit((GMainLoop*)data);
	}
	return FALSE;
}
// bt_socket_connection_state_changed_cb
void rhtf_socket_connection_state_changed_cb(int result, bt_socket_connection_state_e connection_state_event, bt_socket_connection_s *connection, void *user_data) {		
	char *msg = "TEST STRING";
	
	if(result == BT_ERROR_NONE) {
		MIN_LOG("RemoteKeyFW: connection state changed (BT_ERROR_NONE)");
	} else {
		MIN_LOG("RemoteKeyFW: connection state changed (not BT_ERROR_NONE)");
	}

	if(connection_state_event == BT_SOCKET_CONNECTED) {
		MIN_LOG("RemoteKeyFW: connected");
		gSocketFd = connection->socket_fd;

		//Send Data to connected socket
		rhtf_send_data_bluetooth((void*)msg);
	} else if(connection_state_event == BT_SOCKET_DISCONNECTED) {
		MIN_LOG("RemoteKeyFW: disconnected");
		g_main_loop_quit(gMainLoop);
	}
}
int rhtf_finalize_bluetooth_socket(void) {
	int ret;
	sleep(5); // Wait for completing delivery
	ret = bt_socket_disconnect_rfcomm(gSocketFd);
	if(ret != BT_ERROR_NONE)
	{
		MIN_LOG("Unknown exception is occured in bt_socket_disconnect_rfcomm(): %x", ret);
		return -1;
	}


	return 0;
}
int rhtf_send_data_bluetooth(void* data){
	int ret, len;
	const char* buf = (char*) data;

	len = strlen(buf);
	// Send data to connected socket
	ret = bt_socket_send_data(gSocketFd, buf, len);
	if(ret < 0)
	{
		MIN_LOG("[%s] bt_socket_send_data failed.", __FUNCTION__);
	}
	return ret;
}
Esempio n. 8
0
mlib_status
__mlib_VectorMinimum_S32(
	mlib_s32 *min,
	const mlib_s32 *x,
	mlib_s32 n)
{
	mlib_s32 *psrc = (mlib_s32 *)x;
#ifdef _NO_LONGLONG
	mlib_d64 min1, min2, min3, min4, min5, min6, min7, min8;
#else
	mlib_s64 min1, min2, min3, min4, min5, min6, min7, min8;
#endif
	mlib_s32 i;

	if (n <= 0)
		return (MLIB_FAILURE);

	min1 = min2 = min3 = min4 = MLIB_S32_MAX;
	min5 = min6 = min7 = min8 = MLIB_S32_MAX;

	for (i = 0; i <= (n - 8); i += 8) {
#ifdef _NO_LONGLONG
		MIN(min1, psrc[i]);
		MIN(min2, psrc[i + 1]);
		MIN(min3, psrc[i + 2]);
		MIN(min4, psrc[i + 3]);
		MIN(min5, psrc[i + 4]);
		MIN(min6, psrc[i + 5]);
		MIN(min7, psrc[i + 6]);
		MIN(min8, psrc[i + 7]);
#else
		MIN_LOG(min1, psrc[i]);
		MIN_LOG(min2, psrc[i + 1]);
		MIN_LOG(min3, psrc[i + 2]);
		MIN_LOG(min4, psrc[i + 3]);
		MIN_LOG(min5, psrc[i + 4]);
		MIN_LOG(min6, psrc[i + 5]);
		MIN_LOG(min7, psrc[i + 6]);
		MIN_LOG(min8, psrc[i + 7]);
#endif
	}

	if (i < n) {
#ifdef _NO_LONGLONG
		MIN(min1, psrc[i]);
#else
		MIN_LOG(min1, psrc[i]);
#endif
	}
	i++;

	if (i < n) {
#ifdef _NO_LONGLONG
		MIN(min2, psrc[i]);
#else
		MIN_LOG(min2, psrc[i]);
#endif
	}
	i++;

	if (i < n) {
#ifdef _NO_LONGLONG
		MIN(min3, psrc[i]);
#else
		MIN_LOG(min3, psrc[i]);
#endif
	}
	i++;

	if (i < n) {
#ifdef _NO_LONGLONG
		MIN(min4, psrc[i]);
#else
		MIN_LOG(min4, psrc[i]);
#endif
	}
	i++;

	if (i < n) {
#ifdef _NO_LONGLONG
		MIN(min5, psrc[i]);
#else
		MIN_LOG(min5, psrc[i]);
#endif
	}
	i++;

	if (i < n) {
#ifdef _NO_LONGLONG
		MIN(min6, psrc[i]);
#else
		MIN_LOG(min6, psrc[i]);
#endif
	}
	i++;

	if (i < n) {
#ifdef _NO_LONGLONG
		MIN(min7, psrc[i]);
#else
		MIN_LOG(min7, psrc[i]);
#endif
	}

#ifdef _NO_LONGLONG
	MIN(min1, min2);
	MIN(min3, min4);
	MIN(min5, min6);
	MIN(min7, min8);
	MIN(min1, min3);
	MIN(min5, min7);
	MIN(min1, min5);

	min[0] = (mlib_s32) min1;
#else
	MIN_LOG(min1, min2);
	MIN_LOG(min3, min4);
	MIN_LOG(min5, min6);
	MIN_LOG(min7, min8);
	MIN_LOG(min1, min3);
	MIN_LOG(min5, min7);
	MIN_LOG(min1, min5);

	min[0] = min1;
#endif

	return (MLIB_SUCCESS);
}
Esempio n. 9
0
void view_main_wifi_connect(devpkr_gl_data_t *gdata)
{
	__COMMON_FUNC_ENTER__;
	bool favorite = false;
	wifi_device_info_t *device_info;
	pswd_popup_create_req_data_t popup_info;
	wifi_security_type_e sec_type = WIFI_SECURITY_TYPE_NONE;

	retm_if(NULL == gdata);

	device_info = gdata->dev_info;
	retm_if(NULL == device_info);
	MIN_LOG("wifi_ap_is_favorite called");
	wifi_ap_is_favorite(device_info->ap, &favorite);

	if (favorite == true) {
		wlan_manager_connect(device_info->ap);
		__COMMON_FUNC_EXIT__;
		return;
	}

	wifi_ap_get_security_type(device_info->ap, &sec_type);

	switch (sec_type) {
	case WIFI_SECURITY_TYPE_NONE:
		wlan_manager_connect(device_info->ap);
		break;

	case WIFI_SECURITY_TYPE_WEP:
	case WIFI_SECURITY_TYPE_WPA_PSK:
	case WIFI_SECURITY_TYPE_WPA2_PSK:
		memset(&popup_info, 0, sizeof(pswd_popup_create_req_data_t));

		popup_info.title = gdata->dev_info->ssid;
		popup_info.ok_cb = __popup_ok_cb;
		popup_info.cancel_cb = __popup_cancel_cb;
		popup_info.show_wps_btn = gdata->dev_info->wps_mode;
		popup_info.wps_btn_cb = __popup_wps_options_cb;
		popup_info.ap = gdata->dev_info->ap;
		popup_info.cb_data = NULL;
		popup_info.sec_type = sec_type;

		if (devpkr_app_state->passpopup != NULL) {
			passwd_popup_free(devpkr_app_state->passpopup);
			devpkr_app_state->passpopup = NULL;
		}

		devpkr_app_state->passpopup = create_passwd_popup(
				devpkr_app_state->layout_main, PACKAGE,
				&popup_info);
		if (devpkr_app_state->passpopup == NULL) {
			ERROR_LOG(SP_NAME_NORMAL, "Password popup creation failed");
		}
		break;

	case WIFI_SECURITY_TYPE_EAP:
		devpkr_app_state->eap_popup = create_eap_popup(
				devpkr_app_state->layout_main, devpkr_app_state->win_main,
				PACKAGE, gdata->dev_info);
		break;

	default:
		ERROR_LOG(SP_NAME_NORMAL, "Unknown security type [%d]", sec_type);
		break;
	}

		__COMMON_FUNC_EXIT__;
}
int rhtf_initialize_bluetooth(const char *device_name) {
	// Initialize bluetooth and get adapter state
	__COMMON_FUNC_ENTER__;
	int ret;
	ret = bt_initialize();
	if(ret != BT_ERROR_NONE) {
		MIN_LOG("Unknown exception is occured in bt_initialize(): %x", ret);
		return -1;
	}

	ret = bt_adapter_get_state(&gBtState);
	if(ret != BT_ERROR_NONE) {
		MIN_LOG("Unknown exception is occured in bt_adapter_get_state(): %x", ret);
		return -2;
	}

	// Enable bluetooth device manually
	if(gBtState == BT_ADAPTER_DISABLED)
	{
		MIN_LOG("[%s] bluetooth is not enabled.", __FUNCTION__);
		return -3;
	}
	else
	{
		MIN_LOG("[%s] BT was already enabled.", __FUNCTION__);
	}

	// Set adapter's name
	if(gBtState == BT_ADAPTER_ENABLED) {
		char *name = NULL;
		ret = bt_adapter_get_name(&name);
		if(name == NULL) {
			MIN_LOG("NULL name exception is occured in bt_adapter_get_name(): %x", ret);
			return -5;
		}

		if(strncmp(name, device_name, strlen(name)) != 0) {
			if(bt_adapter_set_name(device_name) != BT_ERROR_NONE)
			{   
				if (NULL != name)
					free(name);
				MIN_LOG("Unknown exception is occured in bt_adapter_set_name : %x", ret);
				return -6;
			}   
		}
		free(name);
	} else {
		MIN_LOG("Bluetooth is not enabled");
		return -7;
	}

	/* No need to visualize the device when connecting as a client
	//  Set visibility as BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE
	if(bt_adapter_get_visibility(&gVisibilityMode, NULL) != BT_ERROR_NONE)
	{
		LOGE("[%s] bt_adapter_get_visibility() failed.", __FUNCTION__);
		return -11; 
	}

	if(gVisibilityMode != BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE)
	{
		if(bt_adapter_set_visibility(BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE, 0) != BT_ERROR_NONE)
		{   
			LOGE("[%s] bt_adapter_set_visibility() failed.", __FUNCTION__);
			return -12; 
		}   
		gVisibilityMode = BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE;
	}
	else
	{
		LOGI("[%s] Visibility mode was already set as BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE.", __FUNCTION__);
	}
	*/

	// Connecting socket as a client

	ret = bt_socket_set_connection_state_changed_cb(rhtf_socket_connection_state_changed_cb, NULL);
	if(ret != BT_ERROR_NONE) {
		MIN_LOG("Unknown exception is occured in bt_socket_set_connection_state_changed_cb(): %x", ret);
		__COMMON_FUNC_EXIT__;
		return -9;
	}
	
	ret = bt_socket_set_data_received_cb(rhtf_received_data_cb, NULL);
	if(ret != BT_ERROR_NONE) {
		MIN_LOG("Unknown exception is occured in bt_socket_set_data_received_cb(): %x", ret);
		__COMMON_FUNC_EXIT__;
		return -10;
	}

	__COMMON_FUNC_EXIT__;
	return 0;
}