Merge branch 'feature/AddRemoteControld_#17' into develop closes #17

pull/32/head
Geoffrey Merck 4 years ago
commit 1af3f615e2

@ -20,14 +20,11 @@ jobs:
sudo apt-get update sudo apt-get update
sudo apt-get -y install libgtest-dev libcurl4-openssl-dev libboost-dev libgps-dev sudo apt-get -y install libgtest-dev libcurl4-openssl-dev libboost-dev libgps-dev
- run: - run:
name: "Build App" name: "Build"
command: "make -j 3 dstargateway USE_GPSD=1" command: "make -j 3 ENABLE_DEBUG=1 USE_GPSD=1"
- run:
name: "Build Tests"
command: "make -j 3 tests USE_GPSD=1"
- run: - run:
name: "Run Tests" name: "Run Tests"
command: "make run-tests USE_GPSD=1" command: "make run-tests ENABLE_DEBUG=1 USE_GPSD=1"
# Invoke jobs via workflows # Invoke jobs via workflows
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows # See: https://circleci.com/docs/2.0/configuration-reference/#workflows
workflows: workflows:

1
.gitignore vendored

@ -45,3 +45,4 @@ Sandbox/*
*.app *.app
dstargateway dstargateway
Tests/dstargateway_tests Tests/dstargateway_tests
DGWRemoteControl/dgwremotecontrol

@ -3,7 +3,15 @@
{ {
"name": "Linux", "name": "Linux",
"includePath": [ "includePath": [
"${workspaceFolder}/**" "${workspaceFolder}/**",
"${workspaceFolder}/BaseCommon/",
"${workspaceFolder}/APRS/",
"${workspaceFolder}/Common/",
"${workspaceFolder}/DStarBase/",
"${workspaceFolder}/IRCDDB/",
"${workspaceFolder}/VersionInfo/",
"${workspaceFolder}/BaseCommon/",
"${workspaceFolder}/BaseCommon"
], ],
"defines": [], "defines": [],
"compilerPath": "/bin/g++", "compilerPath": "/bin/g++",

@ -5,11 +5,11 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"name": "(gdb) Lancer", "name": "(gdb) dstargateway",
"type": "cppdbg", "type": "cppdbg",
"request": "launch", "request": "launch",
"program": "${workspaceFolder}/dstargateway", "program": "${workspaceFolder}/DStarGateway/dstargateway",
"args": ["${workspaceFolder}/___test.cfg"], "args": ["${workspaceFolder}/Sandbox/___test.cfg"],
"stopAtEntry": false, "stopAtEntry": false,
"cwd": "${workspaceFolder}", "cwd": "${workspaceFolder}",
"environment": [], "environment": [],
@ -28,6 +28,30 @@
} }
] ]
}, },
{
"name": "(gdb) dgwremotecontrol",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/DGWRemoteControl/dgwremotecontrol",
"args": ["--name", "city_center", "F4FXL B", "link", "never", "DCS208_C"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Activer l'impression en mode Pretty pour gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Définir la version désassemblage sur Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{ {
"name": "Tests", "name": "Tests",
"type": "cppdbg", "type": "cppdbg",

31
.vscode/tasks.json vendored

@ -4,13 +4,14 @@
"version": "2.0.0", "version": "2.0.0",
"tasks": [ "tasks": [
{ {
"label": "Build", "label": "Build All",
"type": "shell", "type": "shell",
"command": "make", "command": "make",
"args": [ "args": [
"-j3", "-j3",
"ENABLE_DEBUG=1", "ENABLE_DEBUG=1",
"USE_GPSD=1" "USE_GPSD=1",
"all"
], ],
"group": { "group": {
"kind": "build", "kind": "build",
@ -18,6 +19,32 @@
}, },
"problemMatcher": [] "problemMatcher": []
}, },
{
"label": "Build DStarGateway",
"type": "shell",
"command": "make",
"args": [
"-j3",
"ENABLE_DEBUG=1",
"USE_GPSD=1",
"DStarGateway/dstargateway"
],
"group": "build",
"problemMatcher": []
},
{
"label": "Build DGWRemoteControl",
"type": "shell",
"command": "make",
"args": [
"-j3",
"ENABLE_DEBUG=1",
"USE_GPSD=1",
"DGWRemoteControl/dgwremotecontrol"
],
"group": "build",
"problemMatcher": []
},
{ {
"label": "Build Tests", "label": "Build Tests",
"type": "shell", "type": "shell",

@ -0,0 +1,12 @@
SRCS = $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)
DEPS = $(SRCS:.cpp=.d)
APRS.a: $(OBJS)
$(AR) rcs APRS.a $(OBJS)
%.o : %.cpp
$(CC) -I../BaseCommon $(CPPFLAGS) -MMD -MD -c $< -o $@
clean:
$(RM) *.o *.d APRS.a

@ -0,0 +1,12 @@
SRCS = $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)
DEPS = $(SRCS:.cpp=.d)
BaseCommon.a: $(OBJS)
$(AR) rcs BaseCommon.a $(OBJS)
%.o : %.cpp
$(CC) $(CPPFLAGS) -MMD -MD -c $< -o $@
clean:
$(RM) *.o *.d BaseCommon.a

@ -0,0 +1,60 @@
/*
* Copyright (c) 2022 by Geoffrey Merck F4FXL / KC3FRA
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <cassert>
#include <boost/algorithm/string.hpp>
#include "ProgramArgs.h"
void CProgramArgs::eatArguments(int argc, const char *argv[], std::unordered_map<std::string, std::string>& namedArgs, std::vector<std::string>& positionalArgs)
{
assert(argv != nullptr);
namedArgs.clear();
positionalArgs.clear();
std::vector<std::string> programArgs;
// Copy to a vector for easier handling, also skip program name
for(int i = 1;i < argc; i++) {
if(argv[i] != nullptr) {
programArgs.push_back(std::string(argv[i]));
}
}
// Consume Named args first
for(auto it = programArgs.begin(); it != programArgs.end();) {
if(boost::starts_with(*it, "-")) {
std::string argName = boost::trim_left_copy_if(*it, [] (char c) { return c == '-'; });
if(!argName.empty()) {
namedArgs[argName] = "";
it = programArgs.erase(it);
if(it != programArgs.end()) {
namedArgs[argName] = *it;
it = programArgs.erase(it);
}
}
}
else {
it++;
}
}
//ProgramArgs now only contains pôsitional Args
positionalArgs.assign(programArgs.begin(), programArgs.end());
}

@ -0,0 +1,29 @@
/*
* Copyright (c) 2022 by Geoffrey Merck F4FXL / KC3FRA
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#pragma once
#include <string>
#include <vector>
#include <unordered_map>
class CProgramArgs
{
public:
static void eatArguments(int argc, const char *argv[], std::unordered_map<std::string, std::string>& namedArgs, std::vector<std::string>& positionalArgs);
};

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save

Powered by TurnKey Linux.