Previous- Index- Web- next- page



The DIGI_NED syntaxes

The DIGI_NED syntaxes, Version: 1.02-032 Date: January 14, 2002 By: PE1MEW (pe1mew@qsl.net).


About this manual

Preamble.

These are the DIGI_NED syntaxes. This manual is intended to be the reference for APRS users using the near-by DIGI_NED digipeater and for DIGI_NED digipeater owners who wish to build and maintain their DIGI_NED APRS digipeater.

Contens of this MANUAL.

  1. About this manual
    1. Preamble
    2. Contens of this manual
    3. Availability and version number
    4. Disclaimer
    5. Comments and contributions
  2. The DIGI_NED.INI syntaxes
    1. Intoduction
    2. Send (periodic transmission of data)
    3. Beacon (periodic transmission of data)
    4. Wx (composition of data frame)
    5. Serial
    6. Telemtry
    7. Tele_Info
    8. Wx_var: (value variable)
    9. Wx_var: (time variable)
    10. Command
    11. Digipeat
    12. DigiEnd
    13. DigiTo
    14. DigiSsid
    15. Ssid_Ignore_Data
    16. Preempt
    17. Preempt_keep
    18. Preempt_never_keep
    19. Local
    20. Size_Heard_List
    21. Size_Heard_Show
    22. Digi_Pos
    23. Dx_Times
    24. Dx_Metric
    25. Dx_Level
    26. Dx_Path
    27. Dx_Portname
    28. Keep_Time
    29. Short_Keep_Time
    30. Data_Prefix
    31. Message_File
    32. Message_keep_time
    33. Message_Path
    34. Max_Msg_Hops
    35. Kenwood_Mode
    36. Digi_Altitude
    37. Digi_Use_Local
    38. Digi_Utc_Offset
    39. Sat_In_Range_Interval
    40. Sat_Out_Of_Range_Interval
    41. Track_Duration
    42. Satellite_file
    43. Update_tle_file
    44. Sat_obj_format
    45. Block
    46. Via_Block
    47. Allow_To
    48. Allow_From
    49. Msg_Block
    50. Digi_Owner
    51. Enable_Exit
    52. Logfile
    53. Digi_Call
    54. Digi_Dest
  3. The Beacon and Send rule in detail
    1. Position information
    2. Status information
    3. Bulletins and announcements.
  4. Beacon files syntaxes.
  5. Digi_ned.mes syntaxes.
  6. Digi_tlm.ini syntaxes
  7. Digi_ned.sat syntaxes
  8. Digi_ned.tle syntaxes

 

Availability and version number.

This manual uses the available documentation released with the DIGI_NED executeable and source distribution. In the top part of each page you can find the version number and release date.

Disclaimer.

This manual is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Comments and contributions.

If you have any additional comments or corrections to this documentation feel free to contribute.

To verify and add your contibution stick to these little rules:

Send your comments to the DIGI_NED team: digi_ned@qsl.net


The DIGI_NED.INI syntaxes

Introduction.

This is DIGI_NED, a rule driven digipeater using an INI file and containing special functions for use with APRS.

APRS is a registered trademark of Bob Bruninga, WB4APR. His homepage can be found at: http://web.usna.navy.mil/~bruninga/aprs.html.

Here is an overview of the syntax of all the commands used in the "digi_ned.ini" file:

Send:

(additonal information available)

send: <time> <to-ports> [<dest>],[<digis>] <filename>

time = interval time in minutes
to-ports = <port>[,<port>]... or "all" for all ports
dest = destination call, for example DIGI_DEST, ID or BEACON
digis = <digi>[,digi]... via digipeater calls for beacon
filename = name of the file containing the beacon data
digi = digipeater call, for example WIDE or TRACE6-6.
port = 1..(number of last active port)

example:

send: 20 all DIGI_DEST,WIDE,TRACE6-6
digibcon.ini

This variable does not respond to a '?APRS?' query.

Beacon:

(additonal information available)

beacon: <time> <to-ports> [<dest>],[<digis>]
<filename>

