Initial commit

This commit is contained in:
2024-12-08 13:58:12 -07:00
commit b42b30c251
6 changed files with 161 additions and 0 deletions
+95
View File
@@ -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))
}