Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions scripts/generate_params.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
#
# Copyright (c) 2023 Dmitry Ponomarev <ponomarevda96@gmail.com>
#
# Anastasiia Stepanova <asiiapine@gmail.com>
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
Expand All @@ -26,6 +26,7 @@ def __init__(self, directory, name) -> None:
self.integers_array = ""
self.integers_enums = ""
self.strings_array = ""
self.strings_enums = ""
self.strings_amount = 0

def add_integer(self, param : IntegerParam):
Expand All @@ -47,8 +48,9 @@ def add_integer(self, param : IntegerParam):
def add_string(self, param : StringParam):
assert isinstance(param, StringParam)
c_string = f" {{{param.name :<32}, {param.default}, {param.mutability}}},\n"

h_string = f" {param.enum_name},\n" if self.strings_amount > 0 else f" {param.enum_name} = INTEGER_PARAMS_AMOUNT,\n"
self.strings_array += c_string
self.strings_enums += h_string
self.strings_amount += 1

def generate(self):
Expand Down Expand Up @@ -82,8 +84,16 @@ def generate(self):
f"{self.integers_enums}\n"
" INTEGER_PARAMS_AMOUNT\n"
"};\n"
f"#define NUM_OF_STR_PARAMS {self.strings_amount}\n"

)
if self.strings_amount > 0:
hpp_content += (
"enum StrParamsIndexes {\n"
f"{self.strings_enums}\n"
"};\n"
)

hpp_content += f"#define NUM_OF_STR_PARAMS {self.strings_amount}\n"
hpp_file.write(hpp_content)

if __name__=="__main__":
Expand Down Expand Up @@ -120,7 +130,8 @@ def generate(self):
sys.exit(1)
elif data['type'].lower() == "port":
gen.add_integer(IntegerParam.create_port_id(param_name, data['enum_base']))
gen.add_string(StringParam.create_port_type(param_name, data['data_type']))
gen.add_string(StringParam.create_port_type(param_name, data['data_type'],
data['enum_base']))
elif data['type'].lower() == "integer":
gen.add_integer(IntegerParam.create(param_name, data))
elif data['type'].lower() == "string":
Expand Down
11 changes: 7 additions & 4 deletions scripts/params.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
#
# Copyright (c) 2023 Dmitry Ponomarev <ponomarevda96@gmail.com>
#
# Anastasiia Stepanova <asiiapine@gmail.com>
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
Expand All @@ -15,9 +15,10 @@
@dataclass
class BaseParam:
name: str = ""
default: int = 0
default: int | str = 0
note: str = ""
mutability: str = "MUTABLE"
enum_name: str = ""

@dataclass
class IntegerParam(BaseParam):
Expand All @@ -26,7 +27,6 @@ class IntegerParam(BaseParam):
- Cyphal uavcan.register.Value.1.0.integer32
- DroneCAN uavcan.param.Value.integer_value
"""
enum_name: str = ""
flags: str = ""
min: int = 0
max: int = 0
Expand Down Expand Up @@ -115,10 +115,11 @@ def create(param_name, data):
return string_param

@staticmethod
def create_port_type(param_name, data_type : str):
def create_port_type(param_name, data_type : str, enum_base : str):
type_register = StringParam(
name=f"\"{param_name}.type\"",
default=f"\"{data_type}\"",
enum_name=f"{enum_base}_TYPE",
mutability="IMMUTABLE"
)
return type_register
Expand All @@ -128,6 +129,7 @@ def _create_from_dict(param_name, data : dict):
string_param = StringParam(
name=f"\"{param_name}\"",
default=f"\"{data['default']}\"",
enum_name=data['enum'],
mutability=is_mutable(param_name, str(data['flags']))
)
if 'note' in data:
Expand All @@ -141,6 +143,7 @@ def _create_from_list_legacy(param_name, data : list):
"""Input example: param_name : ["data_type", "ENUM_NAME"]"""
string_param = StringParam(
name=f"\"{param_name}\"",
enum_name=data[1],
default=f"\"{data[3]}\"",
mutability=is_mutable(param_name, str(data[2]))
)
Expand Down
Loading