Skip to content

Commit

Permalink
a/tu_xx01 works. Merged most xbee_fixes #21
Browse files Browse the repository at this point in the history
  • Loading branch information
neilh20 authored and neilh20 committed Jul 3, 2023
1 parent 7ceb293 commit 99bc551
Show file tree
Hide file tree
Showing 6 changed files with 314 additions and 184 deletions.
1 change: 1 addition & 0 deletions a/logging_to_MMW/src/logging_to_MMW.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ const int8_t modemLEDPin = redLED; // MCU pin connected an LED to show modem
#define USE_WIFI_DIGI_S6B 3
#define USE_WIFI_ENVIRODIY_ESP32 4

//#define USE_MODEM USE_WIFI_DIGI_S6B
#define USE_MODEM USE_WIFI_ENVIRODIY_ESP32

#if USE_MODEM == USE_CELL_DIGI_LTE_XBM3
Expand Down
11 changes: 0 additions & 11 deletions a/tu_xx01/src/tu_xx01.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1592,17 +1592,6 @@ void setup() {
loggerModemPhyInst->modemHardReset(); //Ensure in known state ~ 5mS

// loggerModemPhyInst->setModemLED(modemLEDPin); //Used in UI_status subsystem
#if defined Modem_SignalPercent_UUID || defined DIGI_RSSI_UUID || \
defined DIGI_VCC_UID
#define POLL_MODEM_REQ \
(loggerModem::PollModemMetaData_t)( \
loggerModem::POLL_MODEM_META_DATA_RSSI | \
loggerModem::POLL_MODEM_META_DATA_VCC)
loggerModemPhyInst->pollModemMetadata(loggerModem::POLL_MODEM_META_DATA_RSSI );
#else
//Ensure its all turned OFF.
loggerModemPhyInst->pollModemMetadata(loggerModem::POLL_MODEM_META_DATA_OFF);
#endif
#endif // UseModem_Module

// Begin the logger
Expand Down
113 changes: 73 additions & 40 deletions src/LoggerModem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
#include "LoggerModem.h"

// Initialize the static members
loggerModem::PollModemMetaData_t loggerModem::_pollModemMetaData =
POLL_MODEM_META_DATA_DEF;

int16_t loggerModem::_priorRSSI = SENSOR_DEFAULT_I;
int16_t loggerModem::_priorSignalPercent = SENSOR_DEFAULT_I;
float loggerModem::_priorModemTemp = SENSOR_DEFAULT_F;
Expand Down Expand Up @@ -67,6 +64,11 @@ String loggerModem::getModemName(void) {
return _modemName;
}

String loggerModem::getModemDevId(void) {
return _modemName + F(" Sn ") + _modemSerialNumber + F(" HwVer ") +
_modemHwVersion + F(" FwVer ") + _modemFwVersion;
}

void loggerModem::modemPowerUp(void) {
if (_powerPin >= 0) {
if (_modemSleepRqPin >= 0) {
Expand Down Expand Up @@ -306,6 +308,18 @@ void loggerModem::setModemPinModes(void) {
}
_pinModesSet = true;
}
}


void loggerModem::enableMetadataPolling(uint8_t pollingBitmask) {
_pollModemMetaData |= pollingBitmask;
}
void loggerModem::disableMetadataPolling(uint8_t pollingBitmask) {
_pollModemMetaData |= ~pollingBitmask;
}
void loggerModem::setMetadataPolling(uint8_t pollingBitmask) {
_pollModemMetaData = pollingBitmask;
}

// Turn off pins connected to modem
#if defined POWERPIN_ALLPINS_OFF
Expand All @@ -319,12 +333,7 @@ void loggerModem::setModemPinModes(void) {
digitalWrite(MODEMPHY_TX_PIN, LOW);
digitalWrite(MODEMPHY_RX_PIN, LOW);
#endif // POWERPIN_ALLPINS_OFF
}


void loggerModem::pollModemMetadata(PollModemMetaData_t status) {
_pollModemMetaData = status;
}
bool loggerModem::updateModemMetadata(void) {
bool success = true;

Expand All @@ -343,40 +352,64 @@ bool loggerModem::updateModemMetadata(void) {
int8_t bpercent = -99;
uint16_t volt = 9999;

// Try for up to 15 seconds to get a valid signal quality
uint32_t startMillis = millis();
do {
success &= getModemSignalQuality(rssi, percent);
MS_DBG(F("Modem polling settings:"), String(_pollModemMetaData, BIN));

if ((_pollModemMetaData & MODEM_RSSI_ENABLE_BITMASK) ==
MODEM_RSSI_ENABLE_BITMASK ||
(_pollModemMetaData & MODEM_PERCENT_SIGNAL_ENABLE_BITMASK) ==
MODEM_PERCENT_SIGNAL_ENABLE_BITMASK) {
// Try for up to 15 seconds to get a valid signal quality
uint32_t startMillis = millis();
do {
success &= getModemSignalQuality(rssi, percent);
loggerModem::_priorRSSI = rssi;
loggerModem::_priorSignalPercent = percent;
if (rssi != 0 && rssi != -9999) break;
delay(250);
} while ((rssi == 0 || rssi == -9999) &&
millis() - startMillis < 15000L && success);
MS_DBG(F("CURRENT RSSI:"), rssi);
MS_DBG(F("CURRENT Percent signal strength:"), percent);
loggerModem::_priorRSSI = rssi;
loggerModem::_priorSignalPercent = percent;
if (rssi != 0 && rssi != -9999) break;
delay(250);
} while ((rssi == 0 || rssi == -9999) && millis() - startMillis < 15000L &&
success);

success &= getModemBatteryStats(state, bpercent, volt);
MS_DBG(F("CURRENT Modem Battery Charge State:"), state);
MS_DBG(F("CURRENT Modem Battery Charge Percentage:"), bpercent);
MS_DBG(F("CURRENT Modem Battery Voltage:"), volt);
if (state != 99)
loggerModem::_priorBatteryState = static_cast<float>(state);
else
loggerModem::_priorBatteryState = static_cast<float>(-9999);

if (bpercent != -99)
loggerModem::_priorBatteryPercent = static_cast<float>(bpercent);
else
loggerModem::_priorBatteryPercent = static_cast<float>(-9999);

if (volt != 9999)
loggerModem::_priorBatteryVoltage = static_cast<float>(volt);
else
loggerModem::_priorBatteryVoltage = static_cast<float>(-9999);

loggerModem::_priorModemTemp = getModemChipTemperature();
MS_DBG(F("CURRENT Modem Chip Temperature:"), loggerModem::_priorModemTemp);
} else {
MS_DBG(F("Polling for both RSSI and signal strength is disabled"));
}

if ((_pollModemMetaData & MODEM_BATTERY_STATE_ENABLE_BITMASK) ==
MODEM_BATTERY_STATE_ENABLE_BITMASK ||
(_pollModemMetaData & MODEM_BATTERY_PERCENT_ENABLE_BITMASK) ==
MODEM_BATTERY_PERCENT_ENABLE_BITMASK ||
(_pollModemMetaData & MODEM_BATTERY_VOLTAGE_ENABLE_BITMASK) ==
MODEM_BATTERY_VOLTAGE_ENABLE_BITMASK) {
success &= getModemBatteryStats(state, bpercent, volt);
MS_DBG(F("CURRENT Modem Battery Charge State:"), state);
MS_DBG(F("CURRENT Modem Battery Charge Percentage:"), bpercent);
MS_DBG(F("CURRENT Modem Battery Voltage:"), volt);
if (state != 99)
loggerModem::_priorBatteryState = static_cast<float>(state);
else
loggerModem::_priorBatteryState = static_cast<float>(-9999);

if (bpercent != -99)
loggerModem::_priorBatteryPercent = static_cast<float>(bpercent);
else
loggerModem::_priorBatteryPercent = static_cast<float>(-9999);

if (volt != 9999)
loggerModem::_priorBatteryVoltage = static_cast<float>(volt);
else
loggerModem::_priorBatteryVoltage = static_cast<float>(-9999);
} else {
MS_DBG(F("Polling for all modem battery parameters is disabled"));
}

if ((_pollModemMetaData & MODEM_TEMPERATURE_ENABLE_BITMASK) ==
MODEM_TEMPERATURE_ENABLE_BITMASK) {
loggerModem::_priorModemTemp = getModemChipTemperature();
MS_DBG(F("CURRENT Modem Chip Temperature:"),
loggerModem::_priorModemTemp);
} else {
MS_DBG(F("Polling for modem chip temperature is disabled"));
}

return success;
}
Expand Down
Loading

0 comments on commit 99bc551

Please sign in to comment.