mirror of
https://github.com/meshtastic/firmware.git
synced 2025-05-06 05:41:46 +00:00
Merge branch 'master' into portexpander-keyboard
This commit is contained in:
commit
379ad9b919
@ -1 +1 @@
|
||||
Subproject commit 8686d049c22c232f57121e66dfb29e7be65010f0
|
||||
Subproject commit 7960241ccdd6b262a11b79523857037f755ab847
|
@ -7,7 +7,8 @@
|
||||
#include "linux/LinuxHardwareI2C.h"
|
||||
#endif
|
||||
#if !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL)
|
||||
#include "main.h" // atecc
|
||||
#include "main.h" // atecc
|
||||
#include "meshUtils.h" // vformat
|
||||
#endif
|
||||
|
||||
// AXP192 and AXP2101 have the same device address, we just need to identify it in Power.cpp
|
||||
|
@ -34,7 +34,11 @@
|
||||
#endif
|
||||
#include "modules/StoreForwardModule.h"
|
||||
#include <Preferences.h>
|
||||
#include <esp_efuse.h>
|
||||
#include <esp_efuse_table.h>
|
||||
#include <nvs_flash.h>
|
||||
#include <soc/efuse_reg.h>
|
||||
#include <soc/soc.h>
|
||||
#endif
|
||||
|
||||
#ifdef ARCH_PORTDUINO
|
||||
@ -109,6 +113,43 @@ NodeDB::NodeDB()
|
||||
uint32_t channelFileCRC = crc32Buffer(&channelFile, sizeof(channelFile));
|
||||
|
||||
int saveWhat = 0;
|
||||
bool hasUniqueId = false;
|
||||
// Get device unique id
|
||||
#if defined(ARCH_ESP32) && defined(ESP_EFUSE_OPTIONAL_UNIQUE_ID)
|
||||
uint32_t unique_id[4];
|
||||
// ESP32 factory burns a unique id in efuse for S2+ series and evidently C3+ series
|
||||
// This is used for HMACs in the esp-rainmaker AIOT platform and seems to be a good choice for us
|
||||
esp_err_t err = esp_efuse_read_field_blob(ESP_EFUSE_OPTIONAL_UNIQUE_ID, unique_id, sizeof(unique_id) * 8);
|
||||
if (err == ESP_OK) {
|
||||
memcpy(myNodeInfo.device_id.bytes, unique_id, sizeof(unique_id));
|
||||
myNodeInfo.device_id.size = 16;
|
||||
hasUniqueId = true;
|
||||
} else {
|
||||
LOG_WARN("Failed to read unique id from efuse");
|
||||
}
|
||||
#elif defined(ARCH_NRF52)
|
||||
// Nordic applies a FIPS compliant Random ID to each chip at the factory
|
||||
// We concatenate the device address to the Random ID to create a unique ID for now
|
||||
// This will likely utilize a crypto module in the future
|
||||
uint64_t device_id_start = ((uint64_t)NRF_FICR->DEVICEID[1] << 32) | NRF_FICR->DEVICEID[0];
|
||||
uint64_t device_id_end = ((uint64_t)NRF_FICR->DEVICEADDR[1] << 32) | NRF_FICR->DEVICEADDR[0];
|
||||
memcpy(myNodeInfo.device_id.bytes, &device_id_start, sizeof(device_id_start));
|
||||
memcpy(myNodeInfo.device_id.bytes + sizeof(device_id_start), &device_id_end, sizeof(device_id_end));
|
||||
myNodeInfo.device_id.size = 16;
|
||||
hasUniqueId = true;
|
||||
#else
|
||||
// FIXME - implement for other platforms
|
||||
#endif
|
||||
// Uncomment below to print the device id
|
||||
// if (hasUniqueId) {
|
||||
// std::string deviceIdHex;
|
||||
// for (size_t i = 0; i < myNodeInfo.device_id.size; ++i) {
|
||||
// char buf[3];
|
||||
// snprintf(buf, sizeof(buf), "%02X", myNodeInfo.device_id.bytes[i]);
|
||||
// deviceIdHex += buf;
|
||||
// }
|
||||
// LOG_DEBUG("Device ID (HEX): %s", deviceIdHex.c_str());
|
||||
// }
|
||||
|
||||
// likewise - we always want the app requirements to come from the running appload
|
||||
myNodeInfo.min_app_version = 30200; // format is Mmmss (where M is 1+the numeric major number. i.e. 30200 means 2.2.00
|
||||
|
@ -13,7 +13,7 @@
|
||||
/* Canned message module configuration. */
|
||||
typedef struct _meshtastic_RTTTLConfig {
|
||||
/* Ringtone for PWM Buzzer in RTTTL Format. */
|
||||
char ringtone[230];
|
||||
char ringtone[231];
|
||||
} meshtastic_RTTTLConfig;
|
||||
|
||||
|
||||
@ -41,7 +41,7 @@ extern const pb_msgdesc_t meshtastic_RTTTLConfig_msg;
|
||||
|
||||
/* Maximum encoded size of messages (where known) */
|
||||
#define MESHTASTIC_MESHTASTIC_RTTTL_PB_H_MAX_SIZE meshtastic_RTTTLConfig_size
|
||||
#define meshtastic_RTTTLConfig_size 232
|
||||
#define meshtastic_RTTTLConfig_size 233
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "LIS3DHSensor.h"
|
||||
#include "NodeDB.h"
|
||||
|
||||
#if !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL) && !MESHTASTIC_EXCLUDE_I2C
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "LSM6DS3Sensor.h"
|
||||
#include "NodeDB.h"
|
||||
|
||||
#if !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL) && !MESHTASTIC_EXCLUDE_I2C
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "../graphics/Screen.h"
|
||||
#include "../graphics/ScreenFonts.h"
|
||||
#include "../power.h"
|
||||
#include "Wire.h"
|
||||
|
||||
// Base class for motion processing
|
||||
class MotionSensor
|
||||
|
@ -34,4 +34,4 @@
|
||||
#define SX128X_TXEN 26
|
||||
#define SX128X_RXEN 27
|
||||
#define SX128X_RESET LORA_RESET
|
||||
#define SX128X_MAX_POWER 13
|
||||
#define SX128X_MAX_POWER 3
|
||||
|
Loading…
Reference in New Issue
Block a user