#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import argparse
from psas_packet import io
from psas_packet import messages

PSAS = {cls.fourcc: cls for cls in messages.PSAS_MESSAGES}

def log2csv(f_in):
    files = {}
    with io.BinFile(f_in) as log:
        seq = 0
        for data in log.read():
            for key in data:
                if key in PSAS:

                    if key not in files:
                        files[key] = open(str(messages.printable(key))+'.csv', 'w')
                        files[key].write("# [0]SEQN, [1]Timestamp")
                        for i, member in enumerate(PSAS[key].member_list):
                            files[key].write(", [{0}]{1}".format(i+2, member['key']))
                        files[key].write('\n')

                    values = data[key]

                    if key == 'SEQN':
                        seq = values['Sequence']

                    f_out = files[key]
                    f_out.write(str(seq)+","+str(values['timestamp']))
                    for member in PSAS[key].member_list:
                        f_out.write(","+str(values[member['key']]))
                    f_out.write('\n')


if __name__ == "__main__":
    parser = argparse.ArgumentParser(prog='log2csv')
    parser.add_argument('logfile', type=argparse.FileType('rb'), help="log file to read")
    args = vars(parser.parse_args())

    log2csv(args['logfile'])
