rccn-gen 1.0.2__py3-none-any.whl → 1.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
rccn_gen/__init__.py CHANGED
@@ -1,6 +1,5 @@
1
1
  from .systems import *
2
2
  from .utils import *
3
- from .telemetry import *
4
3
 
5
4
  __version__ = "0.1.0"
6
5
 
rccn_gen/systems.py CHANGED
@@ -1,12 +1,10 @@
1
- from yamcs.pymdb import System, Subsystem, Command
1
+ from yamcs.pymdb import System, Subsystem, Command, Container
2
2
  import shutil
3
3
  import difflib
4
4
  import datetime
5
5
  from caseconverter import *
6
6
  from importlib.resources import files
7
7
  from .utils import *
8
- from .telemetry import *
9
-
10
8
 
11
9
  class Application(Subsystem):
12
10
  """
@@ -283,14 +281,14 @@ class Service(Subsystem):
283
281
  # Find and replace service variable keywords
284
282
  var_keywords = get_var_keywords(text)
285
283
  service_var_translation = {
286
- '<<VAR_SERVICE_NAME>>': self.name,
287
- '<<VAR_SERVICE_ID>>': str(self.service_id),
288
- '<<VAR_SERVICE_NAME_UCASE>>': pascalcase(self.name),
289
- '<<VAR_SERVICE_TELEMETRY>>': self.generate_rust_telemetry_definition(),
284
+ '<<VAR_SERVICE_NAME>>': lambda: self.name,
285
+ '<<VAR_SERVICE_ID>>': lambda: str(self.service_id),
286
+ '<<VAR_SERVICE_NAME_UCASE>>': lambda: pascalcase(self.name),
287
+ '<<VAR_SERVICE_TELEMETRY>>': lambda: self.generate_rust_telemetry_definition(),
290
288
  }
291
289
  for var_keyword in var_keywords:
292
290
  if var_keyword in service_var_translation.keys():
293
- text = replace_with_indentation(text, var_keyword, service_var_translation[var_keyword])
291
+ text = replace_with_indentation(text, var_keyword, service_var_translation[var_keyword]())
294
292
 
295
293
  # Delete all command module keywords
296
294
  text = delete_all_command_module_keywords(text)
@@ -385,7 +383,8 @@ class Service(Subsystem):
385
383
  def generate_rust_telemetry_definition(self):
386
384
  telemetry_definition_text = ''
387
385
  for container in self.containers:
388
- container.__class__ = RCCNContainer
386
+ if not isinstance(container, RCCNContainer):
387
+ container.__class__ = RCCNContainer
389
388
  telemetry_definition_text += container.generate_rccn_telemetry()
390
389
  return telemetry_definition_text
391
390
 
@@ -431,14 +430,14 @@ class RCCNCommand(Command):
431
430
  # Find and replace command variable keywords
432
431
  command_var_keywords = get_var_keywords(text)
433
432
  command_var_translation = {
434
- '<<VAR_COMMAND_NAME_UCASE>>': pascalcase(self.name),
435
- '<<VAR_COMMAND_NAME>>': self.name,
436
- '<<VAR_COMMAND_SUBTYPE>>': str(self.assignments['subtype']),
437
- '<<VAR_COMMAND_STRUCT>>': self.struct_definition()
433
+ '<<VAR_COMMAND_NAME_UCASE>>': lambda: pascalcase(self.name),
434
+ '<<VAR_COMMAND_NAME>>': lambda: self.name,
435
+ '<<VAR_COMMAND_SUBTYPE>>': lambda: str(self.assignments['subtype']),
436
+ '<<VAR_COMMAND_STRUCT>>': lambda: self.struct_definition()
438
437
  }
439
438
  for command_var_keyword in command_var_keywords:
440
439
  if command_var_keyword in command_var_translation.keys():
441
- text = replace_with_indentation(text, command_var_keyword, command_var_translation[command_var_keyword])
440
+ text = replace_with_indentation(text, command_var_keyword, command_var_translation[command_var_keyword]())
442
441
  return text
443
442
 
444
443
  def check_user_input(self):
@@ -452,11 +451,15 @@ class RCCNCommand(Command):
452
451
  if len(self.arguments) == 0:
453
452
  return ''
454
453
  struct_definition_text = "#[derive(BitStruct, Debug, PartialEq)]\npub struct "+pascalcase(self.name)+" {\n"
454
+ ins = ""
455
+ append = ""
455
456
  for argument in self.arguments:
456
- struct_definition_text += rust_type_definition(argument)[0]
457
+ arg_def = rust_type_definition(argument)
458
+ ins += arg_def[0]
459
+ append += arg_def[1]
460
+ struct_definition_text += ins
457
461
  struct_definition_text += "}\n"
458
- for argument in self.arguments:
459
- struct_definition_text += rust_type_definition(argument)[1]
462
+ struct_definition_text += append
460
463
  return struct_definition_text
461
464
 
462
465
  class RCCNContainer(Container):
@@ -475,11 +478,12 @@ class RCCNContainer(Container):
475
478
 
476
479
  def generate_rccn_telemetry(self):
477
480
  rccn_telemetry_text = "pub struct " + self.name + " {\n"
481
+ insert, append = ["",""]
478
482
  for parameter_entry in self.entries:
479
- rccn_telemetry_text += rust_type_definition(parameter_entry.parameter)[0]
480
- #rccn_telemetry_text += parameter_entry.generate_rccn_telemetry()[0]
483
+ par_def = rust_type_definition(parameter_entry.parameter)
484
+ insert += par_def[0]
485
+ append += par_def[1]
486
+ rccn_telemetry_text += insert
481
487
  rccn_telemetry_text += "}\n"
482
- for parameter_entry in self.entries:
483
- rccn_telemetry_text += rust_type_definition(parameter_entry.parameter)[1]
484
-
488
+ rccn_telemetry_text += append
485
489
  return rccn_telemetry_text
rccn_gen/utils.py CHANGED
@@ -172,12 +172,14 @@ def rust_type_definition(pymdb_data_instance, parent_name="MyStruct"):
172
172
  struct_name = pascalcase(pymdb_data_instance.name)
173
173
  definition_text = ["\tpub "+sc_instance_name+": "+struct_name+",\n"]
174
174
  definition_text.append("pub struct "+struct_name+" {\n")
175
+ insert, append = ["",""]
175
176
  for member in pymdb_data_instance.members:
176
- definition_text[1] += rust_type_definition(member, parent_name=pymdb_data_instance.name)[0]
177
+ mem_def = rust_type_definition(member, parent_name=pymdb_data_instance.name)
178
+ insert += mem_def[0]
179
+ append += mem_def[1]
180
+ definition_text[1] += insert
177
181
  definition_text[1] += "}\n"
178
- for member in pymdb_data_instance.members:
179
- definition_text[1] += rust_type_definition(member, parent_name=pymdb_data_instance.name)[1]
180
-
182
+ definition_text[1] += append
181
183
  else:
182
184
  definition_text = ["\t// Please implement datatype "+data_type+" here.\n", ""]
183
185
  return definition_text
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rccn_gen
3
- Version: 1.0.2
3
+ Version: 1.0.3
4
4
  Summary: A python based generator for RACCOON OS source files in Rust from yamcs-pymdb config files.
5
5
  Project-URL: Homepage, https://gitlab.com/rccn/pymdb_code_generation
6
6
  Project-URL: Issues, https://gitlab.com/rccn/pymdb_code_generation/issues
@@ -1,10 +1,7 @@
1
1
  rccn_gen/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
2
- rccn_gen/__init__.py,sha256=XVvKYcWw9K1P3J1BTbzbODY71Nc1FApCc0wf7ezd4Gc,193
3
- rccn_gen/application.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- rccn_gen/service.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- rccn_gen/systems.py,sha256=ibpegtBKPF-w6hmiWC_-TgJII6uvWP8wRSDpwEq8rjY,26755
6
- rccn_gen/telemetry.py,sha256=huVcqGs95IXlpETWdlIyR9lK4ctZUsq7czgJwvTYtBk,3855
7
- rccn_gen/utils.py,sha256=HF79aMpovRdqLdVjL1w0iEPTEvOl7VSPrf_9QifUyoc,7290
2
+ rccn_gen/__init__.py,sha256=rBnqIw3uQk-uBbRh9VnungoTRSr2V0Bqos32xFZ44Eo,168
3
+ rccn_gen/systems.py,sha256=D_AqspMI3VTyHbV3cmi6uizlZSKgmOHq21ASXoG-9vk,26863
4
+ rccn_gen/utils.py,sha256=FHNatrkeyjF1qxyw3_o5cvNjIX9SXrEWRD9ugj-qtSo,7292
8
5
  rccn_gen/text_modules/cargo_toml/cargo.txt,sha256=2e6xKomkml6-onfQ0QHNqvKnhGLYMUl8zYgbykmm83Y,292
9
6
  rccn_gen/text_modules/command/command.txt,sha256=8Y-uJilhFLoinftIbn7uKfia9LLMZno2LkoDJ-4Y-9M,345
10
7
  rccn_gen/text_modules/command/command_module_enum.txt,sha256=ApzRDQIs-BHJHtFA4ysfpYuWElGntXakkzZkgy57b74,94
@@ -17,6 +14,6 @@ rccn_gen/text_modules/mod/mod.txt,sha256=BF8LablBE4ddutdl5m0prvpvLdBRejueVOujkyr
17
14
  rccn_gen/text_modules/service/command_module_match_cmd.txt,sha256=eVGo6ltuerG37rVxpXtL-JYuLyLW4c0i6NXb5g1_U-A,89
18
15
  rccn_gen/text_modules/service/service.txt,sha256=0KwwrfrjXuY4e3VNpCdTTzgW8bmYRQ21i-Lvhkz3hVA,691
19
16
  rccn_gen/text_modules/telemetry/telemetry.txt,sha256=Re1d3BfpyXT_CEe7jJzLF3MARik0-J-K98K85iPOE40,193
20
- rccn_gen-1.0.2.dist-info/METADATA,sha256=SmSD9_-46j9ZXvYAhuVPr2hINx0_xHOihSPJ31vfwVc,8260
21
- rccn_gen-1.0.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
22
- rccn_gen-1.0.2.dist-info/RECORD,,
17
+ rccn_gen-1.0.3.dist-info/METADATA,sha256=Z4LaK07eqhpSDcv-4rRO2hIerglzl6rUubE2CvtnVOs,8260
18
+ rccn_gen-1.0.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
19
+ rccn_gen-1.0.3.dist-info/RECORD,,
rccn_gen/application.py DELETED
File without changes
rccn_gen/service.py DELETED
File without changes
rccn_gen/telemetry.py DELETED
@@ -1,83 +0,0 @@
1
- from yamcs.pymdb import Container, ParameterEntry, AggregateParameter, ArrayParameter, BinaryParameter, StringParameter, BooleanParameter, FloatParameter, IntegerParameter, StringMember, EnumeratedMember
2
- from .utils import *
3
-
4
-
5
- def generate_rccn_parameter_telemetry(parameter):
6
- sc_parameter_name = to_snake_case(parameter.name)
7
-
8
- if isinstance(parameter, ArrayParameter):
9
- struct_name = to_upper_camel_case(parameter.name)
10
- telemetry = ["\tpub "+sc_parameter_name+": Vec<"+struct_name+">,\n"]
11
- telemetry.append("pub struct "+struct_name+" {\n")
12
- for member in parameter.data_type.members:
13
- telemetry[1] += generate_rccn_member_telementry(member)[0]
14
- telemetry[1] += "}\n"
15
- for member in parameter.data_type.members:
16
- telemetry[1] += generate_rccn_member_telementry(member)[1]
17
-
18
- elif isinstance(parameter, BooleanParameter):
19
- telemetry = ["\t#[bits(1)]\n\tpub "+sc_parameter_name+": bool,\n"]
20
- telemetry.append("")
21
-
22
- elif isinstance(parameter, IntegerParameter):
23
- if parameter.encoding is None or parameter.encoding.bits is None:
24
- raw_bit_number_str = '8'
25
- print("Warning: No encoding for parameter "+parameter.name+" found. Using 8 as default for raw bit number.")
26
- else:
27
- raw_bit_number = parameter.encoding.bits
28
- raw_bit_number_str = str(raw_bit_number)
29
- eng_bit_number = engineering_bit_number(raw_bit_number)
30
- eng_bit_number_str = str(eng_bit_number)
31
- telemetry = ["\t#[bits("+raw_bit_number_str+")]\n"]
32
- if parameter.signed:
33
- telemetry[0] += ("\tpub "+sc_parameter_name+": i"+eng_bit_number_str+",\n")
34
- else:
35
- telemetry += ("\tpub "+sc_parameter_name+": u"+eng_bit_number_str+",\n")
36
- telemetry.append("")
37
-
38
- elif isinstance(parameter, StringParameter):
39
- telemetry = ["#[null_terminated]\npub "+sc_parameter_name+": String,\n"]
40
- telemetry.append("")
41
-
42
- else:
43
- telemetry = ["\t// Please implement datatype "+type(parameter).__name__+" here.\n", ""]
44
- return telemetry
45
-
46
- def generate_rccn_member_telementry(member):
47
- sc_member_name = to_snake_case(member.name)
48
-
49
- if isinstance(member, StringMember):
50
- member_telemetry = ["#[null_terminated]\n\tpub "+member.name+": String,\n"]
51
- member_telemetry.append("")
52
-
53
- elif isinstance(member, EnumeratedMember):
54
- member_telemetry = ["\tpub "+member.name+": "+to_upper_camel_case(member.name)+",\n"]
55
- member_telemetry.append("pub enum "+to_upper_camel_case(member.name)+" {\n")
56
- for choice in member.choices:
57
- member_telemetry[1] += "\t"+str(choice[1])+" = "+str(choice[0])+",\n"
58
- member_telemetry[1] += "}\n"
59
-
60
- elif isinstance(member, BooleanParameter):
61
- telemetry = ["pub "+sc_member_name+": bool,\n"]
62
- telemetry.append("")
63
-
64
- elif isinstance(member, IntegerParameter):
65
- if member.encoding is None or member.encoding.bits is None:
66
- raw_bit_number = 8
67
- print("Warning: No encoding for member "+member.name+" found. Using 8 as default for raw bit number.")
68
- else:
69
- raw_bit_number = member.encoding.bits
70
- raw_bit_number_str = str(raw_bit_number)
71
- eng_bit_number = engineering_bit_number(raw_bit_number)
72
- eng_bit_number_str = str(eng_bit_number)
73
- telemetry = ["\t#[bits("+raw_bit_number_str+")]\n"]
74
- if member.signed:
75
- telemetry[0] += ("\tpub "+sc_member_name+": i"+eng_bit_number_str+",\n")
76
- else:
77
- telemetry += ("\tpub "+sc_member_name+": u"+eng_bit_number_str+",\n")
78
- telemetry.append("")
79
-
80
- else:
81
- member_telemetry[0] += "\t// Please implement datatype "+type(member).__name__+" here.\n"
82
- member_telemetry.append("")
83
- return member_telemetry