[−][src]Crate clyde_3g_eps_service
Service for interacting with a Clyde Space 3G EPS
Configuration
The service can be configured in the /etc/kubos-config.toml with the following fields:
[clyde-3g-eps-service]
bus = "/dev/i2c-1"
[clyde-3g-eps-service.addr]
ip = "127.0.0.1"
port = 8100
Where bus specifies the I2C bus the EPS is on, 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:
$ clyde-3g-eps-service
Listening on: 127.0.0.1:8100
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:
$ clyde-3g-eps-service -c config.toml
Panics
Attempts to grab bus from Configuration and will panic! if not found.
GraphQL Schema
Queries
ACK
Fetch the last mutation which was executed by the service. Returns a subsystem::Mutations value.
{
	ack: Mutation!
}
Errors
Fetch all errors encountered by the service since the last time this field was queried
{
	errors: [String]
}
Power
Get the system power status. Returns a PowerState value.
{
	power {
		motherboard: PowerState,
     	daughterboard: PowerState,
   	}
}
Telemetry
Version Info
Fetch the version information for the EPS' motherboard and daughterboard (if present).
{
	telemetry {
		version {
			motherboard {
				revision: Int!,
				firmwareNumber: Int!
			},
			daughterboard {
				revision: Int,
				firmwareNumber: Int
			}
		}
	}
}
Reset Count
Get the number of board resets, by category. Note: If any value exceeds 255, it will automatically roll over to 0.
{
	telemetry {
		reset {
			brownOut
				motherboard: Int!
				daughterboard: Int
			automaticSoftware
				motherboard: Int!
				daughterboard: Int
			manual
				motherboard: Int!
				daughterboard: Int
			watchdog
				motherboard: Int!
				daughterboard: Int
		}
	}
}
Motherboard Telemetry
Fetch telemetry data for the motherboard. All returned values are automatically converted from their original raw data. Refer to Table 11-7 of the EPS' User Manual for more information.
{
   telemetry {
   	motherboard {
   		VoltageFeedingBcr1: Float!
   		CurrentBcr1Sa1a: Float!
   		CurrentBcr1Sa1b: Float!
   		ArrayTempSa1a: Float!
   		ArrayTempSa1b: Float!
   		SunDetectorSa1a: Float!
   		SunDetectorSa1b: Float!
   		VoltageFeedingBcr2: Float!
   		CurrentBcr2Sa2a: Float!
   		CurrentBcr2Sa2b: Float!
   		ArrayTempSa2a: Float!
   		ArrayTempSa2b: Float!
   		SunDetectorSa2a: Float!
   		SunDetectorSa2b: Float!
   		VoltageFeedingBcr3: Float!
   		CurrentBcr3Sa3a: Float!
   		CurrentBcr3Sa3b: Float!
   		ArrayTempSa3a: Float!
   		ArrayTempSa3b: Float!
   		SunDetectorSa3a: Float!
   		SunDetectorSa3b: Float!
   		BcrOutputCurrent: Float!
   		BcrOutputVoltage: Float!
   		CurrentDraw3V3: Float!
   		CurrentDraw5V: Float!
   		OutputCurrent12V: Float!
   		OutputVoltage12V: Float!
   		OutputCurrentBattery: Float!
   		OutputVoltageBattery: Float!
   		OutputCurrent5v: Float!
   		OutputVoltage5v: Float!
   		OutputCurrent33v: Float!
   		OutputVoltage33v: Float!
   		OutputVoltageSwitch1: Float!
   		OutputCurrentSwitch1: Float!
   		OutputVoltageSwitch2: Float!
   		OutputCurrentSwitch2: Float!
   		OutputVoltageSwitch3: Float!
   		OutputCurrentSwitch3: Float!
   		OutputVoltageSwitch4: Float!
   		OutputCurrentSwitch4: Float!
   		OutputVoltageSwitch5: Float!
   		OutputCurrentSwitch5: Float!
   		OutputVoltageSwitch6: Float!
   		OutputCurrentSwitch6: Float!
   		OutputVoltageSwitch7: Float!
   		OutputCurrentSwitch7: Float!
   		OutputVoltageSwitch8: Float!
   		OutputCurrentSwitch8: Float!
   		OutputVoltageSwitch9: Float!
   		OutputCurrentSwitch9: Float!
   		OutputVoltageSwitch10: Float!
   		OutputCurrentSwitch10: Float!
   		BoardTemperature: Float!
   	}
   }
}
Daughterboard Telemetry
Fetch telemetry data for the motherboard. All returned values are automatically converted from their original raw data. Refer to Table 11-8 of the EPS's User Manual for more information.
{
	telemetry {
		daughterboard {
			VoltageFeedingBcr4: Float
			CurrentBcr4Sa4a: Float
			CurrentBcr4Sa4b: Float
			ArrayTempSa4a: Float
			ArrayTempSa4b: Float
			SunDetectorSa4a: Float
			SunDetectorSa4b: Float
			VoltageFeedingBcr5: Float
			CurrentBcr5Sa5a: Float
			CurrentBcr5Sa5b: Float
			ArrayTempSa5a: Float
			ArrayTempSa5b: Float
			SunDetectorSa5a: Float
			SunDetectorSa5b: Float
			VoltageFeedingBcr6: Float
			CurrentBcr6Sa6a: Float
			CurrentBcr6Sa6b: Float
			ArrayTempSa6a: Float
			ArrayTempSa6b: Float
			SunDetectorSa6a: Float
			SunDetectorSa6b: Float
			VoltageFeedingBcr7: Float
			CurrentBcr7Sa7a: Float
			CurrentBcr7Sa7b: Float
			ArrayTempSa7a: Float
			ArrayTempSa7b: Float
			SunDetectorSa7a: Float
			SunDetectorSa7b: Float
			VoltageFeedingBcr8: Float
			CurrentBcr8Sa8a: Float
			CurrentBcr8Sa8b: Float
			ArrayTempSa8a: Float
			ArrayTempSa8b: Float
			SunDetectorSa8a: Float
			SunDetectorSa8b: Float
			VoltageFeedingBcr9: Float
			CurrentBcr9Sa9a: Float
			CurrentBcr9Sa9b: Float
			ArrayTempSa9a: Float
			ArrayTempSa9b: Float
			SunDetectorSa9a: Float
			SunDetectorSa9b: Float
			BoardTemperature: Float
		}
	}
}
Watchdog Period
Fetch the current watchdog timeout period, in minutes
{
	telemetry {
		watchdogPeriod: Int!
	}
}
Last EPS Error
Fetch the last error which was encountered by the system while executing a command. Returns a last_error::Error value
{
	telemetry {
		lastEpsError {
			motherboard: Error!
			daughterboard: Error
		}
	}
}
Board Status
Check the status of the motherboard and daughterboard. Returns status flags indicating any recent errors.
{
	telemetry {
		boardStatus {
			motherboard: Status!
			daugherboard: Status
		}
	}
}
Mutations
No-Op
Execute a trivial command against the system.
mutation {
	noop {
		success: Boolean!
		errors: String!
	}
}
Manual Reset
Manually reset the EPS.
mutation {
	manualReset {
		success: Boolean!
		errors: String!
	}
}
Reset Watchdog
Reset the communications watchdog timer.
mutation {
	resetWatchdog {
		success: Boolean!
		errors: String!
	}
}
Set Watchdog Period
Set the communications watchdog timeout period.
- period: New timeout period, in minutes
mutation {
	setWatchdogPeriod(period: Int!) {
		success: Boolean!
		errors: String!
	}
}
Issue Raw Command
Pass a custom command through to the system
- command: Decimal value of the command byte to send
- data: Decimal values of the command parameters to send. Should be [0]if there are no additional parameters required.
mutation {
	issueRawCommand(command: Int!, data: [Int!]) {
		success: Boolean!
		errors: String!
	}
}
Test Hardware
Perform a system test
- test: Specific test to perform. Should be HARDWARE
 mutation {
 	testHardware(test: TestType) {
 		success: Boolean!
 		errors: String!
 	}
 }
Modules
| models | EPS system components | 
| schema | Service schema |