------------------------------------------------------------------------------ -- -- -- SVD Binding Generator -- -- -- -- Copyright (C) 2015-2016, AdaCore -- -- -- -- SVD2Ada is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- -- Software Foundation; either version 3, or (at your option) any later -- -- version. SVD2Ada is distributed in the hope that it will be useful, but -- -- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTA- -- -- BILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -- -- License for more details. You should have received a copy of the GNU -- -- General Public License distributed with SVD2Ada; see file COPYING3. If -- -- not, go to http://www.gnu.org/licenses for a complete copy of the -- -- license. -- -- -- ------------------------------------------------------------------------------ with Ada.Containers.Vectors; with Ada.Strings.Unbounded; use Ada.Strings; with DOM.Core; with Base_Types; use Base_Types; with Base_Types.Register_Properties; use Base_Types.Register_Properties; with Descriptors.Cluster; use Descriptors.Cluster; with Descriptors.Register; use Descriptors.Register; -- Decodes and then dumps the elements of the SVD file. package Descriptors.Peripheral is type Peripheral_T; type Peripheral_Access is access all Peripheral_T; type Peripheral_Db is interface; function Get_Peripheral (Db : Peripheral_Db; XML_Id : String) return Peripheral_Access is abstract; type Peripheral_T is new Register_Db and Cluster_Db with record Name : Unbounded.Unbounded_String; Type_Name : Unbounded.Unbounded_String; Version : Unbounded.Unbounded_String; Description : Unbounded.Unbounded_String; Group_Name : Unbounded.Unbounded_String; Prepend_To_Name : Unbounded.Unbounded_String; Append_To_Name : Unbounded.Unbounded_String; Base_Address : Unsigned := 0; Reg_Properties : Register_Properties_T := Null_Register_Property; Address_Blocks : Address_Block_Vectors.Vector; Interrupts : Interrupt_Vectors.Vector; Content : Peripheral_Element_Vectors.Vector; end record; overriding function Get_Register (Db : Peripheral_T; XML_Id : String) return Register_Access; overriding function Get_Cluster (Db : Peripheral_T; XML_Id : String) return Cluster_Access; function Read_Peripheral (Elt : DOM.Core.Element; Reg_Properties : Register_Properties_T; Periph_Db : Peripheral_Db'Class) return Peripheral_T; procedure Dump (Peripheral : in out Peripheral_T; Dev_Name : String; Output_Dir : String); package Peripheral_Vectors is new Ada.Containers.Vectors (Positive, Peripheral_Access); procedure Dump (Group : Peripheral_Vectors.Vector; Dev_Name : String; Output_Dir : String); end Descriptors.Peripheral;