Skip to content

Commit 1176a65

Browse files
author
Katie Niekrewicz
committed
concluding merge
2 parents 0a442b9 + 9c5044b commit 1176a65

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

samples/moonshot/src/controller-messages.adb

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@ package body Controller.Messages is
102102
Handle : CubedOS.File_Server.API.File_Handle_Type;
103103
Read_Request : Message_Record;
104104
Incomming_Message : Message_Record;
105-
Header : CubedOS.Lib.Space_Packets.Primary_Header;
105+
Amount_Read : Read_Result_Size_Type;
106+
Data : CubedOS.Lib.Octet_Array(0 .. 256); -- the data decoded from the image
107+
Space_Packet : CubedOS.Lib.Space_Packets.Space_Packet(512);
108+
Space_Data : CubedOS.Lib.Octet_Array(0 .. 512); -- the full data to send in the space packet
109+
Position : CubedOS.Lib.Octet_Array_Index := 0; -- the index to which Space_Data has been filled
106110
begin
107111
CubedOS.File_Server.API.Open_Reply_Decode
108112
(Message => Message,
@@ -115,13 +119,13 @@ package body Controller.Messages is
115119
elsif Handle = CubedOS.File_Server.API.Invalid_Handle then
116120
CubedOS.Log_Server.API.Log_Message(Name_Resolver.Controller,
117121
CubedOS.Log_Server.API.Error,
118-
"File failed to open");
122+
"Image file failed to open");
119123
else
120124
CubedOS.Log_Server.API.Log_Message(Name_Resolver.Controller,
121125
CubedOS.Log_Server.API.Informational,
122-
"File has been opened...");
126+
"Image file has been opened. Sending a read request...");
123127
-- encode a space packet of 512 octets
124-
Header := CubedOS.Lib.Space_Packets.Format_Primary_Header
128+
Space_Packet.Header := CubedOS.Lib.Space_Packets.Format_Primary_Header
125129
(APID => 42,
126130
Packet_Type => CubedOS.Lib.Space_Packets.Telemetry,
127131
Sequence_Count => 0,
@@ -140,6 +144,46 @@ package body Controller.Messages is
140144
CubedOS.Log_Server.API.Log_Message(Name_Resolver.Controller,
141145
CubedOS.Log_Server.API.Informational,
142146
"Received a read reply");
147+
Read_Reply_Decode(Incomming_Message, Handle, Amount_Read, Data, Status);
148+
if Status = Malformed then
149+
CubedOS.Log_Server.API.Log_Message(Name_Resolver.Controller,
150+
CubedOS.Log_Server.API.Error,
151+
"Read reply is malformed! Closing image...");
152+
Message_Manager.Route_Message
153+
(CubedOS.File_Server.API.Close_Request_Encode
154+
(Name_Resolver.Controller, 0, Handle));
155+
else
156+
if Amount_Read = 0 then
157+
CubedOS.Log_Server.API.Log_Message(Name_Resolver.Controller,
158+
CubedOS.Log_Server.API.Informational,
159+
"Finished reading image, closing file...");
160+
Message_Manager.Route_Message
161+
(CubedOS.File_Server.API.Close_Request_Encode
162+
(Name_Resolver.Controller, 0, Handle));
163+
if Position > 0 then
164+
Space_Packet := CubedOS.Lib.Space_Packets.From_Raw_Array(Space_Data(Space_Data'First .. Position + Space_Data'First));
165+
-- TODO: send last space packet
166+
end if;
167+
elsif Position + Amount_Read > Space_Data'Last then
168+
Space_Data(Position + Space_Data'First .. Space_Data'Last)
169+
:= Data(Data'First .. Space_Data'Last - Position + Data'First);
170+
Space_Packet := CubedOS.Lib.Space_Packets.From_Raw_Array(Space_Data);
171+
-- TODO: send space packet
172+
Space_Data(Space_Data'First .. Data'Last - (Space_Data'Last - Position + Data'First))
173+
:= Data(Space_Data'Last - Position + Data'First .. Data'Last);
174+
Position := Data'Last - (Space_Data'Last - Position) + 1;
175+
Message_Manager.Route_Message
176+
(CubedOS.File_Server.API.Read_Request_Encode(Name_Resolver.Controller, 0, Handle, 256));
177+
else
178+
Space_Data(Position .. Position + Data'Length) := Data;
179+
Position := Position + Data'Length + 1;
180+
CubedOS.Log_Server.API.Log_Message(Name_Resolver.Controller,
181+
CubedOS.Log_Server.API.Informational,
182+
"Loading space packet");
183+
Message_Manager.Route_Message
184+
(CubedOS.File_Server.API.Read_Request_Encode(Name_Resolver.Controller, 0, Handle, 256));
185+
end if;
186+
end if;
143187
else
144188
CubedOS.Log_Server.API.Log_Message(Name_Resolver.Controller,
145189
CubedOS.Log_Server.API.Error,

src/library/cubedos-lib-xdr.ads

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,7 @@ package CubedOS.Lib.XDR is
334334
Data'Length rem 4 = 0 and then
335335
Value'Length <= Octet_Array_Count'Last and then
336336
Position <= Data'Last - Length_With_Padding(Value'Length) - 1 and then
337-
Value'Length <= Integer'Last - Position and then
338-
Value'Length >= Value'Last - Value'First + 1,
337+
Value'Length <= Integer'Last - Position,
339338
Post => Last = Position + (Length_With_Padding(Value'Length) - 1);
340339

341340
end CubedOS.Lib.XDR;

0 commit comments

Comments
 (0)