From 7657a724b6544597c4c579000ac48cdfb70d10b7 Mon Sep 17 00:00:00 2001 From: Lubos Petrovic Date: Sun, 20 Dec 2020 16:22:32 +0100 Subject: [PATCH] ble --- CommInterface.cpp | 4 ++- CommInterface.h | 2 +- CommObd2Ble4.cpp | 72 +++++++++++++++++++---------------------------- CommObd2Ble4.h | 2 +- CommObd2Can.cpp | 2 -- 5 files changed, 34 insertions(+), 48 deletions(-) diff --git a/CommInterface.cpp b/CommInterface.cpp index 53171f4..58fa23a 100644 --- a/CommInterface.cpp +++ b/CommInterface.cpp @@ -4,6 +4,8 @@ #include "LiveData.h" void CommInterface::initComm(LiveData* pLiveData, BoardInterface* pBoard) { + liveData = pLiveData; - board = pBoard; + board = pBoard; + response = ""; } diff --git a/CommInterface.h b/CommInterface.h index bcae2bf..7b1cd65 100644 --- a/CommInterface.h +++ b/CommInterface.h @@ -11,7 +11,7 @@ class CommInterface { LiveData* liveData; BoardInterface* board; char ch; - String line; + String response; public: void initComm(LiveData* pLiveData, BoardInterface* pBoard); virtual void connectDevice() = 0; diff --git a/CommObd2Ble4.cpp b/CommObd2Ble4.cpp index c084d74..8cdcb41 100644 --- a/CommObd2Ble4.cpp +++ b/CommObd2Ble4.cpp @@ -21,7 +21,7 @@ class MyClientCallback : public BLEClientCallbacks { void onDisconnect(BLEClient* pclient) { //connected = false; Serial.println("onDisconnect"); - + boardObj->displayMessage("BLE disconnected", ""); } }; @@ -54,15 +54,15 @@ class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { } liveDataObj->scanningDeviceIndex++; } - -// if (advertisedDevice.getServiceDataUUID().toString() != "") { -// Serial.print("ServiceDataUUID: "); -// Serial.println(advertisedDevice.getServiceDataUUID().toString().c_str()); -// if (advertisedDevice.getServiceUUID().toString() != "") { -// Serial.print("ServiceUUID: "); -// Serial.println(advertisedDevice.getServiceUUID().toString().c_str()); -// } -// } + + // if (advertisedDevice.getServiceDataUUID().toString() != "") { + // Serial.print("ServiceDataUUID: "); + // Serial.println(advertisedDevice.getServiceDataUUID().toString().c_str()); + // if (advertisedDevice.getServiceUUID().toString() != "") { + // Serial.print("ServiceUUID: "); + // Serial.println(advertisedDevice.getServiceUUID().toString().c_str()); + // } + // } if (advertisedDevice.haveServiceUUID() && advertisedDevice.isAdvertisingService(BLEUUID(liveDataObj->settings.serviceUUID)) && (strcmp(advertisedDevice.getAddress().toString().c_str(), liveDataObj->settings.obdMacAddress) == 0)) { @@ -107,7 +107,7 @@ class MySecurity : public BLESecurityCallbacks { liveDataObj->bleConnect = false; } } - + }; /** @@ -117,7 +117,7 @@ static void notifyCallback (BLERemoteCharacteristic * pBLERemoteCharacteristic, char ch; - // Parse multi line response to single lines + // Parse multiframes to single response liveDataObj->responseRow = ""; for (int i = 0; i <= length; i++) { ch = pData[i]; @@ -129,7 +129,9 @@ static void notifyCallback (BLERemoteCharacteristic * pBLERemoteCharacteristic, liveDataObj->responseRow += ch; if (liveDataObj->responseRow == ">") { if (liveDataObj->responseRowMerged != "") { - commObj->parseRowMerged(); + Serial.print("merged:"); + Serial.println(liveDataObj->responseRowMerged); + boardObj->parseRowMerged(); } liveDataObj->responseRowMerged = ""; liveDataObj->canSendNextAtCommand = true; @@ -146,8 +148,7 @@ void CommObd2Ble4::connectDevice() { commObj = this; liveDataObj = liveData; boardObj = board; - line = ""; - + Serial.println("BLE4 connectDevice"); // Start BLE connection @@ -183,7 +184,7 @@ void CommObd2Ble4::disconnectDevice() { Scan device list, from menu */ void CommObd2Ble4::scanDevices() { - + Serial.println("COMM scanDevices"); startBleScan(); } @@ -313,10 +314,10 @@ bool CommObd2Ble4::connectToServer(BLEAddress pAddress) { } /** - * Main loop - */ + Main loop +*/ void CommObd2Ble4::mainLoop() { - + // Connect BLE device if (liveData->bleConnect == true && liveData->foundMyBleDevice != NULL) { liveData->pServerAddress = new BLEAddress(liveData->settings.obdMacAddress); @@ -341,15 +342,15 @@ void CommObd2Ble4::mainLoop() { if (Serial.available()) { ch = Serial.read(); if (ch == '\r' || ch == '\n') { - board->customConsoleCommand(line); - line = line + ch; - Serial.println(line); + board->customConsoleCommand(response); + response = response + ch; + Serial.println(response); if (liveData->bleConnected) { - liveData->pRemoteCharacteristicWrite->writeValue(line.c_str(), line.length()); + liveData->pRemoteCharacteristicWrite->writeValue(response.c_str(), response.length()); } - line = ""; + response = ""; } else { - line = line + ch; + response = response + ch; } } @@ -394,14 +395,13 @@ bool CommObd2Ble4::doNextAtCommand() { return true; } - + /** - Parse result from OBD, create single line liveData->responseRowMerged + Parse result from OBD, merge frames to sigle response */ bool CommObd2Ble4::parseRow() { - // Simple 1 line responses - Serial.print(""); + // 1 frame data Serial.println(liveData->responseRow); // Merge 0:xxxx 1:yyyy 2:zzzz to single xxxxyyyyzzzz string @@ -411,17 +411,3 @@ bool CommObd2Ble4::parseRow() { return true; } - -/** - Parse merged row (after merge completed) -*/ -bool CommObd2Ble4::parseRowMerged() { - - Serial.print("merged:"); - Serial.println(liveData->responseRowMerged); - - // Parse by selected car interface - board->parseRowMerged(); - - return true; -} diff --git a/CommObd2Ble4.h b/CommObd2Ble4.h index 555e068..2f5eca1 100644 --- a/CommObd2Ble4.h +++ b/CommObd2Ble4.h @@ -18,5 +18,5 @@ class CommObd2Ble4 : public CommInterface { bool connectToServer(BLEAddress pAddress); bool doNextAtCommand(); bool parseRow(); - bool parseRowMerged(); + // }; diff --git a/CommObd2Can.cpp b/CommObd2Can.cpp index 91c1219..759e1ab 100644 --- a/CommObd2Can.cpp +++ b/CommObd2Can.cpp @@ -7,8 +7,6 @@ */ void CommObd2Can::connectDevice() { - line = ""; - Serial.println("CAN connectDevice"); }