time = interval time in minutes
to-ports = [,]... or "all" for all ports
dest = destination call, for example DIGI_DEST, ID or BEACON
digis = [,digi]... via digipeater calls for beacon
filename = name of the file containing the beacon data
digi = digipeater call, for example WIDE or TRACE6-6.
port = 1..(number of last active port)

example:

beacon: 20 all DIGI_DEST,WIDE,TRACE6-6
digibcon.ini

This variable responds to a '?APRS?' query with a immediate broadcast of all rules defined using te beacon rule.

Wx:

wx: < time > < to-ports > [< dest >],[< digis >] [< wx-string >]

time = interval time in minutes
to-ports = < port >[,< port >]... or "all" for all ports
dest = destination call, for example DIGI_DEST, WX or BEACON
digis = < digi >[,digi]... via digipeater calls for beacon
wx-string = format specification, ascii string with format commands to insert wx variables defined with wx_var: Formatting for variable "v" with value 123:

"%v" -> "123" (takes as much space as needed)
"%4v" -> " 123" (always 4 characters)
"%-4v" -> "123 " (always 4 characters, left aligned)
"%04v" -> "0123" (always 4 characters, zero padding)
"%02v" -> "23" (always 2 characters, truncates)
"the value of v=%v" -> "the value of v=123"
use "\%" to get a "%" in the output
use "\\" to get a "\" in the output

digi = digipeater call, for example WIDE or TRACE6-6.
port = 1..(number of last active port)

When a WX variable is used in "wx:" but is not defined with "wx_var:" the DIGI_NED issues a warning (at runtime).

example:

wx: 5 all APRS,WIDE,WIDE _%08Dc%03cs%03sg%03gt%03tr%03rp%03pP%03Ph%02hb%05b#%03#xDned

This format could generate for example:

_09022027c210s008g009t063r000p004P004h80h10090#004xDned

This variable responds to a '?WX?' query with a immediate broadcast of all rules defined using te 'wx' rule.

Serial:

serial: <time> <to-ports> <com> <speed> [<dest>],[<digis>][<sentence>]...

time = interval time in minutes
to-ports = <port>[,<port>]... or "all" for all ports
com = COM port, allowed COM1..9, for DOS only up to COM4
speed = Baudrate, accepted are 1200, 2400, 4800 and 9600 baud
dest = destination call, for example DIGI_DEST, ID or BEACON
digis = <digi>[,digi]... via digipeater calls for beacon
sentence = name of the sentence to pick up, if empty all data is picked up.
digi = digipeater call, for example WIDE or TRACE6-6.
port = 1..(number of last active port) Note: for DOS only one "serial:" rule is accepted.

example:

serial: 10 all com3 4800 GPSODN,WIDE,WIDE3-3 $GPRMC $GPGGA

Telemetry:

telemetry: <time> <sources> <to-ports> [<dest>],[<digis>]

time = interval time in minutes
sources = <analog>,[<analog>,<analog>,<analog>,<analog>,<bin>]
analog = <source>[/<address>]
bin = <source>[/<address>]
source = lpt<n>|lpt<n>_8|off
address = 0-7
n = 1-3
to-ports = <port>[,<port>]... or "all" for all ports
dest = destination call, for example DIGI_DEST
digis = <digi>[,digi]... via digipeater calls for beacon
digi = digipeater call, for example WIDE or TRACE6-6.
port = 1..(number of last active port)

example:

telemetry: 15 all lpt2/1,off,off,off,off,lpt2_8 DIGI_DEST

Tele_Info:

tele_info: <beacon-file>

