raw
smg_comms_genesis       1  -- S.MG, 2018
smg_comms_genesis 2 -- prototype implementation of S.MG communication protocol
smg_comms_genesis 3
smg_comms_genesis 4 with Ada.Streams; use Ada.Streams;
smg_comms_genesis 5 with Interfaces; use Interfaces; -- Integer_n and Unsigned_n
smg_comms_genesis 6 with Ada.Unchecked_Conversion; -- converting int/uint to array of octets
smg_comms_genesis 7
smg_comms_genesis 8 package SMG_comms_types is
smg_comms_genesis 9 -- basic types with guaranteed lengths
smg_comms_genesis 10 type Octet_Array is array(Natural range <>) of Unsigned_8;
smg_comms_genesis 11
smg_comms_genesis 12 subtype Octets_1 is Octet_Array( 1 .. 1 );
smg_comms_genesis 13 subtype Octets_2 is Octet_Array( 1 .. 2 );
smg_comms_genesis 14 subtype Octets_4 is Octet_Array( 1 .. 4 );
smg_comms_genesis 15 subtype Octets_8 is Octet_Array( 1 .. 8 );
smg_comms_genesis 16
smg_comms_genesis 17 subtype Message is Octet_Array( 1 .. 512 );
smg_comms_genesis 18 subtype RSAMessage is Octet_Array( 1 .. 245 );
smg_comms_genesis 19
smg_comms_genesis 20 -- blind, unchecked casts ( memcpy style )
smg_comms_genesis 21 function Cast is new Ada.Unchecked_Conversion( Integer_8, Octets_1 );
smg_comms_genesis 22 function Cast is new Ada.Unchecked_Conversion( Octets_1, Integer_8 );
smg_comms_genesis 23
smg_comms_genesis 24 function Cast is new Ada.Unchecked_Conversion( Integer_16, Octets_2 );
smg_comms_genesis 25 function Cast is new Ada.Unchecked_Conversion( Octets_2, Integer_16 );
smg_comms_genesis 26
smg_comms_genesis 27 function Cast is new Ada.Unchecked_Conversion( Integer_32, Octets_4 );
smg_comms_genesis 28 function Cast is new Ada.Unchecked_Conversion( Octets_4, Integer_32 );
smg_comms_genesis 29
smg_comms_genesis 30 function Cast is new Ada.Unchecked_Conversion( Integer_64, Octets_8 );
smg_comms_genesis 31 function Cast is new Ada.Unchecked_Conversion( Octets_8, Integer_64 );
smg_comms_genesis 32
smg_comms_genesis 33 -- to and from streams for network communications - general
smg_comms_genesis 34 procedure ToNetworkFormat(
smg_comms_genesis 35 Item : in Octet_Array;
smg_comms_genesis 36 Buffer : out Stream_Element_Array);
smg_comms_genesis 37
smg_comms_genesis 38 procedure FromNetworkFormat(
smg_comms_genesis 39 Buffer : in Stream_Element_Array;
smg_comms_genesis 40 Item : out Octet_Array);
smg_comms_genesis 41
smg_comms_genesis 42 -- specific, convenience methods for the basic types
smg_comms_genesis 43 -- Integer_8
smg_comms_genesis 44 procedure ToNetworkFormat(
smg_comms_genesis 45 Item : in Integer_8;
smg_comms_genesis 46 Buffer : out Stream_Element_Array);
smg_comms_genesis 47
smg_comms_genesis 48 procedure FromNetworkFormat(
smg_comms_genesis 49 Buffer : in Stream_Element_Array;
smg_comms_genesis 50 Item : out Integer_8);
smg_comms_genesis 51
smg_comms_genesis 52 end SMG_comms_types;