25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
853 B

  1. #include "Config.h"
  2. #include "Network.h"
  3. #include "Hardware.h"
  4. #include "MainUnit.h"
  5. #define LOGGER_NAME "Network"
  6. namespace network {
  7. SIM808RegistrationStatus waitForRegistered(uint16_t timeout) {
  8. SIM808RegistrationStatus currentStatus;
  9. do {
  10. currentStatus = hardware::sim808::device.getNetworkRegistrationStatus();
  11. if (isAvailable(currentStatus.stat)) break;
  12. mainunit::deepSleep(NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS / 1000);
  13. timeout -= NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS;
  14. } while (timeout > 1);
  15. return currentStatus;
  16. }
  17. bool isAvailable(SIM808_NETWORK_REGISTRATION_STATE state) {
  18. return state == SIM808_NETWORK_REGISTRATION_STATE::REGISTERED ||
  19. state == SIM808_NETWORK_REGISTRATION_STATE::ROAMING;
  20. }
  21. bool enableGprs() {
  22. return hardware::sim808::device.enableGprs(config::main::get().network.apn);
  23. }
  24. }