beacon-file = file containing telemetry information (PARM.,UNIT.,EQNS.,BITS. messages addressed to the digi itself. See APRS Specification on http://www.tapr.org for details)

example:

tele_info: digi_tlm.ini

Wx_var: (using a value variable)

wx_var: <var>,<kind>[time],<source[/<address>],<a>,<b>,<c>

var = variable symbol, single character a-z,A-Z and symbols like #,$,@ etc.
kind = kind of variable. for a value variable this can be:

val -> direct value
max -> max since midnight
min -> min since midnight
sum -> sum since midnight
avg -> average since midnight
max60 -> max over 60 minutes, passed 1 hour
min60 -> min over 60 minutes, passed 1 hour
sum60 -> sum over 60 minutes, passed 1 hour
max120 -> max over 120 minutes, passed 2 hours
min120 -> min over 120 minutes, passed 2 hours
sum1440 -> sum over 1440 minutes, passed 24 hours
avg60 -> average over 60 minutes
dhm -> day, hour, minute value
hms -> hour, minute, second value
ymd -> year, month, day value
ydm -> year, day, month value
dmy -> day, month, year value
mdy -> month, day, year value
mdh -> month, day, hour value
mdhm -> month, day, hour, minute value

time = for variable kinds "max", "min" and "sum" the timespan over which data is collected in minutes
source = lpt|lpt_8
address = 0-7
a = floating point constant, parameter "a" of formula, value=a(x*x)+b(x)+c
b = floating point constant, parameter "b" of formula, value=a(x*x)+b(x)+c
c = floating point constant, parameter "c" of formula value=a(x*x)+b(x)+c

example:

wx_var: v,min60,lpt2/1,0,1.0,0

Wx_var: ( using a time variable)

wx_var: <var>,<kind,<zone>

var = variable symbol, single character a-z,A-Z and symbols like #,$,@ etc.
kind = kind of variable. for a time variable this can be:

dhm -> day, hour, minute value
hms -> hour, minute, second value
ymd -> year, month, day value
ydm -> year, day, month value
dmy -> day, month, year value
mdy -> month, day, year value
mdh -> month, day, hour value
mdhm -> month, day, hour, minute value
zone = timezone, either "zulu" or "local"

example:

wx_var: t,hms,local

Command:

command: <command-line>

command-line = line containing a command for DIGI_NED. The command is send to DIGI_NEDs message system. Responses appear on screen. Used to inititalize remote-controlled output ports.

example:

command: !out 2 01101011
command: !ptt 11x001

Digipeat:

digipeat: <from-ports> <due-digis> <to-ports> [operation[n] [<digis>]]

from-ports = <port>[,<port>]..., "all" for all ports, "allbut" for all ports except the reception-port
due-digis = <due>[,<due>]... list of "due" digipeaters to pick from
to-ports = <port>[,<port>]... or "all" for all ports
operation = add | replace | new | swap | hijack | erase | keep | shift
n = number of digipeater calls to mark as "used", default 1
digis = <digi>[,digi]... list of digipeater calls
port = 1..(number of last active port)
due = digipeater call which is next due, for example WIDE or TRACE, supports wildcards ?, #, @ and *.
digi = digipeater call parameter for operation, for example WIDE or TRACE6-6.

example:

digipeat: all wide7-7 all swap DIGI_CALL,wide7-6

DigiEnd:

digiend: <from-ports> <end-digis> <to-ports> [operation[n] [<digis>]]

from-ports = <port>[,<port>]..., "all" for all ports, "allbut" for all ports except the reception-port
end-digis = <end>[,<end>]... list of "last" used digipeaters to react on
to-ports = <port>[,<port>]... or "all" for all ports
operation = add | replace | new | swap | hijack | erase | keep | shift
n = number of digipeater calls to mark as "used", default 1
digis = <digi>[,digi]... list of digipeater calls
port = 1..(number of last active port)
end = digipeater call which was last used, for example WIDE or TRACE, supports wildcards ?, #, @ and *.
digi = digipeater call parameter for operation, for example WIDE or TRACE6-6.

example:

digiend: all wide*,trace* 2 add LOCAL

DigiTo:

digito: <from-ports> <destinations> <to-ports> <ssid> [operation[n] [<digis>]]

from-ports = <port>[,<port>]..., "all" for all ports, "allbut" for all ports except the reception-port
destinations = <dest>[,<dest>]... list of destination calls to pick from
to-ports = <port>[,<port>]... or "all" for all ports
operation = add | replace | new | swap | hijack | erase | keep | shift
n = number of digipeater calls to mark as "used", default 1
digis = <digi>[,digi]... list of digipeater calls
port = 1..(number of last active port)
dest = destination call for example APRS or BEACON, supports wildcards ?, #, @ and *.
digi = digipeater call parameter for operation, for example WIDE or TRACE6-6.

example:

digito: 1 *-12 all 0 add WIDE

DigiSsid:

digissid: <from-ports> <destinations> <to-ports> <ssid> [operation[n] [<digis>]]

from-ports = <port>[,<port>]..., "all" for all ports, "allbut" for all ports except the reception-port
destinations = <dest>[,<dest>]... list of destination calls to pick from
to-ports = <port>[,<port>]... or "all" for all ports
operation = add | replace | new | swap | hijack | erase | keep | shift
n = number of digipeater calls to mark as "used", default 1
digis = <digi>[,digi]... list of digipeater calls
port = 1..(number of last active port)
dest = destination call for example APRS or BEACON, supports wildcards ?, #, @ and *.
digi = digipeater call parameter for operation, for example WIDE or TRACE6-6.

example:

digissid: 1 *-12 all 0 add WIDE

Ssid_Ignore_Data:

ssid_ignore_data: <char>[<char>]...

char = character to compare with first character of received data to determine if the packet is valid for digipeating on SSID.

example:

ssid_ignore_data: ~

Preempt:

preempt: <from-ports> <on-digis> [<replace>]

from-ports = <port>[,<port>]..., "all" for all ports
on-digis = <find>[,<find>]... list of digis to search for and act on when found, supports wildcards ?, #, @ and *.
port = 1..(number of last active port)
find = digipeater call to find in the "via" list. When found, preemption takes place.
replace = replacement digipeater call, will replace the found digipeater call. If not specified the digipeater call is left untouched

example:

preempt: all PE1DNN-2 WIDE

Preempt_keep:

preempt_keep: <digis>

digis = <keep>[,<keep>]... list of digipeaters to keep when preemption takes place on the frame, supports wildcards ?, #, @ and *.
keep = digipeater call to retain in the "via" list when the frame is preempted

example:

preempt_keep: PA*,PE*,PD*,PI*

Preempt_never_keep:

preempt_never_keep: <digis>

digis = <keep>[,<keep>]... list of digipeaters which should never be kept when preemption takes place on the frame, supports wildcards ?, #, @ and *.
keep = digipeater call to retain in the "via" list when the frame is preempted

example:

preempt_never_keep: RELAY*,WIDE*,TRACE*,GATE*

Local:

local: <local-ports>

local-ports = <port>[,<port>]... or "all" for all ports

example:

local: 2

Size_Heard_List:

size_heard_list: <number>

number = maximum number of direct calls that will be kept in "mheard" lists (cumulative for all ports)

example:

size_heard_list: 150

Size_Heard_Show:

size_heard_show: <number>

number = maximum number of direct calls that will be shown in an ?mheard (or ?mh) query

example:

size_heard_show: 40

Digi_Pos:

digi_pos: <lattitude> <longitude>

lattitude = latitude of this digipeater in APRS-style format
longitude = longitude of this digipeater in APRS-style format

example:

digi_pos: 5213.61N 00600.00E

Dx_Times:

dx_times: <time>[,<time>...]

time = time in hours for which the best DX shall be shown. the distance and bearing information is stored in the mheard list (if the time is bigger than the oldest entry in the mheard list then older stations cannot be checked). Use "all" for the best DX of all entries in the mheard list.

example:

dx_times: all,24,1

Dx_Metric:

dx_metric: <metric>

metric = metric to use for distances. "km" for kilometers, "mi" for statue miles or "nm" for nautical miles.

example:

dx_metric: km

Dx_Level:

dx_level: <ports> <threshold> <age>

ports = <port>[,<port>]..., "all" for all ports threshold = <min>[-<max>]
age = number in hours. If a station which is received directly is the "best DX" in the last <age> hour then a DX message is send out (if the distance is above the threshold).
port = 1..(number of last active port)
min = distance in km, mi or nm (see dx_metric:), distances below this threshold are never DX for this port or these ports (used to filter out near stations).
max = distance in km, mi or nm (see dx_metric:), distances above this threshold are never DX for this port or these ports (used to filter out bogus locations).

example:

dx_level: all 50-2000 1

Dx_Path:

dx_path: <to-ports> [<dest>],[<digis>]

to-ports = <port>[,<port>]... or "all" for all ports
dest = destination call, for example DX
digis = <digi>[,digi]... via digipeater calls for DX message
digi = digipeater call, for example WIDE or TRACE6-6.
port = 1..(number of last active port)

example:

dx_path: all DX,TRACE,WIDE

Dx_Portname:

dx_portname: <port> <portname>
port = 1..(number of last active port)
portname = name for the port, may include spaces, runs until end of line.

example:

dx_portname: 1 2 mtr

Keep_Time:

keep_time: <number>

number = number of seconds to remember already digipeated data

example:

keep_time: 300

Short_Keep_Time:

short_keep_time: <number>

number = number of seconds to remember already digipeated data which matched with "data_prefix:", see below

example:

short_keep_time: 10

Data_Prefix:

data_prefix: <char>[<char>]...

char = character to compare with first character of received data to determine how long to remember this data if it is digipeated.

example:

data_prefix: :?

Message_File:

message_file: <filename>

filename = name of the file to read message queries and answers from

example:

message_file: digi_ned.mes

Message_keep_time:

message_keep_time: <number>

number = number of seconds to remember messages send to the digipeater (queries) to avoid double answers to one an the same query.

example:

message_keep_time: 900

Message_Path:

message_path: <to-ports> <digis>

to-ports = <port>[,<port>]... or "all" for all ports
digis = <digi>[,digi]... via digipeater calls for message responses
digi = digipeater call, for example WIDE or TRACE6-6.
port = 1..(number of last active port)

example:

message_path: all TRACE,WIDE

Max_Msg_Hops:

max_msg_hops: <hopcount>

hopcount = 1..(number of hops)

example:

max_msg_hops: 2

Kenwood_Mode:

kenwood_mode: <mode>

mode = 0..2
0 = off (when off also other AX.25, IP, NETROM and ARP packets can be digipeated, otherwise only UI frames with PID=F0)
1 = truncate packets which are too long for the TH-D7E to digest (stops APRS function if too long)
2 = ignore packets which are too long for the TH-D7E to digest (stops APRS function if too long)

example:

kenwood_mode: 1

Digi_Altitude:

digi_altitude: <altitude>

altitude = altitude of the digi in meters (1 meter is approx. 3.28 feet, not critical).

example:

digi_altitude: 10

Digi_Use_Local:

digi_use_local: <time_mode>

time_mode = 0|1
0 = use UTC
1 = use local time
this is used for the display of AOS time in satellite objects.

example:

digi_use_local: 1

Digi_Utc_Offset:

digi_utc_offset: <time_diff>

time_diff = [+|-]<number> UTC offset for the digi (EST = -5).

Make sure to correct this for daylight savings. If the environment variable TZ is set on your system then this value is overruled.

example:

digi_utc_offset: +2

Sat_In_Range_Interval:

sat_in_range_interval: <interval>

interval = <number> time (in minutes) between transmission of satellite objects when satellite is in range.

example:

sat_in_range_interval: 1

Sat_Out_Of_Range_Interval:

sat_out_of_range_interval: <interval>

interval = <number> time (in minutes) between transmission of satellite objects when satellite is out of range.

example:

sat_out_of_range_interval: 10

Track_Duration:

track_duration: <interval>

interval = <number> duration time (in minutes) of tracking.

During tracking satellites are transmitted with the interval specified with sat_in_range_interval: and sat_out_of_range_interval: After expiration of the track_duration: time transmission of objects stops. Tracking is started on request of a user by means of a "?trk" query.

example:

track_duration: 105

Satellite_file:

satellite_file: <filename>

filename = name of the file to read the satellite kepler data from for the satellite query functions.

example:

satellite_file: digi_ned.sat

Update_tle_file:

update_tle_file: <filename>

filename = name of the file to read updates for the satellite kepler data from.

This data is used to update the file specified with the rule satellite_file:

example:

update_tle_file: digi_ned.tle

Sat_obj_format:

sat_obj_format: 0|1|2|3

format = number 0..3 which specifies which format to use for satellite objects.
0) Show as "AO40 E" (plain)
1) Show as "AO40 126E" (with kepler data epoch)
2) Show as "AO40 0805" (with kepler data date, ddmm)
3) Show as "AO40 0508" (with kepler data date, mmdd)

