Exemple #1
0
def test_generated_code_for_combined(rsl_generator: RslGenerator):
    register_name = 'CREG_COM_RATES6'
    register = rsl_generator.find_register_by(name=register_name)
    generated_code = rsl_generator.generate_props_for_register(register)
    print(generated_code)
    assert len(
        generated_code) > 0, f"No code has been generated for {register_name}"
    assert "not implemented" not in generated_code.lower(
    ), "Not implemented should not be in generated code!"
Exemple #2
0
def test_interpret_bitfield(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(name='CREG_COM_RATES1')
    code = rsl_generator.interpret_bitfields(reg)
    print(code)
    assert len(code) > 0, "No code is generated!"
Exemple #3
0
def test_interpret_packed_data_2(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(name='DREG_GYRO_PROC_Z')
    ret = rsl_generator.interpret_packed_data(reg)
    print(ret)
Exemple #4
0
def test_get_struct_fmt_for_register_all(rsl_generator: RslGenerator):
    for reg in rsl_generator.regs:
        fmt = rsl_generator.get_struct_fmt_for_register(reg)
        struct_size = struct.calcsize(fmt)
        assert 0 <= struct_size <= 4, f"\nregister: {reg.name} should not exceed 4, but has size {struct_size}!"
Exemple #5
0
def rsl_generator() -> RslGenerator:
    test_script_path = os.path.dirname(__file__)
    svd_file = os.path.join(test_script_path, os.pardir, os.pardir,
                            './um7py/rsl_xml_svd/um7.svd')
    return RslGenerator(svd_file=svd_file)
Exemple #6
0
def test_get_struct_fmt_for_register_float(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(name='DREG_GYRO_PROC_X')
    ret = rsl_generator.get_struct_fmt_for_register(reg)
    print(ret)
    assert ret == '>f', "Interpreted field is incorrect!"
Exemple #7
0
def test_get_struct_fmt_for_register_two_shorts(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(name='DREG_GYRO_RAW_XY')
    ret = rsl_generator.get_struct_fmt_for_register(reg)
    print(ret)
    assert ret == '>hh', "Interpreted fields for DREG_GYRO_RAW_XY are incorrect!"
Exemple #8
0
def test_get_struct_fmt_for_register_one_short(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(name='DREG_GYRO_RAW_Z')
    ret = rsl_generator.get_struct_fmt_for_register(reg)
    print(ret)
    assert ret == '>hxx', "Interpreted field is incorrect!"
Exemple #9
0
def test_retrieve_return_description(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(name='DREG_GYRO_RAW_Z')
    return_description = rsl_generator.retrieve_return_description(reg)
    assert len(return_description) > 0, "Return description is empty!"
    print(return_description)
Exemple #10
0
def test_retrieve_payload_description(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(address=0x55)
    payload_description = rsl_generator.retrieve_payload_description(reg)
    assert len(payload_description) > 0, "Payload description is empty!"
    print(payload_description)
Exemple #11
0
def test_create_getter_property(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(name='DREG_HEALTH')
    getter_prop = rsl_generator.create_getter_property(reg)
    assert len(getter_prop) > 0, "Getter property is empty!"
    print(getter_prop)
Exemple #12
0
def test_create_setter_property(rsl_generator: RslGenerator):
    reg = rsl_generator.find_register_by(name='DREG_GYRO_RAW_XY')
    setter_prop = rsl_generator.create_setter_property(reg)
    assert len(setter_prop) > 0, "Setter property is empty!"
    print(setter_prop)
Exemple #13
0
def test_get_struct_fmt_for_register_mixed(rsl_generator: RslGenerator):
    register_name = 'CREG_COM_RATES6'
    expected_fmt = '>BxBx'
    reg = rsl_generator.find_register_by(name=register_name)
    result = rsl_generator.get_struct_fmt_for_register(reg)
    assert result == expected_fmt, f"INCORRECT struct.fmt for {register_name} expected {expected_fmt}, got {result}"
Exemple #14
0
def test_generate_props_for_register_map(rsl_generator: RslGenerator):
    generated_code = rsl_generator.generate_props_for_main_register_map()
    print(generated_code)
    assert len(generated_code) > 0, "No code is generated!"
    assert "not implemented" not in generated_code.lower(
    ), "Not implemented should not be in generated code!"
Exemple #15
0
# Date: 7 April 2020
# Version: v0.1
# License: MIT

import os
import os.path

from um7py.rsl_generator import RslGenerator
from textwrap import indent
from datetime import datetime

if __name__ == '__main__':
    script_folder = os.path.dirname(__file__)
    svd_file = os.path.join(script_folder, os.pardir,
                            './um7py/rsl_xml_svd/um7.svd')
    rsl_svd_generator = RslGenerator(svd_file=svd_file)
    um7_main_registers = indent(
        rsl_svd_generator.generate_props_for_main_register_map(), ' ' * 4)
    um7_hidden_registers = indent(
        rsl_svd_generator.generate_props_for_hidden_registers(), ' ' * 4)

    today = datetime.now().strftime('%Y.%m.%d')
    params_dict = {
        'generated_code_for_main_register_map': um7_main_registers,
        'generated_code_for_hidden_register_map': um7_hidden_registers,
        'today': today
    }
    um7_template = os.path.join(os.path.dirname(__file__),
                                'templates/um7_template.jinja2')
    gen_code = RslGenerator.render_template_to_str(um7_template, params_dict)
    with open('um7_registers.py', 'w') as fd: