LedDisplay/OmobiDisplayApp/omobidisplaybackend.cpp

104 lines
2.9 KiB
C++

#include "omobidisplaybackend.h"
OmobiDisplayBackend::OmobiDisplayBackend(QObject *parent) : QObject(parent)
{
this->ble = new QBluetoothLeUart();
this->displayTextModel = new OmobiDisplayTextModel(this);
connect(this->ble, &QBluetoothLeUart::stateChanged, this, &OmobiDisplayBackend::handleBluetoothStateChange);
connect(this->ble, &QBluetoothLeUart::foundNewDevice, this, &OmobiDisplayBackend::handleFoundNewDevice);
connect(this->ble, &QBluetoothLeUart::dataReceived, this, &OmobiDisplayBackend::DataHandler);
connect(this->ble, &QBluetoothLeUart::connectedToDevice, this, &OmobiDisplayBackend::handleBluetoothDeviceConected);
connect(this->displayTextModel, &OmobiDisplayTextModel::dataChanged, this, &OmobiDisplayBackend::handleDisplayTextModelDataChanged);
this->setState(Idle);
this->ble->startScanningForDevices();
}
void OmobiDisplayBackend::startScanning() {
this->ble->startScanningForDevices();
}
void OmobiDisplayBackend::handleBluetoothStateChange(QBluetoothLeUart::BluetoothLeUartState state){
switch(state){
case QBluetoothLeUart::Idle: {
this->setState(Idle);
break;
}
case QBluetoothLeUart::Scanning: {
this->setState(Scanning);
break;
}
case QBluetoothLeUart::ScanFinished: {
this->setState(ReadyToConnect);
break;
}
case QBluetoothLeUart::Connecting: {
this->setState(Connecting);
break;
}
case QBluetoothLeUart::ScanningForService: {
this->setState(Connecting);
break;
}
case QBluetoothLeUart::ServiceFound: {
this->setState(Connecting);
break;
}
case QBluetoothLeUart::Connected:
{
break;
}
}
}
void OmobiDisplayBackend::handleBluetoothDeviceConected() {
this->ble->sendData("Hallihallo ich bin Julia Mueller");
// get the existing model data!
// TODO: implement some communication!
QString currentDisplayText = "[[],[]]";
this->setState(Connected);
}
void OmobiDisplayBackend::handleFoundNewDevice(QBluetoothLeUartDevice* device) {
qDebug() << "Found a device: name: " << device->getName() << " address: " << device->getAddress();
}
void OmobiDisplayBackend::DataHandler(const QString &s){
qDebug() << "NEw data: " << s;
}
void OmobiDisplayBackend::handleDisplayTextModelDataChanged() {
qDebug() << "MODEL DATA CHANGED!";
}
QBluetoothLeUart* OmobiDisplayBackend::getBleController() {
return this->ble;
}
OmobiDisplayTextModel* OmobiDisplayBackend::getDisplayTextModel() {
return this->displayTextModel;
}
OmobiDisplayBackend::OmobiDisplayAppState OmobiDisplayBackend::getState() {
return this->state;
}
void OmobiDisplayBackend::setState(OmobiDisplayAppState state) {
if(state == this->state)
return;
this->state = state;
emit this->stateChanged();
if(this->state == Idle)
this->ble->startScanningForDevices();
}