|
|
|
@ -6,75 +6,73 @@ |
|
|
|
|
|
|
|
static BLEDfu bledfu; |
|
|
|
|
|
|
|
static void connect_callback(uint16_t conn_handle) |
|
|
|
{ |
|
|
|
(void)conn_handle; |
|
|
|
MESH_DEBUG_PRINTLN("BLE client connected"); |
|
|
|
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; |
|
|
|
static void disconnect_callback(uint16_t conn_handle, uint8_t reason) { |
|
|
|
(void)conn_handle; |
|
|
|
(void)reason; |
|
|
|
|
|
|
|
MESH_DEBUG_PRINTLN("BLE client disconnected"); |
|
|
|
MESH_DEBUG_PRINTLN("BLE client disconnected"); |
|
|
|
} |
|
|
|
|
|
|
|
void RAK4631Board::begin() { |
|
|
|
// for future use, sub-classes SHOULD call this from their begin()
|
|
|
|
startup_reason = BD_STARTUP_NORMAL; |
|
|
|
|
|
|
|
pinMode(PIN_VBAT_READ, INPUT); |
|
|
|
pinMode(PIN_USER_BTN, INPUT_PULLUP); |
|
|
|
|
|
|
|
#if defined(PIN_BOARD_SDA) && defined(PIN_BOARD_SCL) |
|
|
|
Wire.begin(PIN_BOARD_SDA, PIN_BOARD_SCL); |
|
|
|
#else |
|
|
|
Wire.begin(); |
|
|
|
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
|
|
|
|
} |
|
|
|
|
|
|
|
bool RAK4631Board::startOTAUpdate() { |
|
|
|
// 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("RAK4631_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
|
|
|
|
// 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("RAK4631_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
|
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
|