mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-08 14:12:05 +00:00
Compare commits
10 Commits
03d0239d4d
...
5b38dcfc0f
Author | SHA1 | Date | |
---|---|---|---|
![]() |
5b38dcfc0f | ||
![]() |
46c7d74760 | ||
![]() |
15d2ae17f8 | ||
![]() |
91579c4650 | ||
![]() |
79b710a108 | ||
![]() |
ba296db701 | ||
![]() |
c0e1616382 | ||
![]() |
070deb290f | ||
![]() |
76f7207463 | ||
![]() |
55b2bbf937 |
@ -8,8 +8,8 @@ plugins:
|
|||||||
uri: https://github.com/trunk-io/plugins
|
uri: https://github.com/trunk-io/plugins
|
||||||
lint:
|
lint:
|
||||||
enabled:
|
enabled:
|
||||||
- checkov@3.2.435
|
- checkov@3.2.436
|
||||||
- renovate@40.36.2
|
- renovate@40.42.2
|
||||||
- prettier@3.5.3
|
- prettier@3.5.3
|
||||||
- trufflehog@3.88.35
|
- trufflehog@3.88.35
|
||||||
- yamllint@1.37.1
|
- yamllint@1.37.1
|
||||||
@ -28,7 +28,7 @@ lint:
|
|||||||
- shellcheck@0.10.0
|
- shellcheck@0.10.0
|
||||||
- black@25.1.0
|
- black@25.1.0
|
||||||
- git-diff-check
|
- git-diff-check
|
||||||
- gitleaks@8.26.0
|
- gitleaks@8.27.0
|
||||||
- clang-format@16.0.3
|
- clang-format@16.0.3
|
||||||
ignore:
|
ignore:
|
||||||
- linters: [ALL]
|
- linters: [ALL]
|
||||||
|
@ -1 +1 @@
|
|||||||
2.5.3
|
2.6.4
|
@ -1 +1 @@
|
|||||||
Subproject commit 24c7a3d287a4bd269ce191827e5dabd8ce8f57a7
|
Subproject commit db60f07ac298b6161ca553b3868b542cceadcac4
|
@ -5,7 +5,7 @@ E-Ink display driver
|
|||||||
- Manufacturer: DKE
|
- Manufacturer: DKE
|
||||||
- Size: 2.13 inch
|
- Size: 2.13 inch
|
||||||
- Resolution: 122px x 250px
|
- Resolution: 122px x 250px
|
||||||
- Flex connector marking: FPC-7528B
|
- Flex connector marking (not a unique identifier): FPC-7528B
|
||||||
|
|
||||||
Note: this is from an older generation of DKE panels, which still used Solomon Systech controller ICs.
|
Note: this is from an older generation of DKE panels, which still used Solomon Systech controller ICs.
|
||||||
DKE's website suggests that the latest DEPG0213BN displays may use Fitipower controllers instead.
|
DKE's website suggests that the latest DEPG0213BN displays may use Fitipower controllers instead.
|
||||||
|
@ -5,7 +5,7 @@ E-Ink display driver
|
|||||||
- Manufacturer: DKE
|
- Manufacturer: DKE
|
||||||
- Size: 2.9 inch
|
- Size: 2.9 inch
|
||||||
- Resolution: 128px x 296px
|
- Resolution: 128px x 296px
|
||||||
- Flex connector marking: FPC-7519 rev.b
|
- Flex connector marking (not a unique identifier): FPC-7519 rev.b
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ E-Ink display driver
|
|||||||
- Manufacturer: Goodisplay
|
- Manufacturer: Goodisplay
|
||||||
- Size: 1.54 inch
|
- Size: 1.54 inch
|
||||||
- Resolution: 200px x 200px
|
- Resolution: 200px x 200px
|
||||||
- Flex connector marking: FPC-B001
|
- Flex connector marking (not a unique identifier): FPC-B001
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -5,7 +5,9 @@ E-Ink display driver
|
|||||||
- Manufacturer: Goodisplay
|
- Manufacturer: Goodisplay
|
||||||
- Size: 2.13 inch
|
- Size: 2.13 inch
|
||||||
- Resolution: 250px x 122px
|
- Resolution: 250px x 122px
|
||||||
- Flex connector marking: FPC-A002
|
- Flex connector marking (not a unique identifier):
|
||||||
|
- FPC-A002
|
||||||
|
- FPC-A005 20.06.15 TRX
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ E-Ink display driver
|
|||||||
- Manufacturer: Holitech
|
- Manufacturer: Holitech
|
||||||
- Size: 4.2 inch
|
- Size: 4.2 inch
|
||||||
- Resolution: 400px x 300px
|
- Resolution: 400px x 300px
|
||||||
- Flex connector marking: HINK-E042A07-FPC-A1
|
- Flex connector marking (not a unique identifier): HINK-E042A07-FPC-A1
|
||||||
- Silver sticker with QR code, marked: HE042A87
|
- Silver sticker with QR code, marked: HE042A87
|
||||||
|
|
||||||
Note: as of Feb. 2025, these panels are used for "WeActStudio 4.2in B&W" display modules
|
Note: as of Feb. 2025, these panels are used for "WeActStudio 4.2in B&W" display modules
|
||||||
|
@ -5,7 +5,6 @@ E-Ink display driver
|
|||||||
- Manufacturer: WISEVAST
|
- Manufacturer: WISEVAST
|
||||||
- Size: 2.13 inch
|
- Size: 2.13 inch
|
||||||
- Resolution: 122px x 255px
|
- Resolution: 122px x 255px
|
||||||
- Flex connector marking: Soldering connector, no connector is needed
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ E-Ink display driver
|
|||||||
- Manufacturer: Wisevast
|
- Manufacturer: Wisevast
|
||||||
- Size: 2.13 inch
|
- Size: 2.13 inch
|
||||||
- Resolution: 122px x 250px
|
- Resolution: 122px x 250px
|
||||||
- Flex connector marking: HINK-E0213A162-FPC-A0 (Hidden, printed on back-side)
|
- Flex connector marking (not a unique identifier): HINK-E0213A162-FPC-A0 (Hidden, printed on back-side)
|
||||||
|
|
||||||
Note: this display uses an uncommon controller IC, Fitipower JD79656.
|
Note: this display uses an uncommon controller IC, Fitipower JD79656.
|
||||||
It is implemented as a "one-off", directly inheriting the EInk base class, unlike SSD16XX displays.
|
It is implemented as a "one-off", directly inheriting the EInk base class, unlike SSD16XX displays.
|
||||||
|
59
src/graphics/niche/Drivers/EInk/ZJY128296_029EAAMFGN.cpp
Normal file
59
src/graphics/niche/Drivers/EInk/ZJY128296_029EAAMFGN.cpp
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#include "./ZJY128296_029EAAMFGN.h"
|
||||||
|
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
|
||||||
|
using namespace NicheGraphics::Drivers;
|
||||||
|
|
||||||
|
// Map the display controller IC's output to the connected panel
|
||||||
|
void ZJY128296_029EAAMFGN::configScanning()
|
||||||
|
{
|
||||||
|
// "Driver output control"
|
||||||
|
// Scan gates from 0 to 295 (vertical resolution 296px)
|
||||||
|
sendCommand(0x01);
|
||||||
|
sendData(0x27); // Number of gates (295, bits 0-7)
|
||||||
|
sendData(0x01); // Number of gates (295, bit 8)
|
||||||
|
sendData(0x00); // (Do not invert scanning order)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Specify which information is used to control the sequence of voltages applied to move the pixels
|
||||||
|
// - For this display, configUpdateSequence() specifies that a suitable LUT will be loaded from
|
||||||
|
// the controller IC's OTP memory, when the update procedure begins.
|
||||||
|
void ZJY128296_029EAAMFGN::configWaveform()
|
||||||
|
{
|
||||||
|
sendCommand(0x3C); // Border waveform:
|
||||||
|
sendData(0x05); // Screen border should follow LUT1 waveform (actively drive pixels white)
|
||||||
|
|
||||||
|
sendCommand(0x18); // Temperature sensor:
|
||||||
|
sendData(0x80); // Use internal temperature sensor to select an appropriate refresh waveform
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZJY128296_029EAAMFGN::configUpdateSequence()
|
||||||
|
{
|
||||||
|
switch (updateType) {
|
||||||
|
case FAST:
|
||||||
|
sendCommand(0x22); // Set "update sequence"
|
||||||
|
sendData(0xFF); // Will load LUT from OTP memory, Display mode 2 "differential refresh"
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FULL:
|
||||||
|
default:
|
||||||
|
sendCommand(0x22); // Set "update sequence"
|
||||||
|
sendData(0xF7); // Will load LUT from OTP memory
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Once the refresh operation has been started,
|
||||||
|
// begin periodically polling the display to check for completion, using the normal Meshtastic threading code
|
||||||
|
// Only used when refresh is "async"
|
||||||
|
void ZJY128296_029EAAMFGN::detachFromUpdate()
|
||||||
|
{
|
||||||
|
switch (updateType) {
|
||||||
|
case FAST:
|
||||||
|
return beginPolling(50, 300); // At least 300ms for fast refresh
|
||||||
|
case FULL:
|
||||||
|
default:
|
||||||
|
return beginPolling(100, 2000); // At least 2 seconds for full refresh
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
44
src/graphics/niche/Drivers/EInk/ZJY128296_029EAAMFGN.h
Normal file
44
src/graphics/niche/Drivers/EInk/ZJY128296_029EAAMFGN.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
E-Ink display driver
|
||||||
|
- ZJY128296-029EAAMFGN
|
||||||
|
- Manufacturer: Zhongjingyuan
|
||||||
|
- Size: 2.9 inch
|
||||||
|
- Resolution: 128px x 296px
|
||||||
|
- Flex connector label (not a unique identifier): FPC-A005 20.06.15 TRX
|
||||||
|
|
||||||
|
Note: as of Feb. 2025, these panels are used for "WeActStudio 2.9in B&W" display modules
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
|
||||||
|
#include "configuration.h"
|
||||||
|
|
||||||
|
#include "./SSD16XX.h"
|
||||||
|
|
||||||
|
namespace NicheGraphics::Drivers
|
||||||
|
{
|
||||||
|
class ZJY128296_029EAAMFGN : public SSD16XX
|
||||||
|
{
|
||||||
|
// Display properties
|
||||||
|
private:
|
||||||
|
static constexpr uint32_t width = 128;
|
||||||
|
static constexpr uint32_t height = 296;
|
||||||
|
static constexpr UpdateTypes supported = (UpdateTypes)(FULL | FAST);
|
||||||
|
|
||||||
|
public:
|
||||||
|
ZJY128296_029EAAMFGN() : SSD16XX(width, height, supported) {}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void configScanning() override;
|
||||||
|
void configWaveform() override;
|
||||||
|
void configUpdateSequence() override;
|
||||||
|
void detachFromUpdate() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace NicheGraphics::Drivers
|
||||||
|
|
||||||
|
#endif // MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
17
src/main.cpp
17
src/main.cpp
@ -337,12 +337,12 @@ void setup()
|
|||||||
|
|
||||||
#ifdef LED_POWER
|
#ifdef LED_POWER
|
||||||
pinMode(LED_POWER, OUTPUT);
|
pinMode(LED_POWER, OUTPUT);
|
||||||
digitalWrite(LED_POWER, HIGH);
|
digitalWrite(LED_POWER, LED_STATE_ON);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USER_LED
|
#ifdef USER_LED
|
||||||
pinMode(USER_LED, OUTPUT);
|
pinMode(USER_LED, OUTPUT);
|
||||||
digitalWrite(USER_LED, LOW);
|
digitalWrite(USER_LED, HIGH ^ LED_STATE_ON);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(T_DECK)
|
#if defined(T_DECK)
|
||||||
@ -482,19 +482,6 @@ void setup()
|
|||||||
|
|
||||||
fsInit();
|
fsInit();
|
||||||
|
|
||||||
#if defined(_SEEED_XIAO_NRF52840_SENSE_H_)
|
|
||||||
|
|
||||||
pinMode(CHARGE_LED, INPUT); // sets to detect if charge LED is on or off to see if USB is plugged in
|
|
||||||
|
|
||||||
pinMode(HICHG, OUTPUT);
|
|
||||||
digitalWrite(HICHG, LOW); // 100 mA charging current if set to LOW and 50mA (actually about 20mA) if set to HIGH
|
|
||||||
|
|
||||||
pinMode(BAT_READ, OUTPUT);
|
|
||||||
digitalWrite(BAT_READ, LOW); // This is pin P0_14 = 14 and by pullling low to GND it provices path to read on pin 32 (P0,31)
|
|
||||||
// PIN_VBAT the voltage from divider on XIAO board
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !MESHTASTIC_EXCLUDE_I2C
|
#if !MESHTASTIC_EXCLUDE_I2C
|
||||||
#if defined(I2C_SDA1) && defined(ARCH_RP2040)
|
#if defined(I2C_SDA1) && defined(ARCH_RP2040)
|
||||||
Wire1.setSDA(I2C_SDA1);
|
Wire1.setSDA(I2C_SDA1);
|
||||||
|
@ -3,12 +3,17 @@
|
|||||||
#include "architecture.h"
|
#include "architecture.h"
|
||||||
|
|
||||||
#if !(MESHTASTIC_EXCLUDE_PKI)
|
#if !(MESHTASTIC_EXCLUDE_PKI)
|
||||||
|
#include "NodeDB.h"
|
||||||
#include "aes-ccm.h"
|
#include "aes-ccm.h"
|
||||||
#include "meshUtils.h"
|
#include "meshUtils.h"
|
||||||
#include <Crypto.h>
|
#include <Crypto.h>
|
||||||
#include <Curve25519.h>
|
#include <Curve25519.h>
|
||||||
|
#include <RNG.h>
|
||||||
#include <SHA256.h>
|
#include <SHA256.h>
|
||||||
#if !(MESHTASTIC_EXCLUDE_PKI_KEYGEN)
|
#if !(MESHTASTIC_EXCLUDE_PKI_KEYGEN)
|
||||||
|
#if !defined(ARCH_STM32WL)
|
||||||
|
#define CryptRNG RNG
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a public/private key pair with Curve25519.
|
* Create a public/private key pair with Curve25519.
|
||||||
@ -18,6 +23,14 @@
|
|||||||
*/
|
*/
|
||||||
void CryptoEngine::generateKeyPair(uint8_t *pubKey, uint8_t *privKey)
|
void CryptoEngine::generateKeyPair(uint8_t *pubKey, uint8_t *privKey)
|
||||||
{
|
{
|
||||||
|
// Mix in any randomness we can, to make key generation stronger.
|
||||||
|
CryptRNG.begin(optstr(APP_VERSION));
|
||||||
|
if (myNodeInfo.device_id.size == 16) {
|
||||||
|
CryptRNG.stir(myNodeInfo.device_id.bytes, myNodeInfo.device_id.size);
|
||||||
|
}
|
||||||
|
auto noise = random();
|
||||||
|
CryptRNG.stir((uint8_t *)&noise, sizeof(noise));
|
||||||
|
|
||||||
LOG_DEBUG("Generate Curve25519 keypair");
|
LOG_DEBUG("Generate Curve25519 keypair");
|
||||||
Curve25519::dh1(public_key, private_key);
|
Curve25519::dh1(public_key, private_key);
|
||||||
memcpy(pubKey, public_key, sizeof(public_key));
|
memcpy(pubKey, public_key, sizeof(public_key));
|
||||||
|
@ -261,7 +261,7 @@ NodeDB::NodeDB()
|
|||||||
|
|
||||||
#if !(MESHTASTIC_EXCLUDE_PKI_KEYGEN || MESHTASTIC_EXCLUDE_PKI)
|
#if !(MESHTASTIC_EXCLUDE_PKI_KEYGEN || MESHTASTIC_EXCLUDE_PKI)
|
||||||
|
|
||||||
if (!owner.is_licensed) {
|
if (!owner.is_licensed && config.lora.region != meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
||||||
bool keygenSuccess = false;
|
bool keygenSuccess = false;
|
||||||
if (config.security.private_key.size == 32) {
|
if (config.security.private_key.size == 32) {
|
||||||
if (crypto->regeneratePublicKey(config.security.public_key.bytes, config.security.private_key.bytes)) {
|
if (crypto->regeneratePublicKey(config.security.public_key.bytes, config.security.private_key.bytes)) {
|
||||||
|
@ -65,6 +65,8 @@ PB_BIND(meshtastic_Config_SessionkeyConfig, meshtastic_Config_SessionkeyConfig,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,6 +88,23 @@ typedef enum _meshtastic_Config_DeviceConfig_RebroadcastMode {
|
|||||||
meshtastic_Config_DeviceConfig_RebroadcastMode_CORE_PORTNUMS_ONLY = 5
|
meshtastic_Config_DeviceConfig_RebroadcastMode_CORE_PORTNUMS_ONLY = 5
|
||||||
} meshtastic_Config_DeviceConfig_RebroadcastMode;
|
} meshtastic_Config_DeviceConfig_RebroadcastMode;
|
||||||
|
|
||||||
|
/* Defines buzzer behavior for audio feedback */
|
||||||
|
typedef enum _meshtastic_Config_DeviceConfig_BuzzerMode {
|
||||||
|
/* Default behavior.
|
||||||
|
Buzzer is enabled for all audio feedback including button presses and alerts. */
|
||||||
|
meshtastic_Config_DeviceConfig_BuzzerMode_ALL_ENABLED = 0,
|
||||||
|
/* Disabled.
|
||||||
|
All buzzer audio feedback is disabled. */
|
||||||
|
meshtastic_Config_DeviceConfig_BuzzerMode_DISABLED = 1,
|
||||||
|
/* Notifications Only.
|
||||||
|
Buzzer is enabled only for notifications and alerts, but not for button presses.
|
||||||
|
External notification config determines the specifics of the notification behavior. */
|
||||||
|
meshtastic_Config_DeviceConfig_BuzzerMode_NOTIFICATIONS_ONLY = 2,
|
||||||
|
/* Non-notification system buzzer tones only.
|
||||||
|
Buzzer is enabled only for non-notification tones such as button presses, startup, shutdown, but not for alerts. */
|
||||||
|
meshtastic_Config_DeviceConfig_BuzzerMode_SYSTEM_ONLY = 3
|
||||||
|
} meshtastic_Config_DeviceConfig_BuzzerMode;
|
||||||
|
|
||||||
/* Bit field of boolean configuration options, indicating which optional
|
/* Bit field of boolean configuration options, indicating which optional
|
||||||
fields to include when assembling POSITION messages.
|
fields to include when assembling POSITION messages.
|
||||||
Longitude, latitude, altitude, speed, heading, and DOP
|
Longitude, latitude, altitude, speed, heading, and DOP
|
||||||
@ -335,6 +352,9 @@ typedef struct _meshtastic_Config_DeviceConfig {
|
|||||||
char tzdef[65];
|
char tzdef[65];
|
||||||
/* If true, disable the default blinking LED (LED_PIN) behavior on the device */
|
/* If true, disable the default blinking LED (LED_PIN) behavior on the device */
|
||||||
bool led_heartbeat_disabled;
|
bool led_heartbeat_disabled;
|
||||||
|
/* Controls buzzer behavior for audio feedback
|
||||||
|
Defaults to ENABLED */
|
||||||
|
meshtastic_Config_DeviceConfig_BuzzerMode buzzer_mode;
|
||||||
} meshtastic_Config_DeviceConfig;
|
} meshtastic_Config_DeviceConfig;
|
||||||
|
|
||||||
/* Position Config */
|
/* Position Config */
|
||||||
@ -618,6 +638,10 @@ extern "C" {
|
|||||||
#define _meshtastic_Config_DeviceConfig_RebroadcastMode_MAX meshtastic_Config_DeviceConfig_RebroadcastMode_CORE_PORTNUMS_ONLY
|
#define _meshtastic_Config_DeviceConfig_RebroadcastMode_MAX meshtastic_Config_DeviceConfig_RebroadcastMode_CORE_PORTNUMS_ONLY
|
||||||
#define _meshtastic_Config_DeviceConfig_RebroadcastMode_ARRAYSIZE ((meshtastic_Config_DeviceConfig_RebroadcastMode)(meshtastic_Config_DeviceConfig_RebroadcastMode_CORE_PORTNUMS_ONLY+1))
|
#define _meshtastic_Config_DeviceConfig_RebroadcastMode_ARRAYSIZE ((meshtastic_Config_DeviceConfig_RebroadcastMode)(meshtastic_Config_DeviceConfig_RebroadcastMode_CORE_PORTNUMS_ONLY+1))
|
||||||
|
|
||||||
|
#define _meshtastic_Config_DeviceConfig_BuzzerMode_MIN meshtastic_Config_DeviceConfig_BuzzerMode_ALL_ENABLED
|
||||||
|
#define _meshtastic_Config_DeviceConfig_BuzzerMode_MAX meshtastic_Config_DeviceConfig_BuzzerMode_SYSTEM_ONLY
|
||||||
|
#define _meshtastic_Config_DeviceConfig_BuzzerMode_ARRAYSIZE ((meshtastic_Config_DeviceConfig_BuzzerMode)(meshtastic_Config_DeviceConfig_BuzzerMode_SYSTEM_ONLY+1))
|
||||||
|
|
||||||
#define _meshtastic_Config_PositionConfig_PositionFlags_MIN meshtastic_Config_PositionConfig_PositionFlags_UNSET
|
#define _meshtastic_Config_PositionConfig_PositionFlags_MIN meshtastic_Config_PositionConfig_PositionFlags_UNSET
|
||||||
#define _meshtastic_Config_PositionConfig_PositionFlags_MAX meshtastic_Config_PositionConfig_PositionFlags_SPEED
|
#define _meshtastic_Config_PositionConfig_PositionFlags_MAX meshtastic_Config_PositionConfig_PositionFlags_SPEED
|
||||||
#define _meshtastic_Config_PositionConfig_PositionFlags_ARRAYSIZE ((meshtastic_Config_PositionConfig_PositionFlags)(meshtastic_Config_PositionConfig_PositionFlags_SPEED+1))
|
#define _meshtastic_Config_PositionConfig_PositionFlags_ARRAYSIZE ((meshtastic_Config_PositionConfig_PositionFlags)(meshtastic_Config_PositionConfig_PositionFlags_SPEED+1))
|
||||||
@ -669,6 +693,7 @@ extern "C" {
|
|||||||
|
|
||||||
#define meshtastic_Config_DeviceConfig_role_ENUMTYPE meshtastic_Config_DeviceConfig_Role
|
#define meshtastic_Config_DeviceConfig_role_ENUMTYPE meshtastic_Config_DeviceConfig_Role
|
||||||
#define meshtastic_Config_DeviceConfig_rebroadcast_mode_ENUMTYPE meshtastic_Config_DeviceConfig_RebroadcastMode
|
#define meshtastic_Config_DeviceConfig_rebroadcast_mode_ENUMTYPE meshtastic_Config_DeviceConfig_RebroadcastMode
|
||||||
|
#define meshtastic_Config_DeviceConfig_buzzer_mode_ENUMTYPE meshtastic_Config_DeviceConfig_BuzzerMode
|
||||||
|
|
||||||
#define meshtastic_Config_PositionConfig_gps_mode_ENUMTYPE meshtastic_Config_PositionConfig_GpsMode
|
#define meshtastic_Config_PositionConfig_gps_mode_ENUMTYPE meshtastic_Config_PositionConfig_GpsMode
|
||||||
|
|
||||||
@ -692,7 +717,7 @@ extern "C" {
|
|||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define meshtastic_Config_init_default {0, {meshtastic_Config_DeviceConfig_init_default}}
|
#define meshtastic_Config_init_default {0, {meshtastic_Config_DeviceConfig_init_default}}
|
||||||
#define meshtastic_Config_DeviceConfig_init_default {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, _meshtastic_Config_DeviceConfig_RebroadcastMode_MIN, 0, 0, 0, 0, "", 0}
|
#define meshtastic_Config_DeviceConfig_init_default {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, _meshtastic_Config_DeviceConfig_RebroadcastMode_MIN, 0, 0, 0, 0, "", 0, _meshtastic_Config_DeviceConfig_BuzzerMode_MIN}
|
||||||
#define meshtastic_Config_PositionConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _meshtastic_Config_PositionConfig_GpsMode_MIN}
|
#define meshtastic_Config_PositionConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _meshtastic_Config_PositionConfig_GpsMode_MIN}
|
||||||
#define meshtastic_Config_PowerConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_Config_PowerConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define meshtastic_Config_NetworkConfig_init_default {0, "", "", "", 0, _meshtastic_Config_NetworkConfig_AddressMode_MIN, false, meshtastic_Config_NetworkConfig_IpV4Config_init_default, "", 0, 0}
|
#define meshtastic_Config_NetworkConfig_init_default {0, "", "", "", 0, _meshtastic_Config_NetworkConfig_AddressMode_MIN, false, meshtastic_Config_NetworkConfig_IpV4Config_init_default, "", 0, 0}
|
||||||
@ -703,7 +728,7 @@ extern "C" {
|
|||||||
#define meshtastic_Config_SecurityConfig_init_default {{0, {0}}, {0, {0}}, 0, {{0, {0}}, {0, {0}}, {0, {0}}}, 0, 0, 0, 0}
|
#define meshtastic_Config_SecurityConfig_init_default {{0, {0}}, {0, {0}}, 0, {{0, {0}}, {0, {0}}, {0, {0}}}, 0, 0, 0, 0}
|
||||||
#define meshtastic_Config_SessionkeyConfig_init_default {0}
|
#define meshtastic_Config_SessionkeyConfig_init_default {0}
|
||||||
#define meshtastic_Config_init_zero {0, {meshtastic_Config_DeviceConfig_init_zero}}
|
#define meshtastic_Config_init_zero {0, {meshtastic_Config_DeviceConfig_init_zero}}
|
||||||
#define meshtastic_Config_DeviceConfig_init_zero {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, _meshtastic_Config_DeviceConfig_RebroadcastMode_MIN, 0, 0, 0, 0, "", 0}
|
#define meshtastic_Config_DeviceConfig_init_zero {_meshtastic_Config_DeviceConfig_Role_MIN, 0, 0, 0, _meshtastic_Config_DeviceConfig_RebroadcastMode_MIN, 0, 0, 0, 0, "", 0, _meshtastic_Config_DeviceConfig_BuzzerMode_MIN}
|
||||||
#define meshtastic_Config_PositionConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _meshtastic_Config_PositionConfig_GpsMode_MIN}
|
#define meshtastic_Config_PositionConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _meshtastic_Config_PositionConfig_GpsMode_MIN}
|
||||||
#define meshtastic_Config_PowerConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
#define meshtastic_Config_PowerConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define meshtastic_Config_NetworkConfig_init_zero {0, "", "", "", 0, _meshtastic_Config_NetworkConfig_AddressMode_MIN, false, meshtastic_Config_NetworkConfig_IpV4Config_init_zero, "", 0, 0}
|
#define meshtastic_Config_NetworkConfig_init_zero {0, "", "", "", 0, _meshtastic_Config_NetworkConfig_AddressMode_MIN, false, meshtastic_Config_NetworkConfig_IpV4Config_init_zero, "", 0, 0}
|
||||||
@ -726,6 +751,7 @@ extern "C" {
|
|||||||
#define meshtastic_Config_DeviceConfig_disable_triple_click_tag 10
|
#define meshtastic_Config_DeviceConfig_disable_triple_click_tag 10
|
||||||
#define meshtastic_Config_DeviceConfig_tzdef_tag 11
|
#define meshtastic_Config_DeviceConfig_tzdef_tag 11
|
||||||
#define meshtastic_Config_DeviceConfig_led_heartbeat_disabled_tag 12
|
#define meshtastic_Config_DeviceConfig_led_heartbeat_disabled_tag 12
|
||||||
|
#define meshtastic_Config_DeviceConfig_buzzer_mode_tag 13
|
||||||
#define meshtastic_Config_PositionConfig_position_broadcast_secs_tag 1
|
#define meshtastic_Config_PositionConfig_position_broadcast_secs_tag 1
|
||||||
#define meshtastic_Config_PositionConfig_position_broadcast_smart_enabled_tag 2
|
#define meshtastic_Config_PositionConfig_position_broadcast_smart_enabled_tag 2
|
||||||
#define meshtastic_Config_PositionConfig_fixed_position_tag 3
|
#define meshtastic_Config_PositionConfig_fixed_position_tag 3
|
||||||
@ -849,7 +875,8 @@ X(a, STATIC, SINGULAR, BOOL, double_tap_as_button_press, 8) \
|
|||||||
X(a, STATIC, SINGULAR, BOOL, is_managed, 9) \
|
X(a, STATIC, SINGULAR, BOOL, is_managed, 9) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, disable_triple_click, 10) \
|
X(a, STATIC, SINGULAR, BOOL, disable_triple_click, 10) \
|
||||||
X(a, STATIC, SINGULAR, STRING, tzdef, 11) \
|
X(a, STATIC, SINGULAR, STRING, tzdef, 11) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, led_heartbeat_disabled, 12)
|
X(a, STATIC, SINGULAR, BOOL, led_heartbeat_disabled, 12) \
|
||||||
|
X(a, STATIC, SINGULAR, UENUM, buzzer_mode, 13)
|
||||||
#define meshtastic_Config_DeviceConfig_CALLBACK NULL
|
#define meshtastic_Config_DeviceConfig_CALLBACK NULL
|
||||||
#define meshtastic_Config_DeviceConfig_DEFAULT NULL
|
#define meshtastic_Config_DeviceConfig_DEFAULT NULL
|
||||||
|
|
||||||
@ -995,7 +1022,7 @@ extern const pb_msgdesc_t meshtastic_Config_SessionkeyConfig_msg;
|
|||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define MESHTASTIC_MESHTASTIC_CONFIG_PB_H_MAX_SIZE meshtastic_Config_size
|
#define MESHTASTIC_MESHTASTIC_CONFIG_PB_H_MAX_SIZE meshtastic_Config_size
|
||||||
#define meshtastic_Config_BluetoothConfig_size 10
|
#define meshtastic_Config_BluetoothConfig_size 10
|
||||||
#define meshtastic_Config_DeviceConfig_size 98
|
#define meshtastic_Config_DeviceConfig_size 100
|
||||||
#define meshtastic_Config_DisplayConfig_size 32
|
#define meshtastic_Config_DisplayConfig_size 32
|
||||||
#define meshtastic_Config_LoRaConfig_size 85
|
#define meshtastic_Config_LoRaConfig_size 85
|
||||||
#define meshtastic_Config_NetworkConfig_IpV4Config_size 20
|
#define meshtastic_Config_NetworkConfig_IpV4Config_size 20
|
||||||
|
@ -55,6 +55,8 @@ typedef enum _meshtastic_Language {
|
|||||||
meshtastic_Language_SLOVENIAN = 15,
|
meshtastic_Language_SLOVENIAN = 15,
|
||||||
/* Ukrainian */
|
/* Ukrainian */
|
||||||
meshtastic_Language_UKRAINIAN = 16,
|
meshtastic_Language_UKRAINIAN = 16,
|
||||||
|
/* Bulgarian */
|
||||||
|
meshtastic_Language_BULGARIAN = 17,
|
||||||
/* Simplified Chinese (experimental) */
|
/* Simplified Chinese (experimental) */
|
||||||
meshtastic_Language_SIMPLIFIED_CHINESE = 30,
|
meshtastic_Language_SIMPLIFIED_CHINESE = 30,
|
||||||
/* Traditional Chinese (experimental) */
|
/* Traditional Chinese (experimental) */
|
||||||
|
@ -360,7 +360,7 @@ extern const pb_msgdesc_t meshtastic_BackupPreferences_msg;
|
|||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
/* meshtastic_NodeDatabase_size depends on runtime parameters */
|
/* meshtastic_NodeDatabase_size depends on runtime parameters */
|
||||||
#define MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_MAX_SIZE meshtastic_BackupPreferences_size
|
#define MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_MAX_SIZE meshtastic_BackupPreferences_size
|
||||||
#define meshtastic_BackupPreferences_size 2269
|
#define meshtastic_BackupPreferences_size 2271
|
||||||
#define meshtastic_ChannelFile_size 718
|
#define meshtastic_ChannelFile_size 718
|
||||||
#define meshtastic_DeviceState_size 1722
|
#define meshtastic_DeviceState_size 1722
|
||||||
#define meshtastic_NodeInfoLite_size 196
|
#define meshtastic_NodeInfoLite_size 196
|
||||||
|
@ -187,7 +187,7 @@ extern const pb_msgdesc_t meshtastic_LocalModuleConfig_msg;
|
|||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define MESHTASTIC_MESHTASTIC_LOCALONLY_PB_H_MAX_SIZE meshtastic_LocalConfig_size
|
#define MESHTASTIC_MESHTASTIC_LOCALONLY_PB_H_MAX_SIZE meshtastic_LocalConfig_size
|
||||||
#define meshtastic_LocalConfig_size 745
|
#define meshtastic_LocalConfig_size 747
|
||||||
#define meshtastic_LocalModuleConfig_size 669
|
#define meshtastic_LocalModuleConfig_size 669
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -258,6 +258,12 @@ typedef enum _meshtastic_HardwareModel {
|
|||||||
meshtastic_HardwareModel_SEEED_WIO_TRACKER_L1_EINK = 100,
|
meshtastic_HardwareModel_SEEED_WIO_TRACKER_L1_EINK = 100,
|
||||||
/* Reserved ID for future and past use */
|
/* Reserved ID for future and past use */
|
||||||
meshtastic_HardwareModel_QWANTZ_TINY_ARMS = 101,
|
meshtastic_HardwareModel_QWANTZ_TINY_ARMS = 101,
|
||||||
|
/* *
|
||||||
|
Lilygo T-Deck Pro */
|
||||||
|
meshtastic_HardwareModel_T_DECK_PRO = 102,
|
||||||
|
/* *
|
||||||
|
Lilygo TLora Pager */
|
||||||
|
meshtastic_HardwareModel_T_LORA_PAGER = 103,
|
||||||
/* ------------------------------------------------------------------------------------------------------------------------------------------
|
/* ------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
|
Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
|
||||||
------------------------------------------------------------------------------------------------------------------------------------------ */
|
------------------------------------------------------------------------------------------------------------------------------------------ */
|
||||||
|
@ -661,6 +661,24 @@ void AdminModule::handleSetConfig(const meshtastic_Config &c)
|
|||||||
config.lora = c.payload_variant.lora;
|
config.lora = c.payload_variant.lora;
|
||||||
// If we're setting region for the first time, init the region
|
// If we're setting region for the first time, init the region
|
||||||
if (isRegionUnset && config.lora.region > meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
if (isRegionUnset && config.lora.region > meshtastic_Config_LoRaConfig_RegionCode_UNSET) {
|
||||||
|
if (!owner.is_licensed) {
|
||||||
|
bool keygenSuccess = false;
|
||||||
|
if (config.security.private_key.size == 32) {
|
||||||
|
if (crypto->regeneratePublicKey(config.security.public_key.bytes, config.security.private_key.bytes)) {
|
||||||
|
keygenSuccess = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
LOG_INFO("Generate new PKI keys");
|
||||||
|
crypto->generateKeyPair(config.security.public_key.bytes, config.security.private_key.bytes);
|
||||||
|
keygenSuccess = true;
|
||||||
|
}
|
||||||
|
if (keygenSuccess) {
|
||||||
|
config.security.public_key.size = 32;
|
||||||
|
config.security.private_key.size = 32;
|
||||||
|
owner.public_key.size = 32;
|
||||||
|
memcpy(owner.public_key.bytes, config.security.public_key.bytes, 32);
|
||||||
|
}
|
||||||
|
}
|
||||||
config.lora.tx_enabled = true;
|
config.lora.tx_enabled = true;
|
||||||
initRegion();
|
initRegion();
|
||||||
if (myRegion->dutyCycle < 100) {
|
if (myRegion->dutyCycle < 100) {
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#define GPS_POWER_TOGGLE // Moved definition from platformio.ini to here
|
#define GPS_POWER_TOGGLE // Moved definition from platformio.ini to here
|
||||||
|
|
||||||
#define BUTTON_PIN 39 // The middle button GPIO on the T-Beam
|
#define BUTTON_PIN 39 // The middle button GPIO on the T-Beam
|
||||||
|
// Note: On the ESP32 base version, gpio34-39 are input-only, and do not have internal pull-ups.
|
||||||
|
// If 39 is not being used for a button, it is suggested to remove the #define.
|
||||||
#define BATTERY_PIN 35 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
|
#define BATTERY_PIN 35 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
|
||||||
#define ADC_CHANNEL ADC1_GPIO35_CHANNEL
|
#define ADC_CHANNEL ADC1_GPIO35_CHANNEL
|
||||||
#define ADC_MULTIPLIER 1.85 // (R1 = 470k, R2 = 680k)
|
#define ADC_MULTIPLIER 1.85 // (R1 = 470k, R2 = 680k)
|
||||||
|
@ -53,3 +53,10 @@ const uint32_t g_ADigitalPinMap[] = {
|
|||||||
// VBAT
|
// VBAT
|
||||||
31, // D32 is P0.10 (VBAT)
|
31, // D32 is P0.10 (VBAT)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void initVariant()
|
||||||
|
{
|
||||||
|
// Set BQ25101 ISET to 100mA instead of 50mA
|
||||||
|
pinMode(HICHG, OUTPUT);
|
||||||
|
digitalWrite(HICHG, LOW);
|
||||||
|
}
|
||||||
|
@ -164,7 +164,8 @@ static const uint8_t SCK = PIN_SPI_SCK;
|
|||||||
// -------
|
// -------
|
||||||
// P0_14 = 14 Reads battery voltage from divider on signal board.
|
// P0_14 = 14 Reads battery voltage from divider on signal board.
|
||||||
// PIN_VBAT is reading voltage divider on XIAO and is program pin 32 / or P0.31
|
// PIN_VBAT is reading voltage divider on XIAO and is program pin 32 / or P0.31
|
||||||
#define BAT_READ 14
|
#define ADC_CTRL VBAT_ENABLE
|
||||||
|
#define ADC_CTRL_ENABLED LOW
|
||||||
#define BATTERY_SENSE_RESOLUTION_BITS 10
|
#define BATTERY_SENSE_RESOLUTION_BITS 10
|
||||||
#define CHARGE_LED 23 // P0_17 = 17 D23 YELLOW CHARGE LED
|
#define CHARGE_LED 23 // P0_17 = 17 D23 YELLOW CHARGE LED
|
||||||
#define HICHG 22 // P0_13 = 13 D22 Charge-select pin for Lipo for 100 mA instead of default 50mA charge
|
#define HICHG 22 // P0_13 = 13 D22 Charge-select pin for Lipo for 100 mA instead of default 50mA charge
|
||||||
|
@ -34,9 +34,9 @@ const uint32_t g_ADigitalPinMap[] = {
|
|||||||
11, // D18 is P0.11 (6D_INT1)
|
11, // D18 is P0.11 (6D_INT1)
|
||||||
|
|
||||||
// MIC
|
// MIC
|
||||||
42, // 17,//42, // D19 is P1.10 (MIC_PWR)
|
42, // D19 is P1.10 (MIC_PWR)
|
||||||
32, // 26,//32, // D20 is P1.00 (PDM_CLK)
|
32, // D20 is P1.00 (PDM_CLK)
|
||||||
16, // 25,//16, // D21 is P0.16 (PDM_DATA)
|
16, // D21 is P0.16 (PDM_DATA)
|
||||||
|
|
||||||
// BQ25100
|
// BQ25100
|
||||||
13, // D22 is P0.13 (HICHG)
|
13, // D22 is P0.13 (HICHG)
|
||||||
@ -80,13 +80,17 @@ const uint32_t g_ADigitalPinMap[] = {
|
|||||||
|
|
||||||
void initVariant()
|
void initVariant()
|
||||||
{
|
{
|
||||||
// LED1 & LED2
|
// Set BQ25101 ISET to 100mA instead of 50mA
|
||||||
pinMode(21, OUTPUT);
|
pinMode(HICHG, OUTPUT);
|
||||||
digitalWrite(21, LOW);
|
digitalWrite(HICHG, LOW);
|
||||||
// LED1 & LED2
|
|
||||||
pinMode(22, OUTPUT);
|
|
||||||
digitalWrite(22, LOW);
|
|
||||||
|
|
||||||
pinMode(PIN_WIRE_SDA, INPUT_PULLUP);
|
// LEDs
|
||||||
pinMode(PIN_WIRE_SCL, INPUT_PULLUP);
|
pinMode(PIN_LED1, OUTPUT);
|
||||||
|
ledOff(PIN_LED1);
|
||||||
|
|
||||||
|
pinMode(PIN_LED2, OUTPUT);
|
||||||
|
ledOff(PIN_LED2);
|
||||||
|
|
||||||
|
pinMode(PIN_LED3, OUTPUT);
|
||||||
|
ledOff(PIN_LED3);
|
||||||
}
|
}
|
@ -19,31 +19,12 @@ extern "C" {
|
|||||||
|
|
||||||
#define PINS_COUNT (33)
|
#define PINS_COUNT (33)
|
||||||
#define NUM_DIGITAL_PINS (33)
|
#define NUM_DIGITAL_PINS (33)
|
||||||
#define NUM_ANALOG_INPUTS (8) // A6 is used for battery, A7 is analog reference
|
#define NUM_ANALOG_INPUTS (8)
|
||||||
#define NUM_ANALOG_OUTPUTS (0)
|
#define NUM_ANALOG_OUTPUTS (0)
|
||||||
|
|
||||||
// LEDs
|
|
||||||
|
|
||||||
#define LED_RED 11
|
|
||||||
#define LED_BLUE 12
|
|
||||||
#define LED_GREEN 13
|
|
||||||
|
|
||||||
#define PIN_LED1 LED_GREEN
|
|
||||||
#define PIN_LED2 LED_BLUE
|
|
||||||
#define PIN_LED3 LED_RED
|
|
||||||
|
|
||||||
#define PIN_LED PIN_LED1
|
|
||||||
#define LED_PWR (PINS_COUNT)
|
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED
|
|
||||||
|
|
||||||
#define LED_STATE_ON 1 // State when LED is lit
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Buttons
|
* Digital Pins
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Digital PINs
|
|
||||||
#define D0 (0ul)
|
#define D0 (0ul)
|
||||||
#define D1 (1ul)
|
#define D1 (1ul)
|
||||||
#define D2 (2ul)
|
#define D2 (2ul)
|
||||||
@ -56,15 +37,6 @@ extern "C" {
|
|||||||
#define D9 (9ul)
|
#define D9 (9ul)
|
||||||
#define D10 (10ul)
|
#define D10 (10ul)
|
||||||
|
|
||||||
/*Due to the lack of pins,and have to make sure gps standby work well we have temporarily removed the button.
|
|
||||||
There are some technical solutions that can solve this problem,
|
|
||||||
and we are currently exploring and researching them*/
|
|
||||||
|
|
||||||
// #define BUTTON_PIN D0 // This is the Program Button
|
|
||||||
// // #define BUTTON_NEED_PULLUP 1
|
|
||||||
// #define BUTTON_ACTIVE_LOW true
|
|
||||||
// #define BUTTON_ACTIVE_PULLUP false
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Analog pins
|
* Analog pins
|
||||||
*/
|
*/
|
||||||
@ -85,6 +57,38 @@ static const uint8_t A4 = PIN_A4;
|
|||||||
static const uint8_t A5 = PIN_A5;
|
static const uint8_t A5 = PIN_A5;
|
||||||
#define ADC_RESOLUTION 12
|
#define ADC_RESOLUTION 12
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LEDs
|
||||||
|
*/
|
||||||
|
#define LED_STATE_ON (0) // RGB LED is common anode
|
||||||
|
#define LED_RED (11)
|
||||||
|
#define LED_GREEN (13)
|
||||||
|
#define LED_BLUE (12)
|
||||||
|
|
||||||
|
#define PIN_LED1 LED_GREEN // PIN_LED1 is used in src/platform/nrf52/architecture.h to define LED_PIN
|
||||||
|
#define PIN_LED2 LED_BLUE
|
||||||
|
#define PIN_LED3 LED_RED
|
||||||
|
|
||||||
|
#define LED_BUILTIN LED_RED // LED_BUILTIN is used by framework-arduinoadafruitnrf52 to indicate flash writes
|
||||||
|
|
||||||
|
#define LED_PWR LED_RED
|
||||||
|
#define USER_LED LED_BLUE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Buttons
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* D0 is shared with PIN_GPS_STANDBY on the L76K GNSS Module.
|
||||||
|
* There are some technical solutions that can solve this problem, and we are
|
||||||
|
* currently exploring and researching them.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// #define BUTTON_PIN D0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Serial Interfaces
|
||||||
|
*/
|
||||||
#define PIN_SERIAL2_RX (-1)
|
#define PIN_SERIAL2_RX (-1)
|
||||||
#define PIN_SERIAL2_TX (-1)
|
#define PIN_SERIAL2_TX (-1)
|
||||||
|
|
||||||
@ -102,11 +106,9 @@ static const uint8_t MOSI = PIN_SPI_MOSI;
|
|||||||
static const uint8_t MISO = PIN_SPI_MISO;
|
static const uint8_t MISO = PIN_SPI_MISO;
|
||||||
static const uint8_t SCK = PIN_SPI_SCK;
|
static const uint8_t SCK = PIN_SPI_SCK;
|
||||||
|
|
||||||
// supported modules list
|
|
||||||
#define USE_SX1262
|
#define USE_SX1262
|
||||||
|
|
||||||
// common pinouts for SX126X modules
|
// Pinout for SX126X
|
||||||
|
|
||||||
#define SX126X_CS D4
|
#define SX126X_CS D4
|
||||||
#define SX126X_DIO1 D1
|
#define SX126X_DIO1 D1
|
||||||
#define SX126X_BUSY D3
|
#define SX126X_BUSY D3
|
||||||
@ -121,16 +123,19 @@ static const uint8_t SCK = PIN_SPI_SCK;
|
|||||||
/*
|
/*
|
||||||
* Wire Interfaces
|
* Wire Interfaces
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define I2C_NO_RESCAN // I2C is a bit finicky, don't scan too much
|
#define I2C_NO_RESCAN // I2C is a bit finicky, don't scan too much
|
||||||
#define WIRE_INTERFACES_COUNT 1 // 2
|
#define WIRE_INTERFACES_COUNT 1 // 2
|
||||||
|
|
||||||
#define PIN_WIRE_SDA (24) // change to use the correct pins if needed
|
// LSM6DS3TR on XIAO nRF52840 Series
|
||||||
#define PIN_WIRE_SCL (25) // change to use the correct pins if needed
|
#define PIN_WIRE_SDA (17)
|
||||||
|
#define PIN_WIRE_SCL (16)
|
||||||
|
|
||||||
static const uint8_t SDA = PIN_WIRE_SDA;
|
static const uint8_t SDA = PIN_WIRE_SDA;
|
||||||
static const uint8_t SCL = PIN_WIRE_SCL;
|
static const uint8_t SCL = PIN_WIRE_SCL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPS
|
||||||
|
*/
|
||||||
// GPS L76KB
|
// GPS L76KB
|
||||||
#define GPS_L76K
|
#define GPS_L76K
|
||||||
#ifdef GPS_L76K
|
#ifdef GPS_L76K
|
||||||
@ -144,20 +149,18 @@ static const uint8_t SCL = PIN_WIRE_SCL;
|
|||||||
#define PIN_GPS_STANDBY D0
|
#define PIN_GPS_STANDBY D0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Battery
|
/*
|
||||||
|
* Battery
|
||||||
|
*/
|
||||||
|
#define BATTERY_PIN PIN_VBAT // P0.31: VBAT voltage divider
|
||||||
|
#define ADC_MULTIPLIER (3) // ... R17=1M, R18=510k
|
||||||
|
#define ADC_CTRL VBAT_ENABLE // P0.14: VBAT voltage divider
|
||||||
|
#define ADC_CTRL_ENABLED LOW // ... sink
|
||||||
|
#define EXT_CHRG_DETECT (23) // P0.17: Charge LED
|
||||||
|
#define EXT_CHRG_DETECT_VALUE LOW // ... BQ25101 ~CHG indicates charging
|
||||||
|
#define HICHG (22) // P0.13: BQ25101 ISET 100mA instead of 50mA
|
||||||
|
|
||||||
#define BAT_READ \
|
#define BATTERY_SENSE_RESOLUTION_BITS (10)
|
||||||
14 // P0_14 = 14 Reads battery voltage from divider on signal board. (PIN_VBAT is reading voltage divider on XIAO and is
|
|
||||||
// program pin 32 / or P0.31)
|
|
||||||
#define BATTERY_SENSE_RESOLUTION_BITS 10
|
|
||||||
#define CHARGE_LED 23 // P0_17 = 17 D23 YELLOW CHARGE LED
|
|
||||||
#define HICHG 22 // P0_13 = 13 D22 Charge-select pin for Lipo for 100 mA instead of default 50mA charge
|
|
||||||
|
|
||||||
// The battery sense is hooked to pin A0 (5)
|
|
||||||
#define BATTERY_PIN PIN_VBAT // PIN_A0
|
|
||||||
|
|
||||||
// ratio of voltage divider = 3.0 (R17=1M, R18=510k)
|
|
||||||
#define ADC_MULTIPLIER 3 // 3.0 + a bit for being optimistic
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -53,3 +53,10 @@ const uint32_t g_ADigitalPinMap[] = {
|
|||||||
// VBAT
|
// VBAT
|
||||||
31, // D32 is P0.10 (VBAT)
|
31, // D32 is P0.10 (VBAT)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void initVariant()
|
||||||
|
{
|
||||||
|
// Set BQ25101 ISET to 100mA instead of 50mA
|
||||||
|
pinMode(HICHG, OUTPUT);
|
||||||
|
digitalWrite(HICHG, LOW);
|
||||||
|
}
|
||||||
|
@ -189,9 +189,8 @@ static const uint8_t SCL = PIN_WIRE_SCL;
|
|||||||
|
|
||||||
// Battery
|
// Battery
|
||||||
|
|
||||||
#define BAT_READ \
|
#define ADC_CTRL VBAT_ENABLE // P0.14: VBAT voltage divider
|
||||||
14 // P0_14 = 14 Reads battery voltage from divider on signal board. (PIN_VBAT is reading voltage divider on XIAO and is
|
#define ADC_CTRL_ENABLED LOW // ... sink
|
||||||
// program pin 32 / or P0.31)
|
|
||||||
#define BATTERY_SENSE_RESOLUTION_BITS 10
|
#define BATTERY_SENSE_RESOLUTION_BITS 10
|
||||||
#define CHARGE_LED 23 // P0_17 = 17 D23 YELLOW CHARGE LED
|
#define CHARGE_LED 23 // P0_17 = 17 D23 YELLOW CHARGE LED
|
||||||
#define HICHG 22 // P0_13 = 13 D22 Charge-select pin for Lipo for 100 mA instead of default 50mA charge
|
#define HICHG 22 // P0_13 = 13 D22 Charge-select pin for Lipo for 100 mA instead of default 50mA charge
|
||||||
|
Loading…
Reference in New Issue
Block a user