summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Porter <mporter@konsulko.com>2018-07-25 12:24:28 -0400
committerMatt Porter <mporter@konsulko.com>2018-07-27 12:04:34 -0400
commit0a5f2088affd1a92a38b067618585c57730b0646 (patch)
tree73caadc2f3c2806bf0eca19016fa9d1f5ccd628f
parent9f54d40746e2a09781e2a197cea1822bbd0d25ad (diff)
wifi: convert to libqtappfw network model
Use libqtappfw's network model for the wifi network list, wifi status, and wifi power/connect/disconnect methods. Remove useless websocket message handling and other related code. Bug-AGL: SPEC-1542 Change-Id: I269fc03405be98f428b61e6a583eb5cbad767c6e Signed-off-by: Matt Porter <mporter@konsulko.com>
-rw-r--r--app/Settings.qml2
-rw-r--r--app/main.cpp2
-rw-r--r--app/wifi/Wifi.qml284
-rw-r--r--package/config.xml2
4 files changed, 26 insertions, 264 deletions
diff --git a/app/Settings.qml b/app/Settings.qml
index 0d74c3b..b3a622a 100644
--- a/app/Settings.qml
+++ b/app/Settings.qml
@@ -49,8 +49,6 @@ ApplicationWindow {
if (!app.isSetting) continue
settingsModel.append({'icon': app.icon, 'title': app.title, 'checkable': app.checkable, 'app': app})
app.visible = false
-
- if (app.isWifi) app.activateWifi()
}
}
diff --git a/app/main.cpp b/app/main.cpp
index 7ad569f..082c444 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -28,6 +28,7 @@
#include <QQuickWindow>
#include <libhomescreen.hpp>
#include <bluetooth.h>
+#include <network.h>
#include <qlibwindowmanager.h>
class DBus : public QObject
@@ -84,6 +85,7 @@ int main(int argc, char *argv[])
bindingAddressWS.setQuery(query);
QQmlContext *context = engine.rootContext();
context->setContextProperty(QStringLiteral("bindingAddressWS"), bindingAddressWS);
+ context->setContextProperty("network", new Network(bindingAddressWS, context));
std::string token = secret.toStdString();
LibHomeScreen* hs = new LibHomeScreen();
diff --git a/app/wifi/Wifi.qml b/app/wifi/Wifi.qml
index b30863c..85e8b60 100644
--- a/app/wifi/Wifi.qml
+++ b/app/wifi/Wifi.qml
@@ -1,6 +1,6 @@
-
/*
* Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2018 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +19,6 @@ import QtQuick 2.6
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0
import AGL.Demo.Controls 1.0
-import QtWebSockets 1.0
import ".."
SettingPage {
@@ -27,199 +26,11 @@ SettingPage {
icon: '/wifi/images/HMI_Settings_WifiIcon.svg'
title: 'Wifi'
checkable: true
+ checked: network.wifiEnabled
readonly property bool isWifi: true
- property bool isInitializing: true
-
- property string address_str: bindingAddressWS
- property string token_str: ""
- property string api_str: "wifi-manager"
- property string verb_str: ""
- property string parameter_str: ""
- property string payloadLength: "9999"
-
- property var msgid_enu: {
- "call": 2,
- "retok": 3,
- "reterr": 4,
- "event": 5
- }
- property string request_str: ""
- property string status_str: ""
-
-
-
- WebSocket {
- id: websocket
- url: address_str
- onTextMessageReceived: {
- var message_json = JSON.parse(message)
- console.debug("Raw response: " + message)
- /* server is not happy with our request, ignore it */
- if ((message_json[0] === msgid_enu.reterr)) {
-
- console.error("Return value is not OK!")
- console.error("Raw response: " + message)
- return
-
- } else if ((message_json[0] === msgid_enu.event)) {
-
- var eventContent = JSON.parse(JSON.stringify(message_json[2]))
-
- console.log("Received EVENT: " + eventContent.event)
-
- if (eventContent.event === "wifi-manager/networkList") {
-
- console.debug("Event data:" + eventContent.data.data1 + ", " + eventContent.data.data2 )
- console.log("Network List was updated, sending scan_result request")
-
- //update network list
- verb_str = "scan_result"
- sendSocketMesage(verb_str, 'None')
- }
-
- else if (eventContent.event === "wifi-manager/passkey") {
-
- console.debug("Event data:" + eventContent.data.data1 + ", " + eventContent.data.data2 )
- console.log("Passkey requested")
- dialog.visible = true
-
- }
- else {
-
- console.error("Unhadled event.")
-
- }
- } else if ((message_json[0] === msgid_enu.retok)) {
-
-
- /* token creation or refresh happened, store it and enable buttons */
- if (verb_str == "connect") {
- token_str = message_json[3]
-
- console.error("Connect reply received!")
-
-
- } else if (verb_str == "logout") {
- websocket.active = false // close the socket
-
- } else if (verb_str == "scan_result") {
-
- var jsonObjectNetworks = JSON.parse(
- JSON.stringify(message_json[2].response))
-
- networkList.clear()
- for (var i = 0; i < jsonObjectNetworks.length; i++) {
-
- networkList.append({
- number: jsonObjectNetworks[i].Number,
- name: jsonObjectNetworks[i].ESSID,
- strength: jsonObjectNetworks[i].Strength,
- serviceState: jsonObjectNetworks[i].State,
- security: jsonObjectNetworks[i].Security,
- address: jsonObjectNetworks[i].IPAddress
- })
- }
-
- }
- else if (verb_str == "status") {
-
- var status = "OFF"
- status = (message_json[2].response).Power
-
- checked = (status === "ON") ? true : false
- }
- } else
- console.log("Unhadled websocket message", message_json[0])
- }
- onStatusChanged: {
-
- var parameterJson = 0
- var requestJson = 0
-
- if (websocket.status == WebSocket.Error) {
- status_str = "Error: " + websocket.errorString
-
- } else if (websocket.status == WebSocket.Open) {
- status_str = "Socket opened; sending message..."
-
- //first get the status
- verb_str = "status"
- parameterJson = 'None'
- sendSocketMesage(verb_str, parameterJson)
-
-
-
- } else if (websocket.status == WebSocket.Closed) {
- status_str = "Socket closed"
- console.log("Socket closed, bye.")
-
- websocket.active = false
-
- }
-
- console.log(status_str)
- }
- active: false
- }
onCheckedChanged: {
- console.log("Wifi set to", checked)
-
- if (websocket.active) {
-
- if (checked == true) {
-
- //subscribe for events
- sendSocketMesage("subscribe", { value: "networkList" })
- sendSocketMesage("subscribe", { value: "passkey" })
- sendSocketMesage("activate", 'None')
-
- //get scan results right away
- verb_str = "scan_result"
- sendSocketMesage(verb_str, 'None')
-
- } else {
-
- if (!isInitializing) {
- networkList.clear()
-
- sendSocketMesage("deactivate", 'None')
- sendSocketMesage("unsubscribe", { value: "passkey" })
- sendSocketMesage("unsubscribe", { value: "networkList" })
- }
- }
- isInitializing = false
- }
-
- else {
- console.log("Websocket not active.")
- websocket.active = true
- }
-
-
-
- }
-
-
- function sendSocketMesage(verb, parameter) {
-
-
- var requestJson = [msgid_enu.call, payloadLength, api_str + '/'
- + verb, parameter]
-
- websocket.sendTextMessage(JSON.stringify(requestJson))
-
- }
- ListModel {
- id: networkList
- }
-
-
- function securityType(security) {
- if (security === "Open")
- return "unsecured"
- else
- return "secured"
+ network.power(checked)
}
Component {
@@ -229,8 +40,6 @@ SettingPage {
width: ListView.view.width
Image {
anchors.left: parent.left
- //width: 70
- //height: 50
id: icon
source: {
var svg
@@ -242,7 +51,7 @@ SettingPage {
svg = "3Bars"
else
svg = "Full"
- if (securityType(security) === "unsecured") {
+ if (security === "Open") {
return 'images/HMI_Settings_Wifi_%1.svg'.arg(svg)
} else {
return 'images/HMI_Settings_Wifi_Locked_%1.svg'.arg(svg)
@@ -254,80 +63,38 @@ SettingPage {
anchors.leftMargin: 5
Label {
id: networkNameText
- text: name
+ text: ssid
color: '#66FF99'
font.pixelSize: 48
- font.bold: serviceState === "ready"
- || serviceState === "online"
+ font.bold: sstate === "ready"
+ || sstate === "online"
}
Label {
- visible: serviceState === "ready"
- || serviceState === "online"
+ visible: sstate === "ready"
+ || sstate === "online"
text: "connected, " + address
font.pixelSize: 18
color: "white"
- //font.italic: true
}
}
-
-
onClicked: {
- var parameterJson = 0
- var requestJson = 0
-
- //connectButton.border.color = "steelblue"
- if ((serviceState === "ready") || serviceState === "online") {
-
-
- //means we are connected
- console.log("Disconnecting from", index, " ,", name)
-
- //make some indication that disconnection is in progress
- //probably not good enough, though. TODO: make it better
+ if ((sstate === "ready") || sstate === "online") {
+ console.log("Disconnecting from ", ssid, " (", service, ")")
networkNameText.font.italic = 1
-
- verb_str = "disconnect"
- parameterJson = {
- network: view.currentIndex
- }
- sendSocketMesage(verb_str, parameterJson)
-
-
-
-
+ network.disconnect(service)
} else {
- console.log("Requesting connection to network #", index, ", ", name, ".")
- view.currentIndex = model.index
-
- //make some indication that connection is in progress
- //probably not good enough, though. TODO: make it better
+ console.log("Connecting to ", ssid, " (", service, ")")
networkNameText.font.italic = 1
-
- verb_str = "connect"
- parameterJson = {
- network: view.currentIndex
- }
- sendSocketMesage(verb_str, parameterJson)
-
+ network.connect(service)
}
}
-
- // ImageButton {
- // anchors.verticalCenter: parent.verticalCenter
- // anchors.right: parent.right
- // offImage: '../images/HMI_Settings_X.svg'
- // onClicked: {
-
- // }
- // }
Image {
source: '../images/HMI_Settings_DividingLine.svg'
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.topMargin: -15
-
visible: model.index > 0
}
}
@@ -337,7 +104,7 @@ SettingPage {
id: view
anchors.fill: parent
anchors.margins: 100
- model: networkList
+ model: WifiNetworkModel
delegate: wifiDevice
clip: true
}
@@ -370,22 +137,14 @@ SettingPage {
anchors.centerIn: parent
TextField {
id: password
+ property int reqid: 0
placeholderText: 'Password'
}
Button {
text: 'Connect'
highlighted: true
onClicked: {
-
- var passkey = password.text
- console.log("Validating", passkey)
-
- //just send the passkey, binder is waiting for it
- verb_str = "insertpasskey"
- var parameterJson = {
- passkey: passkey
- }
- sendSocketMesage(verb_str, parameterJson)
+ network.input(password.reqid, password.text)
dialog.visible = false
}
}
@@ -406,8 +165,11 @@ SettingPage {
}
}
- function activateWifi(){
- websocket.active = true
+ Connections {
+ target: network
+ onInputRequest: {
+ password.reqid = id
+ dialog.visible = true
+ }
}
-
}
diff --git a/package/config.xml b/package/config.xml
index 2e40034..4ca6eaa 100644
--- a/package/config.xml
+++ b/package/config.xml
@@ -9,7 +9,7 @@
<feature name="urn:AGL:widget:required-api">
<param name="windowmanager" value="ws" />
<param name="homescreen" value="ws" />
- <param name="wifi-manager" value="ws" />
+ <param name="network-manager" value="ws" />
<param name="Bluetooth-Manager" value="ws" />
</feature>
<feature name="urn:AGL:widget:required-permission">