Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

51 řádky
1.3 KiB

  1. #include "Config.h"
  2. #if BACKUP_ENABLE_NETWORK
  3. #include "Debug.h"
  4. #include "Network.h"
  5. #include "Hardware.h"
  6. #include "MainUnit.h"
  7. #define LOGGER_NAME "Network"
  8. namespace network {
  9. SIM808RegistrationStatus waitForRegistered(uint32_t timeout) {
  10. VERBOSE("waitForRegistered");
  11. SIM808RegistrationStatus currentStatus;
  12. uint8_t noNetwork = 0;
  13. do {
  14. currentStatus = hardware::sim808::device.getNetworkRegistrationStatus();
  15. if (isAvailable(currentStatus.stat)) break;
  16. SIM808SignalQualityReport report = hardware::sim808::device.getSignalQuality();
  17. VERBOSE_FORMAT("waitForRegistered", "%d, [%d %ddBm]", currentStatus.stat, report.ssri, report.attenuation);
  18. if (report.ssri == 0) noNetwork++;
  19. else noNetwork = 0;
  20. if (noNetwork > 10) {
  21. VERBOSE_MSG("waitForRegistered", "No signal");
  22. break; //after a while, not network really means no network. Bailing out
  23. }
  24. mainunit::deepSleep(NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS / 1000);
  25. timeout -= NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS;
  26. } while (timeout > 1);
  27. return currentStatus;
  28. }
  29. bool isAvailable(SIM808_NETWORK_REGISTRATION_STATE state) {
  30. return state == SIM808_NETWORK_REGISTRATION_STATE::REGISTERED ||
  31. state == SIM808_NETWORK_REGISTRATION_STATE::ROAMING;
  32. }
  33. bool enableGprs() {
  34. return hardware::sim808::device.enableGprs(config::main::value.network.apn);
  35. }
  36. }
  37. #endif