example:

sat_obj_format: 2

Block:

block: <call>[,<call>]...

call = source call from which no frames are accepted

example:

block: N0CALL,NOCALL,MYCALL

Via_Block:

via_block: <digi>[,<digi>]...

digi = digipeater call from which frames that passed it are not accepted

"via_block:" also considers calls in the third-party header. It only considders the most recent 3rd party header, not recursive when the embedded packet contains another 3rd party header.

example:

via_block: TCPIP,IGATE

Allow_To:

allow_to: <from-ports> <calls>

from-ports = <port>[,<port>]... or "all" for all ports
calls = <call>[,call]... destination APRS calls that are accepted on this port
call = destination call, for example AP*,GPS*,DX*,ID*
port = 1..(number of last active port)

example:

allow_to: 2 AP*,GPS*,DX*,ID*

Allow_From:

allow_from: <from-ports> <calls>

from-ports = <port>[,<port>]... or "all" for all ports
calls = <call>[,call]... originator calls that are accepted on this port
call = originator call, for example PD*PE*,PA*,PI* to accept only Dutch stations on this port
port = 1..(number of last active port)

example:

allow_from: 1 PD*,PE*,PA*,PI*

Msg_Block:

msg_block: <call>[,<call>]...

call = source call from which no queries are accepted

