@@ -610,4 +610,87 @@ int GPSHardware::NmeaBufPop(char *sentence) {
610610 strcpy (sentence, _nmea_buff.sentences [_nmea_buff.tail ]);
611611 _nmea_buff.tail = next; // Advance tail
612612 return 0 ;
613+ }
614+
615+ /* !
616+ * @brief Parses a NMEA sentence and returns true if it was successfully parsed.
617+ * @param sentence Pointer to the NMEA sentence to be parsed.
618+ * @returns True if the sentence was parsed successfully, False otherwise.
619+ */
620+ bool GPSHardware::ParseNMEASentence (char *sentence) {
621+ if (!sentence)
622+ return false ;
623+ if (_driver_type == GPS_DRV_MTK) {
624+ // Parse the NMEA sentence using Adafruit_GPS
625+ return _ada_gps->parse (sentence);
626+ } else if (_driver_type == GPS_DRV_UBLOX) {
627+ // Parse the NMEA sentence using SFE_UBLOX_GNSS
628+ // TODO!
629+ // return _sfe_gps->parseNMEA(sentence);
630+ }
631+
632+ return false ;
633+ }
634+
635+ uint8_t GPSHardware::GetHour () {
636+ if (_driver_type == GPS_DRV_MTK) {
637+ return _ada_gps->hour ;
638+ } else if (_driver_type == GPS_DRV_UBLOX) {
639+ // TODO: Implement for UBLOX
640+ }
641+ return 0 ;
642+ }
643+
644+ uint8_t GPSHardware::GetMinute () {
645+ if (_driver_type == GPS_DRV_MTK) {
646+ return _ada_gps->minute ;
647+ } else if (_driver_type == GPS_DRV_UBLOX) {
648+ // TODO: Implement for UBLOX
649+ }
650+ return 0 ;
651+ }
652+
653+ uint8_t GPSHardware::GetSeconds () {
654+ if (_driver_type == GPS_DRV_MTK) {
655+ return _ada_gps->seconds ;
656+ } else if (_driver_type == GPS_DRV_UBLOX) {
657+ // TODO: Implement for UBLOX
658+ }
659+ return 0 ;
660+ }
661+
662+ uint16_t GPSHardware::GetMilliseconds () {
663+ if (_driver_type == GPS_DRV_MTK) {
664+ return _ada_gps->milliseconds ;
665+ } else if (_driver_type == GPS_DRV_UBLOX) {
666+ // TODO: Implement for UBLOX
667+ }
668+ return 0 ;
669+ }
670+
671+ uint8_t GPSHardware::GetDay () {
672+ if (_driver_type == GPS_DRV_MTK) {
673+ return _ada_gps->day ;
674+ } else if (_driver_type == GPS_DRV_UBLOX) {
675+ // TODO: Implement for UBLOX
676+ }
677+ return 0 ;
678+ }
679+
680+ uint8_t GPSHardware::GetMonth () {
681+ if (_driver_type == GPS_DRV_MTK) {
682+ return _ada_gps->month ;
683+ } else if (_driver_type == GPS_DRV_UBLOX) {
684+ // TODO: Implement for UBLOX
685+ }
686+ return 0 ;
687+ }
688+
689+ uint8_t GPSHardware::GetYear () {
690+ if (_driver_type == GPS_DRV_MTK) {
691+ return _ada_gps->year ;
692+ } else if (_driver_type == GPS_DRV_UBLOX) {
693+ // TODO: Implement for UBLOX
694+ }
695+ return 0 ;
613696}
0 commit comments