qml: bluetooth: remove Windows/DOS end-of-lines 77/9377/1
authorMatt Ranostay <matt.ranostay@konsulko.com>
Sat, 13 May 2017 05:19:59 +0000 (22:19 -0700)
committerMatt Ranostay <matt.ranostay@konsulko.com>
Sat, 13 May 2017 05:33:20 +0000 (22:33 -0700)
Recent merge of websocket changes introducted MSDOS/Windows
end of lines, this patchset removes them with dos2unix.

Bug-AGL: SPEC-592
Change-Id: Id16cae4e3cab1da8ed789b0924410c0e4ac7937b
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
app/bluetooth/Bluetooth.qml

index a99d8a0..a1cc5ae 100644 (file)
-/*\r
- * Copyright (C) 2016 The Qt Company Ltd.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-import QtQuick 2.6\r
-import QtQuick.Layouts 1.1\r
-import QtQuick.Controls 2.0\r
-import QtWebSockets 1.0\r
-import '..'\r
-\r
-SettingPage {\r
-    id: root\r
-    icon: '/bluetooth/images/HMI_Settings_BluetoothIcon.svg'\r
-    title: 'Bluetooth'\r
-    checkable: true\r
-\r
-    property string btAPIpath: bindingAddress + '/Bluetooth-manager/'\r
-    property var jsonObjectBT: []\r
-    property string currentState: 'idle'\r
-    property string btState: 'off' //add property to indicate the bt status\r
-    property string initDevice: 'N'\r
-\r
-    property string address_str: bindingAddressWS\r
-    property string token_str: ""\r
-    property string api_str: "Bluetooth-Manager"\r
-    property string verb_str: ""\r
-    property var parameterJson: 'None'\r
-    property string payloadLength: "9999"\r
-    property var msgid_enu: {\r
-         "call": 2,\r
-         "retok": 3,\r
-         "reterr": 4,\r
-         "event": 5\r
-    }\r
-    property string request_str: ""\r
-    property string status_str: ""\r
-\r
-    WebSocket {\r
-        id: websocket\r
-        url: address_str\r
-        onTextMessageReceived: {\r
-            var message_json = JSON.parse(message);\r
-            //console.log("Raw response: " + message)\r
-            //console.log("JSON response: " + message_json)\r
-            if (message_json[0] === msgid_enu.reterr) {\r
-                console.log("Return value is not OK!")\r
-                return\r
-            }\r
-            else if ((message_json[0] === msgid_enu.event)){\r
-                var eventContent = JSON.parse(JSON.stringify(message_json[2]))\r
-                if (eventContent.event === "Bluetooth-Manager/device_added"){\r
-                    //jsonObjectBT.add(eventContent.data)\r
-                    //btDeviceList.clear()\r
-                    console.log("BT list refreshed")\r
-                    initDevice = 'Y'\r
-                    btDeviceList.append({\r
-                                        deviceAddress: eventContent.data.Address,\r
-                                        deviceName: eventContent.data.Name,\r
-                                        devicePairable:eventContent.data.Paired,\r
-                                        deviceConnect: eventContent.data.Connected,\r
-                                        connectAVP: eventContent.data.AVPConnected,\r
-                                        connectHFP: eventContent.data.HFPConnected,\r
-                                        textToShow: ""\r
-                                    })\r
-                } else if(eventContent.event === "Bluetooth-Manager/device_removed"){\r
-                  if (findDevice(eventContent.data.Address) >= 0){\r
-                      btDeviceList.remove(findDevice(eventContent.data.Address))\r
-                  }\r
-                } else if(eventContent.event === "Bluetooth-Manager/device_updated"){\r
-                  updateDeviceAttribute(eventContent.data)\r
-                } else if(eventContent.event === "Bluetooth-Manager/request_confirmation"){\r
-                    request(btAPIpath + "send_confirmation?value=yes", function (o) {\r
-                    console.log(o.responseText)\r
-                  })\r
-                }\r
-            }\r
-            if ((verb_str == "connect") || (verb_str == "refresh")) {\r
-                token_str = message_json[3]\r
-            } else if (verb_str == "logout") {\r
-                token_str = ""\r
-                websocket.active = false\r
-                console.log("close socket")\r
-            }\r
-        }\r
-        onStatusChanged: {\r
-            if (websocket.status == WebSocket.Error) {\r
-                status_str = "Error: " + websocket.errorString\r
-            } else if (websocket.status == WebSocket.Open) {\r
-                status_str = "Socket opened; sending message..."\r
-                if (verb_str == "connect"){\r
-                    WebSocket.sendTextMessage (request_str)\r
-                }\r
-\r
-                verb_str = "eventadd"\r
-                parameterJson = {\r
-                    tag: 'device_updated',\r
-                    name: 'device_updated'\r
-                }\r
-                sendSocketMesage(verb_str, parameterJson)\r
-\r
-                verb_str = "eventsub"\r
-                parameterJson = {\r
-                    tag: 'device_updated'\r
-                }\r
-                sendSocketMesage(verb_str, parameterJson)\r
-\r
-                verb_str = "eventadd"\r
-                parameterJson = {\r
-                    tag: 'device_added',\r
-                    name: 'device_added'\r
-                }\r
-                sendSocketMesage(verb_str, parameterJson)\r
-\r
-                verb_str = "eventsub"\r
-                parameterJson = {\r
-                    tag: 'device_added'\r
-                }\r
-                sendSocketMesage(verb_str, parameterJson)\r
-\r
-                verb_str = "eventadd"\r
-                parameterJson = {\r
-                    tag: 'device_removed',\r
-                    name: 'device_removed'\r
-                }\r
-                sendSocketMesage(verb_str, parameterJson)\r
-\r
-                verb_str = "eventsub"\r
-                parameterJson = {\r
-                    tag: 'device_removed'\r
-                }\r
-                sendSocketMesage(verb_str, parameterJson)\r
-\r
-                verb_str = "eventadd"\r
-                parameterJson = {\r
-                    tag: 'request_confirmation',\r
-                    name: 'request_confirmation'\r
-                }\r
-                sendSocketMesage(verb_str, parameterJson)\r
-\r
-                verb_str = "eventsub"\r
-                parameterJson = {\r
-                    tag: 'request_confirmation'\r
-                }\r
-                sendSocketMesage(verb_str, parameterJson)\r
-\r
-            } else if (websocket.status == WebSocket.Closed) {\r
-                status_str = "Socket closed"\r
-            }\r
-        }\r
-        active: false\r
-    }\r
-\r
-    Text {\r
-        id: log\r
-        anchors.fill: parent\r
-        anchors.margins: 10\r
-        horizontalAlignment: Text.AlignHCenter\r
-        verticalAlignment: Text.AlignVCenter\r
-    }\r
-\r
-    onCheckedChanged: {\r
-        console.log("Bluetooth set to", checked)\r
-        if (checked == true) {\r
-            initBTlist()\r
-            request(btAPIpath + 'power?value=1', function (o) {\r
-                // log the json response\r
-                console.log(o.responseText)\r
-                websocket.active = true\r
-            })\r
-            request(btAPIpath + 'set_property?Property=Discoverable\&value=true', function (o) {\r
-               console.log(o.responseText)\r
-            })\r
-            request(btAPIpath + 'set_property?Property=Pairable\&value=true', function (o) {\r
-               console.log(o.responseText)\r
-            })\r
-            request(btAPIpath + 'start_discovery', function (o) {\r
-               console.log(o.responseText)\r
-            })\r
-            buttonScan.text = "STOP"           //when power on and after send the discovery command, button set to STOP\r
-            currentState = 'discovering'\r
-            btState = 'on'     //bt is on\r
-\r
-        } else {\r
-            btDeviceList.clear()\r
-            request(btAPIpath + 'stop_discovery', function (o) {\r
-               // log the json response\r
-               console.log(o.responseText)\r
-            })\r
-            request(btAPIpath + 'power?value=0', function (o) {\r
-                // log the json response\r
-                console.log(o.responseText)\r
-            })\r
-            buttonScan.text = "SEARCH" //when power off the button should be set to SEARCH\r
-            currentState = 'idle'\r
-            btState = 'off'    //bt off\r
-            websocket.active = false\r
-        }\r
-    }\r
-\r
-    function sendSocketMesage(verb, parameter) {\r
-        var requestJson = [msgid_enu.call, payloadLength, api_str + '/'\r
-                           + verb, parameter]\r
-        websocket.sendTextMessage(JSON.stringify(requestJson))\r
-    }\r
-\r
-    ListModel {\r
-      id: btDeviceList\r
-    }\r
-\r
-    Rectangle {\r
-      anchors.horizontalCenter: parent.horizontalCenter\r
-      anchors.bottom: parent.bottom\r
-      anchors.margins: 80\r
-      width: buttonScan.width + 10\r
-      height: buttonScan.height + 10\r
-      color: "#222"\r
-      border.color: "white"\r
-\r
-                Button {\r
-                    id: buttonScan\r
-                    anchors.centerIn: parent\r
-                    width: 100\r
-                    text: "SEARCH"     //default value is SEARCH\r
-\r
-                    MouseArea {\r
-                        //id: mouseArea\r
-                        anchors.fill: parent\r
-\r
-                        onClicked: {\r
-                            if (buttonScan.text == "SEARCH"){\r
-                                if (btState == 'on'){  //only response to the requirement when bt is on\r
-                                    request(btAPIpath + 'start_discovery', function (o) {\r
-\r
-                                    // log the json response\r
-                                    console.log(o.responseText)\r
-                                })\r
-                                    buttonScan.text = "STOP"\r
-                                    currentState = 'discovering'\r
-                                }\r
-                            }else{\r
-                                request(btAPIpath + 'stop_discovery', function (o) {\r
-                                    // log the json response\r
-                                    console.log(o.responseText)\r
-                                })\r
-                                buttonScan.text = "SEARCH"\r
-                                currentState = 'idle'\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-      }\r
-\r
-      function request(url, callback) {\r
-            var xhr = new XMLHttpRequest()\r
-            xhr.onreadystatechange = (function (myxhr) {\r
-            return function () {\r
-                     if (xhr.readyState == 4 && xhr.status == 200){\r
-                         callback(myxhr)\r
-                     }\r
-                 }\r
-             })(xhr)\r
-             xhr.open('GET', url, false)\r
-             xhr.send('')\r
-       }\r
-\r
-      Component {\r
-         id:blueToothDevice\r
-         Rectangle {\r
-         height: 120\r
-         width: parent.width\r
-         color: "transparent"\r
-             MouseArea {\r
-               anchors.fill: parent\r
-                 Column {\r
-                     anchors.left: parent.left\r
-                     anchors.leftMargin: 80\r
-                     Text {\r
-                        id: btName\r
-                        text: deviceName\r
-                        color: '#66FF99'\r
-                        font.pixelSize: 48\r
-                     }\r
-                     Text {\r
-                        id: btStatus\r
-                        property string connectionState:""\r
-                        text: {\r
-                          if ((devicePairable === "True")\r
-                                 && (deviceConnect === "False"))\r
-                                 text = ", paired"\r
-                          else if ((devicePairable === "True")\r
-                                   && (deviceConnect === "True")\r
-                                   && (connectAVP === "True")\r
-                                   && (connectHFP === "False"))\r
-                                   text = " AV Connection, "\r
-                          else if ((devicePairable === "True")\r
-                                    && (deviceConnect === "True")\r
-                                    && (connectHFP === "True")\r
-                                    && (connectAVP === "False"))\r
-                                    text = " Handsfree Connection, "\r
-                          else if ((devicePairable === "True")\r
-                                   && (deviceConnect === "True")\r
-                                   && (connectHFP === "True")\r
-                                   && (connectAVP === "True"))\r
-                                   text = " Handsfree & AV Connection, "\r
-                          else\r
-                             text = connectionState\r
-                          if (initDevice === "Y")\r
-                          {\r
-                             textToShow = text\r
-                             text = deviceAddress + text\r
-                             initDevice = 'N'\r
-                          }\r
-                          else\r
-                          {\r
-                             text = deviceAddress + textToShow\r
-                          }\r
-                        }\r
-                        font.pixelSize: 18\r
-                        color: "#ffffff"\r
-                        font.italic: true\r
-                     }\r
-                     Text {\r
-                       id: btPairable\r
-                       text: devicePairable\r
-                       visible: false\r
-                     }\r
-                     Text {\r
-                       id: btConnectstatus\r
-                       text: deviceConnect\r
-                       visible: false\r
-                     }\r
-                 }\r
-                 Button {\r
-                     id: removeButton\r
-                     anchors.top:parent.top\r
-                     anchors.topMargin: 15\r
-                     //anchors.horizontalCenter: btName.horizontalCenter\r
-                     anchors.right: parent.right\r
-                     anchors.rightMargin: 100\r
-\r
-                     text: "Unpair"\r
-                     MouseArea {\r
-                         anchors.fill: parent\r
-                         onClicked: {\r
-                             request(btAPIpath + 'remove_device?value=' + deviceAddress, function (o) {\r
-                                 console.log(o.responseText)\r
-                             })\r
-                             if (findDevice(deviceAddress) >= 0){\r
-                                btDeviceList.remove(findDevice(deviceAddress))\r
-                             }\r
-                         }\r
-                     }\r
-                 }\r
-\r
-                 Button {\r
-                  id: connectButton\r
-                  anchors.top:parent.top\r
-                  anchors.topMargin: 15\r
-                  anchors.right: removeButton.left\r
-                  anchors.rightMargin: 10\r
-\r
-                  text:(deviceConnect == "True")? "Disconnect":((btPairable.text == "True")? "Connect":"Pair")\r
-                  // only when HFP or AVP is connected, button will be shown as Disconnect\r
-                 MouseArea {\r
-                     anchors.fill: parent\r
-                     onClicked: {\r
-                        if (currentState == 'discovering'){\r
-                             request(btAPIpath + 'stop_discovery', function (o) {\r
-                               currentState = "idle"\r
-                               console.log(o.responseText)\r
-                             })\r
-                           }\r
-                        if (connectButton.text == "Pair"){\r
-                             connectButton.text = "Connect"\r
-                             request(btAPIpath + 'pair?value=' + deviceAddress, function (o) {\r
-                             btPairable.text = "True"\r
-                                console.log(o.responseText)\r
-                             })\r
-                             request(btAPIpath + 'set_device_property?Address=' + deviceAddress + '\&Property=Trusted\&value=true', function (o) {\r
-                                console.log(o.responseText)\r
-                             })\r
-                         }\r
-                         else if (connectButton.text == "Connect"){\r
-                                  connectButton.text = "Disconnect"\r
-                                  request(btAPIpath + 'connect?value=' + deviceAddress, function (o) {\r
-                                    console.log(o.responseText)\r
-                                  })\r
-                         }\r
-                         else if (connectButton.text == "Disconnect"){\r
-                                  request(btAPIpath + 'disconnect?value=' + deviceAddress, function (o) {\r
-                                    console.log(o.responseText)\r
-                                  })\r
-                                  connectButton.text = "Connect"\r
-                          }\r
-                      }\r
-                    }\r
-                }\r
-             }\r
-\r
-             Image {\r
-                 source: '../images/HMI_Settings_DividingLine.svg'\r
-                 anchors.horizontalCenter: parent.horizontalCenter\r
-                 anchors.top: parent.top\r
-                 anchors.topMargin: -15\r
-\r
-                 visible: model.index > 0\r
-             }\r
-          }\r
-      }\r
-\r
-      ListView {\r
-          width: parent.width\r
-          anchors.top: parent.top\r
-          anchors.topMargin: 70\r
-          anchors.bottom: parent.bottom\r
-          anchors.bottomMargin: 150\r
-          model: btDeviceList\r
-          delegate: blueToothDevice\r
-          clip: true\r
-      }\r
-\r
-      function findDevice(address){\r
-          for (var i = 0; i < btDeviceList.count; i++) {\r
-              if (address === btDeviceList.get(i).deviceAddress){\r
-                  return i\r
-                  }\r
-              }\r
-          return -1\r
-      }\r
-\r
-      function updateDeviceAttribute(data){\r
-            var text = ""\r
-            for (var i = 0; i < btDeviceList.count; i++) {\r
-                if (data.Address === btDeviceList.get(i).deviceAddress){\r
-                    btDeviceList.get(i).devicePairable = data.Paired\r
-                    if (data.Paired == "True")\r
-                    {\r
-                        console.log("connectButton  " + btDeviceList.get(i).btStatus)\r
-                        //ALCZbtDeviceList.get(i).connectButton.text = "Connect"\r
-                    }\r
-\r
-                    if ((data.Paired === "True")\r
-                               && (data.Connected === "False"))\r
-                        text = ", paired"\r
-                    else if ((data.Paired === "True")\r
-                               && (data.Connected === "True")\r
-                               && (data.AVPConnected === "True")\r
-                               && (data.HFPConnected === "False"))\r
-                        text = "AV Connection, "\r
-                    else if ((data.Paired === "True")\r
-                                && (data.Connected === "True")\r
-                                && (data.HFPConnected === "True")\r
-                                && (data.AVPConnected === "False"))\r
-                        text = "Handsfree Connection, "\r
-                    else if ((data.Paired === "True")\r
-                                && (data.Connected === "True")\r
-                                && (data.HFPConnected === "True")\r
-                                && (data.AVPConnected === "True")) {\r
-                        console.log("all connected!!")\r
-                        text = ", Handsfree & AV Connection"}\r
-                    else\r
-                        text = ""\r
-\r
-                    btDeviceList.set(i, {\r
-                                            textToShow: " " + text\r
-                                        })\r
-                    console.log("iamhere" + btDeviceList.get(i).deviceAddress + data.Paired)\r
-\r
-                    //btDeviceList.get(i).btStatus = text + btDeviceList.get(i).deviceAddress //btDeviceList.get(i).textToShow\r
-                    btDeviceList.layoutChanged()\r
-\r
-                    btDeviceList.get(i).deviceConnect = data.Connected\r
-                    console.log(data.Connected)\r
-              }\r
-          }\r
-        }\r
-\r
-      function initBTlist(){\r
-          request(btAPIpath + 'discovery_result', function (o) {\r
-\r
-              // log the json response\r
-              console.log(o.responseText)\r
-\r
-              // translate response into object\r
-              var jsonObject = eval('(' + o.responseText + ')')\r
-\r
-              jsonObjectBT = eval('(' + JSON.stringify(\r
-                                                jsonObject.response) + ')')\r
-\r
-              console.log("BT list refreshed")\r
-\r
-              //console.log(jsonObject.response)\r
-              for (var i = 0; i < jsonObjectBT.length; i++) {\r
-              initDevice = 'Y'\r
-              console.log(jsonObjectBT[i].Paired)\r
-              btDeviceList.append({\r
-                                      deviceAddress: jsonObjectBT[i].Address,\r
-                                      deviceName: jsonObjectBT[i].Name,\r
-                                      devicePairable:jsonObjectBT[i].Paired,\r
-                                      deviceConnect: jsonObjectBT[i].Connected,\r
-                                      connectAVP: jsonObjectBT[i].AVPConnected,\r
-                                      connectHFP: jsonObjectBT[i].HFPConnected,\r
-                                      textToShow: ""\r
-                                  })\r
-             }\r
-          })\r
-      }\r
- }\r
-\r
+/*
+ * 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
+import '..'
+
+SettingPage {
+    id: root
+    icon: '/bluetooth/images/HMI_Settings_BluetoothIcon.svg'
+    title: 'Bluetooth'
+    checkable: true
+
+    property string btAPIpath: bindingAddress + '/Bluetooth-manager/'
+    property var jsonObjectBT: []
+    property string currentState: 'idle'
+    property string btState: 'off' //add property to indicate the bt status
+    property string initDevice: 'N'
+
+    property string address_str: bindingAddressWS
+    property string token_str: ""
+    property string api_str: "Bluetooth-Manager"
+    property string verb_str: ""
+    property var parameterJson: 'None'
+    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.log("Raw response: " + message)
+            //console.log("JSON response: " + message_json)
+            if (message_json[0] === msgid_enu.reterr) {
+                console.log("Return value is not OK!")
+                return
+            }
+            else if ((message_json[0] === msgid_enu.event)){
+                var eventContent = JSON.parse(JSON.stringify(message_json[2]))
+                if (eventContent.event === "Bluetooth-Manager/device_added"){
+                    //jsonObjectBT.add(eventContent.data)
+                    //btDeviceList.clear()
+                    console.log("BT list refreshed")
+                    initDevice = 'Y'
+                    btDeviceList.append({
+                                        deviceAddress: eventContent.data.Address,
+                                        deviceName: eventContent.data.Name,
+                                        devicePairable:eventContent.data.Paired,
+                                        deviceConnect: eventContent.data.Connected,
+                                        connectAVP: eventContent.data.AVPConnected,
+                                        connectHFP: eventContent.data.HFPConnected,
+                                        textToShow: ""
+                                    })
+                } else if(eventContent.event === "Bluetooth-Manager/device_removed"){
+                  if (findDevice(eventContent.data.Address) >= 0){
+                      btDeviceList.remove(findDevice(eventContent.data.Address))
+                  }
+                } else if(eventContent.event === "Bluetooth-Manager/device_updated"){
+                  updateDeviceAttribute(eventContent.data)
+                } else if(eventContent.event === "Bluetooth-Manager/request_confirmation"){
+                    request(btAPIpath + "send_confirmation?value=yes", function (o) {
+                    console.log(o.responseText)
+                  })
+                }
+            }
+            if ((verb_str == "connect") || (verb_str == "refresh")) {
+                token_str = message_json[3]
+            } else if (verb_str == "logout") {
+                token_str = ""
+                websocket.active = false
+                console.log("close socket")
+            }
+        }
+        onStatusChanged: {
+            if (websocket.status == WebSocket.Error) {
+                status_str = "Error: " + websocket.errorString
+            } else if (websocket.status == WebSocket.Open) {
+                status_str = "Socket opened; sending message..."
+                if (verb_str == "connect"){
+                    WebSocket.sendTextMessage (request_str)
+                }
+
+                verb_str = "eventadd"
+                parameterJson = {
+                    tag: 'device_updated',
+                    name: 'device_updated'
+                }
+                sendSocketMesage(verb_str, parameterJson)
+
+                verb_str = "eventsub"
+                parameterJson = {
+                    tag: 'device_updated'
+                }
+                sendSocketMesage(verb_str, parameterJson)
+
+                verb_str = "eventadd"
+                parameterJson = {
+                    tag: 'device_added',
+                    name: 'device_added'
+                }
+                sendSocketMesage(verb_str, parameterJson)
+
+                verb_str = "eventsub"
+                parameterJson = {
+                    tag: 'device_added'
+                }
+                sendSocketMesage(verb_str, parameterJson)
+
+                verb_str = "eventadd"
+                parameterJson = {
+                    tag: 'device_removed',
+                    name: 'device_removed'
+                }
+                sendSocketMesage(verb_str, parameterJson)
+
+                verb_str = "eventsub"
+                parameterJson = {
+                    tag: 'device_removed'
+                }
+                sendSocketMesage(verb_str, parameterJson)
+
+                verb_str = "eventadd"
+                parameterJson = {
+                    tag: 'request_confirmation',
+                    name: 'request_confirmation'
+                }
+                sendSocketMesage(verb_str, parameterJson)
+
+                verb_str = "eventsub"
+                parameterJson = {
+                    tag: 'request_confirmation'
+                }
+                sendSocketMesage(verb_str, parameterJson)
+
+            } else if (websocket.status == WebSocket.Closed) {
+                status_str = "Socket closed"
+            }
+        }
+        active: false
+    }
+
+    Text {
+        id: log
+        anchors.fill: parent
+        anchors.margins: 10
+        horizontalAlignment: Text.AlignHCenter
+        verticalAlignment: Text.AlignVCenter
+    }
+
+    onCheckedChanged: {
+        console.log("Bluetooth set to", checked)
+        if (checked == true) {
+            initBTlist()
+            request(btAPIpath + 'power?value=1', function (o) {
+                // log the json response
+                console.log(o.responseText)
+                websocket.active = true
+            })
+            request(btAPIpath + 'set_property?Property=Discoverable\&value=true', function (o) {
+               console.log(o.responseText)
+            })
+            request(btAPIpath + 'set_property?Property=Pairable\&value=true', function (o) {
+               console.log(o.responseText)
+            })
+            request(btAPIpath + 'start_discovery', function (o) {
+               console.log(o.responseText)
+            })
+            buttonScan.text = "STOP"           //when power on and after send the discovery command, button set to STOP
+            currentState = 'discovering'
+            btState = 'on'     //bt is on
+
+        } else {
+            btDeviceList.clear()
+            request(btAPIpath + 'stop_discovery', function (o) {
+               // log the json response
+               console.log(o.responseText)
+            })
+            request(btAPIpath + 'power?value=0', function (o) {
+                // log the json response
+                console.log(o.responseText)
+            })
+            buttonScan.text = "SEARCH" //when power off the button should be set to SEARCH
+            currentState = 'idle'
+            btState = 'off'    //bt off
+            websocket.active = false
+        }
+    }
+
+    function sendSocketMesage(verb, parameter) {
+        var requestJson = [msgid_enu.call, payloadLength, api_str + '/'
+                           + verb, parameter]
+        websocket.sendTextMessage(JSON.stringify(requestJson))
+    }
+
+    ListModel {
+      id: btDeviceList
+    }
+
+    Rectangle {
+      anchors.horizontalCenter: parent.horizontalCenter
+      anchors.bottom: parent.bottom
+      anchors.margins: 80
+      width: buttonScan.width + 10
+      height: buttonScan.height + 10
+      color: "#222"
+      border.color: "white"
+
+                Button {
+                    id: buttonScan
+                    anchors.centerIn: parent
+                    width: 100
+                    text: "SEARCH"     //default value is SEARCH
+
+                    MouseArea {
+                        //id: mouseArea
+                        anchors.fill: parent
+
+                        onClicked: {
+                            if (buttonScan.text == "SEARCH"){
+                                if (btState == 'on'){  //only response to the requirement when bt is on
+                                    request(btAPIpath + 'start_discovery', function (o) {
+
+                                    // log the json response
+                                    console.log(o.responseText)
+                                })
+                                    buttonScan.text = "STOP"
+                                    currentState = 'discovering'
+                                }
+                            }else{
+                                request(btAPIpath + 'stop_discovery', function (o) {
+                                    // log the json response
+                                    console.log(o.responseText)
+                                })
+                                buttonScan.text = "SEARCH"
+                                currentState = 'idle'
+                            }
+                        }
+                    }
+                }
+      }
+
+      function request(url, callback) {
+            var xhr = new XMLHttpRequest()
+            xhr.onreadystatechange = (function (myxhr) {
+            return function () {
+                     if (xhr.readyState == 4 && xhr.status == 200){
+                         callback(myxhr)
+                     }
+                 }
+             })(xhr)
+             xhr.open('GET', url, false)
+             xhr.send('')
+       }
+
+      Component {
+         id:blueToothDevice
+         Rectangle {
+         height: 120
+         width: parent.width
+         color: "transparent"
+             MouseArea {
+               anchors.fill: parent
+                 Column {
+                     anchors.left: parent.left
+                     anchors.leftMargin: 80
+                     Text {
+                        id: btName
+                        text: deviceName
+                        color: '#66FF99'
+                        font.pixelSize: 48
+                     }
+                     Text {
+                        id: btStatus
+                        property string connectionState:""
+                        text: {
+                          if ((devicePairable === "True")
+                                 && (deviceConnect === "False"))
+                                 text = ", paired"
+                          else if ((devicePairable === "True")
+                                   && (deviceConnect === "True")
+                                   && (connectAVP === "True")
+                                   && (connectHFP === "False"))
+                                   text = " AV Connection, "
+                          else if ((devicePairable === "True")
+                                    && (deviceConnect === "True")
+                                    && (connectHFP === "True")
+                                    && (connectAVP === "False"))
+                                    text = " Handsfree Connection, "
+                          else if ((devicePairable === "True")
+                                   && (deviceConnect === "True")
+                                   && (connectHFP === "True")
+                                   && (connectAVP === "True"))
+                                   text = " Handsfree & AV Connection, "
+                          else
+                             text = connectionState
+                          if (initDevice === "Y")
+                          {
+                             textToShow = text
+                             text = deviceAddress + text
+                             initDevice = 'N'
+                          }
+                          else
+                          {
+                             text = deviceAddress + textToShow
+                          }
+                        }
+                        font.pixelSize: 18
+                        color: "#ffffff"
+                        font.italic: true
+                     }
+                     Text {
+                       id: btPairable
+                       text: devicePairable
+                       visible: false
+                     }
+                     Text {
+                       id: btConnectstatus
+                       text: deviceConnect
+                       visible: false
+                     }
+                 }
+                 Button {
+                     id: removeButton
+                     anchors.top:parent.top
+                     anchors.topMargin: 15
+                     //anchors.horizontalCenter: btName.horizontalCenter
+                     anchors.right: parent.right
+                     anchors.rightMargin: 100
+
+                     text: "Unpair"
+                     MouseArea {
+                         anchors.fill: parent
+                         onClicked: {
+                             request(btAPIpath + 'remove_device?value=' + deviceAddress, function (o) {
+                                 console.log(o.responseText)
+                             })
+                             if (findDevice(deviceAddress) >= 0){
+                                btDeviceList.remove(findDevice(deviceAddress))
+                             }
+                         }
+                     }
+                 }
+
+                 Button {
+                  id: connectButton
+                  anchors.top:parent.top
+                  anchors.topMargin: 15
+                  anchors.right: removeButton.left
+                  anchors.rightMargin: 10
+
+                  text:(deviceConnect == "True")? "Disconnect":((btPairable.text == "True")? "Connect":"Pair")
+                  // only when HFP or AVP is connected, button will be shown as Disconnect
+                 MouseArea {
+                     anchors.fill: parent
+                     onClicked: {
+                        if (currentState == 'discovering'){
+                             request(btAPIpath + 'stop_discovery', function (o) {
+                               currentState = "idle"
+                               console.log(o.responseText)
+                             })
+                           }
+                        if (connectButton.text == "Pair"){
+                             connectButton.text = "Connect"
+                             request(btAPIpath + 'pair?value=' + deviceAddress, function (o) {
+                             btPairable.text = "True"
+                                console.log(o.responseText)
+                             })
+                             request(btAPIpath + 'set_device_property?Address=' + deviceAddress + '\&Property=Trusted\&value=true', function (o) {
+                                console.log(o.responseText)
+                             })
+                         }
+                         else if (connectButton.text == "Connect"){
+                                  connectButton.text = "Disconnect"
+                                  request(btAPIpath + 'connect?value=' + deviceAddress, function (o) {
+                                    console.log(o.responseText)
+                                  })
+                         }
+                         else if (connectButton.text == "Disconnect"){
+                                  request(btAPIpath + 'disconnect?value=' + deviceAddress, function (o) {
+                                    console.log(o.responseText)
+                                  })
+                                  connectButton.text = "Connect"
+                          }
+                      }
+                    }
+                }
+             }
+
+             Image {
+                 source: '../images/HMI_Settings_DividingLine.svg'
+                 anchors.horizontalCenter: parent.horizontalCenter
+                 anchors.top: parent.top
+                 anchors.topMargin: -15
+
+                 visible: model.index > 0
+             }
+          }
+      }
+
+      ListView {
+          width: parent.width
+          anchors.top: parent.top
+          anchors.topMargin: 70
+          anchors.bottom: parent.bottom
+          anchors.bottomMargin: 150
+          model: btDeviceList
+          delegate: blueToothDevice
+          clip: true
+      }
+
+      function findDevice(address){
+          for (var i = 0; i < btDeviceList.count; i++) {
+              if (address === btDeviceList.get(i).deviceAddress){
+                  return i
+                  }
+              }
+          return -1
+      }
+
+      function updateDeviceAttribute(data){
+            var text = ""
+            for (var i = 0; i < btDeviceList.count; i++) {
+                if (data.Address === btDeviceList.get(i).deviceAddress){
+                    btDeviceList.get(i).devicePairable = data.Paired
+                    if (data.Paired == "True")
+                    {
+                        console.log("connectButton  " + btDeviceList.get(i).btStatus)
+                        //ALCZbtDeviceList.get(i).connectButton.text = "Connect"
+                    }
+
+                    if ((data.Paired === "True")
+                               && (data.Connected === "False"))
+                        text = ", paired"
+                    else if ((data.Paired === "True")
+                               && (data.Connected === "True")
+                               && (data.AVPConnected === "True")
+                               && (data.HFPConnected === "False"))
+                        text = "AV Connection, "
+                    else if ((data.Paired === "True")
+                                && (data.Connected === "True")
+                                && (data.HFPConnected === "True")
+                                && (data.AVPConnected === "False"))
+                        text = "Handsfree Connection, "
+                    else if ((data.Paired === "True")
+                                && (data.Connected === "True")
+                                && (data.HFPConnected === "True")
+                                && (data.AVPConnected === "True")) {
+                        console.log("all connected!!")
+                        text = ", Handsfree & AV Connection"}
+                    else
+                        text = ""
+
+                    btDeviceList.set(i, {
+                                            textToShow: " " + text
+                                        })
+                    console.log("iamhere" + btDeviceList.get(i).deviceAddress + data.Paired)
+
+                    //btDeviceList.get(i).btStatus = text + btDeviceList.get(i).deviceAddress //btDeviceList.get(i).textToShow
+                    btDeviceList.layoutChanged()
+
+                    btDeviceList.get(i).deviceConnect = data.Connected
+                    console.log(data.Connected)
+              }
+          }
+        }
+
+      function initBTlist(){
+          request(btAPIpath + 'discovery_result', function (o) {
+
+              // log the json response
+              console.log(o.responseText)
+
+              // translate response into object
+              var jsonObject = eval('(' + o.responseText + ')')
+
+              jsonObjectBT = eval('(' + JSON.stringify(
+                                                jsonObject.response) + ')')
+
+              console.log("BT list refreshed")
+
+              //console.log(jsonObject.response)
+              for (var i = 0; i < jsonObjectBT.length; i++) {
+              initDevice = 'Y'
+              console.log(jsonObjectBT[i].Paired)
+              btDeviceList.append({
+                                      deviceAddress: jsonObjectBT[i].Address,
+                                      deviceName: jsonObjectBT[i].Name,
+                                      devicePairable:jsonObjectBT[i].Paired,
+                                      deviceConnect: jsonObjectBT[i].Connected,
+                                      connectAVP: jsonObjectBT[i].AVPConnected,
+                                      connectHFP: jsonObjectBT[i].HFPConnected,
+                                      textToShow: ""
+                                  })
+             }
+          })
+      }
+ }
+