Initial commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
import gleam/bool
|
||||
import gleam/int
|
||||
import gleam/io
|
||||
import gleam/string_tree
|
||||
|
||||
pub type SpacePacketVersion {
|
||||
VersionZero
|
||||
}
|
||||
|
||||
pub type SpacePacketType {
|
||||
Telemetry
|
||||
Command
|
||||
}
|
||||
|
||||
pub type SpacePacketSequenceFlags {
|
||||
Continuation
|
||||
FirstSegment
|
||||
LastSegment
|
||||
Unsegmented
|
||||
}
|
||||
|
||||
pub type SpacePacketHeader {
|
||||
SpacePacketHeader(
|
||||
version: SpacePacketVersion,
|
||||
sp_type: SpacePacketType,
|
||||
sec_hdr_flag: Bool,
|
||||
apid: Int,
|
||||
seq_flag: SpacePacketSequenceFlags,
|
||||
seq_count: Int,
|
||||
packet_len: Int,
|
||||
)
|
||||
}
|
||||
|
||||
pub fn version_to_string(sp_version: SpacePacketVersion) -> String {
|
||||
case sp_version {
|
||||
VersionZero -> "v0"
|
||||
}
|
||||
}
|
||||
|
||||
pub fn packet_type_to_string(sp_type: SpacePacketType) -> String {
|
||||
case sp_type {
|
||||
Telemetry -> "Telemetry"
|
||||
Command -> "Command"
|
||||
}
|
||||
}
|
||||
|
||||
pub fn seq_flag_to_string(sp_seq_flags: SpacePacketSequenceFlags) -> String {
|
||||
case sp_seq_flags {
|
||||
Continuation -> "Continuation"
|
||||
FirstSegment -> "First Segment"
|
||||
LastSegment -> "Last Segment"
|
||||
Unsegmented -> "Unsegmented"
|
||||
}
|
||||
}
|
||||
|
||||
pub fn space_packet_header_to_string(sp: SpacePacketHeader) -> String {
|
||||
string_tree.new()
|
||||
|> string_tree.append("Version: ")
|
||||
|> string_tree.append(version_to_string(sp.version))
|
||||
|> string_tree.append("\n")
|
||||
|> string_tree.append("Type: ")
|
||||
|> string_tree.append(packet_type_to_string(sp.sp_type))
|
||||
|> string_tree.append("\n")
|
||||
|> string_tree.append("Secondary Header Flag: ")
|
||||
|> string_tree.append(bool.to_string(sp.sec_hdr_flag))
|
||||
|> string_tree.append("\n")
|
||||
|> string_tree.append("APID: 0x")
|
||||
|> string_tree.append(int.to_base16(sp.apid))
|
||||
|> string_tree.append("\n")
|
||||
|> string_tree.append("Sequence Flags: ")
|
||||
|> string_tree.append(seq_flag_to_string(sp.seq_flag))
|
||||
|> string_tree.append("\n")
|
||||
|> string_tree.append("Sequence Count: ")
|
||||
|> string_tree.append(int.to_string(sp.seq_count))
|
||||
|> string_tree.append("\n")
|
||||
|> string_tree.append("Packet Length: ")
|
||||
|> string_tree.append(int.to_string(sp.packet_len))
|
||||
|> string_tree.append("\n")
|
||||
|> string_tree.to_string()
|
||||
}
|
||||
|
||||
pub fn main() {
|
||||
let space_packet =
|
||||
SpacePacketHeader(
|
||||
VersionZero,
|
||||
Telemetry,
|
||||
False,
|
||||
0x55,
|
||||
Unsegmented,
|
||||
0x00,
|
||||
0x00,
|
||||
)
|
||||
|
||||
io.println(space_packet_header_to_string(space_packet))
|
||||
}
|
||||
Reference in New Issue
Block a user