Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

84 Zeilen
1.7 KiB

  1. #include "Hardware.h"
  2. #include "Pins.h"
  3. #include <SoftwareSerial.h>
  4. #include <SIM808.h>
  5. #include <SIM808_Types.h>
  6. namespace hardware {
  7. namespace sim808 {
  8. SoftwareSerial simSerial = SoftwareSerial(SIM_TX, SIM_RX);
  9. SIM808 device = SIM808(SIM_RST, SIM_PWR, SIM_STATUS);
  10. //idea : int powered
  11. //gps::powerOn() => +1
  12. //network::powerOn() => +1
  13. //gps::powerOff() => -1
  14. //network::powerOff() => -1
  15. //sim808:powerOff() => force powerOff of both
  16. //gps/network::powerOff() => powered == 1 => sim808::powerOff()
  17. //idea : gps power on = +1, network power on = +1 => powerOff forces power off of all, powerOff one will lead to actual powerOff if
  18. void powerOn() {
  19. bool poweredOn = device.powerOnOff(true);
  20. if (!poweredOn) return;
  21. device.init();
  22. }
  23. void powerOff() {
  24. bool poweredOff = device.powerOnOff(false);
  25. }
  26. void init() {
  27. device.powerOnOff(true);
  28. simSerial.begin(4800);
  29. device.begin(simSerial);
  30. device.init();
  31. }
  32. void powerOffIfUnused() {
  33. bool gpsPowered = false;
  34. bool gprsPowered = false;
  35. if ((device.getGpsPowerState(&gpsPowered) && !gpsPowered) &&
  36. (device.getGprsPowerState(&gprsPowered) && !gprsPowered)) {
  37. powerOff();
  38. }
  39. }
  40. void gpsPowerOn() {
  41. powerOn();
  42. device.enableGps();
  43. }
  44. void gpsPowerOff() {
  45. device.disableGps();
  46. powerOffIfUnused();
  47. }
  48. void networkPowerOn() {
  49. powerOn();
  50. device.setPhoneFunctionality(SIM808_PHONE_FUNCTIONALITY::FULL);
  51. device.enableGprs("Free"); //TODO : configure
  52. }
  53. void networkPowerOff() {
  54. device.setPhoneFunctionality(SIM808_PHONE_FUNCTIONALITY::MINIMUM);
  55. device.disableGprs();
  56. powerOffIfUnused();
  57. }
  58. }
  59. namespace rtc {
  60. void powerOn();
  61. void powerOff();
  62. }
  63. namespace eeprom {
  64. void powerOn();
  65. void powerOff();
  66. }
  67. }