/*! * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VBluetooth.cpp * \author (last) Behrouz NematiPour * \date (last) 8/23/2021 * \author (original) Behrouz NematiPour * \date (original) 8/23/2021 * */ #include "VBluetooth.h" // Qt // Project #include "GuiController.h" #include "MBluetooth.h" VIEW_DEF_CLASS(VBluetooth) using namespace Bluetooth; using namespace Model; /*! * \brief VBluetooth::initConnections * Makes the necessary connections. Called inside VIEW_DEF_CLASS */ void View::VBluetooth::initConnections() { ACTION_VIEW_CONNECTION(AdjustSerialNumberHDResponseData); connect(&_BluetoothInterface, &BluetoothInterface::didStateChange, this , &VBluetooth::onStateChange ); } void View::VBluetooth::onActionReceive(const AdjustSerialNumberHDResponseData &vData) { LOG_EVENT( QString() + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + vData.mSerialNumber); _BluetoothInterface.doScan(); } void View::VBluetooth::onStateChange(const Model::MBluetooth &vData) { scanEnabled( ! (vData.state == MBluetooth::eIS_Close || // local vData.state == MBluetooth::eIS_Local_Init || // device vData.state == MBluetooth::eIS_Device_Connect || // service vData.state == MBluetooth::eIS_Service_Start || vData.state == MBluetooth::eIS_Service_Discover || vData.state == MBluetooth::eIS_Service_Detail )); switch (vData.state) { // The device name is not always available and the interface may be in investigation. case MBluetooth::eIS_Scan_Found : case MBluetooth::eIS_Scan_NotFound : case MBluetooth::eIS_Scan_Discover : deviceAddr (vData.deviceAddr ); deviceName (vData.deviceName ); devicePair (vData.devicePair ); break; case MBluetooth::eIS_Local_Init : localAddr (vData.localAddr ); localName (vData.localName ); break; case MBluetooth::eIS_Detail_Change : case MBluetooth::eIS_Detail_Read : case MBluetooth::eIS_Detail_Write : case MBluetooth::eIS_Config_Read : case MBluetooth::eIS_Config_Write : detailName (vData.detailName ); detailAddr (vData.detailAddr ); detailValue (vData.detailValue ); break; default: break; } error (vData.error ); devicePin (vData.devicePin ); QString message; switch (vData.state) { case MBluetooth::eIS_Idle : message = "" ; break; case MBluetooth::eIS_Close : message = tr("BluetoothInterface Closed" ); break; // Used BluetoothInterface to be consistent with the case MBluetooth::eIS_Local_Init : message = tr("The Bluetooth Adapter Is Ready %1" ).arg(_localAddr ); break; case MBluetooth::eIS_Local_Connect : message = tr("The Bluetooth Adapter Connected" ); break; case MBluetooth::eIS_Local_Disconnect : message = tr("The Bluetooth Adapter Disconnected" ); break; case MBluetooth::eIS_Local_Error_Invalid : message = tr("No Valid Bluetooth Adapter" ); break; case MBluetooth::eIS_Local_Error_Off : message = tr("The Bluetooth Adapter Is Off" ); break; case MBluetooth::eIS_Local_Error_IO : message = tr("The Bluetooth Adapter IO Error" ); break; case MBluetooth::eIS_Local_Error : message = tr("The Bluetooth Adapter Unknown Error" ); break; case MBluetooth::eIS_Scan_NotFound : message = tr("No Valid device found" ); break; case MBluetooth::eIS_Scan_Start : message = tr("Scanning ..." ); break; case MBluetooth::eIS_Scan_Reject : message = tr("Scanning Rejected" ); break; case MBluetooth::eIS_Scan_Discover : message = tr("Device Discovered" ); break; case MBluetooth::eIS_Scan_Found : message = tr("Blood Pressure Device Found" ); break; case MBluetooth::eIS_Scan_Stop : message = tr("Scanning Stopped" ); break; case MBluetooth::eIS_Scan_Done : message = tr("Scanning Finished" ); break; case MBluetooth::eIS_Device_Init : message = tr("Device Initializing ..." ); break; case MBluetooth::eIS_Device_Error_Init : message = tr("Device Initialization Error" ); break; case MBluetooth::eIS_Device_Start : message = tr("Device Connecting ..." ); break; case MBluetooth::eIS_Device_Error : message = tr("Device Connection Error" ); break; case MBluetooth::eIS_Device_Connect : message = tr("Device Connected" ); break; case MBluetooth::eIS_Device_Done : message = tr("Device Connection Done" ); break; case MBluetooth::eIS_Device_Disconnect : message = tr("Device Disconnected" ); break; case MBluetooth::eIS_Service_Start : message = tr("Service Scanning ..." ); break; case MBluetooth::eIS_Service_Error : message = tr("Service Error: %1" ).arg(_error ); break; case MBluetooth::eIS_Service_Discover : message = tr("Service Discovered" ); break; case MBluetooth::eIS_Service_Detail : message = tr("Service Detail Discovering ..." ); break; case MBluetooth::eIS_Service_Detail_Error : message = tr("Service Detail Error" ); break; case MBluetooth::eIS_Service_Detail_Invalid : message = tr("Service Detail Invalid" ); break; case MBluetooth::eIS_Service_Detail_Done : message = tr("Service Detail Done" ); break; case MBluetooth::eIS_Service_Done : message = tr("Service Scanning Finished" ); break; case MBluetooth::eIS_Detail_Change : message = tr("Service Characteristic Changed" ); break; case MBluetooth::eIS_Detail_Read : message = tr("Service Characteristic Read" ); break; case MBluetooth::eIS_Detail_Write : message = tr("Service Characteristic Write" ); break; case MBluetooth::eIS_Config_Read : message = tr("Service Descriptor Read" ); break; case MBluetooth::eIS_Config_Write : message = tr("Service Descriptor Write" ); break; // IMPORTANT: Do not use the "default:" to let compiler check for all the enumeration which are not handled. } notification(message); // Console Log message = _deviceAddr + " " + message + " " + _detailName + " " + _detailValue; message = message.trimmed().simplified(); qDebug().noquote().nospace() << message; // Service Log LOG_DEBUG(message); } void View::VBluetooth::doScan() { _BluetoothInterface.doScan(); }