Browse Source

Added handle count of gps and network instances

tags/v1.2.0
Bertrand Lemasle 6 years ago
parent
commit
93b97e377e
1 changed files with 41 additions and 15 deletions
  1. +41
    -15
      GpsTracker/Hardware.cpp

+ 41
- 15
GpsTracker/Hardware.cpp View File

@@ -18,6 +18,8 @@ namespace hardware {
namespace sim808 { namespace sim808 {
SoftwareSerial simSerial = SoftwareSerial(SIM_TX, SIM_RX); SoftwareSerial simSerial = SoftwareSerial(SIM_TX, SIM_RX);
SIM808 device = SIM808(SIM_RST, SIM_PWR, SIM_STATUS); SIM808 device = SIM808(SIM_RST, SIM_PWR, SIM_STATUS);
uint8_t networkPoweredCount = 0;
uint8_t gpsPoweredCount = 0;


void powerOn() { void powerOn() {
VERBOSE("powerOn"); VERBOSE("powerOn");
@@ -25,11 +27,13 @@ namespace hardware {
if (!poweredOn) return; if (!poweredOn) return;


device.init(); device.init();
networkPoweredCount = gpsPoweredCount = 0;
} }


void powerOff() { void powerOff() {
VERBOSE("powerOff"); VERBOSE("powerOff");
device.powerOnOff(false); device.powerOnOff(false);
networkPoweredCount = gpsPoweredCount = 0;
} }


void powerOffIfUnused() { void powerOffIfUnused() {
@@ -49,33 +53,55 @@ namespace hardware {
} }


void gpsPowerOn() { void gpsPowerOn() {
VERBOSE("gpsPowerOn");
powerOn();
device.enableGps();
if (!gpsPoweredCount) {
VERBOSE("gpsPowerOn");
powerOn();
device.enableGps();
}

gpsPoweredCount++;
} }


void gpsPowerOff() { void gpsPowerOff() {
if (!device.powered()) return;
if (!device.powered()) {
networkPoweredCount = gpsPoweredCount = 0;
return;
}

if (gpsPoweredCount == 1) {
VERBOSE("gpsPowerOff");
device.disableGps();
powerOffIfUnused();
}


VERBOSE("gpsPowerOff");
device.disableGps();
powerOffIfUnused();
gpsPoweredCount--;
} }


void networkPowerOn() { void networkPowerOn() {
VERBOSE("networkPowerOn");
powerOn();
device.setPhoneFunctionality(SIM808_PHONE_FUNCTIONALITY::FULL);
if (!networkPoweredCount) {
VERBOSE("networkPowerOn");
powerOn();
device.setPhoneFunctionality(SIM808_PHONE_FUNCTIONALITY::FULL);
}

networkPoweredCount++;
} }


void networkPowerOff() { void networkPowerOff() {
if (!device.powered()) return;
if (!device.powered()) {
networkPoweredCount = gpsPoweredCount = 0;
return;
}


VERBOSE("networkPowerOff");
device.disableGprs();
device.setPhoneFunctionality(SIM808_PHONE_FUNCTIONALITY::MINIMUM);
if (networkPoweredCount == 1) {
VERBOSE("networkPowerOff");
device.disableGprs();
device.setPhoneFunctionality(SIM808_PHONE_FUNCTIONALITY::MINIMUM);

powerOffIfUnused();
}


powerOffIfUnused();
networkPoweredCount--;
} }
} }




Loading…
Cancel
Save