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...
This commit is contained in:
Morgan Diepart 2022-12-20 22:19:34 +01:00
parent 7fadeb303c
commit da77afcbe5

View file

@ -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!");