WioWM1110Board.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifdef WIO_WM1110
  2. #include <Arduino.h>
  3. #include <Wire.h>
  4. #include <bluefruit.h>
  5. #include "WioWM1110Board.h"
  6. static BLEDfu bledfu;
  7. static void connect_callback(uint16_t conn_handle) {
  8. (void)conn_handle;
  9. MESH_DEBUG_PRINTLN("BLE client connected");
  10. }
  11. static void disconnect_callback(uint16_t conn_handle, uint8_t reason) {
  12. (void)conn_handle;
  13. (void)reason;
  14. MESH_DEBUG_PRINTLN("BLE client disconnected");
  15. }
  16. void WioWM1110Board::begin() {
  17. NRF52BoardDCDC::begin();
  18. pinMode(BATTERY_PIN, INPUT);
  19. pinMode(LED_GREEN, OUTPUT);
  20. pinMode(LED_RED, OUTPUT);
  21. pinMode(SENSOR_POWER_PIN, OUTPUT);
  22. digitalWrite(LED_GREEN, HIGH);
  23. digitalWrite(LED_RED, LOW);
  24. digitalWrite(SENSOR_POWER_PIN, LOW);
  25. Serial1.begin(115200);
  26. #if defined(PIN_WIRE_SDA) && defined(PIN_WIRE_SCL)
  27. Wire.setPins(PIN_WIRE_SDA, PIN_WIRE_SCL);
  28. #endif
  29. Wire.begin();
  30. delay(10);
  31. }
  32. bool WioWM1110Board::startOTAUpdate(const char *id, char reply[]) {
  33. Bluefruit.configPrphBandwidth(BANDWIDTH_MAX);
  34. Bluefruit.configPrphConn(92, BLE_GAP_EVENT_LENGTH_MIN, 16, 16);
  35. Bluefruit.begin(1, 0);
  36. Bluefruit.setTxPower(4);
  37. Bluefruit.setName("WM1110_OTA");
  38. Bluefruit.Periph.setConnectCallback(connect_callback);
  39. Bluefruit.Periph.setDisconnectCallback(disconnect_callback);
  40. bledfu.begin();
  41. Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE);
  42. Bluefruit.Advertising.addTxPower();
  43. Bluefruit.Advertising.addName();
  44. Bluefruit.Advertising.restartOnDisconnect(true);
  45. Bluefruit.Advertising.setInterval(32, 244);
  46. Bluefruit.Advertising.setFastTimeout(30);
  47. Bluefruit.Advertising.start(0);
  48. strcpy(reply, "OK - started");
  49. return true;
  50. }
  51. #endif