Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

37 rader
1.0 KiB

  1. #include "Config.h"
  2. #include "Debug.h"
  3. #include "Network.h"
  4. #include "Hardware.h"
  5. #include "MainUnit.h"
  6. #define LOGGER_NAME "Network"
  7. namespace network {
  8. SIM808RegistrationStatus waitForRegistered(uint32_t timeout) {
  9. SIM808RegistrationStatus currentStatus;
  10. do {
  11. currentStatus = hardware::sim808::device.getNetworkRegistrationStatus();
  12. if (isAvailable(currentStatus.stat)) break;
  13. SIM808SignalQualityReport report = hardware::sim808::device.getSignalQuality();
  14. VERBOSE_FORMAT("waitForRegistered", "%d, [%d %ddBm]", currentStatus.stat, report.ssri, report.attenuation);
  15. mainunit::deepSleep(NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS / 1000);
  16. timeout -= NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS;
  17. } while (timeout > 1);
  18. return currentStatus;
  19. }
  20. bool isAvailable(SIM808_NETWORK_REGISTRATION_STATE state) {
  21. return state == SIM808_NETWORK_REGISTRATION_STATE::REGISTERED ||
  22. state == SIM808_NETWORK_REGISTRATION_STATE::ROAMING;
  23. }
  24. bool enableGprs() {
  25. return hardware::sim808::device.enableGprs(config::main::value.network.apn);
  26. }
  27. }