This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] More data rates supported on Linux


This patch adds additional data rates to the GNAT.Serial_Communications
package (Linux version).

Tested on x86_64-pc-linux-gnu, committed on trunk

2019-07-08  Bob Duff  <duff@adacore.com>

gcc/ada/

	* libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate):
	Support additional data rates.
--- gcc/ada/libgnat/g-sercom.ads
+++ gcc/ada/libgnat/g-sercom.ads
@@ -100,8 +100,13 @@ package GNAT.Serial_Communications is
    --  cases, an explicit port name can be passed directly to Open.
 
    type Data_Rate is
-     (B75, B110, B150, B300, B600, B1200, B2400, B4800, B9600,
-      B19200, B38400, B57600, B115200);
+     (B75, B110, B150, B300, B600, B1200,
+      B2400, B4800, B9600,
+      B19200, B38400, B57600, B115200,
+      B230400, B460800, B500000, B576000, B921600,
+      B1000000, B1152000, B1500000,
+      B2000000, B2500000, B3000000,
+      B3500000, B4000000);
    --  Speed of the communication
 
    type Data_Bits is (CS8, CS7);
@@ -173,18 +178,31 @@ private
    end record;
 
    Data_Rate_Value : constant array (Data_Rate) of Interfaces.C.unsigned :=
-                       (B75     =>      75,
-                        B110    =>     110,
-                        B150    =>     150,
-                        B300    =>     300,
-                        B600    =>     600,
-                        B1200   =>   1_200,
-                        B2400   =>   2_400,
-                        B4800   =>   4_800,
-                        B9600   =>   9_600,
-                        B19200  =>  19_200,
-                        B38400  =>  38_400,
-                        B57600  =>  57_600,
-                        B115200 => 115_200);
+                       (B75      =>        75,
+                        B110     =>       110,
+                        B150     =>       150,
+                        B300     =>       300,
+                        B600     =>       600,
+                        B1200    =>     1_200,
+                        B2400    =>     2_400,
+                        B4800    =>     4_800,
+                        B9600    =>     9_600,
+                        B19200   =>    19_200,
+                        B38400   =>    38_400,
+                        B57600   =>    57_600,
+                        B115200  =>   115_200,
+                        B230400  =>   230_400,
+                        B460800  =>   460_800,
+                        B500000  =>   500_000,
+                        B576000  =>   576_000,
+                        B921600  =>   921_600,
+                        B1000000 => 1_000_000,
+                        B1152000 => 1_152_000,
+                        B1500000 => 1_500_000,
+                        B2000000 => 2_000_000,
+                        B2500000 => 2_500_000,
+                        B3000000 => 3_000_000,
+                        B3500000 => 3_500_000,
+                        B4000000 => 4_000_000);
 
 end GNAT.Serial_Communications;

--- gcc/ada/libgnat/g-sercom__linux.adb
+++ gcc/ada/libgnat/g-sercom__linux.adb
@@ -58,19 +58,32 @@ package body GNAT.Serial_Communications is
    pragma Import (C, fcntl, "fcntl");
 
    C_Data_Rate : constant array (Data_Rate) of unsigned :=
-                   (B75     => OSC.B75,
-                    B110    => OSC.B110,
-                    B150    => OSC.B150,
-                    B300    => OSC.B300,
-                    B600    => OSC.B600,
-                    B1200   => OSC.B1200,
-                    B2400   => OSC.B2400,
-                    B4800   => OSC.B4800,
-                    B9600   => OSC.B9600,
-                    B19200  => OSC.B19200,
-                    B38400  => OSC.B38400,
-                    B57600  => OSC.B57600,
-                    B115200 => OSC.B115200);
+                   (B75      => OSC.B75,
+                    B110     => OSC.B110,
+                    B150     => OSC.B150,
+                    B300     => OSC.B300,
+                    B600     => OSC.B600,
+                    B1200    => OSC.B1200,
+                    B2400    => OSC.B2400,
+                    B4800    => OSC.B4800,
+                    B9600    => OSC.B9600,
+                    B19200   => OSC.B19200,
+                    B38400   => OSC.B38400,
+                    B57600   => OSC.B57600,
+                    B115200  => OSC.B115200,
+                    B230400  => OSC.B230400,
+                    B460800  => OSC.B460800,
+                    B500000  => OSC.B500000,
+                    B576000  => OSC.B576000,
+                    B921600  => OSC.B921600,
+                    B1000000 => OSC.B1000000,
+                    B1152000 => OSC.B1152000,
+                    B1500000 => OSC.B1500000,
+                    B2000000 => OSC.B2000000,
+                    B2500000 => OSC.B2500000,
+                    B3000000 => OSC.B3000000,
+                    B3500000 => OSC.B3500000,
+                    B4000000 => OSC.B4000000);
 
    C_Bits      : constant array (Data_Bits) of unsigned :=
                    (CS7 => OSC.CS7, CS8 => OSC.CS8);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]