summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt78
-rw-r--r--README.md14
-rw-r--r--makefile17
-rw-r--r--src/GPSFix.cpp4
-rw-r--r--src/GPSService.cpp14
-rw-r--r--src/NMEAParser.cpp6
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
diff --git a/README.md b/README.md
index 2fd5e1e..58f3d82 100644
--- a/README.md
+++ b/README.md
@@ -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;