diff options
| -rw-r--r-- | CMakeLists.txt | 78 | ||||
| -rw-r--r-- | README.md | 14 | ||||
| -rw-r--r-- | makefile | 17 | ||||
| -rw-r--r-- | src/GPSFix.cpp | 4 | ||||
| -rw-r--r-- | src/GPSService.cpp | 14 | ||||
| -rw-r--r-- | src/NMEAParser.cpp | 6 |
6 files changed, 102 insertions, 31 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..05eb9f2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,78 @@ +cmake_minimum_required(VERSION 3.1) +project(NemaTode VERSION 1.1) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(CMAKE_RELEASE_POSTFIX "" CACHE STRING "Add postfix to target for Release build.") +set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add postfix to target for Debug build.") +set(CMAKE_RELWITHDEBINFO_POSTFIX "rd" CACHE STRING "Add postfix to target for RelWithDebInfo build.") +set(CMAKE_MINSIZEREL_POSTFIX "s" CACHE STRING "Add postfix to target for MinSizeRel build") + +set(headers + include/nmeaparse/Event.h + include/nmeaparse/GPSFix.h + include/nmeaparse/GPSService.h + include/nmeaparse/nmea.h + include/nmeaparse/NMEACommand.h + include/nmeaparse/NMEAParser.h + include/nmeaparse/NumberConversion.h +) + +set(sources + src/GPSFix.cpp + src/GPSService.cpp + src/NMEACommand.cpp + src/NMEAParser.cpp + src/NumberConversion.cpp +) + +add_library(${PROJECT_NAME} STATIC ${headers} ${sources}) + +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION 1 +) + +target_include_directories(${PROJECT_NAME} PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + $<INSTALL_INTERFACE:include> +) + +include(GNUInstallDirs) +set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake) + +install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +# We have no other dependencies, so we export direct to NemaTodeConfig +# instead of using write_basic_package_version_file to generate a helper file +install(TARGETS ${PROJECT_NAME} + EXPORT NemaTodeConfig + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION include +) + +install(EXPORT NemaTodeConfig + DESTINATION ${INSTALL_CONFIGDIR} + NAMESPACE ${PROJECT_NAME}:: +) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/NemaTodeVersion.cmake + COMPATIBILITY SameMajorVersion +) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/NemaTodeVersion.cmake + DESTINATION ${INSTALL_CONFIGDIR} +) + +# build demo_advanced +add_executable(demo_advanced demo_advanced.cpp) +target_link_libraries(demo_advanced ${PROJECT_NAME}) + +# build demo_simple +add_executable(demo_simple demo_simple.cpp) +target_link_libraries(demo_simple ${PROJECT_NAME})
\ No newline at end of file @@ -116,8 +116,6 @@ There are 2 ways to operate... * Sentence Generation * Custom Sentence handling -. - **Generation** NMEACommand mycmd; @@ -133,6 +131,18 @@ There are 2 included NMEACommands that can configure a GPS. * ```` PSRF100```` Configures the UART serial connection (if the chip has one). +## Include NemaTode in your project +You can include NemaTode via [CMake](https://cmake.org) in our project. +Your basic CMakeLists.txt file could look like: + + cmake_minimum_required(VERSION 3.1) + project(MyProject) + + find_package(NemaTode REQUIRED CONFIG) + + add_executable(${PROJECT_NAME} mycode.cpp) + + target_link_libraries(${PROJECT_NAME} NemaTode::NemaTode) ## GPS Fix data available diff --git a/makefile b/makefile deleted file mode 100644 index 91d5cf7..0000000 --- a/makefile +++ /dev/null @@ -1,17 +0,0 @@ -# Simple makefile for the demos in the top level directory. - -.PHONY: advanced simple - -all: simple advanced - @echo "Done!" - -advanced: - g++ -std=c++11 -Iinclude src/*.cpp demo_advanced.cpp -o advanced - - -simple: - g++ -std=c++11 -Iinclude src/*.cpp demo_simple.cpp -o simple - -clean: - rm -f simple - rm -f advanced diff --git a/src/GPSFix.cpp b/src/GPSFix.cpp index e45efbc..20fe275 100644 --- a/src/GPSFix.cpp +++ b/src/GPSFix.cpp @@ -87,7 +87,7 @@ double GPSAlmanac::averageSNR(){ } double GPSAlmanac::minSNR(){ double min = 9999999; - if (satellites.size() == 0){ + if (satellites.empty()){ return 0; } int32_t num_over_zero = 0; @@ -397,7 +397,7 @@ std::string GPSFix::toString(){ << " SNR: avg: " << almanac.averageSNR() << " dB [min: " << almanac.minSNR() << " dB, max:" << almanac.maxSNR() << " dB]" << endl; ss << " < Almanac (" << almanac.percentComplete() << "%) >" << endl; - if (almanac.satellites.size() == 0){ + if (almanac.satellites.empty()){ ss << " > No satellite info in almanac." << endl; } for (size_t i = 0; i < almanac.satellites.size(); i++){ diff --git a/src/GPSService.cpp b/src/GPSService.cpp index 9c3133e..65bf79f 100644 --- a/src/GPSService.cpp +++ b/src/GPSService.cpp @@ -31,7 +31,7 @@ double convertLatLongToDeg(string llstr, string dir){ deg = deg + mins / 60.0; char hdg = 'x'; - if (dir.size() > 0){ + if (!dir.empty()){ hdg = dir[0]; } @@ -152,14 +152,14 @@ void GPSService::read_GPGGA(const NMEASentence& nmea){ // LAT sll = nmea.parameters[1]; dir = nmea.parameters[2]; - if (sll.size() > 0){ + if (!sll.empty()){ this->fix.latitude = convertLatLongToDeg(sll, dir); } // LONG sll = nmea.parameters[3]; dir = nmea.parameters[4]; - if (sll.size() > 0){ + if (!sll.empty()){ this->fix.longitude = convertLatLongToDeg(sll, dir); } @@ -183,7 +183,7 @@ void GPSService::read_GPGGA(const NMEASentence& nmea){ } // ALTITUDE - if (nmea.parameters[8].size() > 0){ + if (!nmea.parameters[8].empty()){ this->fix.altitude = parseDouble(nmea.parameters[8]); } else { @@ -414,14 +414,14 @@ void GPSService::read_GPRMC(const NMEASentence& nmea){ // LAT sll = nmea.parameters[2]; dir = nmea.parameters[3]; - if (sll.size() > 0){ + if (!sll.empty()){ this->fix.latitude = convertLatLongToDeg(sll, dir); } // LONG sll = nmea.parameters[4]; dir = nmea.parameters[5]; - if (sll.size() > 0){ + if (!sll.empty()){ this->fix.longitude = convertLatLongToDeg(sll, dir); } @@ -429,7 +429,7 @@ void GPSService::read_GPRMC(const NMEASentence& nmea){ // ACTIVE bool lockupdate = false; char status = 'V'; - if (nmea.parameters[1].size() > 0){ + if (!nmea.parameters[1].empty()){ status = nmea.parameters[1][0]; } this->fix.status = status; diff --git a/src/NMEAParser.cpp b/src/NMEAParser.cpp index 14084c2..d0a52ed 100644 --- a/src/NMEAParser.cpp +++ b/src/NMEAParser.cpp @@ -216,7 +216,7 @@ void NMEAParser::readSentence(std::string cmd){ onInfo(nmea, "Processing NEW string..."); - if (cmd.size() == 0){ + if (cmd.empty()){ onWarning(nmea, "Blank string -- Skipped processing."); return; } @@ -323,7 +323,7 @@ uint8_t NMEAParser::calculateChecksum(string s){ void NMEAParser::parseText(NMEASentence& nmea, string txt){ - if (txt.size() == 0){ + if (txt.empty()){ nmea.isvalid = false; return; } @@ -364,7 +364,7 @@ void NMEAParser::parseText(NMEASentence& nmea, string txt){ // Handle comma edge cases size_t comma = txt.find(','); if (comma == string::npos){ //comma not found, but there is a name... - if (txt.size() > 0) + if (!txt.empty()) { // the received data must just be the name if ( hasNonAlphaNum(txt) ){ nmea.isvalid = false; |
