SDL_Android/SmartDeviceLinkAndroidProxy - added the correct version of the proxy
[profile/ivi/smartdevicelink.git] / SDL_Android / SmartDeviceLinkProxyAndroid / src / com / smartdevicelink / proxy / rpc / GPSData.java
1 package com.smartdevicelink.proxy.rpc;\r
2 \r
3 import java.util.Hashtable;\r
4 \r
5 import com.smartdevicelink.proxy.RPCStruct;\r
6 import com.smartdevicelink.proxy.constants.Names;\r
7 import com.smartdevicelink.proxy.rpc.enums.CompassDirection;\r
8 import com.smartdevicelink.proxy.rpc.enums.Dimension;\r
9 import com.smartdevicelink.proxy.rpc.enums.DisplayType;\r
10 import com.smartdevicelink.util.DebugTool;\r
11 \r
12 /**\r
13  * Describes the GPS data. Not all data will be available on all carlines.\r
14  * <p><b>Parameter List\r
15  * <table border="1" rules="all">\r
16  *              <tr>\r
17  *                      <th>Name</th>\r
18  *                      <th>Type</th>\r
19  *                      <th>Description</th>\r
20  *                      <th>SmartDeviceLink Ver. Available</th>\r
21  *              </tr>\r
22  *              <tr>\r
23  *                      <td>longitudeDegrees</td>\r
24  *                      <td>Double</td>\r
25  *                      <td>Minvalue: - 180\r
26  *                                      <b>Maxvalue: 180\r
27  *                      </td>\r
28  *                      <td>SmartDeviceLink 2.0</td>\r
29  *              </tr>\r
30  *              <tr>\r
31  *                      <td>latitudeDegrees</td>\r
32  *                      <td>Double</td>\r
33  *                      <td>Minvalue: - 90<b>Maxvalue: 90\r
34  *                      </td>\r
35  *                      <td>SmartDeviceLink 2.0</td>\r
36  *              </tr>\r
37  *              <tr>\r
38  *                      <td>utcYear</td>\r
39  *                      <td>Integer</td>\r
40  *                      <td>Minvalue: 2010<b>Maxvalue: 2100\r
41  *                      </td>\r
42  *                      <td>SmartDeviceLink 2.0</td>\r
43  *              </tr>\r
44  *              <tr>\r
45  *                      <td>utcMonth</td>\r
46  *                      <td>Integer</td>\r
47  *                      <td>Minvalue: 1<b>Maxvalue: 12\r
48  *                      </td>\r
49  *                      <td>SmartDeviceLink 2.0</td>\r
50  *              </tr>\r
51  *              <tr>\r
52  *                      <td>utcDay</td>\r
53  *                      <td>Integer</td>\r
54  *                      <td>Minvalue: 1<b>Maxvalue: 31\r
55  *                      </td>\r
56  *                      <td>SmartDeviceLink 2.0</td>\r
57  *              </tr>\r
58  *              <tr>\r
59  *                      <td>utcHours</td>\r
60  *                      <td>Integer</td>\r
61  *                      <td>Minvalue: 1<b>Maxvalue: 23\r
62  *                      </td>\r
63  *                      <td>SmartDeviceLink 2.0</td>\r
64  *              </tr>\r
65  *              <tr>\r
66  *                      <td>utcMinutes</td>\r
67  *                      <td>Integer</td>\r
68  *                      <td>Minvalue: 1<b>Maxvalue: 59\r
69  *                      </td>\r
70  *                      <td>SmartDeviceLink 2.0</td>\r
71  *              </tr> \r
72  *              <tr>\r
73  *                      <td>utcSeconds</td>\r
74  *                      <td>Integer</td>\r
75  *                      <td>Minvalue: 1<b>Maxvalue: 59\r
76  *                      </td>\r
77  *                      <td>SmartDeviceLink 2.0</td>\r
78  *              </tr> \r
79  *              <tr>\r
80  *                      <td>pdop</td>\r
81  *                      <td>Integer</td>\r
82  *                      <td>Positional Dilution of Precision<b>Minvalue: 0<b>Maxvalue: 31\r
83  *                      </td>\r
84  *                      <td>SmartDeviceLink 2.0</td>\r
85  *              </tr> \r
86  *              <tr>\r
87  *                      <td>hdop</td>\r
88  *                      <td>Integer</td>\r
89  *                      <td>Horizontal Dilution of Precision<b>Minvalue: 0<b>Maxvalue: 31\r
90  *                      </td>\r
91  *                      <td>SmartDeviceLink 2.0</td>\r
92  *              </tr> \r
93  *              <tr>\r
94  *                      <td>vdop</td>\r
95  *                      <td>Integer</td>\r
96  *                      <td>Vertical  Dilution of Precision<b>Minvalue: 0<b>Maxvalue: 31\r
97  *                      </td>\r
98  *                      <td>SmartDeviceLink 2.0</td>\r
99  *              </tr> \r
100  *              <tr>\r
101  *                      <td>actual</td>\r
102  *                      <td>Boolean</td>\r
103  *                      <td>True, if coordinates are based on satellites.\r
104  *                                      False, if based on dead reckoning\r
105  *                      </td>\r
106  *                      <td>SmartDeviceLink 2.0</td>\r
107  *              </tr> \r
108  *              <tr>\r
109  *                      <td>satellites</td>\r
110  *                      <td>Integer</td>\r
111  *                      <td>Number of satellites in view\r
112  *                                      <b>Minvalue: 0\r
113  *                                      <b>Maxvalue: 31\r
114  *                      </td>\r
115  *                      <td>SmartDeviceLink 2.0</td>\r
116  *              </tr> \r
117  *              <tr>\r
118  *                      <td>altitude</td>\r
119  *                      <td>Integer</td>\r
120  *                      <td>Altitude in meters\r
121  *                                      <b>Minvalue: -10000\r
122  *                                      <b>Maxvalue: 10000\r
123  *                      </td>\r
124  *                      <td>SmartDeviceLink 2.0</td>\r
125  *              </tr> \r
126  *              <tr>\r
127  *                      <td>heading</td>\r
128  *                      <td>Double</td>\r
129  *                      <td>The heading. North is 0, East is 90, etc.\r
130  *                                      <b>Minvalue: 0\r
131  *                                      <b>Maxvalue: 359.99\r
132  *                                      <b>Resolution is 0.01\r
133  *                      </td>\r
134  *                      <td>SmartDeviceLink 2.0</td>\r
135  *              </tr> \r
136  *              <tr>\r
137  *                      <td>speed</td>\r
138  *                      <td>Integer</td>\r
139  *                      <td>The speed in KPH\r
140  *                                      <b>Minvalue: 0\r
141  *                                      <b>Maxvalue: 400\r
142  *                      </td>\r
143  *                      <td>SmartDeviceLink 2.0</td>\r
144  *              </tr> \r
145  *  </table>\r
146  * @since SmartDeviceLink 2.0\r
147  */\r
148 public class GPSData extends RPCStruct {\r
149 \r
150         /**\r
151          * Constructs a newly allocated GPSData object\r
152          */\r
153     public GPSData() { }\r
154     \r
155     /**\r
156      * Constructs a newly allocated GPSData object indicated by the Hashtable parameter \r
157      * @param hash The Hashtable to use\r
158      */    \r
159     public GPSData(Hashtable hash) {\r
160         super(hash);\r
161     }\r
162     \r
163     /**\r
164      * set longitude degrees\r
165      * @param longitudeDegrees\r
166      */\r
167     public void setLongitudeDegrees(Double longitudeDegrees) {\r
168         if (longitudeDegrees != null) {\r
169                 store.put(Names.longitudeDegrees, longitudeDegrees);\r
170         } else {\r
171                 store.remove(Names.longitudeDegrees);\r
172         }\r
173     }\r
174     \r
175     /**\r
176      * get longitude degrees \r
177      * @return longitude degrees\r
178      */\r
179     public Double getLongitudeDegrees() {\r
180         return (Double) store.get(Names.longitudeDegrees);\r
181     }\r
182     \r
183     /**\r
184      * set latitude degrees\r
185      * @param latitudeDegrees latitude degrees\r
186      */\r
187     public void setLatitudeDegrees(Double latitudeDegrees) {\r
188         if (latitudeDegrees != null) {\r
189                 store.put(Names.latitudeDegrees, latitudeDegrees);\r
190         } else {\r
191                 store.remove(Names.latitudeDegrees);\r
192         }\r
193     }\r
194     \r
195     /**\r
196      * get  latitude degrees\r
197      * @return latitude degrees\r
198      */\r
199     public Double getLatitudeDegrees() {\r
200         return (Double) store.get(Names.latitudeDegrees);\r
201     }\r
202     \r
203     /**\r
204      * set utc year\r
205      * @param utcYear utc year\r
206      */\r
207     public void setUtcYear(Integer utcYear) {\r
208         if (utcYear != null) {\r
209                 store.put(Names.utcYear, utcYear);\r
210         } else {\r
211                 store.remove(Names.utcYear);\r
212         }\r
213     }\r
214     \r
215     /**\r
216      * get utc year\r
217      * @return utc year\r
218      */\r
219     public Integer getUtcYear() {\r
220         return (Integer) store.get(Names.utcYear);\r
221     }\r
222     \r
223     /**\r
224      * set utc month\r
225      * @param utcMonth utc month\r
226      */\r
227     public void setUtcMonth(Integer utcMonth) {\r
228         if (utcMonth != null) {\r
229                 store.put(Names.utcMonth, utcMonth);\r
230         } else {\r
231                 store.remove(Names.utcMonth);\r
232         }\r
233     }\r
234     \r
235     /**\r
236      * get utc month\r
237      * @return utc month\r
238      */\r
239     public Integer getUtcMonth() {\r
240         return (Integer) store.get(Names.utcMonth);\r
241     }\r
242     \r
243     /**\r
244      * set utc day\r
245      * @param utcDay utc day\r
246      */\r
247     public void setUtcDay(Integer utcDay) {\r
248         if (utcDay != null) {\r
249                 store.put(Names.utcDay, utcDay);\r
250         } else {\r
251                 store.remove(Names.utcDay);\r
252         }\r
253     }\r
254     \r
255     /**\r
256      * get utc day\r
257      * @return utc day\r
258      */\r
259     public Integer getUtcDay() {\r
260         return (Integer) store.get(Names.utcDay);\r
261     }\r
262     \r
263     /**\r
264      * set utc hours\r
265      * @param utcHours utc hours\r
266      */\r
267     public void setUtcHours(Integer utcHours) {\r
268         if (utcHours != null) {\r
269                 store.put(Names.utcHours, utcHours);\r
270         } else {\r
271                 store.remove(Names.utcHours);\r
272         }\r
273     }\r
274     \r
275     /**\r
276      * get utc hours\r
277      * @return utc hours\r
278      */\r
279     public Integer getUtcHours() {\r
280         return (Integer) store.get(Names.utcHours);\r
281     }\r
282     \r
283     /**\r
284      * set utc minutes\r
285      * @param utcMinutes utc minutes\r
286      */\r
287     public void setUtcMinutes(Integer utcMinutes) {\r
288         if (utcMinutes != null) {\r
289                 store.put(Names.utcMinutes, utcMinutes);\r
290         } else {\r
291                 store.remove(Names.utcMinutes);\r
292         }\r
293     }\r
294     \r
295     /**\r
296      * get utc minutes\r
297      * @return utc minutes\r
298      */\r
299     public Integer getUtcMinutes() {\r
300         return (Integer) store.get(Names.utcMinutes);\r
301     }\r
302     \r
303     /**\r
304      * set utc seconds\r
305      * @param utcSeconds utc seconds\r
306      */\r
307     public void setUtcSeconds(Integer utcSeconds) {\r
308         if (utcSeconds != null) {\r
309                 store.put(Names.utcSeconds, utcSeconds);\r
310         } else {\r
311                 store.remove(Names.utcSeconds);\r
312         }\r
313     }\r
314     \r
315     /**\r
316      * get utc seconds\r
317      * @return utc seconds\r
318      */\r
319     public Integer getUtcSeconds() {\r
320         return (Integer) store.get(Names.utcSeconds);\r
321     }\r
322     public void setCompassDirection(CompassDirection compassDirection) {\r
323         if (compassDirection != null) {\r
324                 store.put(Names.compassDirection, compassDirection);\r
325         } else {\r
326                 store.remove(Names.compassDirection);\r
327         }\r
328     }\r
329     public CompassDirection getCompassDirection() {\r
330         Object obj = store.get(Names.compassDirection);\r
331         if (obj instanceof CompassDirection) {\r
332             return (CompassDirection) obj;\r
333         } else if (obj instanceof String) {\r
334                 CompassDirection theCode = null;\r
335             try {\r
336                 theCode = CompassDirection.valueForString((String) obj);\r
337             } catch (Exception e) {\r
338                 DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + Names.compassDirection, e);\r
339             }\r
340             return theCode;\r
341         }\r
342         return null;\r
343     }\r
344     \r
345     /**\r
346      * set the positional dilution of precision\r
347      * @param pdop the positional dilution of precision\r
348      */\r
349     public void setPdop(Double pdop) {\r
350         if (pdop != null) {\r
351                 store.put(Names.pdop, pdop);\r
352         } else {\r
353                 store.remove(Names.pdop);\r
354         }\r
355     }\r
356     \r
357     /**\r
358      * get  the positional dilution of precision\r
359      */\r
360     public Double getPdop() {\r
361         return (Double) store.get(Names.pdop);\r
362     }\r
363     \r
364     /**\r
365      * set the horizontal dilution of precision\r
366      * @param hdop the horizontal dilution of precision\r
367      */\r
368     public void setHdop(Double hdop) {\r
369         if (hdop != null) {\r
370                 store.put(Names.hdop, hdop);\r
371         } else {\r
372                 store.remove(Names.hdop);\r
373         }\r
374     }\r
375     \r
376     /**\r
377      * get  the horizontal dilution of precision\r
378      * @return the horizontal dilution of precision\r
379      */\r
380     public Double getHdop() {\r
381         return (Double) store.get(Names.hdop);\r
382     }\r
383     \r
384     /**\r
385      * set the vertical dilution of precision\r
386      * @param vdop the vertical dilution of precision\r
387      */\r
388     public void setVdop(Double vdop) {\r
389         if (vdop != null) {\r
390                 store.put(Names.vdop, vdop);\r
391         } else {\r
392                 store.remove(Names.vdop);\r
393         }\r
394     }\r
395     \r
396     /**\r
397      * get  the vertical dilution of precision\r
398      * @return the vertical dilution of precision\r
399      */\r
400     public Double getVdop() {\r
401         return (Double) store.get(Names.vdop);\r
402     }\r
403     \r
404     /**\r
405      * set what coordinates based on \r
406      * @param actual True, if coordinates are based on satellites.False, if based on dead reckoning\r
407      */\r
408     public void setActual(Boolean actual) {\r
409         if (actual != null) {\r
410                 store.put(Names.actual, actual);\r
411         } else {\r
412                 store.remove(Names.actual);\r
413         }\r
414     }\r
415     \r
416     /**\r
417      * get what coordinates based on \r
418      * @return True, if coordinates are based on satellites.False, if based on dead reckoning\r
419      */\r
420     public Boolean getActual() {\r
421         return (Boolean) store.get(Names.actual);\r
422     }\r
423     \r
424     /**\r
425      * set the number of satellites in view\r
426      * @param satellites the number of satellites in view\r
427      */\r
428     public void setSatellites(Integer satellites) {\r
429         if (satellites != null) {\r
430                 store.put(Names.satellites, satellites);\r
431         } else {\r
432                 store.remove(Names.satellites);\r
433         }\r
434     }\r
435     \r
436     /**\r
437      * get  the number of satellites in view\r
438      * @return the number of satellites in view\r
439      */\r
440     public Integer getSatellites() {\r
441         return (Integer) store.get(Names.satellites);\r
442     }\r
443     public void setDimension(Dimension dimension) {\r
444         if (dimension != null) {\r
445                 store.put(Names.dimension, dimension);\r
446         } else {\r
447                 store.remove(Names.dimension);\r
448         }\r
449     }\r
450     public Dimension getDimension() {\r
451         Object obj = store.get(Names.dimension);\r
452         if (obj instanceof Dimension) {\r
453             return (Dimension) obj;\r
454         } else if (obj instanceof String) {\r
455                 Dimension theCode = null;\r
456             try {\r
457                 theCode = Dimension.valueForString((String) obj);\r
458             } catch (Exception e) {\r
459                 DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + Names.dimension, e);\r
460             }\r
461             return theCode;\r
462         }\r
463         return null;\r
464     }\r
465     \r
466     /**\r
467      * set altitude in meters\r
468      * @param altitude altitude in meters\r
469      */\r
470     public void setAltitude(Double altitude) {\r
471         if (altitude != null) {\r
472                 store.put(Names.altitude, altitude);\r
473         } else {\r
474                 store.remove(Names.altitude);\r
475         }\r
476     }\r
477     \r
478     /**\r
479      * get altitude in meters\r
480      * @return altitude in meters\r
481      */\r
482     public Double getAltitude() {\r
483         return (Double) store.get(Names.altitude);\r
484     }\r
485     \r
486     /**\r
487      * set the heading.North is 0, East is 90, etc.\r
488      * @param heading the heading. \r
489      */\r
490     public void setHeading(Double heading) {\r
491         if (heading != null) {\r
492                 store.put(Names.heading, heading);\r
493         } else {\r
494                 store.remove(Names.heading);\r
495         }\r
496     }\r
497     \r
498     /**\r
499      * get the heading\r
500      */\r
501     public Double getHeading() {\r
502         return (Double) store.get(Names.heading);\r
503     }\r
504     \r
505     /**\r
506      * set speed in KPH\r
507      * @param speed the speed\r
508      */\r
509     public void setSpeed(Double speed) {\r
510         if (speed != null) {\r
511                 store.put(Names.speed, speed);\r
512         } else {\r
513                 store.remove(Names.speed);\r
514         }\r
515     }\r
516     \r
517     /**\r
518      * get the speed in KPH\r
519      * @return the speed in KPH\r
520      */\r
521     public Double getSpeed() {\r
522         return (Double) store.get(Names.speed);\r
523     }\r
524 }\r