raw
udp_tester              1   -- S.MG, 2018
udp_tester 2 -- Tester for UDP communications relying on libudp and libmt
udp_tester 3
udp_tester 4 with Ada.Calendar; use Ada.Calendar; -- for local time
udp_tester 5 with Ada.Calendar.Time_Zones; use Ada.Calendar.Time_Zones; -- UTC_Time_Offset
udp_tester 6 with Ada.Calendar.Formatting; use Ada.Calendar.Formatting; -- for unix-like
udp_tester 7 with Interfaces; use Interfaces;
udp_tester 8
udp_tester 9 with UDP;
udp_tester 10 with MT;
udp_tester 11
udp_tester 12 package UDP_Tester is
udp_tester 13
udp_tester 14 -- knobs for Tester, change as required
udp_tester 15
udp_tester 16 -- used for obtaining Unix-like time from value ret by Ada.Calendar.Clock
udp_tester 17 Epoch : constant Time := Formatting.Time_Of(1970, 1, 1, 0.0);
udp_tester 18
udp_tester 19 -- Header of each packet is:
udp_tester 20 -- 4 octets local time unix format;
udp_tester 21 -- 2 octets total length of message (header+payload)
udp_tester 22 Header_Len : constant Positive := 6;
udp_tester 23 -- packages sent will be between Header_Len and Max_Len
udp_tester 24 Max_Len : constant Positive := 2048;
udp_tester 25
udp_tester 26 -- helper methods
udp_tester 27 procedure Create_If_Not_Exists( Filename: in String; Header: in String);
udp_tester 28
udp_tester 29 -- will send messages with lengths between Header_Len and Max_Len
udp_tester 30 -- messages are sent at 1 second intervals (i.e. 1 second between 2 messages)
udp_tester 31 -- sizes are chosen based on MT prng with seed = unixtime when sender starts
udp_tester 32 -- payloads are simply I mod 256 where I is position of octet in message
udp_tester 33 -- data for all sent messages is logged in a .txt file in current dir
udp_tester 34 -- if the log files exist, new content will be APPENDED to it
udp_tester 35 -- if the log file does not exist, it will be created
udp_tester 36 procedure Sender( Receiver_IP: in String;
udp_tester 37 Receiver_Port: in Unsigned_16;
udp_tester 38 Sender_Port: in Unsigned_16 );
udp_tester 39
udp_tester 40 -- receiver method with endless loop, receiving UDP messages on given port
udp_tester 41 -- data for all received messages is logged in a .txt file in current dir
udp_tester 42 -- an additional err log contains any octets that are different from expected
udp_tester 43 -- if the log files exist, new content will be APPENDED to it
udp_tester 44 -- if the log file does not exist, it will be created
udp_tester 45 procedure Receiver( Receiver_Port: in Unsigned_16 );
udp_tester 46
udp_tester 47
udp_tester 48 end UDP_Tester;