[−][src]Crate nsl_duplex_d2_comms_service
Hardware service to allow for communications over a NSL Duplex D2 Radio. This service starts up a communication service to allow transfer of UDP packets over a serial link to and from the radio.
Configuration
The service can be configured in the config.toml
with the following fields:
[nsl-duplex-comms-service]
bus = "/dev/ttyUSB0"
ping_freq = 10
[nsl-duplex-comms-service.comms]
max_num_handlers = 10
downlink_ports = [15001]
timeout = 15000
ip = "127.0.0.2"
[nsl-duplex-comms-service.addr]
ip = "127.0.0.1"
port = 8140
The configuration of this service is split into three parts:
-
Service Specific
This section is found under
[nsl-duplex-comms-service]
bus
- Specifies which UART bus the Duplex is onping_freq
- Specifies how frequently the service sends ping packets when the downlink queue is empty (seconds)
-
Communications Service Configs
This section is found under
[nsl-duplex-comms-service.comms]
max_num_handlers
- Maximum number of concurrent message handlersdownlink_ports
- Optional list of downlink endpointstimeout
- Timeout for completion of GraphQL requestsip
- Local IP of satellite
-
GraphQL Server Configs
This section is found under
[nsl-duplex-comms-service.addr]
ip
- The service's IP address, used for its GraphQL interfaceport
- The service's port, used for its GraphQL interface
Where bus
specifies the UART bus the Duplex is on, ping_freq
specifies how often
the downlink queue should be checked for queueing up pings, ip
specifies the
service's IP address, and port
specifies the port on which the service will be
listening for UDP packets.
Running the Service
The service should be started automatically by its init script, but may also be started manually:
$ nsl-duplex-d2-comms-service
NSL Duplex Communications Service starting on /dev/ttyUSB0
If no config file is specified, then the service will look at /etc/kubos-config.toml
.
An alternative config file may be specified on the command line at run time:
$ nsl-duplex-d2-comms-service -c config.toml
Panics
This service will panic on start if no config sections are found for the service or
if the bus
parameter is not provided.
GraphQL Schema
Queries
Failed Packets Up
Request number of bad uplink packets
{ failedPacketsUp: Int! }
Failed Packets Down
Request number of bad downlink packets
{ failedPacketsDown: Int! }
Packets Up
Request number of packets successfully uplinked
{ packetsUp: Int! }
Packets Down
Request number of packets successfully downlinked
{ packetsDown: Int! }
Errors
Request errors that have occurred
{ errors: [String] }
Modem Health
Request current modem health information
{
modemHealth {
resetCount: Int!
currentTime: Int!
currentRssi: Int!
connectionStatus: Int!
globalstarGateway: Int!
lastContactTime: Int!
lastAttemptTime: Int!
callAttemptsSinceReset: Int!
successfulConnectsSinceReset: Int!
averageConnectionDuration: Int!
connectionDurationStdDev: Int!
}
}
Geolocation
Request current geolocation data
{
geolocation {
lon: Float!
lat: Float!
time: Int!
maxError: Int!
}
}
Downlink Queue Count
Request number of files in the downlink queue
{
downlink_queue_count: Int!
}
Is Alive
Queries the modem's 'is_alive' status
{
alive: Boolean!
}
Mutations
NoOp
Execute a trivial command against the system
mutation {
noop: Boolean!
}