Fix internal bug and change the design of ico-app-samplenavi
[profile/ivi/ico-uxf-homescreen-sample-apps.git] / ico-app-samplenavi / res / Map / js / nativeapp_accessor.js
1 /*\r
2  * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.\r
3  *\r
4  * This program is licensed under the terms and conditions of the \r
5  * Apache License, version 2.0.  The full text of the Apache License is at\r
6  * http://www.apache.org/licenses/LICENSE-2.0\r
7  *\r
8  */\r
9 \r
10 /**\r
11  *  Navigation Application(sample navi) Accessor Class\r
12  *\r
13  */\r
14 var CarInfo = function(lat_val, lon_val) {\r
15     this.lat_val = lat_val;\r
16     this.lon_val = lon_val;\r
17 }\r
18 \r
19 var NativeAppAccessor = function() {\r
20     var _socket;                                                // WebSocket\r
21     \r
22     /**\r
23      *  Connection WebSocket\r
24      *\r
25      */\r
26     this.connectWebSocket = function() {\r
27         if ( navigator.userAgent.indexOf('Firefox') != -1 ) {\r
28             _socket = new MozWebSocket('ws://' + IP_ADDR + ':' + WEBSOCKET_PORT + '/');\r
29         }\r
30         else {\r
31             _socket = new WebSocket('ws://' + IP_ADDR + ':' + WEBSOCKET_PORT + '/', 'http-only');\r
32         }\r
33         \r
34         // socket event\r
35         _socket.onopen = function() {\r
36             _socket.send('OPEN ' + EDJE_PATH + EDJE_CONF_NAME);\r
37         };\r
38 \r
39         _socket.onmessage = function(e) { recvMessage(e); };\r
40         _socket.onerror = function(e) { };\r
41         _socket.onclose = function() { };\r
42     }\r
43 \r
44     /**\r
45      *  Disconnection WebSocket\r
46      *\r
47      */\r
48     this.disconnectWebSocket = function() {\r
49         if ( _socket ) {\r
50             _socket.send('Close_Socket');\r
51             _socket.close();\r
52         }\r
53     }\r
54 \r
55     /**\r
56      * Request Navigation Start\r
57      */\r
58     this.sendReqNaviStart = function() {\r
59         if (_socket) {\r
60             $('#address').text('Send Req Navi Start.');\r
61             _socket.send('CHG SEQ REQ_NAV');\r
62         }\r
63     }\r
64 \r
65     /**\r
66      * Request Navigation End\r
67      */\r
68     this.sendReqNaviEnd = function() {\r
69         if (_socket) {\r
70             $('#address').text('Send Req Navi End.');\r
71             _socket.send('CHG SEQ END_NAV');\r
72         }\r
73     }\r
74 \r
75     /**\r
76      * Send Route\r
77      */\r
78     this.sendRoute = function( routeStr ) {\r
79         if( _socket ) {\r
80             _socket.send( routeStr );\r
81         }\r
82     }\r
83 \r
84     /**\r
85      *  Receive Message\r
86      *\r
87      *  @param  event   Receive Event\r
88      *\r
89      */\r
90     function recvMessage(event) {\r
91         var message = event.data;\r
92         var info;\r
93 \r
94         var messageType = getMessageType(message);\r
95         if ( messageType == MSG_TYPE.CHG ) {\r
96             // type is carinfo change message\r
97             info = getCarInfo(message);\r
98             if ( info ) {\r
99                 $(document).trigger('recvCarInfo', info);\r
100             }\r
101         }\r
102         else\r
103         {\r
104             $(document).trigger('recvSeqNxt', message);\r
105         }\r
106     }\r
107 \r
108     /**\r
109      *  get message type\r
110      *\r
111      *  @param  message     Receive message\r
112      *\r
113      *  @return message kind (MSG_TYPE)\r
114      *\r
115      */\r
116     function getMessageType(message) {\r
117         var cmd = message.slice(0, 7);\r
118         var type;\r
119 \r
120         if ( cmd == 'CHG VAL') {\r
121             type = MSG_TYPE.CHG;\r
122         } else if (cmd == 'CHG SEQ') {\r
123             type = MSG_TYPE.SEQ;\r
124         } else {\r
125             type = MSG_TYPE.ERR;\r
126         }\r
127 \r
128         return type;\r
129     }\r
130 \r
131     /**\r
132      *  Get CarInfo\r
133      *\r
134      *  @param  message     Receive message\r
135      *\r
136      *  @return CarInfo data\r
137      *\r
138      */\r
139     function getCarInfo(message) {\r
140         var tmp = message.slice(17);\r
141         var tmp_info;\r
142         var info;\r
143         var lat_index;\r
144         var lon_index;\r
145 \r
146         lat_index = tmp.indexOf(KEY_LAT);\r
147         lon_index = tmp.indexOf(KEY_LON);\r
148 \r
149         if ((lat_index != -1) && (lon_index != -1) ){\r
150             info = new CarInfo();\r
151 \r
152             // Latitude\r
153             tmp_info = tmp.slice(lat_index + KEY_LAT.length + 1, lon_index);\r
154             info.lat_val =  parseFloat(tmp_info);\r
155 \r
156             // Longitude\r
157             tmp_info = tmp.slice(lon_index + KEY_LON.length + 1);\r
158             info.lon_val =  parseFloat(tmp_info);\r
159         }\r
160 \r
161         return info;\r
162     }\r
163 \r
164     /**\r
165      * Request DIST ONSCREEN\r
166      */\r
167     this.sendReqDistOnScreen = function() {\r
168         if (_socket) {\r
169             $('#address').text("SEND REQ DIST OnScreen.");\r
170             try {\r
171                 _socket.send('OPEN ' + EDJE_PATH + EDJE_DIST_NAME);\r
172             } catch (e) {\r
173                 $('#address').text("SEND REQ DIST OnScreen Error. :" + e);\r
174             }\r
175         }\r
176     }\r
177     /**\r
178      * Request CLOSE ONSCREEN\r
179      */\r
180     this.sendReqCloseOnScreen = function() {\r
181         if (_socket) {\r
182             $('#address').text("SEND REQ Close OnScreen.");\r
183             _socket.send('CLOSE');\r
184         }\r
185     }\r
186 }\r