brevity

package
v0.0.0-...-1c9a717 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2024 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UnknownAspect Aspect = "unknown"
	// Hot aspect is 0-30° target aspect or 180-150° aspect angle.
	Hot = "hot"
	// Flank is 40-70° target aspect or 140-110° aspect angle.
	Flank = "flank"
	// Beam is 80-110° target aspect or 100-70° aspect angle.
	Beam = "beam"
	// Drag is 120-180° target aspect or 60-0° aspect angle.
	Drag = "drag"
)
View Source
const (
	// Bogey indicates the contact's' whose identity is unknown.
	// Reference: ATP 1-02.1 Chapter I Table 2
	Bogey Declaration = "bogey"
	// Friendly indicates the contact is a positively identified friendly.
	// Reference: ATP 1-02.1 Chapter I Table 2
	Friendly = "friendly"
	// Neutral indicates the contact is a positively identified aircraft whose characteristics, behavior, origin or nationality indicate it is neither supporting nor opposing friendly forces.
	// Reference: ATP 1-02.1 Chapter I Table 2
	Neutral = "neutral"
	// Bandit indicates the contact is a positively idenfieid enemy in accordance with theater identification criteria. It does not imply direction or authority to engage.
	// Reference: ATP 1-02.1 Chapter I Table 2
	Bandit = "bandit"
	// Hostile indicates the contact is a identified as an enemy upon which clearance to fire is authorized in accordance with theater rules of engagement.
	// Reference: ATP 1-02.1 Chapter I Table 2
	Hostile = "hostile"
	// DeclarationFurball indicates that non-friendly and friendly aircraft are inside of 5 nauctical miles of each other.
	// Reference: ATP 1-02.1 Chapter I Table 2
	Furball = "furball"
	// Unable indications that the responder is unable to provide a declaration as requested.
	// Reference: ATP 1-02.1 Chapter I Table 2
	Unable = "unable"
	// Clean indicates there is no sensor information on the contact.
	// Reference: ATP 1-02.1 Chapter I Table 2
	Clean = "clean"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AlphaCheckRequest

type AlphaCheckRequest struct {
	// Callsign of the friendly aircraft requesting the ALPHA CHECK.
	Callsign string
}

AlphaCheckRequest is a request for an ALPHA CHECK. An ALPHA CHECK is a request for the friendly aircraft's position. It is used by aircrews to check their position equipment, especially for aircraft without GPS. Reference: ATP 3-52.4 Chapter II section 4

type AlphaCheckResponse

type AlphaCheckResponse struct {
	// Callsign of the friendly aircraft requesting the ALPHA CHECK.
	Callsign string
	// Status is true if the ALPHA CHECK was correlated to an aircraft on frequency, otherwise false.
	Status bool
	// Location of the friendly aircraft. If Status is false, this may be nil.
	Location Bullseye
}

AlphaCheckResponse is a response to an ALPHA CHECK.

type Aspect

type Aspect string

Aspect indicates the target aspect or aspect angle between a contact and fighter. Reference: ATP 3-52.4 Chapter IV section 6, Figure 1

type BRA

type BRA interface {
	// Bearing is the heading from the fighter to the contact, rounded to the nearest degree.
	Bearing() unit.Angle
	// Range is the distance from the fighter to the contact, rounded to the nearest nautical mile.
	Range() unit.Length
	// Altitude of the contact above sea level, rounded to the nearest thousands of feet.
	Altitude() unit.Length
}

BRA is an abbreviated form of BRAA without aspect.

func NewBRA

func NewBRA(b unit.Angle, r unit.Length, a unit.Length) BRA

type BRAA

type BRAA interface {
	BRA
	// Aspect of the contact.
	Aspect() Aspect
}

BRAA provides target bearing, range, altitude and aspect relative to a specified friendly aircraft. Reference: ATP 3-52.4 Chapter IV section 4 subsection b

func NewBRAA

func NewBRAA(b unit.Angle, r unit.Length, a unit.Length, aspect Aspect) BRAA

type BogeyDopeRequest

type BogeyDopeRequest struct {
	// Callsign of the friendly aircraft requesting the BOGEY DOPE.
	Callsign string
	// Filter for the type of aircraft to include in the BOGEY DOPE.
	Filter ContactCategory
}

BogeyDopeRequest is a request for a BOGEY DOPE. Reference: ATP 3-52.4 Chapter V section 11

type BogeyDopeResponse

type BogeyDopeResponse struct {
	// Callsign of the friendly aircraft requesting the BOGEY DOPE.
	Callsign string
	// Group which is closest to the fighter. If there are no eligible groups, this may be nil.
	Group Group
}

type Bullseye

type Bullseye struct {
	// contains filtered or unexported fields
}

Bullseye is a magnetic bearing and distance from a reference point called the BULLSEYE. Reference: ATP 3-52.4 Chapter IV section 4 subsection a

func NewBullseye

func NewBullseye(bearing unit.Angle, distance unit.Length) *Bullseye

func (*Bullseye) Bearing

func (b *Bullseye) Bearing() unit.Angle

Bearing from the BULLSEYE to the contact, rounded to the nearest degree.

func (*Bullseye) Distance

func (b *Bullseye) Distance() unit.Length

Distance from the BULLSEYE to the contact, rounded to the nearest nautical mile.

type ContactCategory

type ContactCategory int
const (
	Everything ContactCategory = iota
	Airplanes
	Helicopters
)

type Declaration

type Declaration string

Reference ATP 3-52.4 Chapter V section 6

type DeclareRequest

type DeclareRequest struct {
	// Callsign of the friendly aircraft requesting DECLARE.
	Callsign string
	// Location of the contact.
	Location Bullseye
	// Altitude of the contact above sea level, rounded to the nearest thousands of feet.
	Altitude unit.Length
	// Track direction. Optional, used to discriminate between multiple contacts at the same location.
	Track Track
}

DeclareRequest is a DECLARE call. Reference: ATP 3-52.4 Chapter V section 6

type DeclareResponse

type DeclareResponse struct {
	// Callsign of the friendly aircraft requesting DECLARE.
	Callsign string
	// Declaration of the contact.
	Declaration Declaration
	// Group that was identified, if a specific one was identifiable.
	// This may be nil if Declaration is Furball, Unable, or Clean.
	Group Group
}

DeclareResponse is a response to a DECLARE call. Reference: ATP 3-52.4 Chapter V section 6

type FadedCall

type FadedCall struct {
	// Group which has faded.
	Group Group
}

FadedCall reports a previously tracked group has not been updated by on or off-board sensors for 30 seconds. Reference: ATP 3-52.4 Chapter V section 19 subsection a

type Group

type Group interface {
	// Threat indicates if the THREAT criteria is met.
	Threat() bool
	// Contacts is the number of contacts in the group.
	Contacts() int
	// Bullseye is the location of the group. This may be nil for BOGEY DOPE, SNAPLOCK, and THREAT calls.
	Bullseye() *Bullseye
	// Altitude is the group's altitude above sea level. This may be nil for BOGEY DOPE, SNAPLOCK, and THREAT calls.
	Altitude() unit.Length
	// Track is the group's track direction. This may be UnknownDirection for BOGEY DOPE, SNAPLOCK, and THREAT calls.
	Track() Track
	// Aspect is the group's aspect angle. This may be nil for BOGEY DOPE, SNAPLOCK, and some THREAT calls.
	Aspect() Aspect
	// BRAA is an alternate format for the group's location. This is nil except for BOGEY DOPE, SNAPLOCK, and some THREAT calls.
	BRAA() BRAA
	// Declaration of the group's friend or foe status.
	Declaration() Declaration
	// Heavy is true if the group contacts 3 or more contacts.
	Heavy() bool
	// Platform is the NATO reporting name of the group's aircraft platform (for Soviet/Russian/Chinese aircraft) or
	// an alternative name for other aircraft.
	Platform() string
	// High is true if the aircraft altitude is above 40,000 feet.
	High() bool
	// Fast is true if the group's speed is 600-900kts ground speed or 1.0-1.5 Mach.
	Fast() bool
	// VeryFast is true is the group's speed is above 900kts ground speed or 1.5 Mach.
	VeryFast() bool
}

Group describes any number of air contacts within 3 nautical miles in azimuth and range of each other. Groups are distinguished by either a unique name or a location. This implementation only uses location. Location may be either BRAA or Bullseye, altitude and track. Bullseye is preferred except for:

- BOGEY DOPE and SNAPLOCK responses

- THREAT calls that pertain to a single aircraft

Reference: ATP 3-52.4 Chapter IV section 2

type NegativeRadarContactResponse

type NegativeRadarContactResponse struct {
	Callsign string
}

type PictureRequest

type PictureRequest struct {
	// Callsign of the friendly aircraft requesting the PICTURE.
	Callsign string
	// Radius is the distance from the friendly aircraft to search for groups.
	// This is present to allow server admins to cap the scale of a PICTURE call, since some DCS servers are quite dense.
	Radius unit.Length
}

PictureRequest is a request for an updated PICTURE.

type PictureResponse

type PictureResponse struct {
	// Groups included in the PICTURE.
	Groups []Group
}

PICTURE is a report to establish a tactical air image. Reference: ATP 3-52.4 Chapter IV section 9

type RadioCheckRequest

type RadioCheckRequest struct {
	// Callsign of the friendly aircraft requesting the RADIO CHECK.
	Callsign string
}

RadioCheckRequest is a request for a RADIO CHECK.

type RadioCheckResponse

type RadioCheckResponse struct {
	// Callsign of the friendly aircraft requesting the RADIO CHECK.
	// If the callsign was misheard, this may not be the actual callsign of any actual aircraft.
	Callsign string
	// Status is true if the RADIO CHECK was correlated to an aircraft on frequency, otherwise false.
	// If this is false, the RADIO CHECK was received but not fully understood.
	Status bool
}

RadioCheckResponse is a response to a RADIO CHECK.

type SnaplockRequest

type SnaplockRequest struct {
	// Callsign of the friendly aircraft requesting the SNAPLOCK.
	Callsign string
	// BRA is the location of the contact.
	BRA BRA
}

SnaplockRequest is an abbreviated form of DECLARE used to quickly gain infomation on a contact inside THREAT range with BEAM or hotter aspect. Aspect is implied to be Beam or greater. Reference ATP 3-52.4 Chapter V section 20

type SnaplockResponse

type SnaplockResponse struct {
	// Callsign of the friendly aircraft requesting the SNAPLOCK.
	Callsign string
	// Status is true if the SNAPLOCK was correlated to a group, otherwise false.
	Status bool
	// Group that was identified. If Status is false, this may be nil.
	Group Group
}

SnaplockResponse is a response to a SNAPLOCK call. Reference ATP 3-52.4 Chapter V section 20

type SpikedRequest

type SpikedRequest struct {
	// Callsign of the friendly aircraft calling SPIKED.
	Callsign string
	// Bearing to the radar spike.
	Bearing unit.Angle
}

SpikedRequest is a request to correlate a radar spike within ±30 degrees. Reference: ATP 3-52.4 Chapter V section 13

type SpikedResponse

type SpikedResponse struct {
	// Callsign of the friendly aircraft calling SPIKED.
	Callsign string
	// True if the spike was correlated to a contact. False otherwise.
	Status bool
	// Range to the correlated contact. If Status is false, this may be nil.
	Range *unit.Length
	// Altitude of the correlated contact. If Status is false, this may be nil.
	Altitude *unit.Length
	// Aspect of the correlated contact. If Status is false, this may be UnknownAspect.
	Aspect Aspect
	// Declaration of the correlated contact. If Status is false, this may be Clean.
	Declaration Declaration
	// Number of contacts in the correlated group. If Status is false, this may be zero.
	Contacts int
	// Reported spike bearing. This is used if the response did not correlate to a group.
	Bearing unit.Angle
}

SpikedResponse reports any contacts within ±30 degrees of a reported radar spike. Reference: ATP 3-52.4 Chapter V section 13

type SunriseCall

type SunriseCall struct {
	// Frequency which the GCI is listening on.
	Frequency unit.Frequency
}

SunriseCall reports that the GCI is online and ready for requests.

type ThreatCall

type ThreatCall struct {
	// Callsign of the friendly aircraft under threat.
	Callsign string
	// Group that is threatening the friendly aircraft.
	Group Group
}

ThreatCall reports that a fighter will piece the threat range to a friendly aircraft. THREAT is more complicated in the real world, so this bot offers a simplified version. Reference: ATP 3-52.4 Chapter V section 18

type Track

type Track string

Track is a compass direction.

const (
	UnknownDirection Track = "unknown"
	North            Track = "north"
	Northeast        Track = "northeast"
	East             Track = "east"
	Southeast        Track = "southeast"
	South            Track = "south"
	Southwest        Track = "southwest"
	West             Track = "west"
	Northwest        Track = "northwest"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL