Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PythonQt/PythonQt
Submodule PythonQt updated 92 files
+0 −1 arm-trik_generated_cpp_513
+8 −33 build/common.prf
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core.pri
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core0.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core0.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core1.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core1.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core2.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core2.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core3.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core3.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_core/com_trolltech_qt_core_init.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_core_builtin/com_trolltech_qt_core_builtin.pri
+0 −0 generated_cpp_5.10/com_trolltech_qt_core_builtin/com_trolltech_qt_core_builtin0.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_core_builtin/com_trolltech_qt_core_builtin0.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_core_builtin/com_trolltech_qt_core_builtin_init.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui.pri
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui0.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui0.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui1.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui1.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui10.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui10.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui11.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui11.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui2.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui2.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui3.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui3.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui4.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui4.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui5.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui5.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui6.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui6.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui7.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui7.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui8.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui8.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui9.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui9.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui/com_trolltech_qt_gui_init.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui_builtin/com_trolltech_qt_gui_builtin.pri
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui_builtin/com_trolltech_qt_gui_builtin0.cpp
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui_builtin/com_trolltech_qt_gui_builtin0.h
+0 −0 generated_cpp_5.10/com_trolltech_qt_gui_builtin/com_trolltech_qt_gui_builtin_init.cpp
+1 −1 generated_cpp_5.14
+0 −2,894 generated_cpp_5.14.1_bad/com_trolltech_qt_gui/com_trolltech_qt_gui8.cpp
+0 −0 generated_cpp_5.14.2/com_trolltech_qt_core/com_trolltech_qt_core.pri
+1 −0 generated_cpp_5.14.2/com_trolltech_qt_core/com_trolltech_qt_core0.cpp
+1 −1 generated_cpp_5.14.2/com_trolltech_qt_core/com_trolltech_qt_core0.h
+63 −4 generated_cpp_5.14.2/com_trolltech_qt_core/com_trolltech_qt_core1.cpp
+19 −7 generated_cpp_5.14.2/com_trolltech_qt_core/com_trolltech_qt_core1.h
+1 −70 generated_cpp_5.14.2/com_trolltech_qt_core/com_trolltech_qt_core2.cpp
+1 −38 generated_cpp_5.14.2/com_trolltech_qt_core/com_trolltech_qt_core2.h
+0 −1 generated_cpp_5.14.2/com_trolltech_qt_core/com_trolltech_qt_core_init.cpp
+0 −0 generated_cpp_5.14.2/com_trolltech_qt_core_builtin/com_trolltech_qt_core_builtin.pri
+2 −2 generated_cpp_5.14.2/com_trolltech_qt_core_builtin/com_trolltech_qt_core_builtin0.cpp
+2 −0 generated_cpp_5.14.2/com_trolltech_qt_core_builtin/com_trolltech_qt_core_builtin0.h
+0 −0 generated_cpp_5.14.2/com_trolltech_qt_core_builtin/com_trolltech_qt_core_builtin_init.cpp
+0 −0 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui.pri
+365 −304 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui0.cpp
+88 −55 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui0.h
+147 −325 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui1.cpp
+51 −81 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui1.h
+7,144 −11,182 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui10.cpp
+771 −391 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui10.h
+5,316 −3,831 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui11.cpp
+0 −785 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui11.h
+530 −535 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui2.cpp
+127 −111 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui2.h
+757 −1,179 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui3.cpp
+128 −142 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui3.h
+4,793 −2,165 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui4.cpp
+498 −254 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui4.h
+1,652 −5,202 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui5.cpp
+210 −534 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui5.h
+300 −1,563 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui6.cpp
+139 −280 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui6.h
+7,605 −6,746 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui7.cpp
+361 −288 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui7.h
+626 −0 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui8.cpp
+236 −374 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui8.h
+2,306 −94 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui9.cpp
+392 −238 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui9.h
+6 −14 generated_cpp_5.14.2/com_trolltech_qt_gui/com_trolltech_qt_gui_init.cpp
+0 −0 generated_cpp_5.14.2/com_trolltech_qt_gui_builtin/com_trolltech_qt_gui_builtin.pri
+0 −0 generated_cpp_5.14.2/com_trolltech_qt_gui_builtin/com_trolltech_qt_gui_builtin0.cpp
+0 −0 generated_cpp_5.14.2/com_trolltech_qt_gui_builtin/com_trolltech_qt_gui_builtin0.h
+0 −0 generated_cpp_5.14.2/com_trolltech_qt_gui_builtin/com_trolltech_qt_gui_builtin_init.cpp
+23 −6 generator/typesystem_core.xml
+11 −10 generator/typesystem_gui.xml
2 changes: 1 addition & 1 deletion translations/fr/trikKernel_fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<context>
<name>QObject</name>
<message>
<location filename="../../trikKernel/src/applicationInitHelper.cpp" line="+56"/>
<location filename="../../trikKernel/src/applicationInitHelper.cpp" line="+57"/>
<source>Print this help text.</source>
<translation type="unfinished"></translation>
</message>
Expand Down
2 changes: 1 addition & 1 deletion translations/ru/trikKernel_ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<context>
<name>QObject</name>
<message>
<location filename="../../trikKernel/src/applicationInitHelper.cpp" line="+56"/>
<location filename="../../trikKernel/src/applicationInitHelper.cpp" line="+57"/>
<source>Print this help text.</source>
<translation>Распечатать это сообщение.</translation>
</message>
Expand Down
3 changes: 3 additions & 0 deletions trikControl/configs/kernel-4.14/model-config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -133,4 +133,7 @@ Note that device, even if listed here, may fail by itself, then it also will not
<fifo />
</soundSensor>
-->
<lidarPort>
<lidar file="/dev/ttyS1" />
</lidarPort>
</config>
14 changes: 2 additions & 12 deletions trikControl/configs/kernel-4.14/system-config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,6 @@ equal to its class name.
echo 5 > /sys/class/misc/mma845x/odr_selection
echo 0 > /sys/class/misc/mma845x/fs_selection

echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_timestamp_en
echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_x_en
echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_y_en
echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_z_en
echo 1 > /sys/bus/iio/devices/iio\:device0/buffer/enable

echo 1 > /sys/bus/iio/devices/iio\:device1/scan_elements/in_timestamp_en
echo 1 > /sys/bus/iio/devices/iio\:device1/scan_elements/in_anglvel_x_en
echo 1 > /sys/bus/iio/devices/iio\:device1/scan_elements/in_anglvel_y_en
echo 1 > /sys/bus/iio/devices/iio\:device1/scan_elements/in_anglvel_z_en
echo 1 > /sys/bus/iio/devices/iio\:device1/buffer/enable

echo 1 > /sys/class/gpio/gpio62/value

export GP="/sys/class/gpio/"
Expand Down Expand Up @@ -76,6 +64,7 @@ equal to its class name.
<rangeSensor commonModule="hcsr04" minValue="0" maxValue="100" filter="median3" />
<digitalSensor />
<fifo />
<lidar />
<accelerometer deviceFile="/dev/iio:device0" optional="true" />
<gyroscope deviceFile="/dev/iio:device1" optional="true" />
<lineSensor script="/etc/init.d/line-sensor-ov7670" inputFile="/run/line-sensor.in.fifo" outputFile="/run/line-sensor.out.fifo" toleranceFactor="1.0" />
Expand Down Expand Up @@ -175,6 +164,7 @@ equal to its class name.
<camera port="video1" />
<camera port="video2" />
<fifo port="soundSensor" file="/home/root/trik/soundSensor.fifo" />
<lidar port="lidarPort" file="/dev/ttyUSB0" />
</devicePorts>

