# DMRLink SAMPLE CONFIGURATION FILE
#
# Rename to dmrlink.cfg and add your information
#
# minor tweaks to match install for use by DMRGateway
# N4IRS
#   
#

# GLOBAL CONFIGURATION ITEMS
#
[GLOBAL]
PATH: /opt/dmrlink/


# NETWORK REPORTING CONFIGURATION
#   Enabling "REPORT_NETWORKS" will cause a reporting action for
#   IPSC each time the periodic reporting loop runs, that period is
#   specified by "REPORT_INTERVAL" in seconds. Possible values
#   for "REPORT_NETWORKS" are:
#       
#       PRINT - a pretty print (STDOUT) of the data structure
#           "PRINT_PEERS_INC_MODE" - Boolean to include mode bits
#           "PRINT_PEERS_INC_FLAGS" - Boolean to include flag bits
#
#       NETWORK - This is the right way to do it. Opens a TCP socket
#           listener. The protocol is still in its infancy, but the
#           idea is that dmrlink will talk to another application
#           to send event and status updates. Of course, the big
#           goal here is a web dashboard that doesn't live on the
#           dmrlink machine itself.
#
#   PRINT should only be used for debugging; it sends prettily formatted
#   stuff to STDOUT. The others send the internal data structure of the
#   IPSC instance and let some program on the other end sort it out.
#
#   REPORT_RCM - If True, and REPORT_NETWORKS = 'NETWORK', will send RCM
#       Packets to connected reporting clients. This also requires
#       individual IPSC systems to have RCM and CON_APP both set 'True'
# 
#   REPORT_INTERVAL - Seconds between reports
#   REPORT_PORT - TCP port to listen on if "REPORT_NETWORKS" = NETWORK
#   REPORT_CLIENTS - comma separated list of IPs you will allow clients
#       to connect on.
#
[REPORTS]
REPORT_NETWORKS:
REPORT_RCM:
REPORT_INTERVAL: 60
REPORT_PORT: 4321
REPORT_CLIENTS: 127.0.0.1, 192.168.1.1
PRINT_PEERS_INC_MODE: 0
PRINT_PEERS_INC_FLAGS: 0 


# SYSTEM LOGGER CONFIGURAITON
#   This allows the logger to be configured without chaning the individual
#   python logger stuff in dmrlink.py. LOG_FILE should be a complete
#   path/filename for *your* system -- use /dev/null for non-file handlers.
#   LOG_HANDERLS may be any of the following, please, no spaces in the
#   list if you use several:
#       null
#       console
#       console-timed
#       file
#       file-timed
#       syslog
#   LOG_LEVEL may be any of the standard syslog logging levels, though
#   as of now, DEBUG, INFO, WARNING and CRITICAL are the only ones
#   used.
#
[LOGGER]
LOG_FILE: /tmp/dmrlink.log
LOG_HANDLERS: console-timed,file-timed
LOG_LEVEL: INFO
LOG_NAME: DMRlink


# DOWNLOAD AND IMPORT SUBSCRIBER, PEER and TGID ALIASES
# Ok, not the TGID, there's no master list I know of to download
# This is intended as a facility for other applcations built on top of
# DMRlink to use, and will NOT be used in DMRlink directly.
# STALE_DAYS is the number of days since the last download before we
# download again. Don't be an ass and change this to less than a few days.
[ALIASES]
TRY_DOWNLOAD: True
LOCAL_FILE: False
PATH: ./
PEER_FILE: peer_ids.csv
SUBSCRIBER_FILE: subscriber_ids.csv
TGID_FILE: talkgroup_ids.csv
PEER_URL: http://www.dmr-marc.net/cgi-bin/trbo-database/datadump.cgi?table=repeaters&format=csv&header=0
SUBSCRIBER_URL: http://www.dmr-marc.net/cgi-bin/trbo-database/datadump.cgi?table=users&format=csv&header=0
STALE_DAYS: 7


# CONFIGURATION FOR IPSC NETWORKS
# Please read these closely - catastrophic results could result by setting
# certain flags for things DMRlink cannot do.
# 
# [NAME]            The name you want to use to identify the IPSC instance (use
#                   something better than "IPSC1"...)
# ENABLED:          Should we communicate with this network? Handy if you need to
#		            shut one down but don't want to lose the config
# RADIO_ID:         This is the radio ID that DMRLink should use to communicate
# IP:               This is the local IPv4 address to listen on. It may be left
#                   blank if you do not need or wish to specify. It is mostly
#                   useful when DMRlink uses multiple interfaces to serve as an
#                   application gateway/proxy from private and/or VPN networks
#                   to the real world.
# PORT:             This is the UDP source port for DMRLink to use for this
#                   PSC network, must be unique!!!
# ALIVE_TIMER:      Seconds between keep-alive transmissions
# MAX_MISSED:       How many missed keep-alives before we remove a peer
# PEER_OPER:        This signals the master and peers whether or not we are
#                   operational. True is the only thing that makes sense.
# IPSC_MODE:        May be 'DIGITAL', 'ANALOG', or 'NONE'. Digital is really the
#                   only thing that makes sense.
# TSx_LINK:         Is this time slot linked?
# CSBK_CALL:        Should be False, we cannot process these, but may be useful
#                   for debugging.
# RCM:              Repeater Call Monitoring - don't unable unless you plan to
#                   actually use it, this creates extra network traffic.
# CON_APP:          Third Party Console App - exactly what DMRlink is, should
#                   be set to True, and must be if you intend to process RCM
#                   packets (like with network-based reporting)
# XNL_CALL:         Can cause problems if not set to False, DMRlink does not
#                   process XCMP/XNL calls.
# XNL_MASTER:       Obviously, should also be False, see XNL_CALL.
# DATA_CALL:        Process data calls. True if you want to process data calls
# VOICE_CALL:       Process voice calls. True if you want to process voice calls
# MASTER_PEER:      True if DMRlink will be the master, False if we're a peer
# AUTH_ENABLED:     Do we use authenticated IPSC?
# AUTH_KEY:         The Authentication key (up to 40 hex characters)
# MASTER_IP:        IP address of the IPSC master (ignored if DMRlink is the master)
# MASTER_PORT:      UDP port of the IPSC master (ignored if DMRlink is the master)
# GROUP_HANGTIME:   Group hangtime, per DMR configuration
#
# ...Repeat the block for each IPSC network to join.
#

[SAMPLE_PEER]
ENABLED: False
RADIO_ID: 12345
IP:  
PORT: 50000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: False
CON_APP: False
XNL_CALL: False
XNL_MASTER: False
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
AUTH_ENABLED: True
AUTH_KEY: 1A2B3C
MASTER_IP: 1.2.3.4
MASTER_PORT: 50000
GROUP_HANGTIME: 5


[SAMPLE_MASTER]
ENABLED: True
RADIO_ID: 54321
IP: 192.168.1.1
PORT: 50000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: False
CON_APP: False
XNL_CALL: False
XNL_MASTER: False
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
AUTH_ENABLED: True
AUTH_KEY: 1A2B3C
# Below not used for a Master
# MASTER_IP: 1.2.3.4
# MASTER_PORT: 50000
GROUP_HANGTIME: 5