The RSS has been well sort of like a trial by fire. Well to put it bluntly it was nuts, with too many moving parts.!! Kind of like an old Rube Goldberg Machine. What I needed was a better way.
Enter Java. Java has been around for more than two decades now, it 'is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible' - Wikipedia. When It was first introduced I grabbed a book, and I liked what I saw, and over the years writing in C, and Perl (for web pages) I never got around to embracing the Class/Object Model. Well, What I discovered is that the RSS has a lot of moving parts, and the radios are more different than alike hence the enormous structure, and everybody could see all the parts.
THE ANALYSIS:
- Currently, the RSS has six(6) radios.
- And will not talk about the audio portion of the RSS with the exception of the Morse Code Generator.
- All aircraft radios operate on line of sight, not over the horizon.
- There are more than a few decoders.
- 3 of 5
- ARINC 410
- ARINC 429
- Mil 1553
- plus custom interfaces for some.
- The radios have a completely different complement of switches and functions.
- Some radios drive flags, and bars, whiskers on instrumentation.
The Radio Heads or slaves are on their own multi-drop communications system EADIN Lite power-point and Tech-Brief Article.
The EADIN Lite controller, or master talks to the RSSIOP via Ethernet.
THE PLAN:
So here are the parts that are needed (major parts):
- Current aircraft position (LAT, LON, ALT)
- MySQL DB for Radio info (LAT, LON, Height (of Antenna), Radio Frequency, Radio Call Sign)
- Morse Code Generator, for DME waypoints.
- Slant Range Calculation. ::= 1.25 · (√aircraft alt + √ radios antenna height above sea level)
this will be changed to:
Under the assumption that the earth is a sphere the section of the circumference of the earth can be calculated with the help of a simple ratio from the complete circumference of the earth from the angle α
360° · Rtopogr. = α · 2π re
information and image cite: radar tutorial -Slant Range
public class Radio3436 extends BaseRadio { private static InterfaceTypes I3of5; private enum lights{ DialLite } private int lites[] = {0}; Radio3436() { } // This constructor invokes the BaseRadio constructor
static void Radio(RadioList radio, Power GoodPower) { if( GoodPower == Power.OFF) { // Turn off Dial lite; // Set DME info
} else { // Get switch count // if Switch[1] = ON?OFF (ON) ** Switch #1 is power; Switch #0 ::= No Power Switch // Get Freq 2 bytes // Get Aircraft info fromNAVbus LAT, LONG, FEET // Get Radio <200nm // Play Morse Code // Calculate Slant Range // Set DME info } // Send DME & FROM/TO/BLANK } } |
public class BaseRadio {
Power GoodPower = Power.ON; BaseRadio () {} // Base Radio Constructor
int WhatRadio( RadioList radio ) { int count = -1; switch (radio) { // enum RadioList { R3436, RC614L8, RG1981, RG3717, RG4214, RG4518} case R3436: { Radio3436.Radio (radio, GoodPower); count = 1; break;} case RC614L8: { // Radio614L8.Radio (radio, GoodPower); count = 0; break;} case RG1981: { // RadioG1981.Radio (radio, GoodPower); count = 0; break;} case RG3717: { // RadioG3717.Radio(radio, GoodPower); count = 0; break;} case RG4214: { // RadioG4214.Radio (radio, GoodPower); count = 0; break;} case RG4518: { // RadioG4518.Radio (radio, GoodPower); count = 0; break;} default: count = -1; // error (-1) radio of type requested not in system. // error (0) radio of type requested not installed at this time. } return count; } } |
Typical Radio Interface Code | Radio Call Tree |
NOTES:
- Updated & Reloaded Stewie Image - OCT, 2022