pub mod gps_struct;
use rpi_embedded::uart::{Uart, Parity};
fn main() {
let mut gps = gps_struct::GPS::default();
gps.set_baud(9600);
let mut uart = Uart::new(gps.baud, Parity::None, 8, 1).expect("Uart fail");
loop{
let data = uart.read_line().expect("read line fail");
gps.read_data(data);
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn latitude_test() {
let string = "$GPGGA,112503.101,6507.4485,N,02255.5355,W,1,04,2.26,17.7,M,60.6,M,,*44".to_string();
let mut gps_test = gps_struct::GPS::default();
gps_test.read_data(string);
assert_eq!(gps_test.latitude, (6507.4485).to_string());
}
#[test]
fn longitude_test() {
let string = "$GPGGA,112503.101,6507.4485,N,02255.5355,W,1,04,2.26,17.7,M,60.6,M,,*44".to_string();
let mut gps_test = gps_struct::GPS::default();
gps_test.read_data(string);
assert_eq!(gps_test.longitude, 0.to_string() + &2255.5355.to_string());
}
#[test]
fn baud_test() {
let mut gps_test = gps_struct::GPS::default();
gps_test.set_baud(9600);
assert_eq!(gps_test.baud,9600);
}
#[test]
fn orientation_test() {
let string = "$GPGGA,112503.101,6507.4485,N,02255.5355,W,1,04,2.26,17.7,M,60.6,M,,*44".to_string();
let mut gps_test = gps_struct::GPS::default();
gps_test.read_data(string);
assert_eq!(gps_test.north_south + &gps_test.east_west, "NW".to_string());
}
}