summaryrefslogtreecommitdiffstats
path: root/app/api/Binding.qml
diff options
context:
space:
mode:
Diffstat (limited to 'app/api/Binding.qml')
-rw-r--r--app/api/Binding.qml196
1 files changed, 0 insertions, 196 deletions
diff --git a/app/api/Binding.qml b/app/api/Binding.qml
deleted file mode 100644
index a53f76b..0000000
--- a/app/api/Binding.qml
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (C) 2016 The Qt Company Ltd.
- * Copyright (C) 2017 Konsulko Group
- *
- * 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 QtWebSockets 1.0
-
-WebSocket {
- id: root
- active: true
- url: bindingAddress
-
- property string apiString: "radio"
- property var verbs: []
- property string payloadLength: "9999"
-
- readonly property var msgid: {
- "call": 2,
- "retok": 3,
- "reterr": 4,
- "event": 5
- }
-
- readonly property int amBand: 0
- readonly property int fmBand: 1
-
- readonly property int stoppedState: 0
- readonly property int activeState: 1
-
- property int band: fmBand
- property int frequency
- property int frequencyStep
- property int minimumFrequency
- property int maximumFrequency
- property int state: stoppedState
- property int scanningState: stoppedState
- property bool scanningFreqUpdate: false
- property string stationId: ""
-
- signal stationFound
-
- property Connections c : Connections {
- target: root
-
- onFrequencyChanged: {
- if(scanningState != activeState) {
- // Not scanning, push update
- sendSocketMessage("frequency", { value: frequency })
- } else if(!scanningFreqUpdate) {
- // External change, stop scanning
- sendSocketMessage("scan_stop", 'None')
- scanningState = stoppedState
- sendSocketMessage("frequency", { value: frequency })
- } else {
- // This update was from scanning, clear state
- scanningFreqUpdate = false
- }
- }
-
- onBandChanged: {
- sendSocketMessage("band", { value: band })
- updateFrequencyRange(band)
- updateFrequencyStep(band)
- frequency = minimumFrequency
- }
- }
-
- onTextMessageReceived: {
- var json = JSON.parse(message)
- //console.debug("Raw response: " + message)
- var request = json[2].request
- var response = json[2].response
-
- switch (json[0]) {
- case msgid.call:
- break
- case msgid.retok:
- var verb = verbs.shift()
- if (verb === "frequency_range") {
- minimumFrequency = response.min
- maximumFrequency = response.max
- } else if (verb === "frequency_step") {
- frequencyStep = response.step
- }
- break
- case msgid.event:
- var event = JSON.parse(JSON.stringify(json[2]))
- if (event.event === "radio/frequency") {
- if(scanningState == activeState) {
- scanningFreqUpdate = true
- frequency = event.data.value
- }
- } else if (event.event === "radio/station_found") {
- if(scanningState == activeState) {
- scanningState = stoppedState
- stationId = freq2str(event.data.value)
- root.stationFound()
- }
- }
- break
- case msg.reterr:
- console.debug("Bad return value, binding probably not installed")
- break
- case MessageId.event:
- break
- }
- }
-
- onStatusChanged: {
- switch (status) {
- case WebSocket.Open:
- // Initialize band values now that we're connected to the
- // binding
- updateFrequencyRange(band)
- updateFrequencyStep(band)
- frequency = minimumFrequency
- sendSocketMessage("subscribe", { value: "frequency" })
- sendSocketMessage("subscribe", { value: "station_found" })
- break
- case WebSocket.Error:
- console.debug("WebSocket error: " + root.errorString)
- break
- }
- }
-
- function freq2str(freq) {
- if (freq > 5000000) {
- return '%1 MHz'.arg((freq / 1000000).toFixed(1))
- } else {
- return '%1 kHz'.arg((freq / 1000).toFixed(0))
- }
- }
-
- function sendSocketMessage(verb, parameter) {
- var requestJson = [ msgid.call, payloadLength, apiString + '/'
- + verb, parameter ]
- //console.debug("sendSocketMessage: " + JSON.stringify(requestJson))
- verbs.push(verb)
- sendTextMessage(JSON.stringify(requestJson))
- }
-
- function start() {
- sendSocketMessage("start", 'None')
- state = activeState
- }
-
- function stop() {
- sendSocketMessage("stop", 'None')
- state = stoppedState
- }
-
- function tuneUp() {
- frequency += frequencyStep
- if(frequency > maximumFrequency) {
- frequency = minimumFrequency
- }
- }
-
- function tuneDown() {
- frequency -= frequencyStep
- if(frequency < minimumFrequency) {
- frequency = maximumFrequency
- }
- }
-
- function scanUp() {
- scanningState = activeState
- sendSocketMessage("scan_start", { direction: "forward" })
- }
-
- function scanDown() {
- scanningState = activeState
- sendSocketMessage("scan_start", { direction: "backward" })
- }
-
- function updateFrequencyRange(band) {
- sendSocketMessage("frequency_range", { band: band })
- }
-
- function updateFrequencyStep(band) {
- sendSocketMessage("frequency_step", { band: band })
- }
-}