summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-02-06 13:51:09 +0900
committerzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-02-06 13:53:35 +0900
commit95b45c40f7db39d4a9a0ceb2995b976b0f2792e4 (patch)
tree6d3684d394b5cc74898ccfa811f6434f639d101c
parenta35b3631420ac051a1b50a00806ee29900f03250 (diff)
Change als-meter-demo by using low-can data. For m3ulcb/h3ulcb board, the usb camera device id is over 10, Detect the camera device from 0 to 19. Change-Id: Icbd0b4327c9c356f40cea320420d149d850e4347 Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
-rw-r--r--app/Als-meter-demo.qml298
-rw-r--r--app/MidOther.qml2
-rw-r--r--app/Shift.qml9
-rw-r--r--app/Tacho.qml2
-rw-r--r--app/app.pro7
-rw-r--r--app/camera.cpp2
-rw-r--r--app/main.cpp91
-rw-r--r--package/config.xml10
8 files changed, 171 insertions, 250 deletions
diff --git a/app/Als-meter-demo.qml b/app/Als-meter-demo.qml
index 4549704..486c4bf 100644
--- a/app/Als-meter-demo.qml
+++ b/app/Als-meter-demo.qml
@@ -27,12 +27,13 @@ ApplicationWindow {
height: 1487
property string als_meter_demo_request_str: ""
- property string api_str: "steering-wheel"
+ property string api_str: "low-can"
property var msgid_enu: { "call":2, "retok":3, "reterr":4, "event":5 }
property int recirc:0
property int vehiclespeed: 0
property real enginespeed: 0
- property int wshift: 0
+ property string wshift: "N"
+ property int circulation: 0
WebSocket {
id: websocket
@@ -57,23 +58,19 @@ ApplicationWindow {
if (message_json[0] === msgid_enu.event){
var propertyName = message_json[2].event.split("/")[1]
- if (propertyName === "TransmissionMode"){
+ if (propertyName === "messages.transmission.mode"){
wshift = message_json[2].data.value
- }else if (propertyName === "VehicleSpeed"){
+ }else if (propertyName === "messages.vehicle.average.speed"){
vehiclespeed = message_json[2].data.value
- }else if (propertyName === "EngineSpeed"){
+ }else if (propertyName === "messages.engine.speed"){
enginespeed = message_json[2].data.value
}
- }else if (message_json[0] === msgid_enu.retok){
- for (var item in message_json[2].response){
- if (item === "TransmissionMode"){
- wshift = message_json[2].response["TransmissionMode"]["value"]
- }else if (item === "VehicleSpeed"){
- vehiclespeed = message_json[2].response["VehicleSpeed"]["value"]
- }else if (item === "EngineSpeed"){
- enginespeed = message_json[2].response["EngineSpeed"]["value"]
- }
+ else if ( message.indexOf("messages.hvac.circulation") > 0 )
+ {
+ circulation = message_json[2].data.value ? 1 : 0
}
+ }else if (message_json[0] === msgid_enu.retok){
+ console.log ("Response is OK!")
}else{
console.log ("Event type error:", message_json[0])
}
@@ -93,153 +90,160 @@ ApplicationWindow {
}
Item {
- id: topscreen_up
- width: root.width
- height: (root.height - bottomscreen.height)/2
+ id: container
+ anchors.centerIn: parent
+ width: 1080
+ height: 1487
+ scale: screenInfo.scale_factor()
- CameraControl {
- id:cameracontrol_up
- listWH: true
- device: camera_up
+ Item {
+ id: topscreen_up
width: root.width
- height:80
- }
- Camera {
- id: camera_up
- width: root.width
- height: topscreen_up.height - cameracontrol_up.height
- anchors.top: cameracontrol_up.bottom
- onIsrunningChanged: {
- camerabg_up.visible = !isrunning
+ height: (root.height - bottomscreen.height)/2
- if (isrunning){
- if (cameracontrol_dn.device.cameraCnt() === 1)
- cameracontrol_dn.switchstatus = false;
- }else{
- cameracontrol_dn.switchstatus = true;
- }
+ CameraControl {
+ id:cameracontrol_up
+ listWH: true
+ device: camera_up
+ width: root.width
+ height:80
}
- onCamraCntChanged: {
- if (!camera_dn.isrunning)
- cameracontrol_dn.number = camera_dn.camranum();
+ Camera {
+ id: camera_up
+ width: root.width
+ height: topscreen_up.height - cameracontrol_up.height
+ anchors.top: cameracontrol_up.bottom
+ onIsrunningChanged: {
+ camerabg_up.visible = !isrunning
- if (!camera_up.isrunning)
- cameracontrol_up.number = camera_up.camranum();
- }
+ if (isrunning){
+ if (cameracontrol_dn.device.cameraCnt() === 1)
+ cameracontrol_dn.switchstatus = false;
+ }else{
+ cameracontrol_dn.switchstatus = true;
+ }
+ }
+ onCamraCntChanged: {
+ if (!camera_dn.isrunning)
+ cameracontrol_dn.number = camera_dn.camranum();
- Image {
- id: camerabg_up
- anchors.centerIn: parent
- width: 200
- height: 200
- source: "images/camera/camera_bg.svg"
+ if (!camera_up.isrunning)
+ cameracontrol_up.number = camera_up.camranum();
+ }
+
+ Image {
+ id: camerabg_up
+ anchors.centerIn: parent
+ width: 200
+ height: 200
+ source: "images/camera/camera_bg.svg"
+ }
}
}
- }
- Item {
- id: topscreen_dn
- width: root.width
- height: (root.height - bottomscreen.height)/2
- anchors.top: topscreen_up.bottom
- CameraControl {
- id:cameracontrol_dn
- listWH: false
- device: camera_dn
+ Item {
+ id: topscreen_dn
width: root.width
- height:80
- back:0
- }
- Camera {
- id: camera_dn
- width: root.width
- height: topscreen_dn.height - cameracontrol_dn.height
- anchors.top: cameracontrol_dn.bottom
- onIsrunningChanged: {
- camerabg_dn.visible = !isrunning
+ height: (root.height - bottomscreen.height)/2
+ anchors.top: topscreen_up.bottom
+ CameraControl {
+ id:cameracontrol_dn
+ listWH: false
+ device: camera_dn
+ width: root.width
+ height:80
+ back:0
+ }
+ Camera {
+ id: camera_dn
+ width: root.width
+ height: topscreen_dn.height - cameracontrol_dn.height
+ anchors.top: cameracontrol_dn.bottom
+ onIsrunningChanged: {
+ camerabg_dn.visible = !isrunning
- if (isrunning){
- if (cameracontrol_up.device.cameraCnt() === 1)
- cameracontrol_up.switchstatus = false;
- }else{
- cameracontrol_up.switchstatus = true;
+ if (isrunning){
+ if (cameracontrol_up.device.cameraCnt() === 1)
+ cameracontrol_up.switchstatus = false;
+ }else{
+ cameracontrol_up.switchstatus = true;
+ }
}
- }
- onCamraCntChanged: {
- if (!camera_up.isrunning)
- cameracontrol_up.number = camera_up.camranum();
+ onCamraCntChanged: {
+ if (!camera_up.isrunning)
+ cameracontrol_up.number = camera_up.camranum();
- if (!camera_dn.isrunning)
- cameracontrol_dn.number = camera_dn.camranum();
- }
+ if (!camera_dn.isrunning)
+ cameracontrol_dn.number = camera_dn.camranum();
+ }
- Image {
- id: camerabg_dn
- anchors.centerIn: parent
- width: 200
- height: 200
- source: "images/camera/camera_bg.svg"
+ Image {
+ id: camerabg_dn
+ anchors.centerIn: parent
+ width: 200
+ height: 200
+ source: "images/camera/camera_bg.svg"
+ }
}
}
- }
- Item {
- id: bottomscreen
- width: root.width
- height: 600
- anchors.bottom: parent.bottom
- Image {
- width: parent.width
- height: parent.height
- asynchronous: true
- fillMode: Image.TileHorizontally
- smooth: true
- source: "images/homescreen/homebg_bottom.svg"
- }
- RowLayout {
- id: smtparts
- anchors.left: parent.left
- anchors.right: parent.right
- Speed {
- id: speedparts
- anchors.left: parent.left
- anchors.leftMargin: 30
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 120
- width: imgwidth
- height: imgheight
+ Item {
+ id: bottomscreen
+ width: root.width
+ height: 600
+ anchors.bottom: parent.bottom
+ Image {
+ width: parent.width
+ height: parent.height
+ asynchronous: true
+ fillMode: Image.TileHorizontally
+ smooth: true
+ source: "images/homescreen/homebg_bottom.svg"
}
- ColumnLayout {
- id: tachoparts
- anchors.horizontalCenter: parent.horizontalCenter
- Tacho {
- anchors.top: parent.top
- anchors.topMargin: -60
- anchors.horizontalCenter: parent.horizontalCenter
+ RowLayout {
+ id: smtparts
+ anchors.left: parent.left
+ anchors.right: parent.right
+ Speed {
+ id: speedparts
+ anchors.left: parent.left
+ anchors.leftMargin: 30
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 120
width: imgwidth
height: imgheight
}
- MidOther {
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 110
+ ColumnLayout {
+ id: tachoparts
anchors.horizontalCenter: parent.horizontalCenter
+ Tacho {
+ anchors.top: parent.top
+ anchors.topMargin: -60
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: imgwidth
+ height: imgheight
+ }
+ MidOther {
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 110
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: imgwidth
+ height: imgheight
+ }
+ }
+ Mid {
+ id: midparts
+ anchors.right: parent.right
+ anchors.rightMargin: 25
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 90
width: imgwidth
height: imgheight
}
}
- Mid {
- id: midparts
- anchors.right: parent.right
- anchors.rightMargin: 25
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 90
- width: imgwidth
- height: imgheight
- }
}
}
-
onVisibleChanged: {
if (visible){
if (!websocket.active){
@@ -255,36 +259,22 @@ ApplicationWindow {
}
}
- Connections {
- target: appVisible
- onVisibleChanged: {
- if (!visible){
- if (websocket.active)
- do_unsubscribe()
- }else{
- if (websocket.active){
- do_subscribe()
- }else{
- websocket.active = true
- }
- }
- }
- }
-
function do_call(binding, verb, event_name) {
als_meter_demo_request_str = '[' + msgid_enu.call + ',"99999","' + binding+'/'+verb + '", {"event":"' + event_name + '"} ]'
websocket.sendTextMessage (als_meter_demo_request_str)
}
function do_subscribe() {
- do_call(api_str, "subscribe", "VehicleSpeed")
- do_call(api_str, "subscribe", "TransmissionMode")
- do_call(api_str, "subscribe", "EngineSpeed")
+ do_call(api_str, "subscribe", "vehicle.average.speed")
+ do_call(api_str, "subscribe", "transmission.mode")
+ do_call(api_str, "subscribe", "engine.speed")
+ do_call(api_str, "subscribe", "hvac.circulation")
}
function do_unsubscribe() {
- do_call(api_str, "unsubscribe", "VehicleSpeed")
- do_call(api_str, "unsubscribe", "TransmissionMode")
- do_call(api_str, "unsubscribe", "EngineSpeed")
+ do_call(api_str, "unsubscribe", "vehicle.average.speed")
+ do_call(api_str, "unsubscribe", "transmission.mode")
+ do_call(api_str, "unsubscribe", "engine.speed")
+ do_call(api_str, "unsubscribe", "hvac.circulation")
}
}
diff --git a/app/MidOther.qml b/app/MidOther.qml
index 579d5f1..d765414 100644
--- a/app/MidOther.qml
+++ b/app/MidOther.qml
@@ -31,6 +31,6 @@ Item {
fillMode: Image.PreserveAspectFit
asynchronous: true
smooth: true
- source: recirc_mid[recirc]
+ source: recirc_mid[circulation]
}
}
diff --git a/app/Shift.qml b/app/Shift.qml
index 60a0f0f..7d2d017 100644
--- a/app/Shift.qml
+++ b/app/Shift.qml
@@ -21,7 +21,8 @@ import QtWebSockets 1.0
Row {
property real percent: 1
property var carshift: [
- "images/meters/tacho_shift_N.svg", "images/meters/tacho_shift_D.svg"
+ "images/meters/tacho_shift_N.svg", "images/meters/tacho_shift_D.svg",
+ "images/meters/tacho_shift_P.svg", "images/meters/tacho_shift_R.svg"
]
property var wheelshift: [
@@ -36,16 +37,16 @@ Row {
fillMode: Image.PreserveAspectFit
smooth: true
asynchronous: true
- source: wshift === 0 ? carshift[0] : carshift[1]
+ source: wshift == "N" ? carshift[0] : ( wshift == "P" ? carshift[2] : ( wshift == "R" ? carshift[3] : carshift[1]))
}
Image {
- visible: wshift > 0
+ visible: (wshift == "D1" || wshift == "D2"||wshift == "D3"||wshift == "D4"||wshift == "D5"||wshift == "D6")
width: percent*sourceSize.width
height: percent*sourceSize.height
fillMode: Image.PreserveAspectFit
smooth: true
asynchronous: true
- source: (wshift > 0 && wshift <= wheelshift.length) ? wheelshift[wshift-1] : wheelshift[0]
+ source: (wshift == "D1") ? wheelshift[0] : ((wshift == "D2") ? wheelshift[1] : ((wshift == "D3") ? wheelshift[2] : ((wshift == "D4") ? wheelshift[3] : ((wshift == "D5") ? wheelshift[4] : wheelshift[5] ))))
}
}
diff --git a/app/Tacho.qml b/app/Tacho.qml
index 9c4fbee..853b12b 100644
--- a/app/Tacho.qml
+++ b/app/Tacho.qml
@@ -50,7 +50,7 @@ Item {
Shift {
percent: imgwidth/480
anchors.right: parent.right
- anchors.rightMargin: wshift > 0 ? (imgwidth-width)/2+25 : (imgwidth-width)/2-5
+ anchors.rightMargin: (wshift == "N" || wshift == "P" ||wshift == "R" )? (imgwidth-width)/2+25 : (imgwidth-width)/2-5
anchors.bottom: parent.bottom
anchors.bottomMargin: 100
spacing: -10
diff --git a/app/app.pro b/app/app.pro
index 035807c..2127084 100644
--- a/app/app.pro
+++ b/app/app.pro
@@ -1,5 +1,5 @@
-TARGET = als-meter-demo
-QT = quickcontrols2 dbus
+TARGET = alsmeterdemo
+QT = quickcontrols2
LIBS += -lopencv_core -lopencv_videoio
@@ -7,7 +7,6 @@ equals(QT_ARCH, "arm") {
QMAKE_CXXFLAGS += -mfp16-format=ieee
}
-
HEADERS += \
camera.h
@@ -16,7 +15,7 @@ SOURCES += \
camera.cpp
CONFIG += link_pkgconfig
-PKGCONFIG += libhomescreen qlibwindowmanager
+PKGCONFIG += qlibwindowmanager qlibhomescreen
RESOURCES += \
als-meter-demo.qrc \
diff --git a/app/camera.cpp b/app/camera.cpp
index 107880c..c21fba5 100644
--- a/app/camera.cpp
+++ b/app/camera.cpp
@@ -47,7 +47,7 @@ void Camera::paint(QPainter *painter) {
}
void Camera::enumerateCameras() {
- int maxID = 10;
+ int maxID = 20;
for (int idx = 0; idx <maxID; idx++){
std::stringstream no;
no << "/dev/video" << idx;
diff --git a/app/main.cpp b/app/main.cpp
index 88a4978..91f39bb 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -18,77 +18,20 @@
#include <QtCore/QDebug>
#include <QtCore/QCommandLineParser>
#include <QtCore/QUrlQuery>
-#include <QtCore/QFile>
-#include <QtDBus/QDBusInterface>
-#include <QtDBus/QDBusReply>
#include <QtGui/QGuiApplication>
#include <QtQml/QQmlApplicationEngine>
#include <QtQml/QQmlContext>
#include <QtQuickControls2/QQuickStyle>
-#include <QtDBus/QDBusConnection>
-#include <unistd.h>
-#include "camera.h"
-#include <QQuickWindow>
-#include <libhomescreen.hpp>
+#include <QtQuick/QQuickWindow>
+#include <qlibhomescreen.h>
#include <qlibwindowmanager.h>
-class AppVisible : public QObject
-{
- Q_OBJECT
-public:
- AppVisible(QObject *parent = nullptr) : QObject(parent){
- m_ppid = getppid();
- m_visible = true;
- QDBusConnection::sessionBus().connect("org.agl.windowmanager",
- "/windowmanager",
- "org.agl.windowmanager",
- "appLayerVisibleChanged",
- this,
- SLOT(appLayerVisibleChanged(int,bool)));
- }
-
-public slots:
- void appLayerVisibleChanged(int pid, bool visible){
- bool tempvis = visible;
-
- if(tempvis && (m_ppid != pid))
- tempvis = false;
-
- if(m_visible != tempvis){
- m_visible = tempvis;
- emit visibleChanged(m_visible);
- }
- }
-
-signals:
- void visibleChanged(const bool& visible);
-
-private:
- int m_ppid;
- bool m_visible;
-};
-
-class DBus : public QObject
-{
- Q_OBJECT
-public:
- DBus(QObject *parent = nullptr)
- : QObject(parent)
- , interface("org.agl.homescreen", "/StatusBar", "org.agl.statusbar", QDBusConnection::sessionBus())
- {}
-
- Q_INVOKABLE void setStatusIcon(int index, const QString &url) {
- interface.call("setStatusIcon", index, url);
- }
-
-private:
- QDBusInterface interface;
-};
+#include "camera.h"
int main(int argc, char *argv[])
{
- QString myname = QString("Als-meter-demo");
+ QString myname = QString("alsmeterdemo");
QGuiApplication app(argc, argv);
app.setApplicationName(myname);
@@ -123,12 +66,9 @@ int main(int argc, char *argv[])
query.addQueryItem(QStringLiteral("token"), secret);
bindingAddressWS.setQuery(query);
QQmlContext *context = engine.rootContext();
- AppVisible appVisible;
- context->setContextProperty(QStringLiteral("appVisible"), &appVisible);
context->setContextProperty(QStringLiteral("bindingAddressWS"), bindingAddressWS);
std::string token = secret.toStdString();
- LibHomeScreen* hs = new LibHomeScreen();
QLibWindowmanager* qwm = new QLibWindowmanager();
// WindowManager
@@ -146,23 +86,16 @@ int main(int argc, char *argv[])
});
// HomeScreen
- hs->init(port, token.c_str());
+ QLibHomeScreen* qhs = new QLibHomeScreen();
+ qhs->init(port, token.c_str());
// Set the event handler for Event_TapShortcut which will activate the surface for windowmanager
- hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [qwm, myname](json_object *object){
- json_object *appnameJ = nullptr;
- if(json_object_object_get_ex(object, "application_name", &appnameJ))
- {
- const char *appname = json_object_get_string(appnameJ);
- if(myname == appname)
- {
- qDebug("Surface %s got tapShortcut\n", appname);
- qwm->activateSurface(myname);
- }
- }
+ qhs->set_event_handler(QLibHomeScreen::Event_TapShortcut, [qwm, myname](json_object *object){
+ qDebug("Surface %s got tapShortcut\n", qPrintable(myname));
+ qwm->activateSurface(myname);
});
+ AGLScreenInfo screenInfo(qwm->get_scale_factor());
+ engine.rootContext()->setContextProperty(QStringLiteral("screenInfo"), &screenInfo);
- DBus dbus;
- engine.rootContext()->setContextProperty("dbus", &dbus);
engine.load(QUrl(QStringLiteral("qrc:/Als-meter-demo.qml")));
QObject *root = engine.rootObjects().first();
@@ -172,5 +105,3 @@ int main(int argc, char *argv[])
return app.exec();
}
-
-#include "main.moc"
diff --git a/package/config.xml b/package/config.xml
index a8047f7..d2ea792 100644
--- a/package/config.xml
+++ b/package/config.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" id="als-meter-demo" version="0.1">
- <name>Als-meter-demo</name>
+<widget xmlns="http://www.w3.org/ns/widgets" id="alsmeterdemo" version="0.1">
+ <name>alsmeterdemo</name>
<icon src="icon.svg"/>
- <content src="bin/als-meter-demo" type="application/vnd.agl.native"/>
- <description>This is a steering-wheel binding's demo application</description>
+ <content src="bin/alsmeterdemo" type="application/vnd.agl.native"/>
+ <description>This is a meter demo application</description>
<author>TOYOTA</author>
<license>APL 2.0</license>
<feature name="urn:AGL:widget:required-api">
- <param name="steering-wheel" value="ws" />
+ <param name="low-can" value="ws" />
<param name="windowmanager" value="ws"/>
<param name="homescreen" value="ws"/>
</feature>