Skip to content

Commit 9d8173a

Browse files
committed
feat: added lookup table for robots with storing in database, grpc build related fixes & added config controller
BREAKING CHANGE: Many changes at NetworkController
1 parent 03559ce commit 9d8173a

17 files changed

+1533
-135
lines changed

AmurCore.ui

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
</widget>
9090
<widget class="QMenu" name="menu_Zanya">
9191
<property name="title">
92-
<string>&amp;Amur</string>
92+
<string>&amp;Robot</string>
9393
</property>
9494
<addaction name="action_Connect"/>
9595
<addaction name="separator"/>
@@ -143,7 +143,7 @@
143143
</action>
144144
<action name="actionCamera">
145145
<property name="text">
146-
<string>Camera</string>
146+
<string>Camera calibration</string>
147147
</property>
148148
</action>
149149
<action name="action_Speech">

CMakeLists.txt

+11-3
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ configure_file(
7575
AmurCore.cfg
7676
)
7777

78-
set(GRPC_FETCHCONTENT true CACHE BOOL "Use FetchContent for download gRPC, or use system gRPC? yes/NO.")
78+
set(GRPC_FETCHCONTENT true CACHE BOOL "Use FetchContent for download gRPC, or use system gRPC? YES/no.")
7979
include(cmake/grpc.cmake)
8080
include_directories("${CMAKE_CURRENT_BINARY_DIR}/_deps/grpc-src/include/")
8181
include_directories("${CMAKE_CURRENT_BINARY_DIR}/_deps/grpc-src/third_party/protobuf/src/")
@@ -84,8 +84,8 @@ include_directories("${CMAKE_CURRENT_BINARY_DIR}/_deps/grpc-src/third_party/abse
8484
# for generated pb files
8585
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
8686

87-
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools TextToSpeech)
88-
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools TextToSpeech)
87+
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Sql LinguistTools TextToSpeech)
88+
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql LinguistTools TextToSpeech)
8989

9090
find_package(SDL2 REQUIRED)
9191
include_directories(${SDL2_INCLUDE_DIRS})
@@ -105,13 +105,21 @@ add_subdirectory(network)
105105
add_subdirectory(joystick)
106106
add_subdirectory(threads)
107107
add_subdirectory(logic)
108+
add_subdirectory(config)
109+
110+
set(CONFIG_PROCESSOR
111+
config/configprocessor.h
112+
config/configprocessor.cpp
113+
)
108114

109115
set(PROJECT_SOURCES
110116
main.cpp
111117
pch.h
112118
amurcore.cpp amurcore.h
113119
AmurCore.ui
114120

121+
${CONFIG_PROCESSOR}
122+
115123
${TS_FILES}
116124
${IMAGES}
117125
)

amurcore.cpp

+22-5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ AmurCore::AmurCore(QWidget *parent) :
77
{
88
ui->setupUi(this);
99

10+
config = new ConfigProcessor(configName); // Load config file
11+
fillFieldsByConfig(); // Fill fields by config file
12+
1013
outputMat = imread("data/images/no_picture.jpeg");
1114

1215
this->initialize();
@@ -18,6 +21,15 @@ AmurCore::AmurCore(QWidget *parent) :
1821
delete ui;
1922
}
2023

24+
void AmurCore::fillFieldsByConfig()
25+
{
26+
std::string ip ;
27+
// int result = config->searchString("Amur.Network.address", ip);
28+
// if(ip != ""){
29+
// this->address = ip;
30+
// }
31+
}
32+
2133
void AmurCore::initialize()
2234
{
2335
controls = new AMUR::AmurControls();
@@ -28,17 +40,22 @@ void AmurCore::initialize()
2840

2941
joystickDialog = new JoystickDialog(joyState, this);
3042
speechDialog = new SpeechDialog(this);
31-
connectDialog = new ConnectDialog(this);
3243

33-
network = new NetworkController(controls, sensors); // TODO - add robot id & &<vector> of robots id
3444
amurLogic = new Logic(joyState, controls, sensors);
3545

46+
repo = std::make_shared<RobotRepository>("myRobots.db");
47+
if (!repo->openDatabase()) {
48+
qDebug() << "Cannot open database!";
49+
}
50+
51+
network = std::make_shared<NetworkController>(controls, sensors); // TODO - add robot id & &<vector> of robots id
52+
network->runArpingService(arpPort, grpcPort, arpHeader); // Start listening for initial arp message from robots
53+
network->runServer(address_mask); // Start AmurCore gRPC server
54+
connectDialog = new ConnectDialog(this, network, repo);
55+
3656
connMenu();
3757
startTimer();
3858
startCap();
39-
40-
network->runArpingService(arpPort, grpcPort); // Start listening for initial arp message from robots
41-
network->runServer(address_mask); // Start AmurCore gRPC server
4259
}
4360

4461
void AmurCore::connMenu()

amurcore.h

+8-3
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,27 @@ class AmurCore : public QMainWindow
3434
{
3535
Q_OBJECT
3636

37-
3837
Ui::AmurCore *ui;
3938

4039
QTimer *tmrTimer;
4140
QString *hostName;
4241
QString statusMessage = "No robot connected";
4342

43+
const char *configName = "AmurCore.cfg";
44+
ConfigProcessor *config;
45+
4446
int arpPort = 11111;
4547
int grpcPort = 7777;
48+
QString arpHeader = "AMUR";
4649
std::string address_mask = "0.0.0.0:" + std::to_string(grpcPort);
50+
// TODO - add vector with robots id
51+
std::shared_ptr<NetworkController> network;
52+
std::shared_ptr<RobotRepository> repo;
4753

4854
SpeechDialog *speechDialog;
4955
ConnectDialog *connectDialog;
5056
JoystickDialog *joystickDialog;
5157

52-
// TODO - add vector with robots id
53-
NetworkController *network;
5458

5559
AMUR::AmurControls *controls;
5660
AMUR::AmurSensors *sensors;
@@ -86,6 +90,7 @@ private slots:
8690
void amurReboot();
8791

8892
private:
93+
void fillFieldsByConfig();
8994
void startCap();
9095
void startTimer();
9196
void initialize();

config/CMakeLists.txt

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
cmake_minimum_required(VERSION 3.5)
2+
3+
project(Config LANGUAGES CXX)
4+
5+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6+
7+
get_directory_property(IS_SUBPROJECT PARENT_DIRECTORY)
8+
9+
find_library(libСonfig_LIB config++ REQUIRED)
10+
11+
set(CONFIG
12+
configprocessor.h configprocessor.cpp
13+
)
14+
15+
add_library(${PROJECT_NAME} STATIC
16+
${CONFIG}
17+
)
18+
19+
if(libСonfig_LIB)
20+
target_link_libraries(${PROJECT_NAME} config++)
21+
endif()

0 commit comments

Comments
 (0)