Documentation
¶
Overview ¶
Package sapient implements the SAPIENT protocol (BSI Flex 335 v2.0).
It provides a TCP transport layer with the length-prefixed framing specified in AEDP-4869 §6.3, and typed client connections for the Child (edge node/GCS), Peer (fusion node/C2), and Parent (higher echelon) roles.
Index ¶
- Constants
- func Ack(conn *Conn, middlewareID, destinationID string, accept bool, reasons ...string) error
- func AckV1(conn *Conn, middlewareID, destinationID string, accept bool, reason string) error
- func ContentType(msg *pb.SapientMessage) string
- func IsConnectionClosed(err error) bool
- func IsV1(icdVersion string) bool
- func Msg(nodeID string) *pb.SapientMessage
- func NewAlert(alertType pb.Alert_AlertType, status pb.Alert_AlertStatus, ...) *pb.Alert
- func NewAlertAck(alertID string, status pb.AlertAck_AlertAckStatus, reasons ...string) *pb.AlertAck
- func NewTaskAck(taskID string, status pb.TaskAck_TaskStatus, reasons ...string) *pb.TaskAck
- func NewULID() string
- func NewUUID() string
- func Now() *timestamppb.Timestamp
- func Register(conn *Conn, reg *pb.Registration) (nodeID string, err error)
- type Conn
- func (c *Conn) Close() error
- func (c *Conn) LocalAddr() net.Addr
- func (c *Conn) Recv() (*pb.SapientMessage, error)
- func (c *Conn) RecvRaw() ([]byte, error)
- func (c *Conn) RecvV1() (*v1.SapientMessage, error)
- func (c *Conn) RemoteAddr() net.Addr
- func (c *Conn) Send(msg *pb.SapientMessage) error
- func (c *Conn) SendAlert(nodeID string, a *pb.Alert) error
- func (c *Conn) SendAlertAck(nodeID, destinationID string, aa *pb.AlertAck) error
- func (c *Conn) SendAlertAckV1(nodeID, destinationID string, alertID string, status v1.AlertAck_AlertStatus, ...) error
- func (c *Conn) SendDetection(nodeID string, dr *pb.DetectionReport) error
- func (c *Conn) SendRaw(data []byte) error
- func (c *Conn) SendStatus(nodeID string, sr *pb.StatusReport) error
- func (c *Conn) SendTask(nodeID, destinationID string, t *pb.Task) error
- func (c *Conn) SendTaskAck(nodeID string, ta *pb.TaskAck) error
- func (c *Conn) SendTaskAckV1(nodeID string, taskID string, status v1.TaskAck_TaskStatus, reason string) error
- func (c *Conn) SendV1(msg *v1.SapientMessage) error
- type DetectionBuilder
- func (b *DetectionBuilder) Behaviour(typ string, confidence float32) *DetectionBuilder
- func (b *DetectionBuilder) Build() *pb.DetectionReport
- func (b *DetectionBuilder) Classification(typ string, confidence float32) *DetectionBuilder
- func (b *DetectionBuilder) Confidence(c float32) *DetectionBuilder
- func (b *DetectionBuilder) Location(lat, lng, alt float64) *DetectionBuilder
- func (b *DetectionBuilder) ObjectInfo(typ, value string) *DetectionBuilder
- func (b *DetectionBuilder) RangeBearing(az, el, rng float64) *DetectionBuilder
- func (b *DetectionBuilder) Signal(amplitude, centreFreq float32) *DetectionBuilder
- func (b *DetectionBuilder) SubClassification(typ string, confidence float32, subType string, subConf float32, level int32) *DetectionBuilder
- func (b *DetectionBuilder) TaskID(taskID string) *DetectionBuilder
- func (b *DetectionBuilder) TrackInfo(typ, value string) *DetectionBuilder
- func (b *DetectionBuilder) Velocity(east, north, up float64) *DetectionBuilder
- type Listener
- type StatusReportBuilder
- func (b *StatusReportBuilder) ActiveTask(taskID string) *StatusReportBuilder
- func (b *StatusReportBuilder) Build() *pb.StatusReport
- func (b *StatusReportBuilder) FieldOfView(az, el, hExtent, vExtent float64) *StatusReportBuilder
- func (b *StatusReportBuilder) Location(lat, lng, alt float64) *StatusReportBuilder
- func (b *StatusReportBuilder) Power(source pb.StatusReport_PowerSource, status pb.StatusReport_PowerStatus, ...) *StatusReportBuilder
- func (b *StatusReportBuilder) Status(level pb.StatusReport_StatusLevel, typ pb.StatusReport_StatusType, ...) *StatusReportBuilder
- type TaskBuilder
- func (b *TaskBuilder) Build() *pb.Task
- func (b *TaskBuilder) Follow(objectID string) *TaskBuilder
- func (b *TaskBuilder) LookAt(lat, lng, alt float64) *TaskBuilder
- func (b *TaskBuilder) ModeChange(mode string) *TaskBuilder
- func (b *TaskBuilder) Name(name string) *TaskBuilder
- func (b *TaskBuilder) Region(name string, typ pb.Task_RegionType, lat, lng, alt float64) *TaskBuilder
- func (b *TaskBuilder) Request(req string) *TaskBuilder
- func (b *TaskBuilder) TimeRange(start, end *timestamppb.Timestamp) *TaskBuilder
Constants ¶
const ICDVersion = "BSI Flex 335 v2.0"
Variables ¶
This section is empty.
Functions ¶
func ContentType ¶
func ContentType(msg *pb.SapientMessage) string
ContentType returns the name of the content oneof field set on a message, or "none" if no content is set.
func IsConnectionClosed ¶
IsConnectionClosed returns true if the error indicates a closed connection.
func Msg ¶
func Msg(nodeID string) *pb.SapientMessage
Msg creates a new SapientMessage with timestamp and node_id pre-filled.
func NewAlert ¶
func NewAlert(alertType pb.Alert_AlertType, status pb.Alert_AlertStatus, priority pb.Alert_DiscretePriority, description string) *pb.Alert
NewAlert creates an Alert with a generated alert_id.
func NewAlertAck ¶
NewAlertAck creates an AlertAck for the given alert_id.
func NewTaskAck ¶
NewTaskAck creates a TaskAck for the given task_id.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn wraps a TCP connection with SAPIENT length-prefixed framing. Messages are serialized as: [4-byte little-endian length][protobuf bytes].
func (*Conn) Recv ¶
func (c *Conn) Recv() (*pb.SapientMessage, error)
Recv reads and deserializes the next message as a v2 SapientMessage.
func (*Conn) RecvV1 ¶
func (c *Conn) RecvV1() (*v1.SapientMessage, error)
RecvV1 reads a message as v1. Only needed if you specifically need v1 struct access. Recv() works for both versions in most cases.
func (*Conn) RemoteAddr ¶
RemoteAddr returns the remote address of the connection.
func (*Conn) Send ¶
func (c *Conn) Send(msg *pb.SapientMessage) error
Send serializes and sends a v2 SapientMessage.
func (*Conn) SendAlertAck ¶
SendAlertAck sends an AlertAck from nodeID to destinationID.
func (*Conn) SendAlertAckV1 ¶
func (c *Conn) SendAlertAckV1(nodeID, destinationID string, alertID string, status v1.AlertAck_AlertStatus, reason string) error
SendAlertAckV1 sends a v1-compatible AlertAck.
func (*Conn) SendDetection ¶
func (c *Conn) SendDetection(nodeID string, dr *pb.DetectionReport) error
SendDetection sends a DetectionReport from nodeID.
func (*Conn) SendStatus ¶
func (c *Conn) SendStatus(nodeID string, sr *pb.StatusReport) error
SendStatus sends a StatusReport from nodeID.
func (*Conn) SendTaskAck ¶
SendTaskAck sends a TaskAck from nodeID.
func (*Conn) SendTaskAckV1 ¶
func (c *Conn) SendTaskAckV1(nodeID string, taskID string, status v1.TaskAck_TaskStatus, reason string) error
SendTaskAckV1 sends a v1-compatible TaskAck.
type DetectionBuilder ¶
type DetectionBuilder struct {
// contains filtered or unexported fields
}
DetectionBuilder helps construct DetectionReport messages.
func NewDetection ¶
func NewDetection(objectID string) *DetectionBuilder
NewDetection starts building a DetectionReport. objectID should be consistent for the same tracked object across updates.
func (*DetectionBuilder) Behaviour ¶
func (b *DetectionBuilder) Behaviour(typ string, confidence float32) *DetectionBuilder
func (*DetectionBuilder) Build ¶
func (b *DetectionBuilder) Build() *pb.DetectionReport
func (*DetectionBuilder) Classification ¶
func (b *DetectionBuilder) Classification(typ string, confidence float32) *DetectionBuilder
func (*DetectionBuilder) Confidence ¶
func (b *DetectionBuilder) Confidence(c float32) *DetectionBuilder
func (*DetectionBuilder) Location ¶
func (b *DetectionBuilder) Location(lat, lng, alt float64) *DetectionBuilder
func (*DetectionBuilder) ObjectInfo ¶
func (b *DetectionBuilder) ObjectInfo(typ, value string) *DetectionBuilder
func (*DetectionBuilder) RangeBearing ¶
func (b *DetectionBuilder) RangeBearing(az, el, rng float64) *DetectionBuilder
func (*DetectionBuilder) Signal ¶
func (b *DetectionBuilder) Signal(amplitude, centreFreq float32) *DetectionBuilder
func (*DetectionBuilder) SubClassification ¶
func (b *DetectionBuilder) SubClassification(typ string, confidence float32, subType string, subConf float32, level int32) *DetectionBuilder
func (*DetectionBuilder) TaskID ¶
func (b *DetectionBuilder) TaskID(taskID string) *DetectionBuilder
func (*DetectionBuilder) TrackInfo ¶
func (b *DetectionBuilder) TrackInfo(typ, value string) *DetectionBuilder
func (*DetectionBuilder) Velocity ¶
func (b *DetectionBuilder) Velocity(east, north, up float64) *DetectionBuilder
type Listener ¶
type Listener struct {
// contains filtered or unexported fields
}
Listener accepts incoming SAPIENT TCP connections.
type StatusReportBuilder ¶
type StatusReportBuilder struct {
// contains filtered or unexported fields
}
StatusReportBuilder helps construct StatusReport messages.
func NewStatusReport ¶
func NewStatusReport(system pb.StatusReport_System, info pb.StatusReport_Info, mode string) *StatusReportBuilder
NewStatusReport starts building a StatusReport with required fields.
func (*StatusReportBuilder) ActiveTask ¶
func (b *StatusReportBuilder) ActiveTask(taskID string) *StatusReportBuilder
func (*StatusReportBuilder) Build ¶
func (b *StatusReportBuilder) Build() *pb.StatusReport
func (*StatusReportBuilder) FieldOfView ¶
func (b *StatusReportBuilder) FieldOfView(az, el, hExtent, vExtent float64) *StatusReportBuilder
func (*StatusReportBuilder) Location ¶
func (b *StatusReportBuilder) Location(lat, lng, alt float64) *StatusReportBuilder
func (*StatusReportBuilder) Power ¶
func (b *StatusReportBuilder) Power(source pb.StatusReport_PowerSource, status pb.StatusReport_PowerStatus, level int32) *StatusReportBuilder
func (*StatusReportBuilder) Status ¶
func (b *StatusReportBuilder) Status(level pb.StatusReport_StatusLevel, typ pb.StatusReport_StatusType, value string) *StatusReportBuilder
type TaskBuilder ¶
type TaskBuilder struct {
// contains filtered or unexported fields
}
TaskBuilder helps construct Task messages.
func NewTask ¶
func NewTask(control pb.Task_Control) *TaskBuilder
NewTask starts building a Task with a generated task_id.
func (*TaskBuilder) Build ¶
func (b *TaskBuilder) Build() *pb.Task
func (*TaskBuilder) Follow ¶
func (b *TaskBuilder) Follow(objectID string) *TaskBuilder
func (*TaskBuilder) LookAt ¶
func (b *TaskBuilder) LookAt(lat, lng, alt float64) *TaskBuilder
func (*TaskBuilder) ModeChange ¶
func (b *TaskBuilder) ModeChange(mode string) *TaskBuilder
func (*TaskBuilder) Name ¶
func (b *TaskBuilder) Name(name string) *TaskBuilder
func (*TaskBuilder) Region ¶
func (b *TaskBuilder) Region(name string, typ pb.Task_RegionType, lat, lng, alt float64) *TaskBuilder
func (*TaskBuilder) Request ¶
func (b *TaskBuilder) Request(req string) *TaskBuilder
func (*TaskBuilder) TimeRange ¶
func (b *TaskBuilder) TimeRange(start, end *timestamppb.Timestamp) *TaskBuilder