[][src]Crate comms_service

This library allows users to define and start communication services within their hardware services.

Example Usage

use comms_service::*;
use std::net::{Ipv4Addr, UdpSocket};
use std::sync::{Arc, Mutex};

// Example setup.
fn read(socket: &Arc<UdpSocket>) -> CommsResult<Vec<u8>> { Ok(vec![]) }
fn write(socket: &Arc<UdpSocket>, data: &[u8]) -> CommsResult<()> { Ok(()) }

// Defining connections.
let read_conn = Arc::new(UdpSocket::bind(("192.168.8.1", 13000)).unwrap());
let write_conn = Arc::new(UdpSocket::bind(("192.168.8.1", 13001)).unwrap());

// Fetching communications settings from the common config.toml file.
let service_config = kubos_system::Config::new("service-name")?;
let comms_config = CommsConfig::new(service_config)?;

// Putting everything into the control block.
let controls = CommsControlBlock::new(
    Some(Arc::new(read)),
    vec![Arc::new(write)],
    read_conn,
    write_conn,
    comms_config
)?;

// Get telemetry from communication service.
let telem = Arc::new(Mutex::new(CommsTelemetry::default()));

// Start communication service.
CommsService::start::<Arc<UdpSocket>, SpacePacket>(controls, &telem);

Comms Service Config File Format

[service-name.comms]
max_num_handlers = 50
downlink_ports = [13011]
timeout = 1500"
ip = "192.168.8.2"

Structs

CommsConfig

A struct that holds useful configuration options to use in a comms-service implementation. Created by parsing a configuration file in the toml file format.

CommsControlBlock

Struct that holds configuration data to allow users to set up a Communication Service.

CommsService

Struct that enables users to start the Communication Service.

CommsTelemetry

Generic telemetry collected by the communication service.

SpacePacket

Structure used to implement SpacePacket version of LinkPacket

Enums

CommsServiceError

This enum defines all errors that can occur within the comms-service.

PayloadType

Enum representing the different payload types handled by the communications service

Constants

DEFAULT_MAX_HANDLERS

Default maximum number of message handlers

DEFAULT_TIMEOUT

Default message handler timeout

Traits

LinkPacket

Generic LinkPacket trait which defines the internal packet requirements of the communications service.

Type Definitions

CommsResult

Result returned by the comms-service.

ReadFn

Type definition for a "read" function pointer.

WriteFn

Type definition for a "write" function pointer.