diff --git a/Display.cpp b/Display.cpp index dc28fe2..5a74747 100644 --- a/Display.cpp +++ b/Display.cpp @@ -163,12 +163,13 @@ void CDisplay::writeDMR(unsigned int slotNo, const class CUserDBentry& src, bool m_mode2 = MODE_IDLE; } - if (writeDMRIntEx(slotNo, src, group, dst, type) < 0) { - std::string src_str; - - src_str = src.get(keyCALLSIGN); - if (!src.get(keyFIRST_NAME).empty()) + if (int err = writeDMRIntEx(slotNo, src, group, dst, type)) { + std::string src_str = src.get(keyCALLSIGN); + if (err < 0 && !src.get(keyFIRST_NAME).empty()) { + // emulate the result of old CDMRLookup::findWithName() + // (it returned callsign and firstname) src_str += " " + src.get(keyFIRST_NAME); + } writeDMRInt(slotNo, src_str, group, dst, type); } } @@ -289,6 +290,17 @@ void CDisplay::writeNXDN(const char* source, bool group, unsigned int dest, cons writeNXDNInt(source, group, dest, type); } +void CDisplay::writeNXDN(const class CUserDBentry& source, bool group, unsigned int dest, const char* type) +{ + assert(type != NULL); + + m_timer1.start(); + m_mode1 = MODE_IDLE; + + if (writeNXDNIntEx(source, group, dest, type)) + writeNXDNInt(source.get(keyCALLSIGN).c_str(), group, dest, type); +} + void CDisplay::writeNXDNRSSI(unsigned char rssi) { if (rssi != 0U) @@ -413,9 +425,11 @@ int CDisplay::writeDMRIntEx(unsigned int slotNo, const class CUserDBentry& src, /* * return value: * < 0 error condition (i.e. not supported) - * -> call writeDMRInt() to display - * = 0 no error, writeDMRIntEx() displayed whole status - * > 0 reserved for future use + * -> call writeXXXXInt() to display + * = 0 no error, writeXXXXIntEx() displayed whole status + * = 1 no error, writeXXXXIntEx() displayed partial status + * -> call writeXXXXInt() to display remain part + * > 1 reserved for future use */ return -1; // not supported } @@ -455,6 +469,13 @@ void CDisplay::writeNXDNRSSIInt(unsigned char rssi) void CDisplay::writeNXDNBERInt(float ber) { } + +int CDisplay::writeNXDNIntEx(const class CUserDBentry& source, bool group, unsigned int dest, const char* type) +{ + /* return value definition is same as writeDMRIntEx() */ + return -1; // not supported +} + /* Factory method extracted from MMDVMHost.cpp - BG5HHP */ CDisplay* CDisplay::createDisplay(const CConf& conf, CUMP* ump, CModem* modem) diff --git a/Display.h b/Display.h index 2690d94..74fa25b 100644 --- a/Display.h +++ b/Display.h @@ -66,6 +66,7 @@ public: void clearP25(); void writeNXDN(const char* source, bool group, unsigned int dest, const char* type); + void writeNXDN(const class CUserDBentry& source, bool group, unsigned int dest, const char* type); void writeNXDNRSSI(unsigned char rssi); void writeNXDNBER(float ber); void clearNXDN(); @@ -110,6 +111,7 @@ protected: virtual void clearP25Int() = 0; virtual void writeNXDNInt(const char* source, bool group, unsigned int dest, const char* type) = 0; + virtual int writeNXDNIntEx(const class CUserDBentry& source, bool group, unsigned int dest, const char* type); virtual void writeNXDNRSSIInt(unsigned char rssi); virtual void writeNXDNBERInt(float ber); virtual void clearNXDNInt() = 0;