diff --git a/Android_App/02_TCP_client_1/appmanager.cpp b/Android_App/02_TCP_client_1/appmanager.cpp index ad490ba..4fc271d 100644 --- a/Android_App/02_TCP_client_1/appmanager.cpp +++ b/Android_App/02_TCP_client_1/appmanager.cpp @@ -1,31 +1,83 @@ #include "appmanager.h" #include +#include + +QStringList *AppManager::getMp_availablePlaylists() const +{ + return mp_availablePlaylists; +} AppManager::AppManager(QObject *parent) : QObject(parent) { mp_socket = new QTcpSocket(); + mp_availablePlaylists = new QStringList(); + m_appState = HOME; + + connect(mp_socket, &QIODevice::readyRead, this, &AppManager::receivedDataTCP); + connectTCP(); } AppManager::~AppManager() { + mp_socket->disconnectFromHost(); delete mp_socket; } -void AppManager::launchApp(QString message) +void AppManager::launchApp(qint8 appstate) +{ + m_appState = static_cast(appstate); + + writeTCP(QString::number(appstate)); +} + +void AppManager::connectTCP() +{ + mp_socket->connectToHost("192.168.1.19", 10000); +} + +bool AppManager::writeTCP(QString message) { qDebug()<<__FUNCTION__<state() == QAbstractSocket::ConnectedState){ QByteArray ba = message.toLocal8Bit(); mp_socket->write(ba.data(), message.length()); + return 1; } else{ qDebug()<<"socket not connected, current state :"<state(); + connectTCP(); + return 0; } } -void AppManager::connectTCP() +void AppManager::parseTCP(QString response) { - mp_socket->connectToHost("192.168.1.19", 10000); + switch (m_appState) { + case HOME: + qDebug()<<"No response supported in HOME state"; + break; + case MUSIC: + mp_availablePlaylists->clear(); + mp_availablePlaylists->append(response.split(";")); + + emit availablePlaylistChanged(); + break; + case VIDEO: + qDebug()<<"No response supported in VIDEO state"; + break; + default: + break; + } +} + +void AppManager::receivedDataTCP() +{ + QByteArray ba = mp_socket->readAll(); + QString s(ba); + + qDebug()<<"New message:["<setContextProperty("AppManager", appManager); + qmlRegisterType("StateEnum",1,0,"AppState"); const QUrl url(QStringLiteral("qrc:/main.qml")); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, diff --git a/Android_App/02_TCP_client_1/main.qml b/Android_App/02_TCP_client_1/main.qml index cef1a72..3232e1f 100644 --- a/Android_App/02_TCP_client_1/main.qml +++ b/Android_App/02_TCP_client_1/main.qml @@ -2,6 +2,9 @@ import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Layouts 1.12 import QtQuick.Controls 2.5 +import QtQuick.Extras 1.4 + +import StateEnum 1.0 Window { visible: true @@ -18,27 +21,34 @@ Window { Case_Coloree{ color : "red" iconPath: "Images/alarm.png" - onClicked: AppManager.launchApp("Alarme"); + onClicked: console.log("red button")//AppManager.launchApp(AppState.HOME); } Case_Coloree{ color: "green" iconPath: "Images/console.png" - onClicked: AppManager.launchApp("Jeux"); + onClicked: console.log("jeux button")//AppManager.launchApp(AppState.HOME); } Case_Coloree{ color: "yellow" iconPath: "Images/youtube.png" - onClicked: AppManager.launchApp("Youtube"); + onClicked: AppManager.launchApp(AppState.VIDEO); } Case_Coloree{ color: "blue" iconPath: "Images/music-player.png" - onClicked: AppManager.launchApp("Musique"); + onClicked: AppManager.launchApp(AppState.MUSIC); } } - Button{ - text: "Reconnect" - onClicked: AppManager.connectTCP() + Row{ + Button{ + text: "Reconnect" + onClicked: AppManager.connectTCP() + } + StatusIndicator{ + + } } + + } // end mainLayout } diff --git a/rpi/tcp_server.py b/rpi/tcp_server.py index 256135f..4221be8 100644 --- a/rpi/tcp_server.py +++ b/rpi/tcp_server.py @@ -1,5 +1,7 @@ import socket import sys +import os +import subprocess IP_ADDR = "192.168.1.19" TCP_PORT = 10000 @@ -22,5 +24,10 @@ print("Connection from {} ".format(client_address)) data = connection.recv(16) print("Data : %s" % data) + if data == "Musique": + proc = subprocess.Popen(['ls', '/home/pi/Music'], stdout=subprocess.PIPE) + list_playlist = proc.stdout.read().split() + print(list_playlist) + connection.sendall(";".join(list_playlist)) else: connection.close()