+ fprintf(stderr, "==== LOCATION Setting state =====\n");
+ bool is_enabled = FALSE;
+ location_manager_is_enabled_method(LOCATIONS_METHOD_HYBRID, &is_enabled);
+ fprintf(stderr, "hybrid: %d, ", is_enabled);
+
+ location_manager_is_enabled_method(LOCATIONS_METHOD_GPS, &is_enabled);
+ fprintf(stderr, "gps: %d, ", is_enabled);
+
+ location_manager_is_enabled_method(LOCATIONS_METHOD_WPS, &is_enabled);
+ fprintf(stderr, "wps: %d, ", is_enabled);
+
+ /* location_manager_is_test_location_enabled(&is_enabled); */
+ location_manager_is_enabled_method(LOCATIONS_METHOD_MOCK, &is_enabled);
+ fprintf(stderr, "mock: %d\n", is_enabled);
+}
+
+static int enable_method(location_method_e method, bool enable)
+{
+ int ret = 0;
+ fprintf(stderr, "==== LOCATION Setting changed =====\n");
+
+ location_manager_set_setting_changed_cb(LOCATIONS_METHOD_HYBRID, __setting_cb, NULL);
+
+ fprintf(stderr, "method[%d], enable[%d]\n", method, enable);
+ ret = location_manager_enable_method(method, enable);
+
+ location_manager_unset_setting_changed_cb(LOCATIONS_METHOD_HYBRID);
+ return ret;
+}
+
+static int test_clear_mock_location(gpointer user_data)
+{
+ location_manager_h manager = (location_manager_h) user_data;
+ int ret = 0;
+
+ ret = location_manager_clear_mock_location(manager);
+ fprintf(stderr, "\n==== location_manager_clear_mock_location: %d ====\n\n", ret);
+
+ /*
+ int state = 0;
+ ret = location_manager_get_service_state(manager, &state);
+ fprintf(stderr, "the current state: %d, ret = %d\n", state, ret);
+ */
+
+ return FALSE;
+}
+
+
+static int test_set_mock_location(gpointer user_data)
+{
+ location_manager_h manager = (location_manager_h) user_data;
+ int ret = 0;
+
+ /*
+ int state = 0;
+ ret = location_manager_get_service_state(manager, &state);
+ fprintf(stderr, "the current state: %d, ret = %d\n", state, ret);
+ */
+
+ ret = location_manager_set_mock_location(manager, 20, 20, 0, 40, 50, 100);
+ fprintf(stderr, "\n==== location_manager_set_location: %d ====\n\n", ret);
+ if (ret != LOCATIONS_ERROR_NONE) {
+ g_timeout_add_seconds(3, test_clear_mock_location, manager);
+ }
+
+ return FALSE;
+}
+
+static void print_menu()
+{
+ fprintf(stderr, "============= LOCATION TEST =============\n");
+ fprintf(stderr, "[1] Get location: LOCATIONS_METHOD_HYBRID\n");
+ fprintf(stderr, "[2] Get location: LOCATIONS_METHOD_GPS\n");
+ fprintf(stderr, "[3] Get location: LOCATIONS_METHOD_WPS\n");
+ fprintf(stderr, "[4] Single location: LOCATIONS_METHOD_HYBRID\n");
+ fprintf(stderr, "[5] Single location: LOCATIONS_METHOD_GPS\n");
+ fprintf(stderr, "[6] Single location: LOCATIONS_METHOD_WPS\n\n");
+ fprintf(stderr, "[11] Change update interval: LOCATIONS_METHOD_HYBRID\n");
+ fprintf(stderr, "[12] Change update interval: LOCATIONS_METHOD_GPS\n\n");
+ fprintf(stderr, "[21] Distance based location update: LOCATIONS_METHOD_HYBRID\n");
+ fprintf(stderr, "[22] Distance based location update: LOCATIONS_METHOD_GPS\n");
+ fprintf(stderr, "[23] Distance based location update: LOCATIONS_METHOD_WPS\n\n");
+ fprintf(stderr, "[31] Location batch update: LOCATIONS_METHOD_GPS\n\n");
+ fprintf(stderr, "[41] Turn on/off mock test: LOCATIONS_METHOD_MOCK\n");
+ fprintf(stderr, "[42] Set & Clear location: LOCATIONS_METHOD_HYBRID\n\n");
+ fprintf(stderr, "[51] Turn on/off method: LOCATIONS_METHOD_HYBRID\n");
+ fprintf(stderr, "[52] Turn on/off method: LOCATIONS_METHOD_GPS\n");
+ fprintf(stderr, "[53] Turn on/off method: LOCATIONS_METHOD_WPS\n\n");
+ fprintf(stderr, "[61] Boundary Test\n\n");
+ fprintf(stderr, "[0] Exit!!!\n\n");
+ fprintf(stderr, "Select menu: ");
+
+ if (scanf("%d", &menu) < 0) {
+ fprintf(stderr, "Can't read menu !!!\n");
+ }
+}
+
+static int location_test()
+{
+ int ret = LOCATIONS_ERROR_NONE;
+ int basic = 0;
+ int interval = 1;
+ repeat_count = 0;
+
+ print_location_status();
+ print_menu();
+
+ switch (menu) {
+ case 1:
+ case 2:
+ case 3: {
+ basic = 1;
+
+ int method = menu - 1;
+ ret = location_manager_create(method, &manager);
+ fprintf(stderr, "location_manager_create (method: %d): %d\n", method, ret);
+ ret = location_manager_start(manager);
+ fprintf(stderr, "start: %d\n", ret);
+ break;
+ }
+ case 4:
+ case 5:
+ case 6: {
+ int timeout = 30;
+
+ fprintf(stderr, "\n Input timeout ==> ");
+ ret = scanf("%d", &timeout);
+
+ int method = menu - 4;
+ ret = location_manager_create(method, &manager);
+ ret = location_manager_request_single_location(manager, timeout, _location_cb, manager);
+ fprintf(stderr, "request single_location (method: %d): %d\n", method, ret);
+ break;
+ }
+ case 11:
+ case 12:
+ case 13: {
+ int interval = 1;
+
+ fprintf(stderr, "\n Input position interval ==> ");
+ ret = scanf("%d", &interval);
+
+ int method = menu - 11;
+ ret = location_manager_create(method, &manager);
+ fprintf(stderr, "location_manager_create (method: %d): %d\n", method, ret);
+
+ ret = location_manager_set_position_updated_cb(manager, _position_updated_cb, interval, (void *)manager);
+ fprintf(stderr, "set_position_updated_cb: %d\n", ret);
+
+ /*
+ ret = location_manager_set_velocity_updated_cb(manager, _velocity_updated_cb, interval*2, (void *)manager);
+ fprintf(stderr, "set_velocity_updated_cb: %d\n", ret);
+ */
+
+ ret = location_manager_set_location_changed_cb(manager, _location_changed_cb, interval * 2, (void *)manager);
+ fprintf(stderr, "set_location_changed_cb: %d\n", ret);
+
+ ret = location_manager_start(manager);
+ fprintf(stderr, "start: %d\n", ret);
+ break;
+ }
+ case 21:
+ case 22:
+ case 23: {
+ int interval = 1;
+ int method = menu - 21;
+
+ fprintf(stderr, "\n Input position interval ==> ");
+ ret = scanf("%d", &interval);
+
+ ret = location_manager_create(method, &manager);
+ fprintf(stderr, "location_manager_create (method : %d)", method);
+
+ /*ret = location_manager_set_position_updated_cb(manager, _position_updated_cb, interval, (void *)manager); */
+ /*fprintf(stderr, "set position changed callback: %d\n", ret); */
+
+ ret = location_manager_set_distance_based_location_changed_cb(manager, _location_changed_cb, interval, 30, (void *)manager);
+ fprintf(stderr, "set_distance_based_location_changed_cb: %d\n", ret);
+
+ ret = location_manager_start(manager);
+ fprintf(stderr, "start: %d\n", ret);
+ break;
+ }
+ case 31: {
+ int interval = 1;
+ fprintf(stderr, "\n Input batch interval ==> ");
+ ret = scanf("%d", &interval);
+
+ int period = 60;
+ fprintf(stderr, " Input batch period ==> ");
+ ret = scanf("%d", &period);
+
+ ret = location_manager_create(LOCATIONS_METHOD_GPS, &manager);
+ fprintf(stderr, "location_manager_create (method : %d)\n", LOCATIONS_METHOD_GPS);
+
+ ret = location_manager_set_location_batch_cb(manager, _location_batch_cb, interval, period, (void *)manager);
+ fprintf(stderr, "set_location_batch_cb: %d\n", ret);
+
+ ret = location_manager_start_batch(manager);
+ fprintf(stderr, "start_batch: %d\n", ret);
+ break;
+ }
+ case 41: {
+ basic = 1;
+ int onoff = 1;
+
+ fprintf(stderr, "\n Mock Location (ON: 1 or OFF: 0) Input ==> ");
+ ret = scanf("%d", &onoff);
+
+ ret = location_manager_enable_mock_location(onoff);
+ fprintf(stderr, "Enabling mock test: ret=%d\n", ret);
+
+ ret = location_manager_create(LOCATIONS_METHOD_MOCK, &manager);
+ fprintf(stderr, "location_manager_create (method: %d): %d\n", LOCATIONS_METHOD_MOCK, ret);
+
+ ret = location_manager_set_mock_location(manager, 10, 20, 0, 40, 50, 100);
+ fprintf(stderr, "location_manager_set_mock_location: %d\n", ret);
+ if (ret == LOCATIONS_ERROR_SETTING_OFF) {
+ fprintf(stderr, "Setting for Mock Location is turned OFF!!!\n");
+ break;
+ }
+
+ ret = location_manager_start(manager);
+ fprintf(stderr, "start: %d\n", ret);
+
+ g_timeout_add_seconds(3, test_clear_mock_location, manager);
+
+ g_timeout_add_seconds(10, wait_test, NULL);
+
+ break;
+ }
+ case 42: {
+ basic = 1;
+
+ ret = location_manager_create(LOCATIONS_METHOD_HYBRID, &manager);
+ fprintf(stderr, "location_manager_create (method: %d): %d\n", LOCATIONS_METHOD_HYBRID, ret);
+
+ ret = location_manager_start(manager);
+ fprintf(stderr, "start: %d\n", ret);
+
+ /*
+ int state = 0;
+ ret = location_manager_get_service_state(manager, &state);
+ fprintf(stderr, "the current state: %d, ret = %d\n", state, ret);
+ */
+
+ g_timeout_add_seconds(5, test_set_mock_location, manager);
+
+ break;
+ }
+ case 51:
+ case 52:
+ case 53: {
+ int method = menu - 51;
+ int onoff = 1;
+
+ fprintf(stderr, "\n Input ON: 1 or OFF: 0 ==> ");
+ ret = scanf("%d", &onoff);
+
+ if (onoff == 0 || onoff == 1) {
+ ret = enable_method(method, onoff);
+ fprintf(stderr, "Enabling method: [%d], ret=%d\n", method, ret);
+ }
+ break;
+ }
+ case 61: {
+ location_bounds_h hPolyLocationBound = NULL;
+ bool bIsContained = false;
+ int nPolySize = 3;
+ location_coords_s location_coord_list[nPolySize];
+ location_coord_list[0].latitude = 10;
+ location_coord_list[0].longitude = 10;
+ location_coord_list[1].latitude = 20;
+ location_coord_list[1].longitude = 20;
+ location_coord_list[2].latitude = 30;
+ location_coord_list[2].longitude = 10;
+
+ /* Checking coordinates in location boundary */
+ location_coords_s testLocationCoordinates;
+ testLocationCoordinates.latitude = 20;
+ testLocationCoordinates.longitude = 12;
+ location_bound_error_e nRet = location_bounds_create_polygon(location_coord_list, nPolySize, &hPolyLocationBound);
+
+ fprintf(stderr, "location_bounds_create_polygon: %d\n", nRet);
+
+ bIsContained = location_bounds_contains_coordinates(hPolyLocationBound, testLocationCoordinates);
+ fprintf(stderr, "bIsContained: %d\n", bIsContained);
+
+ location_bounds_destroy(hPolyLocationBound);
+ break;
+ }
+ case 0:
+ g_timeout_add_seconds(1, exit_program, NULL);
+ return 0;
+ default:
+ fprintf(stderr, "Exit!!! Input: %d\n", menu);
+ g_timeout_add_seconds(1, exit_program, NULL);
+ return 0;
+ }
+
+ if (ret != LOCATIONS_ERROR_NONE) {
+ fprintf(stderr, "Test Failed!!! [%d]\n", ret);
+ g_timeout_add_seconds(1, exit_program, NULL);
+ return 0;
+ }
+
+ if (menu > 0 && menu < 50) {
+ ret = location_manager_set_service_state_changed_cb(manager, _state_change_cb, (void *)manager);
+ fprintf(stderr, "set_service_state_changed_cb: %d\n", ret);
+
+ if (basic) {
+ ret = location_manager_set_position_updated_cb(manager, _position_updated_cb, interval, (void *)manager);
+ fprintf(stderr, "set_position_updated_cb: %d\n", ret);
+ }