forked from Sepanta/console-emulator
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
6.1 KiB
129 lines
6.1 KiB
#ifndef CONSOLE_H
|
|
#define CONSOLE_H
|
|
|
|
#define PROTOCOL_LENGTH 8
|
|
#define PacketAppDirection 0x01
|
|
#define EchoDataLength 0x02
|
|
#define EchoType 0x06
|
|
#define EchoFunctionCode 0xA4
|
|
#define ZeroValue 0x00
|
|
|
|
#include <QObject>
|
|
|
|
#include "ButtonHelper.h"
|
|
#include "FunctionCodes.h"
|
|
#include "PushButton.h"
|
|
#include "RotaryButton.h"
|
|
|
|
#include "DataSender.h"
|
|
#include "Logger.h"
|
|
|
|
class Console : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
//PushButton with LED
|
|
PUSH_BUTTON(Dual, dual, DUAL_FC, static_cast<char>(DUAL_LED_FC));
|
|
PUSH_BUTTON(Quad, quad, QUAD_FC, static_cast<char>(QUAD_LED_FC));
|
|
PUSH_BUTTON(Single, single, SINGLE_FC, static_cast<char>(SINGLE_LED_FC));
|
|
PUSH_BUTTON(P1, p1, P1_FC, static_cast<char>(P1_LED_FC));
|
|
PUSH_BUTTON(P2, p2, P2_FC, static_cast<char>(P2_LED_FC));
|
|
PUSH_BUTTON(P3, p3, P3_FC, static_cast<char>(P3_LED_FC));
|
|
PUSH_BUTTON(P4, p4, P4_FC, static_cast<char>(P4_LED_FC));
|
|
PUSH_BUTTON(P5, p5, P5_FC, static_cast<char>(P5_LED_FC));
|
|
PUSH_BUTTON(P6, p6, P6_FC, static_cast<char>(P6_LED_FC));
|
|
PUSH_BUTTON(Exit, exit, EXIT_FC, static_cast<char>(EXIT_LED_FC));
|
|
PUSH_BUTTON(Freeze, freeze, FREEZE_FC, static_cast<char>(FREEZE_LED_FC));
|
|
PUSH_BUTTON(Pointer, pointer, POINTER_FC, static_cast<char>(POINTER_LED_FC));
|
|
PUSH_BUTTON(AutoSet, autoSet, AUTOSET_FC, static_cast<char>(AUTOSET_LED_FC));
|
|
PUSH_BUTTON(Abc, abc, ABC_FC, static_cast<char>(ABC_LED_FC));
|
|
PUSH_BUTTON(FourD, fourD, FOUR_D_FC, static_cast<char>(FOUR_D_LED_FC));
|
|
PUSH_BUTTON(Clear, clear, CLEAR_FC, static_cast<char>(CLEAR_LED_FC));
|
|
PUSH_BUTTON(ThreeD, threeD, THREE_D_FC, static_cast<char>(THREE_D_LED_FC));
|
|
PUSH_BUTTON(Measure, measure, MEASURE_FC, static_cast<char>(MEASURE_LED_FC));
|
|
PUSH_BUTTON(BodyMark, bodyMark, BODY_MARK_FC, static_cast<char>(BODY_MARK_LED_FC));
|
|
PUSH_BUTTON(Patient, patient, PATIENT_FC, static_cast<char>(PATIENT_LED_FC));
|
|
PUSH_BUTTON(Utils, utils, UTILS_FC, static_cast<char>(UTILS_LED_FC));
|
|
PUSH_BUTTON(Dvd, dvd, DVD_FC, static_cast<char>(DVD_LED_FC));
|
|
PUSH_BUTTON(Report, report, REPORT_FC, static_cast<char>(REPORT_LED_FC));
|
|
PUSH_BUTTON(Probe, probe, PROBE_FC, static_cast<char>(PROBE_LED_FC));
|
|
PUSH_BUTTON(Archive, archive, ARCHIVE_FC, static_cast<char>(ARCHIVE_LED_FC));
|
|
PUSH_BUTTON(End, end, END_FC, static_cast<char>(END_LED_FC));
|
|
PUSH_BUTTON(Xtd, xtd, XTD_FC, static_cast<char>(XTD_LED_FC));
|
|
PUSH_BUTTON(Bf, bf, BF_FC, static_cast<char>(BF_LED_FC));
|
|
PUSH_BUTTON(DepthCenter, depthCenter, DEPTH_CENTER_FC, static_cast<char>(ZOOM_LED_FC));
|
|
PUSH_BUTTON(FocusCenter, focusCenter, FOCUS_CENTER_FC, static_cast<char>(FOCUS_ZONE_LED_FC));
|
|
PUSH_BUTTON(ModePwCenter, modePwCenter, MODE_PW_CENTER_FC, static_cast<char>(MODE_PW_LED_FC));
|
|
PUSH_BUTTON(ModeMCenter, modeMCenter, MODE_M_CENTER_FC, static_cast<char>(MODE_M_LED_FC));
|
|
PUSH_BUTTON(ModePdCenter, modePdCenter, MODE_PD_CENTER_FC, static_cast<char>(MODE_PD_LED_FC));
|
|
PUSH_BUTTON(ModeCCenter, modeCCenter, MODE_C_CENTER_FC, static_cast<char>(MODE_C_LED_FC));
|
|
PUSH_BUTTON(ModeBCenter, modeBCenter, MODE_2D_CENTER_FC, static_cast<char>(MODE_2D_LED_FC));
|
|
PUSH_BUTTON(DepthBottom, depthBottom, DEPTH_BOTTOM_FC, static_cast<char>(DEPTH_LED_FC));
|
|
PUSH_BUTTON(FocusBottom, focusBottom, FOCUS_BOTTOM_FC, static_cast<char>(FOCUS_DEPTH_LED_FC));
|
|
|
|
//PushButton with No LED
|
|
PUSH_BUTTON_NO_LED(Js1Top, js1Top, JOYSTICK1_TOP_FC);
|
|
PUSH_BUTTON_NO_LED(Js2Top, js2Top, JOYSTICK2_TOP_FC);
|
|
PUSH_BUTTON_NO_LED(Js3Top, js3Top, JOYSTICK3_TOP_FC);
|
|
PUSH_BUTTON_NO_LED(Js4Top, js4Top, JOYSTICK4_TOP_FC);
|
|
PUSH_BUTTON_NO_LED(Js5Top, js5Top, JOYSTICK5_TOP_FC);
|
|
PUSH_BUTTON_NO_LED(DepthTop, depthTop, DEPTHTOP_FC);
|
|
PUSH_BUTTON_NO_LED(FocusTop, focusTop, FOCUSTOP_FC);
|
|
PUSH_BUTTON_NO_LED(Js1Center, js1Center, JOYSTICK1_CENTER_FC);
|
|
PUSH_BUTTON_NO_LED(Js2Center, js2Center, JOYSTICK2_CENTER_FC);
|
|
PUSH_BUTTON_NO_LED(Js3Center, js3Center, JOYSTICK3_CENTER_FC);
|
|
PUSH_BUTTON_NO_LED(Js4Center, js4Center, JOYSTICK4_CENTER_FC);
|
|
PUSH_BUTTON_NO_LED(Js5Center, js5Center, JOYSTICK5_CENTER_FC);
|
|
PUSH_BUTTON_NO_LED(Js1Bottom, js1Bottom, JOYSTICK1_BOTTOM_FC);
|
|
PUSH_BUTTON_NO_LED(Js2Bottom, js2Bottom, JOYSTICK2_BOTTOM_FC);
|
|
PUSH_BUTTON_NO_LED(Js3Bottom, js3Bottom, JOYSTICK3_BOTTOM_FC);
|
|
PUSH_BUTTON_NO_LED(Js4Bottom, js4Bottom, JOYSTICK4_BOTTOM_FC);
|
|
PUSH_BUTTON_NO_LED(Js5Bottom, js5Bottom, JOYSTICK5_BOTTOM_FC);
|
|
PUSH_BUTTON_NO_LED(TrackballTop, trackballTop, TRACKBALL_TOP_FC);
|
|
PUSH_BUTTON_NO_LED(TrackballTopRight, trackballTopRight, TRACKBALL_TOP_RIGHT_FC);
|
|
PUSH_BUTTON_NO_LED(TrackballRight, trackballRight, TRACKBALL_RIGHT_FC);
|
|
PUSH_BUTTON_NO_LED(TrackballBottomRight, trackballBottomRight, TRACKBALL_BOTTOM_RIGHT_FC);
|
|
PUSH_BUTTON_NO_LED(TrackballBottom, trackballBottom, TRACKBALL_BOTTOM_FC);
|
|
PUSH_BUTTON_NO_LED(TrackballBottomLeft, trackballBottomLeft, TRACKBALL_TOP_BOTTOM_FC);
|
|
PUSH_BUTTON_NO_LED(TrackballLeft, trackballLeft, TRACKBALL_LEFT_FC);
|
|
PUSH_BUTTON_NO_LED(TrackballTopLeft, trackballTopLeft, TRACKBALL_TOP_LEFT_FC);
|
|
|
|
//ROTAY_BUTTON with LED
|
|
ROTARY_BUTTON(Focus, focus, FOCUS_FC, static_cast<char>(ANGLE_LED_FC));
|
|
ROTARY_BUTTON(ModeM, modeM, MODE_M_FC, static_cast<char>(QUADRAT_LED_FC));
|
|
ROTARY_BUTTON(ModePd, modePd, MODE_PD_FC, static_cast<char>(Z_LED_FC));
|
|
ROTARY_BUTTON(ModeC, modeC, MODE_C_FC, static_cast<char>(Y_LED_FC));
|
|
ROTARY_BUTTON(ModeB, modeB, MODE_2D_FC, static_cast<char>(X_LED_FC));
|
|
|
|
//ROTAY_BUTTON with No LED
|
|
ROTARY_BUTTON_NO_LED(Js1, js1, JOYSTICK1_FC);
|
|
ROTARY_BUTTON_NO_LED(Js2, js2, JOYSTICK2_FC);
|
|
ROTARY_BUTTON_NO_LED(Js3, js3, JOYSTICK3_FC);
|
|
ROTARY_BUTTON_NO_LED(Js4, js4, JOYSTICK4_FC);
|
|
ROTARY_BUTTON_NO_LED(Js5, js5, JOYSTICK5_FC);
|
|
ROTARY_BUTTON_NO_LED(Depth, depth, DEPTH_FC);
|
|
ROTARY_BUTTON_NO_LED(ModePw, modePw, MODE_PW_FC);
|
|
|
|
private:
|
|
DataSender* _dataSender;
|
|
Logger* _logger;
|
|
|
|
public:
|
|
Console();
|
|
|
|
void injectDataSender(DataSender* sender);
|
|
void injectLogger(Logger* logger);
|
|
void hasValidDataFormat(const QByteArray& data);
|
|
bool isEchoPacket(const QByteArray& data);
|
|
void initializeButtons();
|
|
|
|
signals:
|
|
void dataReady(QByteArray data, Logger* log);
|
|
|
|
//uncrustify off
|
|
public slots:
|
|
//uncrustify on
|
|
void newData(QByteArray data);
|
|
};
|
|
|
|
#endif //CONSOLE_H
|
|
|