example:

msg_block: N0CALL,NOCALL,MYCALL

Digi_Owner:

digi_owner: <call>[,<call>]...

call = call of the digipeater owner.

This needs to be set mandatory in the .ini file and shall contain at least 1 call.

example:

digi_owner: PE1DNN,PE1DNN-7,PE1MEW

Enable_Exit:

enable_exit: 0 | 1

0 = disable remote shutdown feature
1 = enable remote shutdown feature (digi_owner only!)

example:

enable_exit: 1

Logfile:

logfile: [<filename>]

filename = name of the file to write logdata to, no filename means no logging

example:

logfile: digi_ned.log

Digi_Call:

digi_call: <call>

call = call of the digipeater

This needs to be set mandatory in the .ini file.

example:

digi_call: PE1DNN-2

Digi_Dest:

digi_dest: <call>

call = destination call used for beacons and messages

This needs to be set mandatory in the .ini file.

DIGI_NED uses destination address APNDxx. The prefix APN can be shared with other intelligent digipeaters. The prefix APND is reserved for DIGI_NED in coordination with the APRS protocol workgroup.

The DIGI_NED version number is now compressed in 2 alfanumeric bytes. For this count base 36 is used to have enough numbers to identifiy DIGI_NED versions, I.e counting goes: 01,02,...,09,0A,0B,...,0Z,10,11,..,1Z,20,...,etc where 01 is version 0.0.1, 0Z is version 0.3.5 and 10 is version 0.3.6 etc. It is not as clear as the old numbering, but this leaves space for other applications using the APN prefix. (P.S. Suggestions to use different destination addresses have been declined in coordination with the APRS protocol workgroup members. The version identification is an part of the APRS standard, the type of message can be identified with the whole frame anyway).

