private void ParseToCsv(string path, PersistanceReader reader)
        {
            if (path.Substring(path.Length-3,3) != "bin")
                return;
            var newFileName = path.Substring(0, path.LastIndexOf('.')) + ".csv";
            var streamWriter = new StreamWriter(new FileStream(newFileName,FileMode.OpenOrCreate,FileAccess.Write));

            var dataStream = new FileStream(path, FileMode.Open, FileAccess.Read);

            streamWriter.WriteLine("time,gP,gR,gY,rP,rR,rY,pP,pR,pY");
            //written like this to provide some feedback that the conversion is actually happening);
            while (true)
            {
                _led.Write(true);
                if (dataStream.Position > dataStream.Length - 44) break;
                streamWriter.WriteLine(reader.GetMessage(dataStream).ToString());
                _led.Write(false);
                if (dataStream.Position > dataStream.Length - 44) break;
                streamWriter.WriteLine(reader.GetMessage(dataStream).ToString());
            }

            dataStream.Close();
            streamWriter.Close();

            /* You will run out of memory doing it this way in the mcu but you should do it this way in the windows program
            var items = reader.GetMessages(path);
            foreach (var serializable in items)
            {
                var line = serializable.ToString();
                streamWriter.WriteLine(line);
            }*/
        }
 public TelemetryPresenter(ISDCard sdCard, Cpu.Pin pin)
 {
     _led = new OutputPort(pin, false);
     var reader = new PersistanceReader(new TelemetryFormatter());
     sdCard.MountFileSystem();
     var files = Directory.GetFiles("\\SD");
     foreach (var file in files)
     {
         ParseToCsv(file,reader);
         //File.Delete(file);
     }
     sdCard.MountMassStorage();
     while(true)
     {
         _led.Write(true);
         Thread.Sleep(1000);
         _led.Write(false);
         Thread.Sleep(1000);
     }
 }