<deviceTypes>
Expand Down
1 change: 1 addition & 0 deletions trikControl/src/lidarWorker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ trikControl::LidarWorker::LidarWorker(const QString &fileName
, mHardwareAbstraction(hardwareAbstraction)
, mResult(ANGLES_RAW_NUMBER, 0)
{
mBuffer.reserve(ANGLES_RAW_NUMBER);
mWaitForInit.acquire(1);
}

Expand Down
2 changes: 1 addition & 1 deletion trikControl/src/vectorSensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ VectorSensor::VectorSensor(const QString &deviceName, const trikKernel::Configur
{
if (!mState.isFailed()) {
if (!mIIOFile.data()->open()) {
QLOG_ERROR() << "Gyroscope init failed";
QLOG_ERROR() << "VectorSensor init failed";
mState.fail();
return;
}
Expand Down
3 changes: 3 additions & 0 deletions trikKernel/include/trikKernel/applicationInitHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <QtCore/QScopedPointer>

#include "commandLineParser.h"
#include "coreDumping.h"

namespace trikKernel {

Expand Down Expand Up @@ -61,6 +62,8 @@ class TRIKKERNEL_EXPORT ApplicationInitHelper

/// Initializer for logging system.
QScopedPointer<LoggingHelper> mLoggingHelper;

QScopedPointer<coreDumping::CoreDumpingDaemon> mDumpingDaemon;
};

}
32 changes: 29 additions & 3 deletions trikKernel/include/trikKernel/coreDumping.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,37 @@

#include <QtCore/QString>

#include <QObject>
#include <QSocketNotifier>

namespace trikKernel {

namespace coreDumping {
/// Installs signal handler and initializes core dump in a location specified by trikKernel::Paths.
void initCoreDumping(const QString &coreDumpPath);
}
class CoreDumpingDaemon : public QObject
{
Q_OBJECT

public:
CoreDumpingDaemon(const QString &coreDumpPath, QObject *parent = 0);
~CoreDumpingDaemon() = default;


static void termSignalHandler(int unused);

/// Installs signal handler and initializes core dump in a location specified by trikKernel::Paths.
void initCoreDumping(const QString &coreDumpPath);

public slots:
void init();

void handleSigTerm();

private:
// static int sigtermFd[2];

QSocketNotifier *snTerm;

const QString mCoreDumpPath;
};
}
}
4 changes: 3 additions & 1 deletion trikKernel/src/applicationInitHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@

#include <QRandomGenerator>
#include <QsLog.h>
#include <QTimer>

#include "translationsHelper.h"
#include "version.h"
Expand Down Expand Up @@ -105,7 +106,8 @@ void ApplicationInitHelper::init()
coreDumpPath = Paths::coreDumpPath();
}

trikKernel::coreDumping::initCoreDumping(coreDumpPath);
mDumpingDaemon.reset(new coreDumping::CoreDumpingDaemon(coreDumpPath));
QTimer::singleShot(0, mDumpingDaemon.data(), &coreDumping::CoreDumpingDaemon::init);

mConfigPath = Paths::configsPath();
if (mCommandLineParser.isSet("c")) {
Expand Down
63 changes: 62 additions & 1 deletion trikKernel/src/linux/coreDumping.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,22 @@
#include "coreDumping.h"

#include <QtCore/QDir>
#include <QsLog.h>

#include <sys/resource.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <csignal>
#include <unistd.h>
#include <cstdio>
#include "paths.h"

#include <QApplication>
#include <QSocketNotifier>
#include <coreDumping.h>

void (*oldHandler)(int);
static int sigtermFd[2];

static void dumpHandler_impl(int signal, char *p)
{
Expand Down Expand Up @@ -78,10 +86,63 @@ static void setCoreLimits()
setrlimit(RLIMIT_CORE, &core_limits);
}

void trikKernel::coreDumping::initCoreDumping(const QString &coreDumpPath)
static int setup_unix_signal_handlers()
{
struct sigaction term;

term.sa_handler = trikKernel::coreDumping::CoreDumpingDaemon::CoreDumpingDaemon::termSignalHandler;
sigemptyset(&term.sa_mask);
term.sa_flags = 0;
term.sa_flags |= SA_RESTART;

if (sigaction(SIGTERM, &term, 0))
return 2;

return 0;
}

trikKernel::coreDumping::CoreDumpingDaemon::CoreDumpingDaemon(const QString &coreDumpPath, QObject *parent)
: QObject(parent)
, mCoreDumpPath(coreDumpPath)
{
}

void trikKernel::coreDumping::CoreDumpingDaemon::init()
{
setup_unix_signal_handlers();

if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sigtermFd))
qFatal("Couldn't create TERM socketpair");
snTerm = new QSocketNotifier(sigtermFd[1], QSocketNotifier::Read, this);
connect(snTerm, &QSocketNotifier::activated, this, &CoreDumpingDaemon::handleSigTerm);

initCoreDumping(mCoreDumpPath);
}

void trikKernel::coreDumping::CoreDumpingDaemon::termSignalHandler(int unused)
{
Q_UNUSED(unused);
char a = 1;
auto rc = ::write(sigtermFd[0], &a, sizeof(a));
Q_UNUSED(rc);
}

void trikKernel::coreDumping::CoreDumpingDaemon::initCoreDumping(const QString &coreDumpPath)
{
auto const & p = coreDumpPath.toLocal8Bit();
dumpHandler_impl(0, strndup(p.constData(), p.size()));
initSignals();
setCoreLimits();
}

void trikKernel::coreDumping::CoreDumpingDaemon::handleSigTerm()
{
snTerm->setEnabled(false);
char tmp;
auto rc = ::read(sigtermFd[1], &tmp, sizeof(tmp));
Q_UNUSED(rc);
QLOG_INFO() << "GOOOD QUITE";
QCoreApplication::quit();

snTerm->setEnabled(true);
}