Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
write_csv.py 1.34 KiB
"""Usage: write_csv.py -f FILE

Options:
    -h --help Show this screen.
"""
#!/usr/bin/python2
from docopt import docopt

import numpy as np
import csv
import json
import os
import os.path
import subprocess



def write_csv(output_file):

    with open('kalypso_registers.json') as registers_file:
        registers = json.load(registers_file)

    with open('kalypso_log_conf.json') as log_conf_file:
        log_conf = json.load(log_conf_file)

    def read_register(reg_key, hex=False):
        ## Output from 'pci -r' function in terminal is a string with (rubbish)
        ## + (8 chars for values, starting from [11])
        pcitool_string = subprocess.check_output(['pci', '-r', registers[reg_key]["address"]])
        if hex==True:
            return pcitool_string[11:19]
        else:
            value = int(pcitool_string[11:19],16) & int(registers[reg_key]["mask"],16)
            return value

    csvfile = output_file[:-3] + "csv"
    with open(csvfile, "w") as output:
        writer = csv.writer(output, lineterminator='\n')
        entries = []
        for key in log_conf["log_entries"]:
            entries.append([str(registers[key]["name"]),read_register(key,hex=True)])
        writer.writerows(entries)

if __name__ == "__main__":
    arguments = docopt(__doc__, version="lor 0.2")
    output_file = arguments["FILE"]
    write_csv(output_file)