mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-09-29 06:06:38 +00:00
@@ -657,6 +657,11 @@ uint8_t MyMesh::onContactRequest(const ContactInfo &contact, uint32_t sender_tim
|
|||||||
// query other sensors -- target specific
|
// query other sensors -- target specific
|
||||||
sensors.querySensors(permissions, telemetry);
|
sensors.querySensors(permissions, telemetry);
|
||||||
|
|
||||||
|
float temperature = board.getMCUTemperature();
|
||||||
|
if(!isnan(temperature)) { // Supported boards with built-in temperature sensor. ESP32-C3 may return NAN
|
||||||
|
telemetry.addTemperature(TELEM_CHANNEL_SELF, temperature); // Built-in MCU Temperature
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(reply, &sender_timestamp,
|
memcpy(reply, &sender_timestamp,
|
||||||
4); // reflect sender_timestamp back in response packet (kind of like a 'tag')
|
4); // reflect sender_timestamp back in response packet (kind of like a 'tag')
|
||||||
|
|
||||||
@@ -1640,6 +1645,11 @@ void MyMesh::handleCmdFrame(size_t len) {
|
|||||||
} else if (cmd_frame[0] == CMD_SEND_TELEMETRY_REQ && len == 4) { // 'self' telemetry request
|
} else if (cmd_frame[0] == CMD_SEND_TELEMETRY_REQ && len == 4) { // 'self' telemetry request
|
||||||
telemetry.reset();
|
telemetry.reset();
|
||||||
telemetry.addVoltage(TELEM_CHANNEL_SELF, (float)board.getBattMilliVolts() / 1000.0f);
|
telemetry.addVoltage(TELEM_CHANNEL_SELF, (float)board.getBattMilliVolts() / 1000.0f);
|
||||||
|
float temperature = board.getMCUTemperature();
|
||||||
|
if(!isnan(temperature)) { // Supported boards with built-in temperature sensor. ESP32-C3 may return NAN
|
||||||
|
telemetry.addTemperature(TELEM_CHANNEL_SELF, temperature); // Built-in MCU Temperature
|
||||||
|
}
|
||||||
|
|
||||||
// query other sensors -- target specific
|
// query other sensors -- target specific
|
||||||
sensors.querySensors(0xFF, telemetry);
|
sensors.querySensors(0xFF, telemetry);
|
||||||
|
|
||||||
|
|||||||
@@ -280,6 +280,18 @@ void NRF52Board::sleep(uint32_t secs) {
|
|||||||
|
|
||||||
// Temperature from NRF52 MCU
|
// Temperature from NRF52 MCU
|
||||||
float NRF52Board::getMCUTemperature() {
|
float NRF52Board::getMCUTemperature() {
|
||||||
|
uint8_t sd_enabled = 0;
|
||||||
|
sd_softdevice_is_enabled(&sd_enabled);
|
||||||
|
if (sd_enabled) {
|
||||||
|
uint32_t err_code;
|
||||||
|
int32_t temp;
|
||||||
|
err_code = sd_temp_get(&temp);
|
||||||
|
if (err_code == NRF_SUCCESS) {
|
||||||
|
return (float)temp * 0.25f;
|
||||||
|
} else {
|
||||||
|
return NAN;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
NRF_TEMP->TASKS_START = 1; // Start temperature measurement
|
NRF_TEMP->TASKS_START = 1; // Start temperature measurement
|
||||||
|
|
||||||
long startTime = millis();
|
long startTime = millis();
|
||||||
@@ -289,6 +301,7 @@ float NRF52Board::getMCUTemperature() {
|
|||||||
return NAN;
|
return NAN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NRF_TEMP->EVENTS_DATARDY = 0; // Clear event flag
|
NRF_TEMP->EVENTS_DATARDY = 0; // Clear event flag
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user