Fix DMR status display for duplex mode
Previous change (simplyfy DMR status display) did not consider DMR duplex mode. Now DMR simplex mode uses 2-lines style, duplex mode 4-lines like this. Listening TS1 N Callsign TS2 TGxx For this change, statusLine() no longer have meaning. It will be removed in the future.
This commit is contained in:
parent
ead41ba9a5
commit
0bc6bcdb26
|
@ -447,7 +447,7 @@ CDisplay* CDisplay::createDisplay(const CConf& conf, CUMP* ump, CModem* modem)
|
||||||
serial = new CSerialController(port, (type == "TFT Serial") ? SERIAL_9600 : SERIAL_115200);
|
serial = new CSerialController(port, (type == "TFT Serial") ? SERIAL_9600 : SERIAL_115200);
|
||||||
|
|
||||||
if (type == "TFT Surenoo")
|
if (type == "TFT Surenoo")
|
||||||
display = new CTFTSurenoo(conf.getCallsign(), dmrid, serial, brightness);
|
display = new CTFTSurenoo(conf.getCallsign(), dmrid, serial, brightness, conf.getDuplex());
|
||||||
else
|
else
|
||||||
display = new CTFTSerial(conf.getCallsign(), dmrid, serial, brightness);
|
display = new CTFTSerial(conf.getCallsign(), dmrid, serial, brightness);
|
||||||
} else if (type == "Nextion") {
|
} else if (type == "Nextion") {
|
||||||
|
|
|
@ -65,7 +65,7 @@ enum LcdColour {
|
||||||
#define STATUS_CHARS (X_WIDTH / (STATUS_FONT_SIZE / 2))
|
#define STATUS_CHARS (X_WIDTH / (STATUS_FONT_SIZE / 2))
|
||||||
#define STATUS_LINES ((Y_WIDTH - STATUS_MARGIN) / STATUS_FONT_SIZE)
|
#define STATUS_LINES ((Y_WIDTH - STATUS_MARGIN) / STATUS_FONT_SIZE)
|
||||||
#define statusLineOffset(x) ((STATUS_CHARS + 1) * ((x) + 1))
|
#define statusLineOffset(x) ((STATUS_CHARS + 1) * ((x) + 1))
|
||||||
#define statusLineNo(x) ((x) * 2)
|
#define statusLineNo(x) (x)
|
||||||
#define INFO_LINES statusLineNo(2)
|
#define INFO_LINES statusLineNo(2)
|
||||||
|
|
||||||
// This module sometimes ignores display command (too busy?),
|
// This module sometimes ignores display command (too busy?),
|
||||||
|
@ -80,13 +80,15 @@ enum LcdColour {
|
||||||
#define STR_P25 "P25"
|
#define STR_P25 "P25"
|
||||||
#define STR_YSF "SystemFusion"
|
#define STR_YSF "SystemFusion"
|
||||||
|
|
||||||
CTFTSurenoo::CTFTSurenoo(const std::string& callsign, unsigned int dmrid, ISerialPort* serial, unsigned int brightness) :
|
CTFTSurenoo::CTFTSurenoo(const std::string& callsign, unsigned int dmrid, ISerialPort* serial, unsigned int brightness, bool duplex) :
|
||||||
CDisplay(),
|
CDisplay(),
|
||||||
m_callsign(callsign),
|
m_callsign(callsign),
|
||||||
m_dmrid(dmrid),
|
m_dmrid(dmrid),
|
||||||
m_serial(serial),
|
m_serial(serial),
|
||||||
m_brightness(brightness),
|
m_brightness(brightness),
|
||||||
m_mode(MODE_IDLE),
|
m_mode(MODE_IDLE),
|
||||||
|
m_duplex(duplex),
|
||||||
|
//m_duplex(true), // uncomment to force duplex display for testing!
|
||||||
m_refresh(false),
|
m_refresh(false),
|
||||||
m_refreshTimer(1000U, 0U, REFRESH_PERIOD),
|
m_refreshTimer(1000U, 0U, REFRESH_PERIOD),
|
||||||
m_lineBuf(NULL)
|
m_lineBuf(NULL)
|
||||||
|
@ -208,21 +210,37 @@ void CTFTSurenoo::writeDMRInt(unsigned int slotNo, const std::string& src, bool
|
||||||
{
|
{
|
||||||
assert(type != NULL);
|
assert(type != NULL);
|
||||||
|
|
||||||
setModeLine(STR_DMR);
|
if (m_mode != MODE_DMR) {
|
||||||
|
setModeLine(STR_DMR);
|
||||||
|
if (m_duplex) {
|
||||||
|
setStatusLine(statusLineNo(0), "Listening");
|
||||||
|
setStatusLine(statusLineNo(1), "TS1");
|
||||||
|
setStatusLine(statusLineNo(2), "Listening");
|
||||||
|
setStatusLine(statusLineNo(3), "TS2");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int pos = m_duplex ? (slotNo - 1) : 0;
|
||||||
::snprintf(m_temp, sizeof(m_temp), "%s %s", type, src.c_str());
|
::snprintf(m_temp, sizeof(m_temp), "%s %s", type, src.c_str());
|
||||||
setStatusLine(statusLineNo(0), m_temp);
|
setStatusLine(statusLineNo(pos * 2), m_temp);
|
||||||
|
|
||||||
::snprintf(m_temp, sizeof(m_temp), "TS%d %s%s", slotNo, group ? "TG" : "", dst.c_str());
|
::snprintf(m_temp, sizeof(m_temp), "TS%d %s%s", slotNo, group ? "TG" : "", dst.c_str());
|
||||||
setStatusLine(statusLineNo(1), m_temp);
|
setStatusLine(statusLineNo(pos * 2 + 1), m_temp);
|
||||||
|
|
||||||
m_mode = MODE_DMR;
|
m_mode = MODE_DMR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTFTSurenoo::clearDMRInt(unsigned int slotNo)
|
void CTFTSurenoo::clearDMRInt(unsigned int slotNo)
|
||||||
{
|
{
|
||||||
setStatusLine(statusLineNo(0), "Listening");
|
int pos = m_duplex ? (slotNo - 1) : 0;
|
||||||
setStatusLine(statusLineNo(1), "");
|
setStatusLine(statusLineNo(pos * 2), "Listening");
|
||||||
|
|
||||||
|
if (m_duplex) {
|
||||||
|
::snprintf(m_temp, sizeof(m_temp), "TS%d", slotNo);
|
||||||
|
setStatusLine(statusLineNo(pos * 2 + 1), m_temp);
|
||||||
|
} else {
|
||||||
|
setStatusLine(statusLineNo(1), "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTFTSurenoo::writeFusionInt(const char* source, const char* dest, const char* type, const char* origin)
|
void CTFTSurenoo::writeFusionInt(const char* source, const char* dest, const char* type, const char* origin)
|
||||||
|
@ -388,7 +406,7 @@ void CTFTSurenoo::refreshDisplay(void)
|
||||||
::snprintf(m_temp, sizeof(m_temp), "DCV%d(%d,%d,'%s',%d);",
|
::snprintf(m_temp, sizeof(m_temp), "DCV%d(%d,%d,'%s',%d);",
|
||||||
STATUS_FONT_SIZE, 0,
|
STATUS_FONT_SIZE, 0,
|
||||||
STATUS_MARGIN + STATUS_FONT_SIZE * i, p,
|
STATUS_MARGIN + STATUS_FONT_SIZE * i, p,
|
||||||
(i < INFO_LINES) ? INFO_COLOUR : EXT_COLOUR);
|
(!m_duplex && i >= INFO_LINES) ? EXT_COLOUR : INFO_COLOUR);
|
||||||
m_serial->write((unsigned char*)m_temp, (unsigned int)::strlen(m_temp));
|
m_serial->write((unsigned char*)m_temp, (unsigned int)::strlen(m_temp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
class CTFTSurenoo : public CDisplay
|
class CTFTSurenoo : public CDisplay
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CTFTSurenoo(const std::string& callsign, unsigned int dmrid, ISerialPort* serial, unsigned int brightness);
|
CTFTSurenoo(const std::string& callsign, unsigned int dmrid, ISerialPort* serial, unsigned int brightness, bool duplex);
|
||||||
virtual ~CTFTSurenoo();
|
virtual ~CTFTSurenoo();
|
||||||
|
|
||||||
virtual bool open();
|
virtual bool open();
|
||||||
|
@ -71,6 +71,7 @@ private:
|
||||||
ISerialPort* m_serial;
|
ISerialPort* m_serial;
|
||||||
unsigned int m_brightness;
|
unsigned int m_brightness;
|
||||||
unsigned char m_mode;
|
unsigned char m_mode;
|
||||||
|
bool m_duplex;
|
||||||
bool m_refresh;
|
bool m_refresh;
|
||||||
CTimer m_refreshTimer;
|
CTimer m_refreshTimer;
|
||||||
char* m_lineBuf;
|
char* m_lineBuf;
|
||||||
|
|
Loading…
Reference in a new issue