diff --git a/platformio.ini b/platformio.ini index a515f1da..c5e184de 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1047,6 +1047,11 @@ build_flags = ${nrf52840_base.build_flags} -D LORA_TX_POWER=22 -D SX126X_CURRENT_LIMIT=130 -D SX126X_RX_BOOSTED_GAIN=1 + -D DISPLAY_CLASS=SSD1306Display + -D PIN_USER_BTN=6 +lib_deps= + ${nrf52840_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 [env:Faketec_Repeater] extends = faketec @@ -1113,13 +1118,13 @@ build_flags = ${faketec.build_flags} -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 + -D BLE_PIN_CODE=0 -D BLE_DEBUG_LOGGING=1 -D ENABLE_PRIVATE_KEY_EXPORT=1 -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 43bbe772..7263b453 100644 --- a/src/helpers/nrf52/faketecBoard.cpp +++ b/src/helpers/nrf52/faketecBoard.cpp @@ -6,16 +6,37 @@ 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(BUTTON_PIN, INPUT); + #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; - MESH_DEBUG_PRINTLN("BLE client connected"); + (void)conn_handle; + MESH_DEBUG_PRINTLN("BLE client connected"); } static void disconnect_callback(uint16_t conn_handle, uint8_t reason) { - (void)conn_handle; - (void)reason; - - MESH_DEBUG_PRINTLN("BLE client disconnected"); + (void)conn_handle; + (void)reason; + MESH_DEBUG_PRINTLN("BLE client disconnected"); } bool faketecBoard::startOTAUpdate() { diff --git a/src/helpers/nrf52/faketecBoard.h b/src/helpers/nrf52/faketecBoard.h index 676bc455..2790a9f8 100644 --- a/src/helpers/nrf52/faketecBoard.h +++ b/src/helpers/nrf52/faketecBoard.h @@ -17,30 +17,18 @@ #define SX126X_DIO2_AS_RF_SWITCH true #define SX126X_DIO3_TCXO_VOLTAGE (1.8f) +#define PIN_OLED_RESET -1 // shared VCC + #define PIN_VBAT_READ 17 #define ADC_MULTIPLIER (1.815f) // dependent on voltage divider resistors. TODO: more accurate battery tracking 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.setPins(PIN_BOARD_SDA, PIN_BOARD_SCL) -#endif - - Wire.begin(); - - 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 +49,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)