From da77afcbe5aa3aa20e338984741d8982364c9f49 Mon Sep 17 00:00:00 2001 From: Morgan Diepart Date: Tue, 20 Dec 2022 22:19:34 +0100 Subject: [PATCH] Closing comm devices When checking for the board, close the communication devices. If we do not do that, successive calls to begin will not configure the pins properly and thus the board check might fail... --- lib/BoardFinder/BoardFinder.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/BoardFinder/BoardFinder.cpp b/lib/BoardFinder/BoardFinder.cpp index 37dd058..cc87d6f 100644 --- a/lib/BoardFinder/BoardFinder.cpp +++ b/lib/BoardFinder/BoardFinder.cpp @@ -21,6 +21,7 @@ BoardConfig const *BoardFinder::searchBoardConfig(logging::Logger &logger) { Wire.begin(boardconf->OledSda, boardconf->OledScl); powerManagement.begin(Wire); powerManagement.activateOLED(); + Wire.end(); } else if (boardconf->needCheckPowerChip) { continue; } @@ -38,6 +39,7 @@ BoardConfig const *BoardFinder::searchBoardConfig(logging::Logger &logger) { Wire.begin(boardconf->OledSda, boardconf->OledScl); powerManagement.begin(Wire); powerManagement.activateLoRa(); + Wire.end(); } if (checkModemConfig(boardconf)) { logger.log(logging::LoggerLevel::LOGGER_LEVEL_INFO, MODULE_NAME, "found a board config: %s", boardconf->Name.c_str()); @@ -75,8 +77,10 @@ bool BoardFinder::checkOledConfig(BoardConfig const *boardConfig, logging::Logge } Wire.beginTransmission(boardConfig->OledAddr); if (!Wire.endTransmission()) { + Wire.end(); return true; } + Wire.end(); return false; } @@ -98,9 +102,8 @@ bool BoardFinder::checkModemConfig(BoardConfig const *boardConfig) { SPI.transfer(0x42); uint8_t response = SPI.transfer(0x00); SPI.endTransaction(); - digitalWrite(boardConfig->LoraCS, HIGH); - + SPI.end(); if (response == 0x12) { return true; } @@ -120,6 +123,8 @@ bool BoardFinder::checkPowerConfig(BoardConfig const *boardConfig, logging::Logg int response = Wire.read(); Wire.endTransmission(); + Wire.end(); + logger.log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, MODULE_NAME, "wire response: %d", response); if (response == 0x03) { logger.log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, MODULE_NAME, "power chip found!");