|
|
@@ -1,22 +1,7 @@
|
|
|
#include <Arduino.h>
|
|
|
-#include "RAKWismeshTagBoard.h"
|
|
|
-
|
|
|
-#include <bluefruit.h>
|
|
|
#include <Wire.h>
|
|
|
|
|
|
-static BLEDfu bledfu;
|
|
|
-
|
|
|
-static void connect_callback(uint16_t conn_handle) {
|
|
|
- (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");
|
|
|
-}
|
|
|
+#include "RAKWismeshTagBoard.h"
|
|
|
|
|
|
void RAKWismeshTagBoard::begin() {
|
|
|
NRF52BoardDCDC::begin();
|
|
|
@@ -30,52 +15,4 @@ void RAKWismeshTagBoard::begin() {
|
|
|
pinMode(SX126X_POWER_EN, OUTPUT);
|
|
|
digitalWrite(SX126X_POWER_EN, HIGH);
|
|
|
delay(10); // give sx1262 some time to power up
|
|
|
-}
|
|
|
-
|
|
|
-bool RAKWismeshTagBoard::startOTAUpdate(const char* id, char reply[]) {
|
|
|
- // Config the peripheral connection with maximum bandwidth
|
|
|
- // more SRAM required by SoftDevice
|
|
|
- // Note: All config***() function must be called before begin()
|
|
|
- Bluefruit.configPrphBandwidth(BANDWIDTH_MAX);
|
|
|
- Bluefruit.configPrphConn(92, BLE_GAP_EVENT_LENGTH_MIN, 16, 16);
|
|
|
-
|
|
|
- Bluefruit.begin(1, 0);
|
|
|
- // Set max power. Accepted values are: -40, -30, -20, -16, -12, -8, -4, 0, 4
|
|
|
- Bluefruit.setTxPower(4);
|
|
|
- // Set the BLE device name
|
|
|
- Bluefruit.setName("WISMESHTAG_OTA");
|
|
|
-
|
|
|
- Bluefruit.Periph.setConnectCallback(connect_callback);
|
|
|
- Bluefruit.Periph.setDisconnectCallback(disconnect_callback);
|
|
|
-
|
|
|
- // To be consistent OTA DFU should be added first if it exists
|
|
|
- bledfu.begin();
|
|
|
-
|
|
|
- // Set up and start advertising
|
|
|
- // Advertising packet
|
|
|
- Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
|
|
|
- Bluefruit.Advertising.addTxPower();
|
|
|
- Bluefruit.Advertising.addName();
|
|
|
-
|
|
|
- /* Start Advertising
|
|
|
- - Enable auto advertising if disconnected
|
|
|
- - Interval: fast mode = 20 ms, slow mode = 152.5 ms
|
|
|
- - Timeout for fast mode is 30 seconds
|
|
|
- - Start(timeout) with timeout = 0 will advertise forever (until connected)
|
|
|
-
|
|
|
- For recommended advertising interval
|
|
|
- https://developer.apple.com/library/content/qa/qa1931/_index.html
|
|
|
- */
|
|
|
- Bluefruit.Advertising.restartOnDisconnect(true);
|
|
|
- Bluefruit.Advertising.setInterval(32, 244); // in unit of 0.625 ms
|
|
|
- Bluefruit.Advertising.setFastTimeout(30); // number of seconds in fast mode
|
|
|
- Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds
|
|
|
-
|
|
|
- uint8_t mac_addr[6];
|
|
|
- memset(mac_addr, 0, sizeof(mac_addr));
|
|
|
- Bluefruit.getAddr(mac_addr);
|
|
|
- sprintf(reply, "OK - mac: %02X:%02X:%02X:%02X:%02X:%02X",
|
|
|
- mac_addr[5], mac_addr[4], mac_addr[3], mac_addr[2], mac_addr[1], mac_addr[0]);
|
|
|
-
|
|
|
- return true;
|
|
|
-}
|
|
|
+}
|