1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! Drone ARM Cortex-M SVD bindings generator.
//!
//! See `drone-cortex-m` documentation for details.
#![feature(range_contains)]
#![warn(missing_docs)]
#![cfg_attr(feature = "clippy", feature(plugin))]
#![cfg_attr(feature = "clippy", plugin(clippy))]
#![cfg_attr(feature = "clippy", allow(precedence, doc_markdown))]

extern crate failure;
#[macro_use]
extern crate quote;
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate serde_xml_rs;
extern crate syn;

mod device;

use device::Device;
use failure::Error;
use std::fs::File;
use std::io::prelude::*;

/// Generate bindings from SVD.
pub fn svd_generate(
  input: &mut File,
  mappings: &mut File,
  tokens: &mut File,
  irq: &mut File,
) -> Result<(), Error> {
  let mut xml = String::new();
  input.read_to_string(&mut xml)?;
  let device: Device = serde_xml_rs::deserialize(xml.as_bytes())?;
  device.generate(mappings, tokens, irq)
}