Skip to content

Commit 551df54

Browse files
committed
GPS - begin read impl.
1 parent c07f8de commit 551df54

File tree

5 files changed

+60
-5
lines changed

5 files changed

+60
-5
lines changed

src/Wippersnapper_V2.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1374,5 +1374,8 @@ ws_status_t Wippersnapper_V2::run() {
13741374
// Process UART driver events
13751375
WsV2._uart_controller->update();
13761376

1377+
// Process GPS controller events
1378+
WsV2._gps_controller->update();
1379+
13771380
return WS_NET_CONNECTED; // TODO: Make this funcn void!
13781381
}

src/components/gps/controller.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,23 @@ bool GPSController::AddGPS(HardwareSerial *serial,
5959
return false;
6060
}
6161

62-
_gps_hardware.push_back(gps_hw);
62+
_gps_drivers.push_back(gps_hw);
6363
WS_DEBUG_PRINTLN("[gps] GPS hardware added successfully!");
6464
return true;
65+
}
66+
67+
/*!
68+
* @brief Updates the GPSController, polling the GPS hardware for data.
69+
* This function checks if the read period has elapsed and processes the GPS
70+
* data accordingly.
71+
*/
72+
void GPSController::update() {
73+
if (_gps_drivers.empty())
74+
return; // bail-out!
75+
76+
for (GPSHardware *drv : _gps_drivers) {
77+
78+
// Did read period elapse?
79+
ulong cur_time = millis();
80+
}
6581
}

src/components/gps/controller.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ class GPSController {
3232
GPSController();
3333
~GPSController();
3434
bool AddGPS(HardwareSerial *serial, wippersnapper_gps_GPSConfig *gps_config);
35+
void update();
3536

3637
private:
37-
GPSModel *_gps_model; ///< GPS model instance
38-
std::vector<GPSHardware *>
39-
_gps_hardware; ///< Vector of GPS hardware instances
38+
GPSModel *_gps_model; ///< GPS model instance
39+
std::vector<GPSHardware *> _gps_drivers; ///< GPS hardware instances
4040
};
4141
extern Wippersnapper_V2 WsV2; ///< Wippersnapper V2 instance
4242
#endif // WS_GPS_CONTROLLER_H

src/components/gps/hardware.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,4 +224,32 @@ bool GPSHardware::BuildPmtkAck(char *msg_cmd, char *msg_resp) {
224224
snprintf(msg_resp, MAX_NEMA_SENTENCE_LEN, "$PMTK001,%d,3", cmd_num);
225225
_ada_gps->addChecksum(msg_resp);
226226
return true;
227-
}
227+
}
228+
229+
/*!
230+
* @brief Sets the polling period for GPS data.
231+
* @param poll_period
232+
* The polling period in milliseconds.
233+
*/
234+
void GPSHardware::SetPollPeriod(ulong poll_period) { _period = poll_period; }
235+
236+
/*!
237+
* @brief Sets the previous polling period for GPS data.
238+
* @param poll_period_prv
239+
* The previous polling period in milliseconds.
240+
*/
241+
void GPSHardware::SetPollPeriodPrv(ulong poll_period_prv) {
242+
_period_prv = poll_period_prv;
243+
}
244+
245+
/*!
246+
* @brief Gets the current polling period for GPS data.
247+
* @returns The polling period in milliseconds.
248+
*/
249+
ulong GPSHardware::GetPollPeriod() { return _period; }
250+
251+
/*!
252+
* @brief Gets the previous polling period for GPS data.
253+
* @returns The previous polling period in milliseconds.
254+
*/
255+
ulong GPSHardware::GetPollPeriodPrv() { return _period_prv; }

src/components/gps/hardware.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ class GPSHardware {
5353
~GPSHardware();
5454
bool begin();
5555
bool SetInterface(HardwareSerial *serial);
56+
void SetPollPeriod(ulong poll_period);
57+
void SetPollPeriodPrv(ulong poll_period_prv);
58+
ulong GetPollPeriod();
59+
ulong GetPollPeriodPrv();
5660
// TODO: Add SetInterface(I2C *_i2c_hardware) for I2C support here!
5761
bool Handle_GPSConfig(wippersnapper_gps_GPSConfig *gps_config);
5862

@@ -64,6 +68,10 @@ class GPSHardware {
6468
GpsDriverType _driver_type; ///< Type of GPS driver used
6569
HardwareSerial *_hw_serial = nullptr; ///< HardwareSerial instance for GPS;
6670
Adafruit_GPS *_ada_gps = nullptr; ///< Adafruit GPS instance
71+
ulong _period; ///< Polling period for GPS data (Specified by IO), in
72+
///< milliseconds
73+
ulong _period_prv; ///< Previous period for GPS data (Specified by IO), in
74+
///< milliseconds
6775
};
6876
extern Wippersnapper_V2 WsV2; ///< Wippersnapper V2 instance
6977
#endif // WS_GPS_HARDWARE_H

0 commit comments

Comments
 (0)