/* * Copyright (c) 2018 TOYOTA MOTOR CORPORATION * Copyright (C) 2016 The Qt Company Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import QtQuick 2.6 import QtQuick.Layouts 1.1 import QtQuick.Controls 2.0 import QtWebSockets 1.0 ApplicationWindow { id: window title: "HUD Tbt Demo" width: 1920 height: 1080 visible: true property string api_str: "naviapi" property string verb_subscribe: "subscribe" property string verb_getcurretdirstate: "navicore_getcurrentdestdir" property string event_getdestdir: "naviapi/navicore_getdestdir" property string event_cancelguidance: "naviapi/navicore_cancelguidance" property string nodirection_str:"0" property string arrivedirection_str:"12" property var msgid_enu: { "call":2, "retok":3, "reterr":4, "event":5 } property string request_str: "" property string status_str: "" property double state: 0 WebSocket { id: websocket url: bindingAddress onStatusChanged: { if (websocket.status === WebSocket.Error){ console.log ("Error: " + websocket.errorString) websocket.active = false }else if (websocket.status === WebSocket.Open){ console.log ("Socket Open") do_getcurrentdirstate() do_subscribe("getdestdir") do_subscribe("cancelguidance") }else if (websocket.status === WebSocket.Closed){ console.log ("Socket closed") } } onTextMessageReceived: { var message_json = JSON.parse(message) console.log ("Raw response: " + message) console.log ("JSON response: " + message_json) if (message_json[0] === msgid_enu.event){ if(message_json[2].event === event_getdestdir) { var state = message_json[2].data.state tbt_board.state = state console.log ("state is ok !") if (tbt_board.state === arrivedirection_str) { clear_timer.start() console.log ("clear arrive direction state 12 is ok !") } } else if(message_json[2].event === event_cancelguidance) { tbt_board.state = nodirection_str } } else if(message_json[0] === msgid_enu.retok){ if (message_json[2].request.info === verb_getcurretdirstate){ var currentdirstate = message_json[2].response[0].CurrentDirState tbt_board.state = currentdirstate console.log ("get current state is ok !") } } else{ if (message_json[0] !== msgid_enu.retok) { console.log ("Return value is not ok !") return } } /* refresh happen */ } active: true } //get current direction state function do_getcurrentdirstate() { request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_getcurretdirstate + '", {} ]' console.log (request_str) websocket.sendTextMessage (request_str) } //subscribe function do_subscribe( event ) { request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_subscribe + '", {"value":"' + event + '"} ]' console.log (request_str) websocket.sendTextMessage (request_str) } TbtBoard { id: tbt_board z: 1 visible: true anchors.fill: parent } Timer { id: clear_timer repeat: false interval: 5000 triggeredOnStart: false onTriggered: { tbt_board.state = nodirection_str } } }