diff --git a/platformio.ini b/platformio.ini index c6e31268..9d50ed89 100644 --- a/platformio.ini +++ b/platformio.ini @@ -971,6 +971,10 @@ build_flags = ${nrf52840_base.build_flags} -D LORA_TX_POWER=22 -D SX126X_CURRENT_LIMIT=130 -D SX126X_RX_BOOSTED_GAIN=1 + -D PIN_USER_BTN=6 +lib_deps= + ${nrf52840_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 [env:Faketec_Repeater] extends = faketec @@ -1035,6 +1039,7 @@ lib_deps = extends = faketec build_flags = ${faketec.build_flags} + -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 -D BLE_PIN_CODE=123456 @@ -1043,7 +1048,7 @@ build_flags = -D ENABLE_PRIVATE_KEY_IMPORT=1 ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 -build_src_filter = ${faketec.build_src_filter} + +<../examples/companion_radio/main.cpp> +build_src_filter = ${faketec.build_src_filter} + +<../examples/companion_radio> + lib_deps = ${faketec.lib_deps} adafruit/RTClib @ ^2.1.3 diff --git a/src/helpers/nrf52/faketecBoard.cpp b/src/helpers/nrf52/faketecBoard.cpp index 6ef294bc..797dba89 100644 --- a/src/helpers/nrf52/faketecBoard.cpp +++ b/src/helpers/nrf52/faketecBoard.cpp @@ -6,6 +6,32 @@ static BLEDfu bledfu; +void faketecBoard::begin() { + // for future use, sub-classes SHOULD call this from their begin() + startup_reason = BD_STARTUP_NORMAL; + btn_prev_state = HIGH; + + + pinMode(PIN_VBAT_READ, INPUT); + + #ifdef BUTTON_PIN + pinMode(BATTERY_PIN, INPUT); + pinMode(BUTTON_PIN, INPUT); + pinMode(LED_PIN, OUTPUT); + #endif + + #if defined(PIN_BOARD_SDA) && defined(PIN_BOARD_SCL) + Wire.begin(PIN_BOARD_SDA, PIN_BOARD_SCL); + #else + Wire.begin(); + #endif + + pinMode(SX126X_POWER_EN, OUTPUT); + digitalWrite(SX126X_POWER_EN, HIGH); + delay(10); // give sx1262 some time to power up +} + + static void connect_callback(uint16_t conn_handle) { (void)conn_handle; diff --git a/src/helpers/nrf52/faketecBoard.h b/src/helpers/nrf52/faketecBoard.h index b5cebb78..53ba9917 100644 --- a/src/helpers/nrf52/faketecBoard.h +++ b/src/helpers/nrf52/faketecBoard.h @@ -23,24 +23,10 @@ class faketecBoard : public mesh::MainBoard { protected: uint8_t startup_reason; + uint8_t btn_prev_state; public: - void begin() { - // for future use, sub-classes SHOULD call this from their begin() - startup_reason = BD_STARTUP_NORMAL; - - pinMode(PIN_VBAT_READ, INPUT); - - #if defined(PIN_BOARD_SDA) && defined(PIN_BOARD_SCL) - Wire.begin(PIN_BOARD_SDA, PIN_BOARD_SCL); - #else - Wire.begin(); - #endif - - pinMode(SX126X_POWER_EN, OUTPUT); - digitalWrite(SX126X_POWER_EN, HIGH); - delay(10); // give sx1262 some time to power up - } + void begin(); uint8_t getStartupReason() const override { return startup_reason; } @@ -61,6 +47,17 @@ public: return "Faketec DIY"; } + int buttonStateChanged() { + #ifdef BUTTON_PIN + uint8_t v = digitalRead(BUTTON_PIN); + if (v != btn_prev_state) { + btn_prev_state = v; + return (v == LOW) ? 1 : -1; + } + #endif + return 0; + } + void reboot() override { NVIC_SystemReset(); } diff --git a/variants/promicro_nrf52840/variant.h b/variants/promicro_nrf52840/variant.h index 98489da1..780e4a0b 100644 --- a/variants/promicro_nrf52840/variant.h +++ b/variants/promicro_nrf52840/variant.h @@ -44,7 +44,7 @@ #define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE_SDA (6) +#define PIN_WIRE_SDA (8) #define PIN_WIRE_SCL (7) #define PIN_WIRE1_SDA (13) #define PIN_WIRE1_SCL (14)