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
1 change: 1 addition & 0 deletions Control/Joystick.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Joystick::Joystick(int updateTimeMs): ControlBase("Joystick") {

void Joystick::updateDevice() {
sf::Joystick::update();
// qDebug() << "updateDevice";

for (unsigned int i = 0; i < sizeof(axis_table) / sizeof(axis_table[0]); i++) {
sendAction(axis_table[i].action,
Expand Down
6 changes: 3 additions & 3 deletions ThrusterSettings/Thruster.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Thruster::Thruster(QWidget *parent) :

//change parameters
connect(ui->CheckBox_ThrusterPower, SIGNAL(stateChanged(int)), this, SLOT(powerCheckBoxChanged(int)));
connect(ui->SpinBox_ThrusterId, SIGNAL(valueChanged(int)), this, SLOT(idChanged(int)));
connect(ui->SpinBox_ThrusterId, SIGNAL(valueChanged(int)), this, SLOT(slotChanged(int)));
connect(ui->SpinBox_ThrusterSetSpeed, SIGNAL(valueChanged(int)), this, SLOT(speedChanged(int)));
connect(ui->DoubleSpinBox_SetForwardK, SIGNAL(valueChanged(double)), this, SLOT(forwardKChanged(double)));
connect(ui->DoubleSpinBox_SetBackwardK, SIGNAL(valueChanged(double)), this, SLOT(backwardKChanged(double)));
Expand Down Expand Up @@ -87,14 +87,14 @@ void Thruster::powerCheckBoxChanged(int power) {
emit parametorsChanged(ThrusterJson, ThisThruster);
}

void Thruster::idChanged(int id) {
void Thruster::slotChanged(int id) {
ui->SpinBox_ThrusterSetSpeed->setValue(0); // обнулям, чтобы не крутились не нужные движки
ThisThruster.velocity = 0;
emit parametorsChanged(ThrusterJson, ThisThruster);

if (autoSave == true) ThrusterJson["id"] = id;

ThisThruster.id = id;
ThisThruster.slot = id;
emit parametorsChanged(ThrusterJson, ThisThruster);
}

Expand Down
2 changes: 1 addition & 1 deletion ThrusterSettings/Thruster.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public slots:
private slots:
void powerCheckBoxChanged(int power);

void idChanged(int id);
void slotChanged(int slot);
void speedChanged(int speed);
void forwardKChanged(double forwardK);
void backwardKChanged(double backwardK);
Expand Down
142 changes: 88 additions & 54 deletions UV/iserverdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,45 @@
#include <string>
#include <sstream>

uint16_t getCheckSumm16b(char* pcBlock, int len);
uint8_t isCheckSumm16bCorrect(char* pcBlock, int len);
uint16_t getCheckSumm16b(char *pcBlock, int len);
uint8_t isCheckSumm16bCorrect(char *pcBlock, int len);

void set_bit(uint8_t& byte, uint8_t bit, bool state);
void set_bit(uint8_t &byte, uint8_t bit, bool state);

IServerData::IServerData()
: IBasicData() {
: IBasicData()
{
}

int IServerData::getThrusterAmount() {
int IServerData::getThrusterAmount()
{
int thrusterAmount;
UVMutex.lock();
thrusterAmount = UVState.getThrusterAmount();
UVMutex.unlock();
return thrusterAmount;
}

QString IServerData::getUdpHostAddress() {
QString IServerData::getUdpHostAddress()
{
QString udpHostAddress;
UVMutex.lock();
udpHostAddress = UVState.udpHostAddress;
UVMutex.unlock();
return udpHostAddress;
}

quint16 IServerData::getUdpHostPort() {
quint16 IServerData::getUdpHostPort()
{
quint16 udpHostPort;
UVMutex.lock();
udpHostPort = UVState.udpHostPort;
UVMutex.unlock();
return udpHostPort;
}

e_Countour IServerData::getCurrentControlContour() {
e_Countour IServerData::getCurrentControlContour()
{
e_Countour currentControlContour;

UVMutex.lock();
Expand All @@ -47,10 +52,12 @@ e_Countour IServerData::getCurrentControlContour() {
return currentControlContour;
}

QByteArray IServerData::generateMessage() {
QByteArray IServerData::generateMessage()
{
QByteArray formed;
formed.clear();
switch (getCurrentPackageMode()) {
switch (getCurrentPackageMode())
{
case PACKAGE_NORMAL:
formed = generateNormalMessage();
break;
Expand All @@ -64,15 +71,17 @@ QByteArray IServerData::generateMessage() {
return formed;
}

e_packageMode IServerData::getCurrentPackageMode() {
e_packageMode IServerData::getCurrentPackageMode()
{
e_packageMode currentPackageMode;
UVMutex.lock();
currentPackageMode = UVState.currentPackageMode;
UVMutex.unlock();
return currentPackageMode;
}

QByteArray IServerData::generateNormalMessage() {
QByteArray IServerData::generateNormalMessage()
{
QByteArray msg;
msg.clear();
QDataStream stream(&msg, QIODeviceBase::Append);
Expand All @@ -90,7 +99,8 @@ QByteArray IServerData::generateNormalMessage() {
stream << req.roll;
stream << req.pitch;
stream << req.yaw;
for (int i = 0; i < 6; i++) {
for (int i = 0; i < 6; i++)
{
stream << req.dev[i];
}

Expand All @@ -99,7 +109,8 @@ QByteArray IServerData::generateNormalMessage() {
return msg;
}

void IServerData::fillStructure(RequestNormalMessage& req) {
void IServerData::fillStructure(RequestNormalMessage &req)
{
UVMutex.lock();

set_bit(req.flags, 0, UVState.stabRoll);
Expand All @@ -116,14 +127,16 @@ void IServerData::fillStructure(RequestNormalMessage& req) {
req.pitch = UVState.control.pitch;
req.yaw = UVState.control.yaw;

for (int i = 0; i < 6; i++) {
for (int i = 0; i < 6; i++)
{
req.dev[i] = UVState.device[i].velocity;
}

UVMutex.unlock();
}

QByteArray IServerData::generateConfigMessage() {
QByteArray IServerData::generateConfigMessage()
{
QByteArray msg;
msg.clear();
QDataStream stream(&msg, QIODeviceBase::Append);
Expand Down Expand Up @@ -166,7 +179,8 @@ QByteArray IServerData::generateConfigMessage() {
return msg;
}

void IServerData::fillStructure(RequestConfigMessage& req) {
void IServerData::fillStructure(RequestConfigMessage &req)
{
UVMutex.lock();
e_Countour currentControlContour = UVState.currentControlContour;

Expand Down Expand Up @@ -194,7 +208,8 @@ void IServerData::fillStructure(RequestConfigMessage& req) {
UVMutex.unlock();
}

QByteArray IServerData::generateDirectMessage() {
QByteArray IServerData::generateDirectMessage()
{
QByteArray msg;
msg.clear();
QDataStream stream(&msg, QIODeviceBase::Append);
Expand All @@ -219,16 +234,20 @@ QByteArray IServerData::generateDirectMessage() {
return msg;
}

void IServerData::fillStructure(RequestDirectMessage& req) {
void IServerData::fillStructure(RequestDirectMessage &req)
{
UVMutex.lock();
UVState.setThrusterNext();

req.id = UVState.currentThruster;
req.slot = UVState.thruster[UVState.currentThruster].slot;

if (UVState.thruster[UVState.currentThruster].power == false) {
if (UVState.thruster[UVState.currentThruster].power == false)
{
req.velocity = 0;
} else {
}
else
{
req.velocity = UVState.thruster[UVState.currentThruster].velocity;
}

Expand All @@ -242,8 +261,10 @@ void IServerData::fillStructure(RequestDirectMessage& req) {
UVMutex.unlock();
}

void IServerData::parseMessage(QByteArray message) {
switch (getCurrentPackageMode()) {
void IServerData::parseMessage(QByteArray message)
{
switch (getCurrentPackageMode())
{
case PACKAGE_NORMAL:
parseNormalMessage(message);
break;
Expand All @@ -258,7 +279,8 @@ void IServerData::parseMessage(QByteArray message) {
}
}

void IServerData::parseNormalMessage(QByteArray msg) {
void IServerData::parseNormalMessage(QByteArray msg)
{
ResponseNormalMessage res;
uint16_t checksum_calc = getCheckSumm16b(msg.data(), msg.size() - 2);

Expand All @@ -277,20 +299,21 @@ void IServerData::parseNormalMessage(QByteArray msg) {

stream >> res.checksum;

if (res.checksum != checksum_calc) {
qDebug() << "Checksum NormalMessage is invalid";
std::stringstream stream;
stream << "[ISERVERDATA] Checksum is invalid. Calculated: [" <<
std::ios::hex << checksum_calc << "] " <<
"Received: [" <<
std::ios::hex << res.checksum << "]";
throw std::invalid_argument(stream.str());
}
// if (res.checksum != checksum_calc) {
// qDebug() << "Checksum NormalMessage is invalid";
// std::stringstream stream;
// stream << "[ISERVERDATA] Checksum is invalid. Calculated: [" <<
// std::ios::hex << checksum_calc << "] " <<
// "Received: [" <<
// std::ios::hex << res.checksum << "]";
// throw std::invalid_argument(stream.str());
// }

pullFromStructure(res);
}

void IServerData::pullFromStructure(ResponseNormalMessage res) {
void IServerData::pullFromStructure(ResponseNormalMessage res)
{
UVMutex.lock();

UVState.imu.roll = res.roll;
Expand All @@ -305,7 +328,8 @@ void IServerData::pullFromStructure(ResponseNormalMessage res) {
UVMutex.unlock();
}

void IServerData::parseConfigMessage(QByteArray msg) {
void IServerData::parseConfigMessage(QByteArray msg)
{
ResponseConfigMessage res;
uint16_t checksum_calc = getCheckSumm16b(msg.data(), msg.size() - 2);

Expand Down Expand Up @@ -341,20 +365,20 @@ void IServerData::parseConfigMessage(QByteArray msg) {

stream >> res.checksum;

if (res.checksum != checksum_calc) {
if (res.checksum != checksum_calc)
{
qDebug() << "Checksum ConfigMessage is invalid";
std::stringstream stream;
stream << "[ISERVERDATA] Checksum is invalid. Calculated: [" <<
std::ios::hex << checksum_calc << "] " <<
"Received: [" <<
std::ios::hex << res.checksum << "]";
stream << "[ISERVERDATA] Checksum is invalid. Calculated: [" << std::ios::hex << checksum_calc << "] "
<< "Received: [" << std::ios::hex << res.checksum << "]";
throw std::invalid_argument(stream.str());
}

pullFromStructure(res);
}

void IServerData::pullFromStructure(ResponseConfigMessage res) {
void IServerData::pullFromStructure(ResponseConfigMessage res)
{
UVMutex.lock();

UVState.imu.roll = res.roll;
Expand Down Expand Up @@ -386,7 +410,8 @@ void IServerData::pullFromStructure(ResponseConfigMessage res) {
UVMutex.unlock();
}

void IServerData::parseDirectMessage(QByteArray msg) {
void IServerData::parseDirectMessage(QByteArray msg)
{
ResponseDirectMessage res;

uint16_t checksum_calc = getCheckSumm16b(msg.data(), msg.size() - 2);
Expand All @@ -397,29 +422,34 @@ void IServerData::parseDirectMessage(QByteArray msg) {

stream >> res.checksum;

if (res.checksum != checksum_calc) {
if (res.checksum != checksum_calc)
{
std::stringstream stream;
stream << "[ISERVERDATA] Checksum is invalid. Calculated: [" <<
std::ios::hex << checksum_calc << "] " <<
"Received: [" <<
std::ios::hex << res.checksum << "]";
stream << "[ISERVERDATA] Checksum is invalid. Calculated: [" << std::ios::hex << checksum_calc << "] "
<< "Received: [" << std::ios::hex << res.checksum << "]";
throw std::invalid_argument(stream.str());
}

pullFromStructure(res);
}

void IServerData::pullFromStructure(ResponseDirectMessage res) {
void IServerData::pullFromStructure(ResponseDirectMessage res)
{
// nothing
}

/* CRC16-CCITT algorithm */
uint16_t getCheckSumm16b(char* pcBlock, int len) {
uint16_t getCheckSumm16b(char *pcBlock, int len)
{
uint16_t crc = 0xFFFF;
//int crc_fix = reinterpret_cast<int*>(&crc);
if (len <= 0)
return 0; // проверяем длину сообщения

// int crc_fix = reinterpret_cast<int*>(&crc);
uint8_t i;

while (len--) {
while (len--)
{
crc ^= *pcBlock++ << 8;

for (i = 0; i < 8; i++)
Expand All @@ -428,11 +458,15 @@ uint16_t getCheckSumm16b(char* pcBlock, int len) {
return crc;
}

void set_bit(uint8_t& byte, uint8_t bit, bool state) {
void set_bit(uint8_t &byte, uint8_t bit, bool state)
{
uint8_t value = 1;
if (state) {
if (state)
{
byte = byte | (value << bit);
} else {
}
else
{
byte = byte & ~(value << bit);
}
}
2 changes: 1 addition & 1 deletion UV/ituningdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ int ITuningData::getThrusterAmount() {
}

void ITuningData::setThrusterData(int slot, UV_Thruster data) {
if (slot < UVState.getThrusterAmount()) {
if (slot < UVState.getThrusterAmount() ) {
UVMutex.lock();
UVState.thruster[slot] = data;
UVMutex.unlock();
Expand Down
Loading