tiny-nmea 0.1.0

A tiny NMEA parser for embedded systems. Works with `#[no_std]` and doesn't require heap allocation. and doesn't require heap allocation
Documentation
use crate::message::NMEAMessage;
use heapless::String;
use heapless::Vec;
use crate::common::parse_time;
use crate::message::NMEAMessage::GLL;
use crate::substring;

pub fn parse_gll(fields: Vec<&str, 41>) -> Result<NMEAMessage, ()> {
    let talker = substring!(fields[1], 0, 2);
    let lat_degree = substring!(fields[2], 0, 2).parse::<f32>().map_err(|_| ())?;
    let lat_minute = substring!(fields[2], 2, 10).parse::<f32>().map_err(|_| ())?;
    let mut lat = lat_degree + (lat_minute / 60.0);
    let lat_direction = fields[3];
    if lat_direction == "S" {
        lat = -lat;
    }

    let lon_degree = substring!(fields[4], 0, 3).parse::<f32>().map_err(|_| ())?;
    let lon_minute = substring!(fields[4], 3, 10).parse::<f32>().map_err(|_| ())?;
    let mut lon = lon_degree + (lon_minute / 60.0);
    let lon_direction = fields[5];
    if lon_direction == "W" {
        lon = -lon;
    }

    Ok(GLL{
        talker,
        latitude: lat,
        longitude: lon,
        utc: parse_time(fields[6]).map_err(|_| ())?,
    })
}