IMBE Link

From W9CR
Revision as of 22:51, 20 March 2019 by Bryan (talk | contribs) (→‎Features)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This is the working page for IMBE Link.

Features ignore this

1.0

First version, needs to incorporate the basics of PNXmono, but in a modular format.

  • config file in a traditional unixy format. No stupid C# bullshits
  • Support for p25 data via STUN to cisco doing HDLC to the 9600 bps quantar v.24 interface.
  • Two operational modes
    • Traditional link, where the quantar does local repeat and the application handles network linking.
    • Base station mode, the quantar does not repeat anything, the app repeats all data to the quantar, like an analog controller.
      • In base mode, it can limit encrypted audio locally too, or force rewriting of talkgroup/messages
  • Support for talk group scanning
    • This would be a registration and priority matrix for individual talk groups
    • support for talk back with ability to define the hang time
  • Ability to block encryption or allow encryption (force encryption?)
  • Courtesy tones as files - allow them to be defined
  • Proxy of v.24 frames, only the IMBE data should be passed to the Quantar, control data should be stripped out
    • prevents channel changes
  • mute when RSSI/QOI value is below a given value (perhaps play a tone here?)
  • stats collected and ASTRO ID recorded
  • improved logging and debugging
  • output status of system via named pipe/logic on pi.
    • this would be used to block the system on P25 only for a set period of time.
    • Could be accomplished via channel change too.
    • Ideally would make the mixed mode operation easier without as many wildcard functions.

2.0

  • FDTI to Quantar v.24 interface.
  • recording of conversations and metadata
  • Bridge system
  • * This would be a confederation of linking and registration servers to reflect the traffic
  • System Wide Stats dashboard

3.0

  • Asterisk channel driver

Features defined

Talk Group Scan

This describes the version of scanning in version 1.0 In version 1.0 there is no talkback planned. A user will need to select the proper talkgroup via radio or by remote control via keypad.

A local user keying up will preempt all scan (Priority/Normal) and pause scan until they unkey.

A timer, Local Key (Lk), will be started when a local user keys down and if the local user stays keyed for greater than the value of this timer, scan shall be paused for the local users of the repeater.

A second timer Scan Holdoff (Sh), is started when a local user unkeys and scan is paused. When this timer expires scan shall resume.

  • Lk is 10 s
  • Sh is 300 s


From the network

Scanning should be allowed to define "N" talkgroups with a priority TG list.

Prior to beginning scan, a list of scan talk groups is built and ordered. The Active Talkgroup is the currently active scanned talkgroup. The Candidate is the talkgroup to be switched to.

There are two timers which may be defined in milliseconds. A value of 0 disables the timers in the logic.

  • Scan Active = Sa = 10000 ms
  • Scan Dwell = Sd = 2000 ms

Timer Scan Active determines how long the Active Talkgroup will be Active for. Upon the expiry of the timer, the Candidate will become the Active and the timer will reset.

Scan dwell is started upon the Active Talkgroup unkeying. It is held in reset while keyed. When this timer expires the Candidate will become active and the Scan Active timer will reset.

The Candidate is determined at the time of the Sa/Sd timer expiry by looking at the current active talkgroups from the scan list. The Active channel is a pointer in this list and the next active talkgroup will be the Candidate.

Priority Scan

A talkgroup may be defined as a Priority Talkgroup in the scan configuration.

In the event this talkgroup becomes active, the scan loop shall be stopped and the priority talkgroup immediately selected.

There will be two timers:

  • Priority Active = Pa = 10000 ms
  • Priority Dwell = Pd = 2000 ms

Timer Priority Active determines how long the Priority Talkgroup will be Active for. Upon the expiry of the timer, the normal scan will start.

Priority Dwell is started upon the Priority Talkgroup unkeying. It is held in reset while keyed. When this timer expires the normal scan will start.

The Priority Scan may be configured to use

Multiple levels of priority may be defined and a higher priority talkgroup will preempt the lower priority scan.

Development Milestones

Version .1 - First use between our homes

  • Basic IO to the Serial Port in Go
    • Reset logic, both soft and hardware (DTR)
    • Async to Sync hardware flow control
    • Configuration ID bits verification (serial port)
  • PtP mode to another p25.link client via UDP
    • Stretch goal of IPv6 and IPv4 support
    • handshaking to bring up the session (half/full frame size, number of retransmits)
    • shared password
    • Basic statistics output
    • Concatenated frame format
  • Client supports wireline mode using the Quantar to do local repeater function
  • Client support crypto and DTMF transport
  • Client can detect different talk groups
  • Frame format supports auth using a hash of the frame plus a shared secret (each packet it authed somehow)
  • Validation of the XE1F HDLC interface

Version .2 - First Server support

  • Server Mode support
    • Client can register with a server and connect
    • Client can update server with talk groups it wants to hear
    • IPv6 preferred transport from client if available.
  • Server should have a database to talk to to authenticate users and group them in a realm (ham, ham crypto, etc)
    • This way we can support different networks all on the same server infrastructure
  • Server should be able to do local replication of talkgroup data
  • Server should be able to filter crypto unless authorized users or per realm
  • Stats reported on the server for attached clients, and then recorded in database
  • Client should support sending stats packets every 5 min to server

Version .3 - First Beta Release

  • Multi-point server via IPv6 Multicast between servers
    • Via GRE between servers
    • Servers must announce and build a list of other servers in the network
    • Max scale here is 128 servers
  • Client
    • Introduce the support for repeater mode in client
    • Add some of the local command processing in the client ie DTMF response
    • Add in the logic for local tone playback, standard repeater control function, telemetry, scripting


Version .4 - First GA Stable Release

  • Server
    • Web interface to show status, link list
    • Web interface to register new users, change password, etc.
  • Client
    • Continue adding features for repeater control
  • Bridge into MMDVM servers on per talk group basis (maybe move into .3?)