mirror of
https://github.com/meshtastic/firmware.git
synced 2025-09-12 14:05:58 +00:00
Merge branch 'master' into issue5194-external-notification-module-refactor
This commit is contained in:
commit
2f582eed76
33
bin/base64_to_hex.py
Normal file
33
bin/base64_to_hex.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import sys
|
||||||
|
import base64
|
||||||
|
|
||||||
|
def base64_to_hex_string(b64_string):
|
||||||
|
try:
|
||||||
|
# Decode the Base64 string to raw bytes
|
||||||
|
decoded_bytes = base64.b64decode(b64_string)
|
||||||
|
except Exception as e:
|
||||||
|
raise ValueError(f"Invalid Base64 input: {e}")
|
||||||
|
|
||||||
|
# Check if the decoded result is exactly 32 bytes
|
||||||
|
if len(decoded_bytes) != 32:
|
||||||
|
raise ValueError("Decoded Base64 input must be exactly 32 bytes.")
|
||||||
|
|
||||||
|
# Convert each byte to its hex representation
|
||||||
|
hex_values = [f"0x{byte:02x}" for byte in decoded_bytes]
|
||||||
|
|
||||||
|
# Join the formatted hex values with commas
|
||||||
|
formatted_output = "{ " + ", ".join(hex_values) + " };"
|
||||||
|
return formatted_output
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Check if a Base64 string was provided in command line arguments
|
||||||
|
if len(sys.argv) != 2:
|
||||||
|
print("Usage: python script.py <base64-string>")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
b64_string = sys.argv[1]
|
||||||
|
try:
|
||||||
|
formatted_hex = base64_to_hex_string(b64_string)
|
||||||
|
print(formatted_hex)
|
||||||
|
except ValueError as e:
|
||||||
|
print(e)
|
@ -407,9 +407,30 @@ void NodeDB::installDefaultConfig(bool preserveKey = false)
|
|||||||
config.lora.ignore_mqtt = false;
|
config.lora.ignore_mqtt = false;
|
||||||
#endif
|
#endif
|
||||||
#ifdef USERPREFS_USE_ADMIN_KEY
|
#ifdef USERPREFS_USE_ADMIN_KEY
|
||||||
memcpy(config.security.admin_key[0].bytes, USERPREFS_ADMIN_KEY, 32);
|
// Initialize admin_key_count to zero
|
||||||
config.security.admin_key[0].size = 32;
|
byte numAdminKeys = 0;
|
||||||
config.security.admin_key_count = 1;
|
|
||||||
|
// Check if USERPREFS_ADMIN_KEY_0 is non-empty
|
||||||
|
if (sizeof(USERPREFS_ADMIN_KEY_0) > 0) {
|
||||||
|
memcpy(config.security.admin_key[numAdminKeys].bytes, USERPREFS_ADMIN_KEY_0, 32);
|
||||||
|
config.security.admin_key[numAdminKeys].size = 32;
|
||||||
|
numAdminKeys++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if USERPREFS_ADMIN_KEY_1 is non-empty
|
||||||
|
if (sizeof(USERPREFS_ADMIN_KEY_1) > 0) {
|
||||||
|
memcpy(config.security.admin_key[numAdminKeys].bytes, USERPREFS_ADMIN_KEY_1, 32);
|
||||||
|
config.security.admin_key[numAdminKeys].size = 32;
|
||||||
|
numAdminKeys++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if USERPREFS_ADMIN_KEY_2 is non-empty
|
||||||
|
if (sizeof(USERPREFS_ADMIN_KEY_2) > 0) {
|
||||||
|
memcpy(config.security.admin_key[config.security.admin_key_count].bytes, USERPREFS_ADMIN_KEY_2, 32);
|
||||||
|
config.security.admin_key[config.security.admin_key_count].size = 32;
|
||||||
|
numAdminKeys++;
|
||||||
|
}
|
||||||
|
config.security.admin_key_count = numAdminKeys;
|
||||||
#endif
|
#endif
|
||||||
if (shouldPreserveKey) {
|
if (shouldPreserveKey) {
|
||||||
config.security.private_key.size = 32;
|
config.security.private_key.size = 32;
|
||||||
|
@ -601,8 +601,6 @@ size_t RadioInterface::beginSending(meshtastic_MeshPacket *p)
|
|||||||
// LOG_DEBUG("Send queued packet on mesh (txGood=%d,rxGood=%d,rxBad=%d)", rf95.txGood(), rf95.rxGood(), rf95.rxBad());
|
// LOG_DEBUG("Send queued packet on mesh (txGood=%d,rxGood=%d,rxBad=%d)", rf95.txGood(), rf95.rxGood(), rf95.rxBad());
|
||||||
assert(p->which_payload_variant == meshtastic_MeshPacket_encrypted_tag); // It should have already been encoded by now
|
assert(p->which_payload_variant == meshtastic_MeshPacket_encrypted_tag); // It should have already been encoded by now
|
||||||
|
|
||||||
lastTxStart = millis();
|
|
||||||
|
|
||||||
radioBuffer.header.from = p->from;
|
radioBuffer.header.from = p->from;
|
||||||
radioBuffer.header.to = p->to;
|
radioBuffer.header.to = p->to;
|
||||||
radioBuffer.header.id = p->id;
|
radioBuffer.header.id = p->id;
|
||||||
|
@ -278,7 +278,8 @@ void RadioLibInterface::onNotify(uint32_t notification)
|
|||||||
startReceive(); // try receiving this packet, afterwards we'll be trying to transmit again
|
startReceive(); // try receiving this packet, afterwards we'll be trying to transmit again
|
||||||
setTransmitDelay();
|
setTransmitDelay();
|
||||||
} else {
|
} else {
|
||||||
// Send any outgoing packets we have ready
|
// Send any outgoing packets we have ready as fast as possible to keep the time between channel scan and
|
||||||
|
// actual transmission as short as possible
|
||||||
meshtastic_MeshPacket *txp = txQueue.dequeue();
|
meshtastic_MeshPacket *txp = txQueue.dequeue();
|
||||||
assert(txp);
|
assert(txp);
|
||||||
bool sent = startSend(txp);
|
bool sent = startSend(txp);
|
||||||
@ -470,7 +471,8 @@ void RadioLibInterface::setStandby()
|
|||||||
/** start an immediate transmit */
|
/** start an immediate transmit */
|
||||||
bool RadioLibInterface::startSend(meshtastic_MeshPacket *txp)
|
bool RadioLibInterface::startSend(meshtastic_MeshPacket *txp)
|
||||||
{
|
{
|
||||||
printPacket("Start low level send", txp);
|
/* NOTE: Minimize the actions before startTransmit() to keep the time between
|
||||||
|
channel scan and actual transmit as low as possible to avoid collisions. */
|
||||||
if (disabled || !config.lora.tx_enabled) {
|
if (disabled || !config.lora.tx_enabled) {
|
||||||
LOG_WARN("Drop Tx packet because LoRa Tx disabled");
|
LOG_WARN("Drop Tx packet because LoRa Tx disabled");
|
||||||
packetPool.release(txp);
|
packetPool.release(txp);
|
||||||
@ -489,6 +491,9 @@ bool RadioLibInterface::startSend(meshtastic_MeshPacket *txp)
|
|||||||
completeSending();
|
completeSending();
|
||||||
powerMon->clearState(meshtastic_PowerMon_State_Lora_TXOn); // Transmitter off now
|
powerMon->clearState(meshtastic_PowerMon_State_Lora_TXOn); // Transmitter off now
|
||||||
startReceive(); // Restart receive mode (because startTransmit failed to put us in xmit mode)
|
startReceive(); // Restart receive mode (because startTransmit failed to put us in xmit mode)
|
||||||
|
} else {
|
||||||
|
lastTxStart = millis();
|
||||||
|
printPacket("Started Tx", txp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must be done AFTER, starting transmit, because startTransmit clears (possibly stale) interrupt pending register
|
// Must be done AFTER, starting transmit, because startTransmit clears (possibly stale) interrupt pending register
|
||||||
|
14
userPrefs.h
14
userPrefs.h
@ -68,11 +68,19 @@ static unsigned char icon_bits[] = {
|
|||||||
0x98, 0x3F, 0xF0, 0x23, 0x00, 0xFC, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0x80, 0xFF, 0x01, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x70,
|
0x98, 0x3F, 0xF0, 0x23, 0x00, 0xFC, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0x80, 0xFF, 0x01, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x70,
|
||||||
0x00, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00};
|
0x00, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PKI Admin keys.
|
||||||
|
* If a Admin key is set with '{};'
|
||||||
|
* then it will be ignored, a PKI key must have a size of 32.
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
#define USERPREFS_USE_ADMIN_KEY 1
|
#define USERPREFS_USE_ADMIN_KEY 1
|
||||||
static unsigned char USERPREFS_ADMIN_KEY[] = {0xcd, 0xc0, 0xb4, 0x3c, 0x53, 0x24, 0xdf, 0x13, 0xca, 0x5a, 0xa6,
|
static unsigned char USERPREFS_ADMIN_KEY_0[] = {0xcd, 0xc0, 0xb4, 0x3c, 0x53, 0x24, 0xdf, 0x13, 0xca, 0x5a, 0xa6,
|
||||||
0x0c, 0x0d, 0xec, 0x85, 0x5a, 0x4c, 0xf6, 0x1a, 0x96, 0x04, 0x1a,
|
0x0c, 0x0d, 0xec, 0x85, 0x5a, 0x4c, 0xf6, 0x1a, 0x96, 0x04, 0x1a,
|
||||||
0x3e, 0xfc, 0xbb, 0x8e, 0x33, 0x71, 0xe5, 0xfc, 0xff, 0x3c};
|
0x3e, 0xfc, 0xbb, 0x8e, 0x33, 0x71, 0xe5, 0xfc, 0xff, 0x3c};
|
||||||
|
static unsigned char USERPREFS_ADMIN_KEY_1[] = {};
|
||||||
|
static unsigned char USERPREFS_ADMIN_KEY_2[] = {};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[VERSION]
|
[VERSION]
|
||||||
major = 2
|
major = 2
|
||||||
minor = 5
|
minor = 5
|
||||||
build = 13
|
build = 14
|
||||||
|
Loading…
Reference in New Issue
Block a user