SASANO Takayoshi 457be810a3 UDPSocket renewal
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.
2020-09-06 12:09:37 +09:00
2018-08-12 11:27:03 +02:00
2017-08-20 12:35:03 +01:00
2018-08-12 11:27:03 +02:00
2018-02-04 14:30:23 +01:00
2018-06-07 18:46:03 +01:00
2019-01-08 15:13:18 +01:00
2016-09-19 21:41:34 +01:00
2016-04-19 06:50:51 +01:00
2016-01-14 18:45:04 +00:00
2020-04-11 20:42:05 +01:00
2020-04-11 20:42:05 +01:00
2020-04-11 20:42:05 +01:00
2020-04-11 20:42:05 +01:00
2019-11-17 10:57:58 +08:00
2019-11-17 10:57:58 +08:00
2020-04-03 17:09:17 +01:00
2018-02-08 20:25:03 +00:00
2017-05-19 08:35:14 +01:00
2017-05-15 22:12:39 +01:00
2016-02-15 18:45:57 +00:00
2016-02-15 18:45:57 +00:00
2019-11-07 13:53:57 +00:00
2019-10-11 18:24:25 +01:00
2020-03-10 05:26:45 +09:00
2016-03-07 20:21:55 +00:00
2016-02-15 18:45:57 +00:00
2019-11-17 10:57:58 +08:00
2016-02-15 18:45:57 +00:00
2016-02-15 18:45:57 +00:00
2020-03-30 20:30:43 +02:00
2018-01-04 01:09:37 +01:00
2019-01-31 08:29:31 +00:00
2016-02-01 20:49:52 +00:00
2016-01-14 18:45:04 +00:00
2016-01-14 18:45:04 +00:00
2020-06-30 11:38:25 +01:00
2020-06-30 11:38:25 +01:00
2020-05-03 18:33:22 +01:00
2020-04-11 20:42:05 +01:00
2019-03-13 20:30:49 +09:00
2018-01-17 19:06:37 +00:00
2020-04-11 20:42:05 +01:00
2016-01-14 18:45:04 +00:00
2020-09-06 12:09:37 +09:00
2020-06-30 11:38:25 +01:00
2020-06-30 11:38:25 +01:00
2020-06-29 11:50:33 +01:00
2020-05-13 12:06:16 +01:00
2020-05-13 12:06:16 +01:00
2016-10-06 20:06:57 +01:00
2016-10-06 20:06:57 +01:00
2020-04-11 20:42:05 +01:00
2020-04-11 20:42:05 +01:00
2020-04-11 20:42:05 +01:00
2018-12-07 17:36:11 +08:00
2018-01-17 21:21:25 +00:00
2018-03-20 20:36:23 +00:00
2018-03-20 20:36:23 +00:00
2018-03-21 18:44:33 +00:00
2018-03-21 18:44:33 +00:00
2020-03-09 22:23:55 +09:00
2020-03-09 22:23:55 +09:00
2020-06-15 17:00:37 +01:00
2020-05-02 20:42:54 +01:00
2019-12-04 15:07:54 +01:00
2018-08-20 00:47:45 -03:00
2018-01-04 21:17:34 +00:00
2018-01-17 07:59:40 +00:00
2018-01-17 07:59:40 +00:00
2019-01-23 08:50:22 +00:00
2016-01-14 18:45:04 +00:00
2016-01-14 18:45:04 +00:00
2020-05-21 11:17:02 +01:00
2020-02-14 20:53:21 +00:00
2016-01-14 18:45:04 +00:00
2016-01-14 18:45:04 +00:00
2016-12-22 10:29:39 +00:00
2016-01-14 18:45:04 +00:00
2016-01-14 23:25:52 +00:00
2018-07-15 20:33:14 +01:00
2018-07-15 20:33:14 +01:00
2018-01-11 20:59:32 +00:00
2018-01-11 20:59:32 +00:00
2020-04-11 20:42:05 +01:00
2020-04-11 20:42:05 +01:00
2020-04-11 20:42:05 +01:00
2020-04-11 20:42:05 +01:00
2016-06-06 19:26:47 +01:00
2016-06-06 19:26:47 +01:00
2016-01-14 18:45:04 +00:00
2016-01-14 18:45:04 +00:00
2020-09-06 12:09:37 +09:00
2020-09-06 12:09:37 +09:00
2016-11-17 11:48:42 +01:00
2016-11-17 11:48:42 +01:00
2020-04-09 22:02:47 +01:00
2020-03-05 06:35:14 +09:00
2020-03-08 07:55:08 +09:00
2020-03-08 07:55:08 +09:00
2020-06-30 11:38:25 +01:00
2018-01-17 21:21:25 +00:00
2018-10-23 21:59:10 -03:00

These are the source files for building the MMDVMHost, the program that interfaces to the MMDVM or DVMega on the one side, and a suitable network on the other. It supports D-Star, DMR, P25 Phase 1, NXDN, System Fusion, POCSAG, and FM on the MMDVM, and D-Star, DMR, and System Fusion on the DVMega.

On the D-Star side the MMDVMHost interfaces with the ircDDB Gateway, on DMR it can connect to BrandMeister, DMR+, TGIF, HB Link, XLX or DMRGateway (to connect to multiple DMR networks at once) on System Fusion it connects to the YSF Gateway to allow access to the FCS and YSF networks. On P25 it connects to the P25 Gateway. On NXDN it connects to the NXDN Gateway which provides access to the NXDN and NXCore talk groups. It uses the DAPNET Gateway to access DAPNET to receive paging messages. Finally it uses the FM Gateway to interface to existing FM networks.

It builds on 32-bit and 64-bit Linux as well as on Windows using Visual Studio 2019 on x86 and x64. It can optionally control various Displays. Currently these are:

  • HD44780 (sizes 2x16, 2x40, 4x16, 4x20)
    • Support for HD44780 via 4 bit GPIO connection (user selectable pins)
    • Adafruit 16x2 LCD+Keypad Kits (I2C)
    • Connection via PCF8574 GPIO Extender (I2C)
  • Nextion TFTs (all sizes, both Basic and Enhanced versions)
  • TFT display sold by Hobbytronics in UK
  • OLED 128x64 (SSD1306)
  • LCDproc

The Nextion displays can connect to the UART on the Raspberry Pi, or via a USB to TTL serial converter like the FT-232RL. It may also be connected to the UART output of the MMDVM modem (Arduino Due, STM32, Teensy), or to the UART output on the UMP.

The HD44780 displays are integrated with wiringPi for Raspberry Pi based platforms.

The Hobbytronics TFT Display, which is a Pi-Hat, connects to the UART on the Raspbery Pi.

The OLED display needs an extra library see OLED.md

The LCDproc support enables the use of a multitude of other LCD screens. See the supported devices page on the LCDproc website for more info.

This software is licenced under the GPL v2 and is intended for amateur and educational use only. Use of this software for commercial purposes is strictly forbidden.

Description
No description provided
Readme 25 MiB
Languages
C++ 96.8%
C 1.4%
Shell 1.1%
Python 0.4%
Makefile 0.2%