Displayed IP address is now IPv4 only due to referring IPv4 routing table
to get default route.
This feature is used by hotspots which have small LCD or OLED display
to show IP address to remote login. No effects to connect other reflectors.
If completely disabled IPv4 world will come, the code need to be revised.
all messages except clearCWInt(), scroll direction is inverted.
almost all languages are written from left to right,
so scrolling direction should be "display new right-side characters".
Currently there is six variations of (IPv4) UDPSocket.cpp.
- FMClients, NXDNClients, P25Clients, YSFClients(YSFParrot)
use ::fprintf() for logging
- YSFClients(YSFReflector)
use LogError() and LogInfo() for logging
special open(string &bindaddr) function
- YSFClients(YSFGateway), DAPNETGateway
use LogError() and LogInfo() for logging
- P25Clients, DMRGateway
use LogError() for logging
no LogInfo("Opening UDP port on") message
- NXDNClients
use LogError() for logging
no LogInfo("Opening UDP port on") message
add #include <ifaddrs.h>
- MMDVMHost
use LogError() for logging
no LogInfo("Opening UDP port on") message
no assert(!address.empty()) at constructor
to avoid explosion, commonized them.
switch ::fprintf()/LogError by #define HAVE_LOG_H
always display LogInfo("Opening UDP port on") message
delete #include <ifaddrs.h>, this is not needed
no assert(!address.empty()) at constructor
and to support YSFReflector, add multiple socket support.
default is #define UDP_SOCKET_MAX 1 so normally this feature is disabled.
added these functions.
CUDPSocket() (constructor without any parameters)
open(index, af, addr, port)
close(index)
CUDPSocket() means CUDPSocket(address = "", port = 0)
index selects socket, address and port is defined at open.
to have compatibility for old codes, these function works as
CUDPSocket(addr, port) store addr and port to index #0
CUDPSocket(port) store addr = "" and port to index #0
open() open with addr and port of index #0, AF_UNSPEC
open(af) open with addr and port of index #0, specified af
close() close *all* sockets
read/write operation is for all opened sockets.
============================
Display.cpp: In static member function 'static CDisplay* CDisplay::createDisplay(const CConf&, CUMP*, CModem*)':
Display.cpp:645:128: error: invalid new-expression of abstract class type 'COLED'
645 | display = new COLED(type, brightness, invert, scroll, rotate, logosaver, conf.getDMRNetworkSlot1(), conf.getDMRNetworkSlot2());
| ^
In file included from Display.cpp:39:
OLED.h:40:7: note: because the following virtual functions are pure within 'COLED':
40 | class COLED : public CDisplay
| ^~~~~
In file included from Display.cpp:19:
Display.h:105:15: note: 'virtual void CDisplay::writeFusionInt(const char*, const char*, unsigned char, const char*, const char*)'
105 | virtual void writeFusionInt(const char* source, const char* dest, unsigned char dgid, const char* type, const char* origin) = 0;
============================