summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_tracker_hatire/ftnoir_tracker_hat_dialog.h
blob: e413ded651a1e448b0f4a938a4f0693c066e7f07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#ifndef FTNOIR_TRACKER_HAT_DIALOG_H
#define FTNOIR_TRACKER_HAT_DIALOG_H

#ifdef OPENTRACK_API
#include "ftnoir_tracker_base/ftnoir_tracker_base.h"
#else
#include "..\ftnoir_tracker_base\ftnoir_tracker_base.h"
#endif
#include "ftnoir_tracker_hat_settings.h"
#include "ftnoir_tracker_hat.h"
#include "ui_ftnoir_hatcontrols.h"
#include <QObject>
#include <QTime>
#include <QTimer>
#include <QMessageBox>
#include <QMetaType>

// Widget that has controls for FTNoIR protocol client-settings.
class TrackerControls: public QWidget, public ITrackerDialog
{
    Q_OBJECT
public:
	explicit TrackerControls();
    virtual ~TrackerControls();
    void Initialize(QWidget *parent) virt_override;
    void registerTracker(ITracker *tracker) virt_override;
    void unRegisterTracker() virt_override;

private:
	Ui::UIHATControls ui;
	FTNoIR_Tracker *theTracker;
	QTime last_time;
	
public  slots:
    void WriteMsgInfo(const QByteArray &MsgInfo);

protected slots:
	void set_mod_port(const QString & val)	 {  settings.SerialPortName =val;   settings_changed(); }
	void set_ena_roll(bool val)	 { settings.EnableRoll = val;    settings_changed(); }
	void set_ena_pitch(bool val) { settings.EnablePitch = val;   settings_changed(); }
	void set_ena_yaw(bool val)	 { settings.EnableYaw = val;     settings_changed(); }
	void set_ena_x(bool val)	 { settings.EnableX = val;       settings_changed(); }
	void set_ena_y(bool val)	 { settings.EnableY = val;       settings_changed(); }
	void set_ena_z(bool val)	 { settings.EnableZ = val;       settings_changed(); }

	void set_inv_roll(bool val)	 { settings.InvertRoll = val;    settings_changed(); }
	void set_inv_pitch(bool val) { settings.InvertPitch = val;   settings_changed(); }
	void set_inv_yaw(bool val)	 { settings.InvertYaw = val;     settings_changed(); }
	void set_inv_x(bool val)	 { settings.InvertX = val;       settings_changed(); }
	void set_inv_y(bool val)	 { settings.InvertY = val;       settings_changed(); }
	void set_inv_z(bool val)	 { settings.InvertZ = val;       settings_changed(); }


	void set_rot_roll(int val)	 { settings.RollAxe = val;    settings_changed(); }
	void set_rot_pitch(int val)	 { settings.PitchAxe = val;   settings_changed(); }
	void set_rot_yaw(int val)	 { settings.YawAxe = val;     settings_changed(); }
	void set_acc_x(int val)		 { settings.XAxe = val;       settings_changed(); }
	void set_acc_y(int val)		 { settings.YAxe = val;       settings_changed(); }
	void set_acc_z(int val)		 { settings.ZAxe = val;       settings_changed(); }

	void set_cmd_start(const QString &val)   { settings.CmdStart = val;   settings_changed(); }
	void set_cmd_stop(const QString &val)    { settings.CmdStop = val;    settings_changed(); }
	void set_cmd_init(const QString &val)    { settings.CmdInit = val;    settings_changed(); }
	void set_cmd_reset(const QString &val)   { settings.CmdReset = val;   settings_changed(); }
	void set_cmd_center(const QString &val)  { settings.CmdCenter = val;  settings_changed(); }
	void set_cmd_zero(const QString &val)  { settings.CmdZero = val;  settings_changed(); }

	void set_DelayInit(int val)		 { settings.DelayInit = val;      settings_changed(); }
	void set_DelayStart(int val)	 { settings.DelayStart = val;     settings_changed(); }
	void set_DelaySeq(int val)		 { settings.DelaySeq = val;       settings_changed(); }

	void set_endian(bool val)	 { settings.BigEndian = val;       settings_changed(); }

	void set_mod_baud(int val)		  { settings.pBaudRate    = static_cast<QSerialPort::BaudRate>(ui.QCB_Serial_baudRate->itemData(val).toInt()) ;       settings_changed();   }
	void set_mod_dataBits(int val)	  { settings.pDataBits    = static_cast<QSerialPort::DataBits>(ui.QCB_Serial_dataBits->itemData(val).toInt()) ;       settings_changed();   }
	void set_mod_parity(int val)      { settings.pParity      = static_cast<QSerialPort::Parity>(ui.QCB_Serial_parity->itemData(val).toInt()) ;           settings_changed();   }
	void set_mod_stopBits(int val)    { settings.pStopBits    = static_cast<QSerialPort::StopBits>(ui.QCB_Serial_stopBits->itemData(val).toInt());        settings_changed();   }
	void set_mod_flowControl(int val) { settings.pFlowControl = static_cast<QSerialPort::FlowControl>(ui.QCB_Serial_flowControl->itemData(val).toInt()) ; settings_changed();   }

	void doOK();
	void doCancel();
	void doSave();
	void doReset();
	void doCenter();
	void doZero();
	void doSend();
	void poll_tracker_info();
	void doSerialInfo();

protected:
	bool settingsDirty;
	void settings_changed();
	TrackerSettings settings;
	QTimer timer;
};

#endif //FTNOIR_TRACKER_HAT_DIALOG_H