SBB Host
Host communication with the self balancing bike.
Loading...
Searching...
No Matches
config.h
Go to the documentation of this file.
1
16#ifndef CONFIG_H
17#define CONFIG_H
18
19#include "dirs.h"
20
21//OS flags
22#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) || defined(__WIN32__) || defined(WIN64) || defined(_WIN64) || defined(__WIN64) || defined(__WIN64__)
23#ifndef OS_WIN
24#define OS_WIN
25#endif
26#elif defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNUC__) || defined(__GNUG__) || defined(unix) || defined(__unix) || defined(__unix__)
27#ifndef OS_LINUX
28#define OS_LINUX
29#endif
30#else
31#error OS not supported
32#endif
33
34//app infos
35#define VERSION "0.1"
36#define AUTHOR_COPYRIGHT "Stefano Lovato"
37#define APP_COMMENTS "This is an application to stream the input & output data from the self-balancing bike, as well as to read the datalog file"
38#define LICTYPE "MIT License"
39#define WEBSITE "https://www.dii.unipd.it/"
40#define WEBSITE_LABEL "DII UniPd website"
41#define LIST_AUTHOR "Stefano Lovato"
42
43//defaut SIGNALS_NAMES and CONTROL_NAMES - can be changed config.ini before running.
44#define SIGNALS_NAMES "Speed", "Dist", \
45 "Acc x", "Acc y", "Acc z", "Gyro x", "Gyro y", "Gyro z", \
46 "Mag x", "Mag y", "Mag z", \
47 "Lat", "Long", "GPS Speed", \
48 "Steer pos", "Steer vel", "Fork disp", "Curr act", "Steer trq", \
49 "CPU temp", "Voltage", "Ref input 1", "Ref input 2", "Err state in", \
50 "Curr ref", "Throttle", \
51 "Roll est", "Yaw est", "Pos est x", "Pos est y", "Err state out", \
52 "User data 1", "User data 2", "User data 3", "User data 4"
53#define CONTROL_NAMES "Curr ref", "Throttle"
54#define CONTROL_MIN -1, -1
55#define CONTROL_MAX +1, +1
56#define CONTROL_VAL +0, 0
57
58//core settings
59#define CONFIG_FILE "sbbhost-config.ini"
60#if defined(OS_WIN)
61#define DEFCONFIG_FILE "sbbhost-config.ini"
62#else //Linux
63#define DEFCONFIG_FILE CONFIG_FILE_LINUX
64#endif
65#define LASTCONFIG_FILE ".sbbhost.def"
66#define PACKET_SIZE 64
67#define MAX_MISSING_PACKETS 100
68#define NULL_PORT -1
69#define MAX_PORT 128
70#define MAX_LOGGED_SAMPLES 500*60*60
71#define FILENAME_MAXSIZE 128
72#define FILENAME_FORMAT_STRING "log_%04d-%02d-%02d_%02d-%02d-%02d"
73#define FILENAME_FORMAT_ENTRIES time.getYear(), time.getMonth(), time.getDay(), time.getHour(), time.getMin(), time.getSec()
74#define NULL_ID -1
75#define NAN_VAL 0xffc00000
76
77#ifdef OS_WIN
78#define USE_NATIVE_DIALOG //undef to not use native fileopen dialog
79#endif
80
81//serial settings
82#define BAUD 115200
83
84//socket settings
85#define SOCKET_IP "192.168.0.1"
86#define SOCKET_PORT 1234
87
88//GUI settings
89#define APP_NAME "SBB Host"
90#define RUN_BUTLABEL "Run"
91#define STOP_BUTLABEL "Stop"
92#define RUN_BUTICON "media-playback-start-symbolic"
93#define STOP_BUTICON "media-playback-stop-symbolic"
94#define LOG_BUTLABEL "Log"
95#define STREAM_LABEL "Stream"
96#define PLOT_LABEL "Plot"
97#define STREAM_PAGE 0
98#define PLOT_PAGE 1
99#define MAINWIN_WIDTH 1080
100#define MAINWIN_HEIGHT 720
101#define MARGIN 10
102#define MESSDIALOG_WIDTH 400
103#define MESSDIALOG_HEIGHT 200
104#define SETTINGWIN_WIDTH 500
105#define SETTINGWIN_HEIGHT 400
106#define SETTINGWIN_NAME "Settings"
107#define STREAMSETTINGS_LABEL "Stream settings"
108#define PLOTSETTINGS_LABEL "Plot settings"
109#define HOSTCTRLWIN_NAME "Host control"
110#if defined(OS_WIN)
111#define TOOLBAR_XML "sbbhost-toolbar.xml"
112#else
113#define TOOLBAR_XML TOOLBAR_XML_LINUX
114#endif
115#define SAVE_FILE_LABEL "Please select a *.sbb/*.dat/*.mat file to save to"
116#define OPEN_FILE_LABEL "Please select a *.sbb file to open"
117#define LOAD_CFG_LABEL "Please select a *.ini file to load"
118#define SETFOLDER_LABEL "Please select a folder to use as default"
119#define FILE_START_FLAG "file://"
120#define FILE_END_FLAG "\r\n"
121//#define FILE_NAME_HEADER "log_"
122#define FILE_EXT ".sbb"
123#define FILE_CSV ".dat"
124#define FILE_MAT ".mat"
125#define FILE_INI ".ini"
126#define FILE_EXT_LABEL "sbb files"
127#define FILE_CSV_LABEL "dat files"
128#define FILE_MAT_LABEL "mat files"
129#define FILE_INI_LABEL "ini files"
130
131#ifdef OS_WIN
132#define FILE_SEP '\\'
133#else
134#define FILE_SEP '/'
135#endif
136#define STREAMTREE_FRAMELABEL "Signals"
137#define STREAMTIME_FORMAT "%02d:%02d:%02d"
138#define STREAMTIME_UPDATE_MS 1000
139#define UPDATE_FPS 8
140#define LABEL_SCALE 0.66
141#define TICK_SCALE 0.66
142#define DARKMODE 0
143#define WINDOW_SAMPLES 1000
144#define FORWARD_SAMPES 200
145#define LINE_WIDTH 0.50
146#define GRAPH_OFFSETX 0.05
147#define GRAPH_OFFSETY 0.05
148#define GRAPH_WIDTH 0.925
149#define GRAPH_HEIGHT 0.875
150#define STREAM_GRAPH_DECIM 5
151#define PLOT_GRAPH_DECIM 2
152#define SETTING_LABEL_WIDTH 150
153#define SETTING_ENTRY_WIDTH 150
154#define STREAMTREE_MINWIDTH 75
155#define PLOTTREE_MINWIDTH 75
156#define STREAMGRAPH_MINWIDTH 50
157#define PLOTGRAPH_MINWIDTH 50
158#define STREAMPANED_POS_DEF 200
159#define PLOTPANED_POS_DEF 300
160#define INVALID_CHARS '/', '\\', '<', '>', '"', '|', '?', '*', '[', ']', ',', ';', '.', ':' //!< List of invalid char for file names.
161#define SAMPLE_PLOTID 0 //!< Plot ID of sample-domain plot.
162#define FFT_PLOTID 1 //!< Plot ID of the spectra plot.
163#define PSD_PLOTID 2 //!< Plot ID of power-spectra-density plot.
164#define FRF_PLOTID 3 //!< Plot ID of frequency-response-function plot.
165#define DOC_FILE "start ..\\..\\docs\\html\\index.html" //!< Documentation main file
166
167//exit flags
168#define EXIT_DEFAULT 0x00 //!< Default exit flag (no issues).
169#define EXIT_LOSTCONNECTION 0x01 //!< Lost-connection exit flag.
170#define EXIT_MISSINGPACKET 0x02 //!< Missing-packet exit flag.
171#define EXIT_NOSERIALPORT 0x03 //!< No-serial-port-found exit flag.
172#define EXIT_MULTIPLEPORT 0x04 //!< Multiple-serial-ports-found exit flag.
173#define EXIT_UNABLECONNECT 0x05 //!< Unable-to-connect exit flag.
174#define EXIT_CONNECTIONOK 0x06 //!< Connection-ok exit flag.
175#define EXIT_NOLOGDATA 0x07 //!< No-logged-data exit flag.
176#define EXIT_SAVEUNKNOWISS 0x08 //!< Unknown-issue-during-save exit flag.
177#define EXIT_OPENUNKNOWISS 0x09 //!< Unknown-issue-during-open exit flag.
178#define EXIT_ALLSAVED 0x0A //!< All-logged-data-saved exit flag.
179#define EXIT_UNEXPECTED 0x0B //!< Unexpected-error exit flag.
180#define EXIT_INVALIDHEADER 0x0C //!< Invalid-header exit flag.
181#define EXIT_INVALIDTERMIN 0x0D //!< Invalid-terminator exit flag.
182#define EXIT_MAXLOGGEDDATA 0x0E //!< Max-logged-data exit flag.
183#define EXIT_INVALIFILEEXT 0x0F //!< Invalid-file-extension exit flag.
184#define EXIT_INVALIDFILE 0x10 //!< Invalid-file exit flag.
185#define EXIT_UNSELECTEDLOG 0x11 //!< Unselected-logged-data exit flag.
186#define EXIT_TOOSELECTEDLOG 0x12 //!< Too-selected-logged-data exit flag.
187#define EXIT_RESTART_APP_ON_CFG 0x13 //!< Restart app on load config flag.
188#define EXIT_NOCONNECTION 0x14 //!< No connection (no IP).
189#define EXIT_INVALIDIP 0x15 //!< Invalid IP spefified.
190#define EXIT_INVALIDIP_SETTINGS 0x16 //!< Invalid IP specified in settings.
191
192//Beep message
193#ifdef OS_WIN
194#define WARNING_BEEP MB_ICONWARNING //!< Warning beep in Windows.
195#define INFO_BEEP MB_ICONINFORMATION //!< Info beep in Windows.
196#define ERROR_BEEP MB_ICONERROR //!< Error beep in Windows.
197#else //beep message not used in Linux
198#define WARNING_BEEP 0 //!< Not used in Linux.
199#define INFO_BEEP 0 //!< Not used in Linux.
200#define ERROR_BEEP 0 //!< Not used in Linux.
201#endif
202
203//Local env var
204#define GSETTINGS_SCHEMA_DIR_KEY "GSETTINGS_SCHEMA_DIR" //!< Key of the GSettings environment variable.
205#ifdef OS_WIN
206#define GSETTINGS_SCHEMA_DIR_VAL "C:\\src\\vcpkg\\installed\\x64-windows\\share\\glib-2.0\\schemas" //!< Default GSettings path (if unable to load it from the configuration file).
207#else
208#define GSETTINGS_SCHEMA_DIR_VAL "./" //!< Default GSettings path (not used in Linux).
209#endif
210#endif