example:

digi_dest: APND0U

The Beacon and Send rule in detail

The beacon files can contain everything you wish to be broadcasted. As a matter of fact you are free to use each file name you like ! as long as it is specified in the digi_ned.ini file properly. But in a few cases more can be done. The difference between "send:" and "beacon:" is that only beacons specified with "beacon:" will be send upon reception of an ?APRS? broadcast from a user.

To create a proper beacon use the APRS specifications at http://www.tapr.org

Position information.

The given beacon can be used by DIGI_NED for retrieving the digi location. This is required for the DX and SAT function. The file should contain a following format:

<digibcon.ini>
!5209.71N200548.98E#PHG4630/RadioKootwijk http://go.to/pi1apk mail:pi1apk@go.to
<EOF>

But also compressed position information can be transmitted using DIGI_NED. For this we have to compose the compressed format and split the data into the address and content for the file. a example could look like this:

send 30 all U2QPT0

digibcon.ini
`{N< l #NRadioKootwijk http://go.to/pi1apk mail:pi1apk@go.to >
<eof>

When we look to the result we have something like this:

PI1APK>U2QPT0:`{N< l #NRadioKootwijk http://go.to/pi1apk mail:pi1apk@go.to >

The character just before the "#" is hex 0x1c, the one preceeding that is just a space (0x20). BE AWARE for some reasons regarding the html make-up of this document after the '<' a additional space (0x20) is added.

Status information.

By choosing the following contens you send a status message in APRS format:

<digistat.ini>
<this is a status text
<EOF>

Bulletins and announcements.

Using DIGI_NED it is is possible to send data in a bulletin or announcement format. The only disadvantage at this moment is that the transmission cycle when the SENS od BEACON rule is used is permanent and does not end.

The following formats can be put in the file you wish to transmit or in the digi_ned.mes-file.

For bulletins the aprs specification uses BLN followed by a single number for identification of the bulletin fillowed by 5 spaces (0x20). Commom messages or bulletins contain information of temporary nature. These messages are transmitted for several hours.

Announcements use the BLN followed by a single capital letter to identify the announcement. announcements are less often sent but for couple of days.

Group messages are sent to a group of ussers. A group addressed message contains the BLN ID followed by a single number is identification, and a group name. This group name has a maximum length of 5 characters. A big advantage of this group bulletin is that the user, depending on the client software he uses, can filter the bulltins het wants to receive

So now we know what is right, we can take a short look to what is wrong. The following bulletins and announcements are all wrong formatted:

:BLN-10-3 : :BLN-100 : :BLN-101: :BLN-5TND4: :BLN-BBS : :BLN-DIGI : :BLN-F : :BLN-ISS : :BLN-NWS : :BLN-NY : :BLN-PAPDO: :BLN-PMS : :BLN-RBV : :BLN-RDF : :BLN-SMART: :BLN-TIME : :BLN-TIME2: :BLN-TT? : :BLN-UHF : :BLN-VERON: :BLN-WTIME: :BLN0000 : :BLN0015 : :BLN0025 : :BLN0035 : :BLN0040 : :BLN0050 : :BLN0055 : :BLN0100 : :BLN0105 : :BLN0115 : :BLN0120 : :BLN0125 : :BLN0130 : :BLN0145 : :BLN0150 : :BLN0155 : :BLN1.6-BY: :BLN1.6T-T: :BLN10 : :BLN1128 : :BLN1206 : :BLN1406 : :BLN1516 : :BLN1536 : :BLN1606 :

:BLN_SAT : Is also wrong formatted, the "_" is not allowed.

:BLN1MYK : :BLN1PHG : :BLN2340 : :BLN2345 : :BLN2350 : :BLN2355 : :BLN2PHG : :BLN3PHG : :BLN4PHG : :BLN5PHG : :BLN6PHG :

Okay! These are alle specific groups but probably they are not ment to be groups. So be aware of what you want to transmit to who.

The DIGI_NED.MES syntaxes

The file "digi_ned.mes" contains auto-reply strings for simple text reponses. Here you can define aditional queries to complement with build in queries. The only queries which are build-in are the queries which return a runtime-dependent reply string. All queries which have static textst are defined in this file.

Syntax is simple, each query starts with an ?, the lines following it up to the next query is the response, empty lines and lines starting with '#' are ignored. Multiple lines are allowed.

The first character of each line is interpreted and determines how the answer is send back. These characters are the following:

The '\' character can be used as 'escape' if you want your message to start with '?', '#', ')', ':', '!' or '>'. If you want the message to start with a '\' character then use "\\".

Aliasses for the same query can be specified, for example:

?help|?h responds to query "?help" and shortcut "?h".

Also wildcards can be used. ?h* for example matches all queries thatstart with ?h. Be carefull with this not to create ambiguity which will be confusing!

Wild cards are:

When '*' is used and additional characters follow after the '*' then characters in the received query will be skipped until a match is found again, from that point checking will proceed.

Example:

Using "s*on" will match "station" but not "stat"; after the '*' the code will look for an 'o' and proceed checking from there. In case of "stat" the 'o' is not found and the match fails. When matching with "stations" the match also fails since the part from the 'o' until the end is not the same. "s*on*" will match both "station" and "stations". For an example look at the "?whois" query below that uses a wildcard to match any argument following whois.

On all queries the ? is optional, so you can also use "help" and "h" with the above example (same applies to the build-in queries like "mheard" etc). Query strings can be mixed case (doesn't matter), the user can use mixed case when he queries DIGI_NED.

The query that only consists of one '?' is a special one since this the response for this query is also the default reply on any query that doesn't match.

Lines, query lines and answers, can be up to 67 characters,

longer lines will be truncated In this example file I allligned the messages to nicely fit on the 12 character THD7 screen.

It is strongly recommended to keep these basic entries like ?help ?digi, ?voice, ?bbs etc. so new people on the move which enter your system can guess what to expect without having to dig through the help first. I take a risk here by allowing you to make changes, please think about the mobile and stations not familiar with your neigborhood and area. I think they will appriciate to find the commands ?voice and ?net to work to make initial contact with you!

The digi_ned.mes file shows a wide range of examples

The DIGI_TLE.INI syntaxes

The "digi_tlm.ini" file contains all required information for the APRS client such as WinAPRS to deal with the telemetry information broadcasted. The contens of the file is exactly what to be broadcasted. The telemetry frames are discribed in the APRS specifications.

Also DIGI_NED uses this file to configure it's telemetry function properly.

NOTE: every position in the file is important for the transmission of this information in a proper way. The APRS specified frame is composed here. This frame meets the APRS specifications. If you don't know what you are doing: just keep out. Or read the APRS specifications at http://www.tapr.org

<digi_tlm.ini>
:PE1DNN-2 :PARM.Battery,Btemp,None,None,None,Busy,Ack,PE,Sel,Err,NC,NC,NC
:PE1DNN-2 :UNIT.volt,deg.C,None,None,None,high,high,hig,hig,hig,hi,hi,hi
:PE1DNN-2 :EQNS.0,0.0625,0,0,1,0,0,1,0,0,1,0,0,1,0
:PE1DNN-2 :BITS.11111111,DIGI_NED Telemetry
<EOF>

The DIGI_NED.SAT syntaxes

The Update Database File "digi_ned.sat". This file is used by DIGI_NED to update the digi_ned.tle database file.

This file contains Two Line Elements (keppler sets) of satellites that you want to update the satellite database with. Usually it is simply the content of a message from Amsat or ARRL containing the updated keppler sets.

Just subscribe to either the Amsat or ARRL list and when you receive a message from them, simply copy the message into the update file and issue the update command "utle". Usually this file resides in the same directory as the DIGI_NED executable. See the Configuration section for more information about the location of the update file.

You can obtain the TLE information through Amsat, ARRL, Norad or NASA.

The DIGI_NED.TLE syntaxes

The Satellite Database File "digi_ned.tle". This database is stored in a flat ASCII file and can be edited with any text editor. But there is no real need for that. DIGI_NED uses this file for it's output when the 'utle' command is executed.

You can delete a satellite by simply deleting the three lines corresponding to that satellite. A satellite can be added by simply editing the database file and inserting the three lines of information of that satellite.

Make sure that the first line is formatted correctly. Just look at the line format for the other satellites to see how the first line needs to be formatted.

Usually this file resides in the same directory as the DIGI_NED executable. See the Configuration section for more information about the location of the database.

 

Top of this page