4 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Youngae Kang <youngae.kang@samsung.com>, Yunhan Kim <yhan.kim@samsung.com>,
7 * Genie Kim <daejins.kim@samsung.com>, Minjune Kim <sena06.kim@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
26 #include "location/location-satellite.h"
27 #include "location/location-log.h"
30 location_satellite_get_type (void)
32 static volatile gsize type_volatile = 0;
33 if(g_once_init_enter(&type_volatile)) {
34 GType type = g_boxed_type_register_static (
35 g_intern_static_string ("LocationSatellite"),
36 (GBoxedCopyFunc) location_satellite_copy,
37 (GBoxedFreeFunc) location_satellite_free);
38 g_once_init_leave(&type_volatile, type);
44 update_num_of_used (LocationSatellite *satellite)
46 g_return_if_fail(satellite);
47 satellite->num_of_sat_used = 0;
48 if (satellite->num_of_sat_inview > 0 && satellite->sat_inview) {
50 for (i = 0 ; i < satellite->num_of_sat_inview ; i++)
51 if(satellite->sat_inview[i].used) (satellite->num_of_sat_used)++;
55 EXPORT_API LocationSatellite*
56 location_satellite_new (int num_of_sat_inview)
58 LocationSatellite* satellite = g_slice_new0(LocationSatellite);
59 satellite->num_of_sat_inview = num_of_sat_inview;
60 satellite->num_of_sat_used = 0;
61 satellite->sat_inview = g_new0(LocationSatelliteDetail, satellite->num_of_sat_inview);
66 location_satellite_free (LocationSatellite* satellite)
68 g_return_if_fail(satellite);
69 g_free(satellite->sat_inview);
70 g_slice_free(LocationSatellite, satellite);
73 EXPORT_API LocationSatellite*
74 location_satellite_copy (const LocationSatellite *satellite)
76 g_return_val_if_fail(satellite, NULL);
77 LocationSatellite* satellite_dup = location_satellite_new(satellite->num_of_sat_inview);
78 satellite_dup->num_of_sat_used = satellite->num_of_sat_used;
80 for (i = 0 ; i < satellite_dup->num_of_sat_inview ; i++)
81 location_satellite_set_satellite_details(satellite_dup, i,
82 satellite->sat_inview[i].prn,
83 satellite->sat_inview[i].used,
84 satellite->sat_inview[i].elevation,
85 satellite->sat_inview[i].azimuth,
86 satellite->sat_inview[i].snr);
91 location_satellite_get_satellite_details (const LocationSatellite *satellite,
99 g_return_val_if_fail(satellite, FALSE);
100 g_return_val_if_fail(prn, FALSE);
101 g_return_val_if_fail(used, FALSE);
102 g_return_val_if_fail(elevation, FALSE);
103 g_return_val_if_fail(azimuth, FALSE);
104 g_return_val_if_fail(snr, FALSE);
105 g_return_val_if_fail(satellite->sat_inview, FALSE);
106 g_return_val_if_fail(index < satellite->num_of_sat_inview, FALSE);
108 *prn = satellite->sat_inview[index].prn;
109 *used = satellite->sat_inview[index].used;
110 *elevation = satellite->sat_inview[index].elevation;
111 *azimuth = satellite->sat_inview[index].azimuth;
112 *snr = satellite->sat_inview[index].snr;
118 location_satellite_set_satellite_details (LocationSatellite *satellite,
126 g_return_val_if_fail(satellite, FALSE);
127 g_return_val_if_fail(satellite->sat_inview, FALSE);
128 g_return_val_if_fail(index < satellite->num_of_sat_inview, FALSE);
130 satellite->sat_inview[index].prn= prn;
131 satellite->sat_inview[index].used= used;
132 satellite->sat_inview[index].elevation= elevation;
133 satellite->sat_inview[index].azimuth= azimuth;
134 satellite->sat_inview[index].snr= snr;
135 update_num_of_used (satellite);