package Distance_Vectors is new Vectors (Swarm_Element_Index, Distance_Entries);
package Sort_Distances is new Distance_Vectors.Generic_Sorting;
package Buffers_Outgoing is new Generic_Realtime_Buffer (Inter_Vehicle_Messages, Buffer_Size_Outgoing);
package Buffers_Incoming is new Generic_Realtime_Buffer (Inter_Vehicle_Messages, Buffer_Size_Incoming);
package Swarm_Vectors is new Vectors (Swarm_Element_Index, Swarm_Element_State);
type Distance_Entries is record Index : Swarm_Element_Index; Distance : Distances; Position_Diff : Positions; Velocity_Diff : Velocities; end record;
type Buffer_Size_Outgoing is mod No_Of_Buffered_Outgoing_Messages;
type Buffer_Size_Incoming is mod No_Of_Buffered_Incoming_Messages;
type Globes_Touched_A is array (Energy_Globes_Defaults'Range) of Boolean;
type Charge_Info is record Level : Vehicle_Charges; pragma Atomic (Level); Charge_Time : Time; pragma Atomic (Charge_Time); Charge_No : Natural; pragma Atomic (Charge_No); Globes_Touched : Globes_Touched_A := No_Globes_Touched; end record;
type Neighbours_P is access all Distance_Vectors.Vector;
type Vehicle_Comms_P is access all Vehicle_Comms;
type Vehicle_Controls_P is access all Vehicle_Controls;
type Vehicle_Task_P is access all Vehicle_Task;
type Swarm_Element_State is record Position : Positions; pragma Atomic (Position); Rotation : Quaternion_Rotation; pragma Atomic (Rotation); Velocity : Velocities; pragma Atomic (Velocity); Acceleration : Accelerations; pragma Atomic (Acceleration); Charge : Charge_Info; Neighbours : Neighbours_P; Controls : Vehicle_Controls_P; Comms : Vehicle_Comms_P; Process : Vehicle_Task_P; Process_Id : Task_Id; Last_Update : Time; end record;
No_Of_Buffered_Incoming_Messages : constant Positive := 10;
No_Of_Buffered_Outgoing_Messages : constant Positive := 2;
No_Globes_Touched : constant Globes_Touched_A := (others => False);
procedure Send
| ( | Message | : Inter_Vehicle_Messages); |
entry Receive
| ( | Message | : out Inter_Vehicle_Messages); |
procedure Push_Message
| ( | Message | : Inter_Vehicle_Messages); |
procedure Fetch_Message
| ( | Message | : out Inter_Vehicle_Messages); |
function Has_Incoming_Messages return Boolean;
function Has_Outgoing_Messages return Boolean;
Sent_Messages: Buffers_Outgoing.Realtime_Buffer; References:
swarm_structures.ads:56:7 (declaration)swarm_structures.adb:14:15 (reference)swarm_structures.adb:30:15 (reference)swarm_structures.adb:46:36 (reference)Called by:
Fetch_Message defined at swarm_structures.ads:52:17Has_Outgoing_Messages defined at swarm_structures.ads:54:17Send defined at swarm_structures.ads:49:17Vehicle_Comms. Received_Messages (private)
Received_Messages: Buffers_Incoming.Realtime_Buffer; References:
swarm_structures.ads:57:7 (declaration)swarm_structures.adb:22:15 (reference)swarm_structures.adb:38:36 (reference)swarm_structures.adb:51:84 (reference)swarm_structures.adb:54:15 (reference)Called by:
Has_Incoming_Messages defined at swarm_structures.ads:53:17Push_Message defined at swarm_structures.ads:51:17Receive defined at swarm_structures.ads:50:17Receive defined at swarm_structures.ads:50:17Vehicle_Controls. Set_Steering
procedure Set_Steering
( V : Vector_3D); References:
swarm_structures.ads:61:17 (declaration)swarm_structures.adb:65:17 (body)swarm_structures.adb:69:11 (label)Vehicle_Controls. Set_Throttle
procedure Set_Throttle
( T : Throttle_T); References:
swarm_structures.ads:62:17 (declaration)swarm_control.adb:222:38 (reference)swarm_structures.adb:73:17 (body)swarm_structures.adb:77:11 (label)Called by:
Vehicle_Controls. Read_Steering
function Read_Steering return Vector_3D;References:
swarm_structures.ads:63:16 (declaration)swarm_control.adb:214:93 (reference)swarm_structures.adb:81:16 (body)swarm_structures.adb:85:11 (label)Called by:
Vehicle_Controls. Read_Throttle
function Read_Throttle return Throttle_T;References:
swarm_structures.ads:64:16 (declaration)swarm_control.adb:188:38 (reference)swarm_control.adb:210:32 (reference)swarm_control.adb:226:43 (reference)swarm_structures.adb:89:16 (body)swarm_structures.adb:93:11 (label)callback_procedures.adb:219:38 (reference)Called by:
Vehicle_Controls. Steering_Direction (private)
Steering_Direction: Vector_3D := Zero_Vector_3D; References:
swarm_structures.ads:66:7 (declaration)swarm_structures.adb:68:10 (reference)swarm_structures.adb:84:17 (reference)Called by:
Read_Steering defined at swarm_structures.ads:63:16Set_Steering defined at swarm_structures.ads:61:17Vehicle_Controls. Throttle (private)
Throttle: Throttle_T := Idle_Throttle; References:
swarm_structures.ads:67:7 (declaration)swarm_structures.adb:76:10 (reference)swarm_structures.adb:92:17 (reference)Called by:
Read_Throttle defined at swarm_structures.ads:64:16Set_Throttle defined at swarm_structures.ads:62:17Swarm_Lock. Lock_Write (abstract)
entry Lock_Write;References:
swarm_structures.ads:109:13 (declaration)swarm_control.adb:35:18 (reference)swarm_control.adb:69:18 (reference)swarm_structures.adb:113:13 (body)swarm_structures.adb:117:11 (label)swarm_structures.adb:125:52 (reference)Called by:
Lock_Read defined at swarm_structures.ads:110:13Swarm_Lock. Lock_Read (abstract)
entry Lock_Read;References:
swarm_structures.ads:110:13 (declaration)swarm_control.adb:431:18 (reference)swarm_control.adb:448:18 (reference)swarm_control.adb:465:18 (reference)swarm_control.adb:484:18 (reference)swarm_control.adb:507:18 (reference)swarm_control.adb:528:18 (reference)swarm_structures.adb:125:13 (body)swarm_structures.adb:129:11 (label)Called by:
Swarm_Control.Mean_Radius defined at swarm_control.ads:37:13Swarm_Lock. Unlock_Write (abstract)
entry Unlock_Write;References:
swarm_structures.ads:111:13 (declaration)swarm_control.adb:59:18 (reference)swarm_control.adb:85:18 (reference)swarm_structures.adb:119:13 (body)swarm_structures.adb:123:11 (label)Called by:
Swarm_Lock. Unlock_Read (abstract)
entry Unlock_Read;References:
swarm_structures.ads:112:13 (declaration)swarm_control.adb:435:18 (reference)swarm_control.adb:452:18 (reference)swarm_control.adb:469:18 (reference)swarm_control.adb:492:18 (reference)swarm_control.adb:515:18 (reference)swarm_control.adb:544:18 (reference)swarm_structures.adb:131:13 (body)swarm_structures.adb:135:11 (label)Called by:
Swarm_Control.Mean_Radius defined at swarm_control.ads:37:13Swarm_Lock. Write_Lock (private)
Write_Lock: Boolean := False; References:
swarm_structures.ads:114:7 (declaration)swarm_structures.adb:113:33 (reference)swarm_structures.adb:116:10 (reference)swarm_structures.adb:119:31 (reference)swarm_structures.adb:122:10 (reference)swarm_structures.adb:125:32 (reference)Called by:
Lock_Read defined at swarm_structures.ads:110:13Lock_Write defined at swarm_structures.ads:109:13Lock_Write defined at swarm_structures.ads:109:13Unlock_Write defined at swarm_structures.ads:111:13Unlock_Write defined at swarm_structures.ads:111:13Swarm_Lock. Readers (private)
Readers: Natural := 0; References:
swarm_structures.ads:115:7 (declaration)swarm_structures.adb:113:53 (reference)swarm_structures.adb:128:10 (reference)swarm_structures.adb:128:21 (reference)swarm_structures.adb:131:30 (reference)swarm_structures.adb:134:10 (reference)swarm_structures.adb:134:21 (reference)Called by:
Lock_Read defined at swarm_structures.ads:110:13Lock_Read defined at swarm_structures.ads:110:13Lock_Write defined at swarm_structures.ads:109:13Unlock_Read defined at swarm_structures.ads:112:13Unlock_Read defined at swarm_structures.ads:112:13Unlock_Read defined at swarm_structures.ads:112:13Simulator_Tick. Wait_For_Next_Tick (abstract)
entry Wait_For_Next_Tick;References:
swarm_structures.ads:119:13 (declaration)swarm_structures.adb:143:13 (body)swarm_structures.adb:146:21 (reference)swarm_structures.adb:147:11 (label)Simulator_Tick. Tick
procedure Tick;References:
swarm_structures.ads:120:17 (declaration)swarm_structures.adb:149:17 (body)swarm_structures.adb:153:11 (label)callback_procedures.adb:402:22 (reference)Called by:
Simulator_Tick. Trigger (private)
Trigger: Boolean := False; References:
swarm_structures.ads:122:7 (declaration)swarm_structures.adb:143:37 (reference)swarm_structures.adb:146:10 (reference)swarm_structures.adb:152:10 (reference)Called by:
Tick defined at swarm_structures.ads:120:17Wait_For_Next_Tick defined at swarm_structures.ads:119:13Wait_For_Next_Tick defined at swarm_structures.ads:119:13<
References:
swarm_structures.ads:32:13 (declaration)swarm_structures.adb:103:13 (body)swarm_structures.adb:107:8 (label)"<" hides a default operator in package StandardFree_Neighbours
procedure Free_Neighbours is new Unchecked_Deallocation
( Object => Distance_Vectors.Vector, Name => Neighbours_P); Called by:
Free_Controls
procedure Free_Controls is new Unchecked_Deallocation
( Object => Vehicle_Controls, Name => Vehicle_Controls_P); Called by:
Free_Comms
procedure Free_Comms is new Unchecked_Deallocation
( Object => Vehicle_Comms, Name => Vehicle_Comms_P); Called by:
Free_Process
procedure Free_Process is new Unchecked_Deallocation
( Object => Vehicle_Task, Name => Vehicle_Task_P); Called by: