From bc851e96d67446834294e16f70878bc0fe9f55a8 Mon Sep 17 00:00:00 2001 From: Jason Belt Date: Tue, 17 Dec 2024 16:53:11 -0600 Subject: [PATCH] add sysml verison of isolette model --- .github/workflows/ci-hamr.yml | 1 + isolette/.ci/ci.cmd | 30 +- isolette/.gitignore | 3 +- ...lette_isolette_single_sensor_Instance.json | 6296 ++++++++--------- .../aadl/packages/Abstract_Definitions.aadl | 2 - isolette/aadl/aadl/packages/Isolette.aadl | 7 +- .../aadl/packages/Isolette_Data_Model.aadl | 8 +- isolette/aadl/aadl/packages/Monitor.aadl | 56 +- .../aadl/packages/Operator_Interface.aadl | 4 +- isolette/aadl/aadl/packages/Regulate.aadl | 30 +- isolette/aadl/bin/clean.cmd | 125 +- isolette/aadl/bin/run-hamr.cmd | 12 +- isolette/hamr/microkit/microkit.system | 22 +- .../microkit/types/include/sb_aadl_types.h | 25 +- isolette/hamr/slang/bin/sergen.cmd | 13 +- isolette/hamr/slang/bin/slangcheck.cmd | 13 +- .../architecture/isolette/Schedulers.scala | 26 +- .../isolette/Monitor/Manage_Alarm_i_Api.scala | 26 - ...e_Alarm_i_thermostat_mt_ma_ma_GumboX.scala | 80 +- .../Manage_Monitor_Interface_i_Api.scala | 8 +- ...rface_i_thermostat_mt_mmi_mmi_GumboX.scala | 20 +- ..._Mode_i_thermostat_mt_mmm_mmm_GumboX.scala | 4 +- .../Operator_Interface_Thread_i_Api.scala | 8 +- ..._i_operator_interface_oip_oit_GumboX.scala | 8 +- ...ource_i_thermostat_rt_mhs_mhs_GumboX.scala | 10 +- ...rface_i_thermostat_rt_mri_mri_GumboX.scala | 12 +- ..._Mode_i_thermostat_rt_mrm_mrm_GumboX.scala | 8 +- ...ce_i_heat_source_cpi_heat_controller.scala | 4 +- ...rature_Sensor__InjectionProvider_Ext.scala | 2 +- ..._i_temperature_sensor_cpi_thermostat.scala | 6 +- .../Manage_Alarm_i_thermostat_mt_ma_ma.scala | 32 +- ...or_Interface_i_thermostat_mt_mmi_mmi.scala | 20 +- ...Monitor_Mode_i_thermostat_mt_mmm_mmm.scala | 6 +- .../UserInterface/Gui.scala | 10 +- ..._Heat_Source_i_thermostat_rt_mhs_mhs.scala | 14 +- ...or_Interface_i_thermostat_rt_mri_mri.scala | 18 +- ...gulator_Mode_i_thermostat_rt_mrm_mrm.scala | 10 +- .../Isolette_Data_Model/Failure_Flag_i.scala | 4 +- .../Isolette_Data_Model/PhysicalTemp_i.scala | 4 +- .../Isolette_Data_Model/TempWstatus_i.scala | 4 +- .../isolette/Isolette_Data_Model/Temp_i.scala | 4 +- .../Air_Interaction.scala | 20 + .../slang/src/main/util/isolette/JSON.scala | 677 +- .../src/main/util/isolette/MsgPack.scala | 658 +- .../main/util/isolette/SlangCheckConfig.scala | 26 +- .../util/isolette/SlangCheckDataTypeId.scala | 23 +- .../util/isolette/SlangCheckGenerator.scala | 60 +- .../main/util/isolette/SlangCheckRandom.scala | 174 +- isolette/readme.md | 189 + isolette/sysml/.project | 19 + isolette/sysml/Devices.sysml | 94 + isolette/sysml/Isolette.sysml | 127 + isolette/sysml/Isolette_Data_Model.sysml | 101 + isolette/sysml/Isolette_Environment.sysml | 107 + isolette/sysml/Monitor.sysml | 529 ++ isolette/sysml/Operator_Interface.sysml | 127 + isolette/sysml/README.md | 3 + isolette/sysml/Regulate.sysml | 546 ++ isolette/sysml/Thermostat.sysml | 75 + isolette/sysml/arch.png | Bin 0 -> 306283 bytes isolette/sysml/arch.svg | 3082 ++++++++ isolette/sysml/bin/clean.cmd | 105 + isolette/sysml/bin/run-hamr.cmd | 90 + .../aadl/event_data_port_queues.aadl | 6 +- .../aadl/event_data_port_queues.aadl | 6 +- .../aadl/event_data_port_queues.aadl | 6 +- 66 files changed, 9675 insertions(+), 4170 deletions(-) create mode 100644 isolette/hamr/slang/src/main/data/isolette/Isolette_Environment/Air_Interaction.scala create mode 100644 isolette/readme.md create mode 100644 isolette/sysml/.project create mode 100644 isolette/sysml/Devices.sysml create mode 100644 isolette/sysml/Isolette.sysml create mode 100644 isolette/sysml/Isolette_Data_Model.sysml create mode 100644 isolette/sysml/Isolette_Environment.sysml create mode 100644 isolette/sysml/Monitor.sysml create mode 100644 isolette/sysml/Operator_Interface.sysml create mode 100644 isolette/sysml/README.md create mode 100644 isolette/sysml/Regulate.sysml create mode 100644 isolette/sysml/Thermostat.sysml create mode 100644 isolette/sysml/arch.png create mode 100644 isolette/sysml/arch.svg create mode 100755 isolette/sysml/bin/clean.cmd create mode 100755 isolette/sysml/bin/run-hamr.cmd diff --git a/.github/workflows/ci-hamr.yml b/.github/workflows/ci-hamr.yml index ec75abf..71f2a62 100644 --- a/.github/workflows/ci-hamr.yml +++ b/.github/workflows/ci-hamr.yml @@ -5,6 +5,7 @@ on: push: paths: - 'micro-examples/microkit/**' + - 'isolette/**' schedule: - cron: "0 2 * * 6" # every sunday at 2am jobs: diff --git a/isolette/.ci/ci.cmd b/isolette/.ci/ci.cmd index fae1f99..7092cc1 100755 --- a/isolette/.ci/ci.cmd +++ b/isolette/.ci/ci.cmd @@ -46,7 +46,7 @@ if (result == 0) { } if (result == 0) { - result = run("Running codegen targeting JVM", F, proc"$sireum slang run ${homeDir / "aadl" / "bin" / "run-hamr.cmd"} JVM") + result = run("Running codegen from AADL model targeting JVM", F, proc"$sireum slang run ${homeDir / "aadl" / "bin" / "run-hamr.cmd"} JVM") } if (result == 0) { @@ -54,11 +54,35 @@ if (result == 0) { } if (result == 0) { - result = run("Running codegen targeting Microkit", F, proc"$sireum slang run ${homeDir / "aadl" / "bin" / "run-hamr.cmd"} Microkit") + result = run("Cloning https://github.com/santoslab/sysml-aadl-libraries.git", F, proc"git clone https://github.com/santoslab/sysml-aadl-libraries.git sysml/sysml-aadl-libraries".at(homeDir / "sysml")) +} + +if (result == 0) { + result = run("Running codegen from SysMLv2 model targeting JVM", F, proc"$sireum slang run ${homeDir / "sysml" / "bin" / "run-hamr.cmd"} JVM") +} + +if (result == 0) { + result = run("Verifying via Logika", T, proc"$sireum slang run ${homeDir / "hamr" / "slang" / "bin" / "run-logika.cmd"}") +} + +if (result == 0) { + result = run("Checking integration constraints", F, proc"$sireum hamr sysml logika --sourcepath ${homeDir / "sysml"}") +} + +if (result == 0) { + result = run("Running codegen from AADL model targeting Microkit", F, proc"$sireum slang run ${homeDir / "aadl" / "bin" / "run-hamr.cmd"} Microkit") +} + +if (result == 0 && Os.env("MICROKIT_SDK").nonEmpty) { + result = run("Building the image", F, proc"make".at(homeDir / "hamr" / "microkit")) +} + +if (result == 0) { + result = run("Running codegen from SysMLv2 model targeting Microkit", F, proc"$sireum slang run ${homeDir / "sysml" / "bin" / "run-hamr.cmd"} Microkit") } if (result == 0 && Os.env("MICROKIT_SDK").nonEmpty) { result = run("Building the image", F, proc"make".at(homeDir / "hamr" / "microkit")) } -Os.exit(result) \ No newline at end of file +Os.exit(result) diff --git a/isolette/.gitignore b/isolette/.gitignore index 6c052fb..2c032ab 100644 --- a/isolette/.gitignore +++ b/isolette/.gitignore @@ -13,4 +13,5 @@ **/target/ **/lib/ **/slang/js/ -**/build/* \ No newline at end of file +**/build/* +**/sysml-aadl-libraries/ \ No newline at end of file diff --git a/isolette/aadl/.slang/Isolette_isolette_single_sensor_Instance.json b/isolette/aadl/.slang/Isolette_isolette_single_sensor_Instance.json index f3080d2..33e3d66 100644 --- a/isolette/aadl/.slang/Isolette_isolette_single_sensor_Instance.json +++ b/isolette/aadl/.slang/Isolette_isolette_single_sensor_Instance.json @@ -4493,7 +4493,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -4507,9 +4507,9 @@ "beginLine" : 222, "beginColumn" : 70, "endLine" : 222, - "endColumn" : 75, + "endColumn" : 77, "offset" : 11463, - "length" : 5 + "length" : 7 } } } @@ -4529,9 +4529,9 @@ "beginLine" : 222, "beginColumn" : 44, "endLine" : 222, - "endColumn" : 75, + "endColumn" : 77, "offset" : 11437, - "length" : 31 + "length" : 33 } }, "resOpt" : { @@ -4563,10 +4563,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 222, - "beginColumn" : 79, + "beginColumn" : 81, "endLine" : 222, - "endColumn" : 104, - "offset" : 11472, + "endColumn" : 106, + "offset" : 11474, "length" : 25 } } @@ -4583,10 +4583,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 222, - "beginColumn" : 79, + "beginColumn" : 81, "endLine" : 222, - "endColumn" : 104, - "offset" : 11472, + "endColumn" : 106, + "offset" : 11474, "length" : 25 } }, @@ -4601,7 +4601,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -4613,11 +4613,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 222, - "beginColumn" : 105, + "beginColumn" : 107, "endLine" : 222, - "endColumn" : 110, - "offset" : 11498, - "length" : 5 + "endColumn" : 114, + "offset" : 11500, + "length" : 7 } } } @@ -4635,11 +4635,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 222, - "beginColumn" : 79, + "beginColumn" : 81, "endLine" : 222, - "endColumn" : 110, - "offset" : 11472, - "length" : 31 + "endColumn" : 114, + "offset" : 11474, + "length" : 33 } }, "resOpt" : { @@ -4663,9 +4663,9 @@ "beginLine" : 222, "beginColumn" : 44, "endLine" : 222, - "endColumn" : 110, + "endColumn" : 114, "offset" : 11437, - "length" : 66 + "length" : 70 } }, "resOpt" : { @@ -4692,9 +4692,9 @@ "beginLine" : 222, "beginColumn" : 5, "endLine" : 222, - "endColumn" : 111, + "endColumn" : 115, "offset" : 11398, - "length" : 106 + "length" : 110 } } } @@ -4729,7 +4729,7 @@ "beginColumn" : 14, "endLine" : 230, "endColumn" : 28, - "offset" : 11808, + "offset" : 11812, "length" : 14 } } @@ -4749,7 +4749,7 @@ "beginColumn" : 14, "endLine" : 230, "endColumn" : 28, - "offset" : 11808, + "offset" : 11812, "length" : 14 } }, @@ -4789,7 +4789,7 @@ "beginColumn" : 32, "endLine" : 230, "endColumn" : 87, - "offset" : 11826, + "offset" : 11830, "length" : 55 } } @@ -4809,7 +4809,7 @@ "beginColumn" : 32, "endLine" : 230, "endColumn" : 87, - "offset" : 11826, + "offset" : 11830, "length" : 55 } }, @@ -4839,7 +4839,7 @@ "beginColumn" : 32, "endLine" : 230, "endColumn" : 87, - "offset" : 11826, + "offset" : 11830, "length" : 55 } } @@ -4861,7 +4861,7 @@ "beginColumn" : 32, "endLine" : 230, "endColumn" : 87, - "offset" : 11826, + "offset" : 11830, "length" : 55 } }, @@ -4891,7 +4891,7 @@ "beginColumn" : 32, "endLine" : 230, "endColumn" : 87, - "offset" : 11826, + "offset" : 11830, "length" : 55 } } @@ -4913,7 +4913,7 @@ "beginColumn" : 32, "endLine" : 230, "endColumn" : 87, - "offset" : 11826, + "offset" : 11830, "length" : 55 } }, @@ -4939,7 +4939,7 @@ "beginColumn" : 14, "endLine" : 230, "endColumn" : 87, - "offset" : 11808, + "offset" : 11812, "length" : 73 } }, @@ -4975,7 +4975,7 @@ "beginColumn" : 17, "endLine" : 231, "endColumn" : 33, - "offset" : 11899, + "offset" : 11903, "length" : 16 } } @@ -4995,7 +4995,7 @@ "beginColumn" : 17, "endLine" : 231, "endColumn" : 33, - "offset" : 11899, + "offset" : 11903, "length" : 16 } }, @@ -5035,7 +5035,7 @@ "beginColumn" : 37, "endLine" : 231, "endColumn" : 76, - "offset" : 11919, + "offset" : 11923, "length" : 39 } } @@ -5055,7 +5055,7 @@ "beginColumn" : 37, "endLine" : 231, "endColumn" : 76, - "offset" : 11919, + "offset" : 11923, "length" : 39 } }, @@ -5085,7 +5085,7 @@ "beginColumn" : 37, "endLine" : 231, "endColumn" : 76, - "offset" : 11919, + "offset" : 11923, "length" : 39 } } @@ -5107,7 +5107,7 @@ "beginColumn" : 37, "endLine" : 231, "endColumn" : 76, - "offset" : 11919, + "offset" : 11923, "length" : 39 } }, @@ -5137,7 +5137,7 @@ "beginColumn" : 37, "endLine" : 231, "endColumn" : 76, - "offset" : 11919, + "offset" : 11923, "length" : 39 } } @@ -5159,7 +5159,7 @@ "beginColumn" : 37, "endLine" : 231, "endColumn" : 76, - "offset" : 11919, + "offset" : 11923, "length" : 39 } }, @@ -5185,7 +5185,7 @@ "beginColumn" : 17, "endLine" : 231, "endColumn" : 76, - "offset" : 11899, + "offset" : 11903, "length" : 59 } }, @@ -5214,7 +5214,7 @@ "beginColumn" : 6, "endLine" : 231, "endColumn" : 77, - "offset" : 11571, + "offset" : 11575, "length" : 388 } } @@ -5248,7 +5248,7 @@ "beginColumn" : 14, "endLine" : 236, "endColumn" : 28, - "offset" : 12205, + "offset" : 12209, "length" : 14 } } @@ -5268,7 +5268,7 @@ "beginColumn" : 14, "endLine" : 236, "endColumn" : 28, - "offset" : 12205, + "offset" : 12209, "length" : 14 } }, @@ -5308,7 +5308,7 @@ "beginColumn" : 32, "endLine" : 236, "endColumn" : 89, - "offset" : 12223, + "offset" : 12227, "length" : 57 } } @@ -5328,7 +5328,7 @@ "beginColumn" : 32, "endLine" : 236, "endColumn" : 89, - "offset" : 12223, + "offset" : 12227, "length" : 57 } }, @@ -5358,7 +5358,7 @@ "beginColumn" : 32, "endLine" : 236, "endColumn" : 89, - "offset" : 12223, + "offset" : 12227, "length" : 57 } } @@ -5380,7 +5380,7 @@ "beginColumn" : 32, "endLine" : 236, "endColumn" : 89, - "offset" : 12223, + "offset" : 12227, "length" : 57 } }, @@ -5410,7 +5410,7 @@ "beginColumn" : 32, "endLine" : 236, "endColumn" : 89, - "offset" : 12223, + "offset" : 12227, "length" : 57 } } @@ -5432,7 +5432,7 @@ "beginColumn" : 32, "endLine" : 236, "endColumn" : 89, - "offset" : 12223, + "offset" : 12227, "length" : 57 } }, @@ -5458,7 +5458,7 @@ "beginColumn" : 14, "endLine" : 236, "endColumn" : 89, - "offset" : 12205, + "offset" : 12209, "length" : 75 } }, @@ -5494,7 +5494,7 @@ "beginColumn" : 17, "endLine" : 237, "endColumn" : 33, - "offset" : 12298, + "offset" : 12302, "length" : 16 } } @@ -5514,7 +5514,7 @@ "beginColumn" : 17, "endLine" : 237, "endColumn" : 33, - "offset" : 12298, + "offset" : 12302, "length" : 16 } }, @@ -5554,7 +5554,7 @@ "beginColumn" : 37, "endLine" : 237, "endColumn" : 74, - "offset" : 12318, + "offset" : 12322, "length" : 37 } } @@ -5574,7 +5574,7 @@ "beginColumn" : 37, "endLine" : 237, "endColumn" : 74, - "offset" : 12318, + "offset" : 12322, "length" : 37 } }, @@ -5604,7 +5604,7 @@ "beginColumn" : 37, "endLine" : 237, "endColumn" : 74, - "offset" : 12318, + "offset" : 12322, "length" : 37 } } @@ -5626,7 +5626,7 @@ "beginColumn" : 37, "endLine" : 237, "endColumn" : 74, - "offset" : 12318, + "offset" : 12322, "length" : 37 } }, @@ -5656,7 +5656,7 @@ "beginColumn" : 37, "endLine" : 237, "endColumn" : 74, - "offset" : 12318, + "offset" : 12322, "length" : 37 } } @@ -5678,7 +5678,7 @@ "beginColumn" : 37, "endLine" : 237, "endColumn" : 74, - "offset" : 12318, + "offset" : 12322, "length" : 37 } }, @@ -5704,7 +5704,7 @@ "beginColumn" : 17, "endLine" : 237, "endColumn" : 74, - "offset" : 12298, + "offset" : 12302, "length" : 57 } }, @@ -5733,7 +5733,7 @@ "beginColumn" : 6, "endLine" : 237, "endColumn" : 75, - "offset" : 11969, + "offset" : 11973, "length" : 387 } } @@ -5767,7 +5767,7 @@ "beginColumn" : 14, "endLine" : 242, "endColumn" : 28, - "offset" : 12607, + "offset" : 12611, "length" : 14 } } @@ -5787,7 +5787,7 @@ "beginColumn" : 14, "endLine" : 242, "endColumn" : 28, - "offset" : 12607, + "offset" : 12611, "length" : 14 } }, @@ -5827,7 +5827,7 @@ "beginColumn" : 32, "endLine" : 242, "endColumn" : 89, - "offset" : 12625, + "offset" : 12629, "length" : 57 } } @@ -5847,7 +5847,7 @@ "beginColumn" : 32, "endLine" : 242, "endColumn" : 89, - "offset" : 12625, + "offset" : 12629, "length" : 57 } }, @@ -5877,7 +5877,7 @@ "beginColumn" : 32, "endLine" : 242, "endColumn" : 89, - "offset" : 12625, + "offset" : 12629, "length" : 57 } } @@ -5899,7 +5899,7 @@ "beginColumn" : 32, "endLine" : 242, "endColumn" : 89, - "offset" : 12625, + "offset" : 12629, "length" : 57 } }, @@ -5929,7 +5929,7 @@ "beginColumn" : 32, "endLine" : 242, "endColumn" : 89, - "offset" : 12625, + "offset" : 12629, "length" : 57 } } @@ -5951,7 +5951,7 @@ "beginColumn" : 32, "endLine" : 242, "endColumn" : 89, - "offset" : 12625, + "offset" : 12629, "length" : 57 } }, @@ -5977,7 +5977,7 @@ "beginColumn" : 14, "endLine" : 242, "endColumn" : 89, - "offset" : 12607, + "offset" : 12611, "length" : 75 } }, @@ -6013,7 +6013,7 @@ "beginColumn" : 17, "endLine" : 243, "endColumn" : 33, - "offset" : 12700, + "offset" : 12704, "length" : 16 } } @@ -6033,7 +6033,7 @@ "beginColumn" : 17, "endLine" : 243, "endColumn" : 33, - "offset" : 12700, + "offset" : 12704, "length" : 16 } }, @@ -6073,7 +6073,7 @@ "beginColumn" : 37, "endLine" : 243, "endColumn" : 78, - "offset" : 12720, + "offset" : 12724, "length" : 41 } } @@ -6093,7 +6093,7 @@ "beginColumn" : 37, "endLine" : 243, "endColumn" : 78, - "offset" : 12720, + "offset" : 12724, "length" : 41 } }, @@ -6123,7 +6123,7 @@ "beginColumn" : 37, "endLine" : 243, "endColumn" : 78, - "offset" : 12720, + "offset" : 12724, "length" : 41 } } @@ -6145,7 +6145,7 @@ "beginColumn" : 37, "endLine" : 243, "endColumn" : 78, - "offset" : 12720, + "offset" : 12724, "length" : 41 } }, @@ -6175,7 +6175,7 @@ "beginColumn" : 37, "endLine" : 243, "endColumn" : 78, - "offset" : 12720, + "offset" : 12724, "length" : 41 } } @@ -6197,7 +6197,7 @@ "beginColumn" : 37, "endLine" : 243, "endColumn" : 78, - "offset" : 12720, + "offset" : 12724, "length" : 41 } }, @@ -6223,7 +6223,7 @@ "beginColumn" : 17, "endLine" : 243, "endColumn" : 78, - "offset" : 12700, + "offset" : 12704, "length" : 61 } }, @@ -6252,7 +6252,7 @@ "beginColumn" : 6, "endLine" : 243, "endColumn" : 79, - "offset" : 12366, + "offset" : 12370, "length" : 396 } } @@ -6286,7 +6286,7 @@ "beginColumn" : 14, "endLine" : 251, "endColumn" : 28, - "offset" : 13131, + "offset" : 13135, "length" : 14 } } @@ -6306,7 +6306,7 @@ "beginColumn" : 14, "endLine" : 251, "endColumn" : 28, - "offset" : 13131, + "offset" : 13135, "length" : 14 } }, @@ -6346,7 +6346,7 @@ "beginColumn" : 32, "endLine" : 251, "endColumn" : 89, - "offset" : 13149, + "offset" : 13153, "length" : 57 } } @@ -6366,7 +6366,7 @@ "beginColumn" : 32, "endLine" : 251, "endColumn" : 89, - "offset" : 13149, + "offset" : 13153, "length" : 57 } }, @@ -6396,7 +6396,7 @@ "beginColumn" : 32, "endLine" : 251, "endColumn" : 89, - "offset" : 13149, + "offset" : 13153, "length" : 57 } } @@ -6418,7 +6418,7 @@ "beginColumn" : 32, "endLine" : 251, "endColumn" : 89, - "offset" : 13149, + "offset" : 13153, "length" : 57 } }, @@ -6448,7 +6448,7 @@ "beginColumn" : 32, "endLine" : 251, "endColumn" : 89, - "offset" : 13149, + "offset" : 13153, "length" : 57 } } @@ -6470,7 +6470,7 @@ "beginColumn" : 32, "endLine" : 251, "endColumn" : 89, - "offset" : 13149, + "offset" : 13153, "length" : 57 } }, @@ -6496,7 +6496,7 @@ "beginColumn" : 14, "endLine" : 251, "endColumn" : 89, - "offset" : 13131, + "offset" : 13135, "length" : 75 } }, @@ -6536,7 +6536,7 @@ "beginColumn" : 17, "endLine" : 252, "endColumn" : 31, - "offset" : 13224, + "offset" : 13228, "length" : 14 } } @@ -6556,7 +6556,7 @@ "beginColumn" : 17, "endLine" : 252, "endColumn" : 31, - "offset" : 13224, + "offset" : 13228, "length" : 14 } }, @@ -6571,7 +6571,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -6585,9 +6585,9 @@ "beginLine" : 252, "beginColumn" : 32, "endLine" : 252, - "endColumn" : 37, - "offset" : 13239, - "length" : 5 + "endColumn" : 39, + "offset" : 13243, + "length" : 7 } } } @@ -6607,9 +6607,9 @@ "beginLine" : 252, "beginColumn" : 17, "endLine" : 252, - "endColumn" : 37, - "offset" : 13224, - "length" : 20 + "endColumn" : 39, + "offset" : 13228, + "length" : 22 } }, "resOpt" : { @@ -6642,11 +6642,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 252, - "beginColumn" : 41, + "beginColumn" : 43, "endLine" : 252, - "endColumn" : 73, - "offset" : 13248, - "length" : 32 + "endColumn" : 77, + "offset" : 13254, + "length" : 34 } } } @@ -6662,11 +6662,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 252, - "beginColumn" : 41, + "beginColumn" : 43, "endLine" : 252, - "endColumn" : 73, - "offset" : 13248, - "length" : 32 + "endColumn" : 77, + "offset" : 13254, + "length" : 34 } }, "resOpt" : { @@ -6700,10 +6700,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 252, - "beginColumn" : 47, + "beginColumn" : 49, "endLine" : 252, - "endColumn" : 66, - "offset" : 13254, + "endColumn" : 68, + "offset" : 13260, "length" : 19 } } @@ -6720,10 +6720,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 252, - "beginColumn" : 47, + "beginColumn" : 49, "endLine" : 252, - "endColumn" : 66, - "offset" : 13254, + "endColumn" : 68, + "offset" : 13260, "length" : 19 } }, @@ -6738,7 +6738,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -6750,11 +6750,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 252, - "beginColumn" : 67, + "beginColumn" : 69, "endLine" : 252, - "endColumn" : 72, - "offset" : 13274, - "length" : 5 + "endColumn" : 76, + "offset" : 13280, + "length" : 7 } } } @@ -6772,11 +6772,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 252, - "beginColumn" : 47, + "beginColumn" : 49, "endLine" : 252, - "endColumn" : 72, - "offset" : 13254, - "length" : 25 + "endColumn" : 76, + "offset" : 13260, + "length" : 27 } }, "resOpt" : { @@ -6799,11 +6799,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 252, - "beginColumn" : 41, + "beginColumn" : 43, "endLine" : 252, - "endColumn" : 73, - "offset" : 13248, - "length" : 32 + "endColumn" : 77, + "offset" : 13254, + "length" : 34 } }, "resOpt" : { @@ -6827,9 +6827,9 @@ "beginLine" : 252, "beginColumn" : 17, "endLine" : 252, - "endColumn" : 73, - "offset" : 13224, - "length" : 56 + "endColumn" : 77, + "offset" : 13228, + "length" : 60 } }, "resOpt" : { @@ -6856,9 +6856,9 @@ "beginLine" : 247, "beginColumn" : 6, "endLine" : 252, - "endColumn" : 74, - "offset" : 12816, - "length" : 465 + "endColumn" : 78, + "offset" : 12820, + "length" : 469 } } } @@ -6887,7 +6887,7 @@ "beginColumn" : 14, "endLine" : 257, "endColumn" : 15, - "offset" : 13545, + "offset" : 13553, "length" : 1 } } @@ -6910,7 +6910,7 @@ "beginColumn" : 17, "endLine" : 258, "endColumn" : 18, - "offset" : 13564, + "offset" : 13572, "length" : 1 } } @@ -6930,7 +6930,7 @@ "beginColumn" : 6, "endLine" : 258, "endColumn" : 19, - "offset" : 13291, + "offset" : 13299, "length" : 275 } } @@ -6970,7 +6970,7 @@ "beginColumn" : 16, "endLine" : 266, "endColumn" : 41, - "offset" : 13956, + "offset" : 13964, "length" : 25 } } @@ -6990,7 +6990,7 @@ "beginColumn" : 16, "endLine" : 266, "endColumn" : 41, - "offset" : 13956, + "offset" : 13964, "length" : 25 } }, @@ -7020,7 +7020,7 @@ "beginColumn" : 42, "endLine" : 266, "endColumn" : 48, - "offset" : 13982, + "offset" : 13990, "length" : 6 } } @@ -7042,7 +7042,7 @@ "beginColumn" : 16, "endLine" : 266, "endColumn" : 48, - "offset" : 13956, + "offset" : 13964, "length" : 32 } }, @@ -7082,7 +7082,7 @@ "beginColumn" : 52, "endLine" : 266, "endColumn" : 90, - "offset" : 13992, + "offset" : 14000, "length" : 38 } } @@ -7102,7 +7102,7 @@ "beginColumn" : 52, "endLine" : 266, "endColumn" : 90, - "offset" : 13992, + "offset" : 14000, "length" : 38 } }, @@ -7132,7 +7132,7 @@ "beginColumn" : 52, "endLine" : 266, "endColumn" : 90, - "offset" : 13992, + "offset" : 14000, "length" : 38 } } @@ -7154,7 +7154,7 @@ "beginColumn" : 52, "endLine" : 266, "endColumn" : 90, - "offset" : 13992, + "offset" : 14000, "length" : 38 } }, @@ -7184,7 +7184,7 @@ "beginColumn" : 52, "endLine" : 266, "endColumn" : 90, - "offset" : 13992, + "offset" : 14000, "length" : 38 } } @@ -7206,7 +7206,7 @@ "beginColumn" : 52, "endLine" : 266, "endColumn" : 90, - "offset" : 13992, + "offset" : 14000, "length" : 38 } }, @@ -7232,7 +7232,7 @@ "beginColumn" : 16, "endLine" : 266, "endColumn" : 90, - "offset" : 13956, + "offset" : 13964, "length" : 74 } }, @@ -7273,7 +7273,7 @@ "beginColumn" : 95, "endLine" : 266, "endColumn" : 120, - "offset" : 14035, + "offset" : 14043, "length" : 25 } } @@ -7293,7 +7293,7 @@ "beginColumn" : 95, "endLine" : 266, "endColumn" : 120, - "offset" : 14035, + "offset" : 14043, "length" : 25 } }, @@ -7323,7 +7323,7 @@ "beginColumn" : 121, "endLine" : 266, "endColumn" : 127, - "offset" : 14061, + "offset" : 14069, "length" : 6 } } @@ -7345,7 +7345,7 @@ "beginColumn" : 95, "endLine" : 266, "endColumn" : 127, - "offset" : 14035, + "offset" : 14043, "length" : 32 } }, @@ -7385,7 +7385,7 @@ "beginColumn" : 131, "endLine" : 266, "endColumn" : 169, - "offset" : 14071, + "offset" : 14079, "length" : 38 } } @@ -7405,7 +7405,7 @@ "beginColumn" : 131, "endLine" : 266, "endColumn" : 169, - "offset" : 14071, + "offset" : 14079, "length" : 38 } }, @@ -7435,7 +7435,7 @@ "beginColumn" : 131, "endLine" : 266, "endColumn" : 169, - "offset" : 14071, + "offset" : 14079, "length" : 38 } } @@ -7457,7 +7457,7 @@ "beginColumn" : 131, "endLine" : 266, "endColumn" : 169, - "offset" : 14071, + "offset" : 14079, "length" : 38 } }, @@ -7487,7 +7487,7 @@ "beginColumn" : 131, "endLine" : 266, "endColumn" : 169, - "offset" : 14071, + "offset" : 14079, "length" : 38 } } @@ -7509,7 +7509,7 @@ "beginColumn" : 131, "endLine" : 266, "endColumn" : 169, - "offset" : 14071, + "offset" : 14079, "length" : 38 } }, @@ -7535,7 +7535,7 @@ "beginColumn" : 95, "endLine" : 266, "endColumn" : 169, - "offset" : 14035, + "offset" : 14043, "length" : 74 } }, @@ -7564,7 +7564,7 @@ "beginColumn" : 16, "endLine" : 266, "endColumn" : 169, - "offset" : 13956, + "offset" : 13964, "length" : 153 } }, @@ -7602,7 +7602,7 @@ "beginColumn" : 17, "endLine" : 267, "endColumn" : 34, - "offset" : 14129, + "offset" : 14137, "length" : 17 } } @@ -7622,7 +7622,7 @@ "beginColumn" : 17, "endLine" : 267, "endColumn" : 34, - "offset" : 14129, + "offset" : 14137, "length" : 17 } }, @@ -7637,7 +7637,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -7651,9 +7651,9 @@ "beginLine" : 267, "beginColumn" : 35, "endLine" : 267, - "endColumn" : 40, - "offset" : 14147, - "length" : 5 + "endColumn" : 39, + "offset" : 14155, + "length" : 4 } } } @@ -7673,9 +7673,9 @@ "beginLine" : 267, "beginColumn" : 17, "endLine" : 267, - "endColumn" : 40, - "offset" : 14129, - "length" : 23 + "endColumn" : 39, + "offset" : 14137, + "length" : 22 } }, "resOpt" : { @@ -7699,9 +7699,9 @@ "beginLine" : 262, "beginColumn" : 6, "endLine" : 267, - "endColumn" : 41, - "offset" : 13625, - "length" : 528 + "endColumn" : 40, + "offset" : 13633, + "length" : 527 } } } @@ -7730,7 +7730,7 @@ "beginColumn" : 14, "endLine" : 273, "endColumn" : 15, - "offset" : 14492, + "offset" : 14499, "length" : 1 } } @@ -7761,7 +7761,7 @@ "beginColumn" : 18, "endLine" : 274, "endColumn" : 35, - "offset" : 14512, + "offset" : 14519, "length" : 17 } } @@ -7781,7 +7781,7 @@ "beginColumn" : 18, "endLine" : 274, "endColumn" : 35, - "offset" : 14512, + "offset" : 14519, "length" : 17 } }, @@ -7796,7 +7796,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -7810,9 +7810,9 @@ "beginLine" : 274, "beginColumn" : 36, "endLine" : 274, - "endColumn" : 41, - "offset" : 14530, - "length" : 5 + "endColumn" : 40, + "offset" : 14537, + "length" : 4 } } } @@ -7832,9 +7832,9 @@ "beginLine" : 274, "beginColumn" : 18, "endLine" : 274, - "endColumn" : 41, - "offset" : 14512, - "length" : 23 + "endColumn" : 40, + "offset" : 14519, + "length" : 22 } }, "resOpt" : { @@ -7876,10 +7876,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 49, + "beginColumn" : 48, "endLine" : 274, - "endColumn" : 74, - "offset" : 14543, + "endColumn" : 73, + "offset" : 14549, "length" : 25 } } @@ -7896,10 +7896,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 49, + "beginColumn" : 48, "endLine" : 274, - "endColumn" : 74, - "offset" : 14543, + "endColumn" : 73, + "offset" : 14549, "length" : 25 } }, @@ -7926,10 +7926,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 75, + "beginColumn" : 74, "endLine" : 274, - "endColumn" : 81, - "offset" : 14569, + "endColumn" : 80, + "offset" : 14575, "length" : 6 } } @@ -7948,10 +7948,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 49, + "beginColumn" : 48, "endLine" : 274, - "endColumn" : 81, - "offset" : 14543, + "endColumn" : 80, + "offset" : 14549, "length" : 32 } }, @@ -7988,10 +7988,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 85, + "beginColumn" : 84, "endLine" : 274, - "endColumn" : 123, - "offset" : 14579, + "endColumn" : 122, + "offset" : 14585, "length" : 38 } } @@ -8008,10 +8008,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 85, + "beginColumn" : 84, "endLine" : 274, - "endColumn" : 123, - "offset" : 14579, + "endColumn" : 122, + "offset" : 14585, "length" : 38 } }, @@ -8038,10 +8038,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 85, + "beginColumn" : 84, "endLine" : 274, - "endColumn" : 123, - "offset" : 14579, + "endColumn" : 122, + "offset" : 14585, "length" : 38 } } @@ -8060,10 +8060,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 85, + "beginColumn" : 84, "endLine" : 274, - "endColumn" : 123, - "offset" : 14579, + "endColumn" : 122, + "offset" : 14585, "length" : 38 } }, @@ -8090,10 +8090,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 85, + "beginColumn" : 84, "endLine" : 274, - "endColumn" : 123, - "offset" : 14579, + "endColumn" : 122, + "offset" : 14585, "length" : 38 } } @@ -8112,10 +8112,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 85, + "beginColumn" : 84, "endLine" : 274, - "endColumn" : 123, - "offset" : 14579, + "endColumn" : 122, + "offset" : 14585, "length" : 38 } }, @@ -8138,10 +8138,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 49, + "beginColumn" : 48, "endLine" : 274, - "endColumn" : 123, - "offset" : 14543, + "endColumn" : 122, + "offset" : 14549, "length" : 74 } }, @@ -8179,10 +8179,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 128, + "beginColumn" : 127, "endLine" : 274, - "endColumn" : 153, - "offset" : 14622, + "endColumn" : 152, + "offset" : 14628, "length" : 25 } } @@ -8199,10 +8199,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 128, + "beginColumn" : 127, "endLine" : 274, - "endColumn" : 153, - "offset" : 14622, + "endColumn" : 152, + "offset" : 14628, "length" : 25 } }, @@ -8229,10 +8229,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 154, + "beginColumn" : 153, "endLine" : 274, - "endColumn" : 160, - "offset" : 14648, + "endColumn" : 159, + "offset" : 14654, "length" : 6 } } @@ -8251,10 +8251,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 128, + "beginColumn" : 127, "endLine" : 274, - "endColumn" : 160, - "offset" : 14622, + "endColumn" : 159, + "offset" : 14628, "length" : 32 } }, @@ -8291,10 +8291,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 164, + "beginColumn" : 163, "endLine" : 274, - "endColumn" : 202, - "offset" : 14658, + "endColumn" : 201, + "offset" : 14664, "length" : 38 } } @@ -8311,10 +8311,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 164, + "beginColumn" : 163, "endLine" : 274, - "endColumn" : 202, - "offset" : 14658, + "endColumn" : 201, + "offset" : 14664, "length" : 38 } }, @@ -8341,10 +8341,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 164, + "beginColumn" : 163, "endLine" : 274, - "endColumn" : 202, - "offset" : 14658, + "endColumn" : 201, + "offset" : 14664, "length" : 38 } } @@ -8363,10 +8363,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 164, + "beginColumn" : 163, "endLine" : 274, - "endColumn" : 202, - "offset" : 14658, + "endColumn" : 201, + "offset" : 14664, "length" : 38 } }, @@ -8393,10 +8393,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 164, + "beginColumn" : 163, "endLine" : 274, - "endColumn" : 202, - "offset" : 14658, + "endColumn" : 201, + "offset" : 14664, "length" : 38 } } @@ -8415,10 +8415,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 164, + "beginColumn" : 163, "endLine" : 274, - "endColumn" : 202, - "offset" : 14658, + "endColumn" : 201, + "offset" : 14664, "length" : 38 } }, @@ -8441,10 +8441,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 128, + "beginColumn" : 127, "endLine" : 274, - "endColumn" : 202, - "offset" : 14622, + "endColumn" : 201, + "offset" : 14628, "length" : 74 } }, @@ -8470,10 +8470,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 49, + "beginColumn" : 48, "endLine" : 274, - "endColumn" : 202, - "offset" : 14543, + "endColumn" : 201, + "offset" : 14549, "length" : 153 } }, @@ -8499,10 +8499,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 274, - "beginColumn" : 46, + "beginColumn" : 45, "endLine" : 274, - "endColumn" : 204, - "offset" : 14540, + "endColumn" : 203, + "offset" : 14546, "length" : 158 } }, @@ -8530,9 +8530,9 @@ "beginLine" : 274, "beginColumn" : 18, "endLine" : 274, - "endColumn" : 204, - "offset" : 14512, - "length" : 186 + "endColumn" : 203, + "offset" : 14519, + "length" : 185 } }, "resOpt" : { @@ -8559,9 +8559,9 @@ "beginLine" : 269, "beginColumn" : 6, "endLine" : 274, - "endColumn" : 207, - "offset" : 14163, - "length" : 538 + "endColumn" : 206, + "offset" : 14170, + "length" : 537 } } } @@ -8590,7 +8590,7 @@ "beginColumn" : 17, "endLine" : 280, "endColumn" : 18, - "offset" : 14949, + "offset" : 14955, "length" : 1 } } @@ -8627,7 +8627,7 @@ "beginColumn" : 10, "endLine" : 282, "endColumn" : 27, - "offset" : 14978, + "offset" : 14984, "length" : 17 } } @@ -8647,7 +8647,7 @@ "beginColumn" : 10, "endLine" : 282, "endColumn" : 27, - "offset" : 14978, + "offset" : 14984, "length" : 17 } }, @@ -8662,7 +8662,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -8676,9 +8676,9 @@ "beginLine" : 282, "beginColumn" : 28, "endLine" : 282, - "endColumn" : 33, - "offset" : 14996, - "length" : 5 + "endColumn" : 32, + "offset" : 15002, + "length" : 4 } } } @@ -8698,9 +8698,9 @@ "beginLine" : 282, "beginColumn" : 10, "endLine" : 282, - "endColumn" : 33, - "offset" : 14978, - "length" : 23 + "endColumn" : 32, + "offset" : 14984, + "length" : 22 } }, "resOpt" : { @@ -8724,9 +8724,9 @@ "beginLine" : 282, "beginColumn" : 9, "endLine" : 282, - "endColumn" : 33, - "offset" : 14977, - "length" : 24 + "endColumn" : 32, + "offset" : 14983, + "length" : 23 } }, "resOpt" : { @@ -8768,7 +8768,7 @@ "beginColumn" : 11, "endLine" : 283, "endColumn" : 29, - "offset" : 15018, + "offset" : 15023, "length" : 18 } } @@ -8788,7 +8788,7 @@ "beginColumn" : 11, "endLine" : 283, "endColumn" : 29, - "offset" : 15018, + "offset" : 15023, "length" : 18 } }, @@ -8803,7 +8803,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -8817,9 +8817,9 @@ "beginLine" : 283, "beginColumn" : 30, "endLine" : 283, - "endColumn" : 35, - "offset" : 15037, - "length" : 5 + "endColumn" : 37, + "offset" : 15042, + "length" : 7 } } } @@ -8839,9 +8839,9 @@ "beginLine" : 283, "beginColumn" : 11, "endLine" : 283, - "endColumn" : 35, - "offset" : 15018, - "length" : 24 + "endColumn" : 37, + "offset" : 15023, + "length" : 26 } }, "resOpt" : { @@ -8873,10 +8873,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 283, - "endColumn" : 64, - "offset" : 15046, + "endColumn" : 66, + "offset" : 15053, "length" : 25 } } @@ -8893,10 +8893,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 283, - "endColumn" : 64, - "offset" : 15046, + "endColumn" : 66, + "offset" : 15053, "length" : 25 } }, @@ -8911,7 +8911,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -8923,11 +8923,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 65, + "beginColumn" : 67, "endLine" : 283, - "endColumn" : 70, - "offset" : 15072, - "length" : 5 + "endColumn" : 74, + "offset" : 15079, + "length" : 7 } } } @@ -8945,11 +8945,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 283, - "endColumn" : 70, - "offset" : 15046, - "length" : 31 + "endColumn" : 74, + "offset" : 15053, + "length" : 33 } }, "resOpt" : { @@ -8973,9 +8973,9 @@ "beginLine" : 283, "beginColumn" : 11, "endLine" : 283, - "endColumn" : 70, - "offset" : 15018, - "length" : 59 + "endColumn" : 74, + "offset" : 15023, + "length" : 63 } }, "resOpt" : { @@ -9012,10 +9012,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 75, + "beginColumn" : 79, "endLine" : 283, - "endColumn" : 93, - "offset" : 15082, + "endColumn" : 97, + "offset" : 15091, "length" : 18 } } @@ -9032,10 +9032,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 75, + "beginColumn" : 79, "endLine" : 283, - "endColumn" : 93, - "offset" : 15082, + "endColumn" : 97, + "offset" : 15091, "length" : 18 } }, @@ -9050,7 +9050,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -9062,11 +9062,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 94, + "beginColumn" : 98, "endLine" : 283, - "endColumn" : 99, - "offset" : 15101, - "length" : 5 + "endColumn" : 105, + "offset" : 15110, + "length" : 7 } } } @@ -9084,11 +9084,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 75, + "beginColumn" : 79, "endLine" : 283, - "endColumn" : 99, - "offset" : 15082, - "length" : 24 + "endColumn" : 105, + "offset" : 15091, + "length" : 26 } }, "resOpt" : { @@ -9120,10 +9120,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 103, + "beginColumn" : 109, "endLine" : 283, - "endColumn" : 128, - "offset" : 15110, + "endColumn" : 134, + "offset" : 15121, "length" : 25 } } @@ -9140,10 +9140,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 103, + "beginColumn" : 109, "endLine" : 283, - "endColumn" : 128, - "offset" : 15110, + "endColumn" : 134, + "offset" : 15121, "length" : 25 } }, @@ -9158,7 +9158,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -9170,11 +9170,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 129, + "beginColumn" : 135, "endLine" : 283, - "endColumn" : 134, - "offset" : 15136, - "length" : 5 + "endColumn" : 142, + "offset" : 15147, + "length" : 7 } } } @@ -9192,11 +9192,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 103, + "beginColumn" : 109, "endLine" : 283, - "endColumn" : 134, - "offset" : 15110, - "length" : 31 + "endColumn" : 142, + "offset" : 15121, + "length" : 33 } }, "resOpt" : { @@ -9218,11 +9218,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 283, - "beginColumn" : 75, + "beginColumn" : 79, "endLine" : 283, - "endColumn" : 134, - "offset" : 15082, - "length" : 59 + "endColumn" : 142, + "offset" : 15091, + "length" : 63 } }, "resOpt" : { @@ -9249,9 +9249,9 @@ "beginLine" : 283, "beginColumn" : 11, "endLine" : 283, - "endColumn" : 134, - "offset" : 15018, - "length" : 123 + "endColumn" : 142, + "offset" : 15023, + "length" : 131 } }, "resOpt" : { @@ -9278,9 +9278,9 @@ "beginLine" : 282, "beginColumn" : 9, "endLine" : 283, - "endColumn" : 134, - "offset" : 14977, - "length" : 164 + "endColumn" : 142, + "offset" : 14983, + "length" : 171 } }, "resOpt" : { @@ -9307,9 +9307,9 @@ "beginLine" : 278, "beginColumn" : 6, "endLine" : 283, - "endColumn" : 137, - "offset" : 14749, - "length" : 395 + "endColumn" : 145, + "offset" : 14755, + "length" : 402 } } } @@ -9338,7 +9338,7 @@ "beginColumn" : 14, "endLine" : 289, "endColumn" : 15, - "offset" : 15472, + "offset" : 15485, "length" : 1 } } @@ -9361,7 +9361,7 @@ "beginColumn" : 17, "endLine" : 290, "endColumn" : 18, - "offset" : 15491, + "offset" : 15504, "length" : 1 } } @@ -9381,7 +9381,7 @@ "beginColumn" : 6, "endLine" : 290, "endColumn" : 19, - "offset" : 15156, + "offset" : 15169, "length" : 337 } } @@ -9407,7 +9407,7 @@ "endLine" : 290, "endColumn" : 19, "offset" : 11327, - "length" : 4166 + "length" : 4179 } } } @@ -9428,7 +9428,7 @@ "endLine" : 290, "endColumn" : 19, "offset" : 10937, - "length" : 4556 + "length" : 4569 } } } @@ -10951,7 +10951,7 @@ "beginColumn" : 4, "endLine" : 465, "endColumn" : 73, - "offset" : 24797, + "offset" : 24802, "length" : 69 } } @@ -10992,7 +10992,7 @@ "beginColumn" : 4, "endLine" : 467, "endColumn" : 65, - "offset" : 24948, + "offset" : 24953, "length" : 61 } } @@ -11033,7 +11033,7 @@ "beginColumn" : 4, "endLine" : 468, "endColumn" : 65, - "offset" : 25013, + "offset" : 25018, "length" : 61 } } @@ -11074,7 +11074,7 @@ "beginColumn" : 4, "endLine" : 470, "endColumn" : 69, - "offset" : 25121, + "offset" : 25126, "length" : 65 } } @@ -11185,7 +11185,7 @@ "beginColumn" : 4, "endLine" : 474, "endColumn" : 60, - "offset" : 25297, + "offset" : 25302, "length" : 56 } } @@ -11294,7 +11294,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -11328,7 +11328,7 @@ "beginColumn" : 4, "endLine" : 497, "endColumn" : 73, - "offset" : 26097, + "offset" : 26102, "length" : 69 } } @@ -11369,7 +11369,7 @@ "beginColumn" : 4, "endLine" : 499, "endColumn" : 65, - "offset" : 26248, + "offset" : 26253, "length" : 61 } } @@ -11410,7 +11410,7 @@ "beginColumn" : 4, "endLine" : 500, "endColumn" : 65, - "offset" : 26313, + "offset" : 26318, "length" : 61 } } @@ -11451,7 +11451,7 @@ "beginColumn" : 4, "endLine" : 502, "endColumn" : 69, - "offset" : 26421, + "offset" : 26426, "length" : 65 } } @@ -11562,7 +11562,7 @@ "beginColumn" : 4, "endLine" : 506, "endColumn" : 60, - "offset" : 26597, + "offset" : 26602, "length" : 56 } } @@ -11863,7 +11863,7 @@ "beginColumn" : 4, "endLine" : 510, "endColumn" : 59, - "offset" : 26667, + "offset" : 26672, "length" : 55 } } @@ -11889,7 +11889,7 @@ "beginColumn" : 4, "endLine" : 497, "endColumn" : 73, - "offset" : 26097, + "offset" : 26102, "length" : 69 } } @@ -11912,7 +11912,7 @@ "beginColumn" : 4, "endLine" : 506, "endColumn" : 60, - "offset" : 26597, + "offset" : 26602, "length" : 56 } } @@ -11937,7 +11937,7 @@ "beginColumn" : 4, "endLine" : 511, "endColumn" : 58, - "offset" : 26726, + "offset" : 26731, "length" : 54 } } @@ -11963,7 +11963,7 @@ "beginColumn" : 4, "endLine" : 499, "endColumn" : 65, - "offset" : 26248, + "offset" : 26253, "length" : 61 } } @@ -11986,7 +11986,7 @@ "beginColumn" : 4, "endLine" : 506, "endColumn" : 60, - "offset" : 26597, + "offset" : 26602, "length" : 56 } } @@ -12011,7 +12011,7 @@ "beginColumn" : 4, "endLine" : 512, "endColumn" : 58, - "offset" : 26784, + "offset" : 26789, "length" : 54 } } @@ -12037,7 +12037,7 @@ "beginColumn" : 4, "endLine" : 500, "endColumn" : 65, - "offset" : 26313, + "offset" : 26318, "length" : 61 } } @@ -12060,7 +12060,7 @@ "beginColumn" : 4, "endLine" : 506, "endColumn" : 60, - "offset" : 26597, + "offset" : 26602, "length" : 56 } } @@ -12085,7 +12085,7 @@ "beginColumn" : 4, "endLine" : 513, "endColumn" : 54, - "offset" : 26842, + "offset" : 26847, "length" : 50 } } @@ -12111,7 +12111,7 @@ "beginColumn" : 4, "endLine" : 502, "endColumn" : 69, - "offset" : 26421, + "offset" : 26426, "length" : 65 } } @@ -12134,7 +12134,7 @@ "beginColumn" : 4, "endLine" : 506, "endColumn" : 60, - "offset" : 26597, + "offset" : 26602, "length" : 56 } } @@ -12197,7 +12197,7 @@ "beginColumn" : 5, "endLine" : 518, "endColumn" : 42, - "offset" : 27027, + "offset" : 27032, "length" : 37 } } @@ -12242,7 +12242,7 @@ "beginColumn" : 19, "endLine" : 523, "endColumn" : 26, - "offset" : 27208, + "offset" : 27213, "length" : 7 } } @@ -12262,7 +12262,7 @@ "beginColumn" : 19, "endLine" : 523, "endColumn" : 26, - "offset" : 27208, + "offset" : 27213, "length" : 7 } }, @@ -12302,7 +12302,7 @@ "beginColumn" : 30, "endLine" : 523, "endColumn" : 61, - "offset" : 27219, + "offset" : 27224, "length" : 31 } } @@ -12322,7 +12322,7 @@ "beginColumn" : 30, "endLine" : 523, "endColumn" : 61, - "offset" : 27219, + "offset" : 27224, "length" : 31 } }, @@ -12352,7 +12352,7 @@ "beginColumn" : 30, "endLine" : 523, "endColumn" : 61, - "offset" : 27219, + "offset" : 27224, "length" : 31 } } @@ -12374,7 +12374,7 @@ "beginColumn" : 30, "endLine" : 523, "endColumn" : 61, - "offset" : 27219, + "offset" : 27224, "length" : 31 } }, @@ -12404,7 +12404,7 @@ "beginColumn" : 30, "endLine" : 523, "endColumn" : 61, - "offset" : 27219, + "offset" : 27224, "length" : 31 } } @@ -12426,7 +12426,7 @@ "beginColumn" : 30, "endLine" : 523, "endColumn" : 61, - "offset" : 27219, + "offset" : 27224, "length" : 31 } }, @@ -12452,7 +12452,7 @@ "beginColumn" : 19, "endLine" : 523, "endColumn" : 61, - "offset" : 27208, + "offset" : 27213, "length" : 42 } }, @@ -12481,7 +12481,7 @@ "beginColumn" : 5, "endLine" : 523, "endColumn" : 62, - "offset" : 27180, + "offset" : 27185, "length" : 71 } } @@ -12515,7 +12515,7 @@ "beginColumn" : 6, "endLine" : 527, "endColumn" : 18, - "offset" : 27484, + "offset" : 27489, "length" : 12 } } @@ -12535,7 +12535,7 @@ "beginColumn" : 6, "endLine" : 527, "endColumn" : 18, - "offset" : 27484, + "offset" : 27489, "length" : 12 } }, @@ -12575,7 +12575,7 @@ "beginColumn" : 22, "endLine" : 527, "endColumn" : 53, - "offset" : 27500, + "offset" : 27505, "length" : 31 } } @@ -12595,7 +12595,7 @@ "beginColumn" : 22, "endLine" : 527, "endColumn" : 53, - "offset" : 27500, + "offset" : 27505, "length" : 31 } }, @@ -12625,7 +12625,7 @@ "beginColumn" : 22, "endLine" : 527, "endColumn" : 53, - "offset" : 27500, + "offset" : 27505, "length" : 31 } } @@ -12647,7 +12647,7 @@ "beginColumn" : 22, "endLine" : 527, "endColumn" : 53, - "offset" : 27500, + "offset" : 27505, "length" : 31 } }, @@ -12677,7 +12677,7 @@ "beginColumn" : 22, "endLine" : 527, "endColumn" : 53, - "offset" : 27500, + "offset" : 27505, "length" : 31 } } @@ -12699,7 +12699,7 @@ "beginColumn" : 22, "endLine" : 527, "endColumn" : 53, - "offset" : 27500, + "offset" : 27505, "length" : 31 } }, @@ -12725,7 +12725,7 @@ "beginColumn" : 6, "endLine" : 527, "endColumn" : 53, - "offset" : 27484, + "offset" : 27489, "length" : 47 } }, @@ -12754,7 +12754,7 @@ "beginColumn" : 5, "endLine" : 527, "endColumn" : 54, - "offset" : 27256, + "offset" : 27261, "length" : 276 } } @@ -12777,7 +12777,7 @@ "beginColumn" : 4, "endLine" : 527, "endColumn" : 54, - "offset" : 27165, + "offset" : 27170, "length" : 367 } } @@ -12825,7 +12825,7 @@ "beginColumn" : 33, "endLine" : 532, "endColumn" : 51, - "offset" : 27740, + "offset" : 27745, "length" : 18 } } @@ -12845,7 +12845,7 @@ "beginColumn" : 33, "endLine" : 532, "endColumn" : 51, - "offset" : 27740, + "offset" : 27745, "length" : 18 } }, @@ -12860,7 +12860,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -12874,9 +12874,9 @@ "beginLine" : 532, "beginColumn" : 52, "endLine" : 532, - "endColumn" : 57, - "offset" : 27759, - "length" : 5 + "endColumn" : 59, + "offset" : 27764, + "length" : 7 } } } @@ -12896,9 +12896,9 @@ "beginLine" : 532, "beginColumn" : 33, "endLine" : 532, - "endColumn" : 57, - "offset" : 27740, - "length" : 24 + "endColumn" : 59, + "offset" : 27745, + "length" : 26 } }, "resOpt" : { @@ -12930,10 +12930,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 532, - "beginColumn" : 61, + "beginColumn" : 63, "endLine" : 532, - "endColumn" : 79, - "offset" : 27768, + "endColumn" : 81, + "offset" : 27775, "length" : 18 } } @@ -12950,10 +12950,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 532, - "beginColumn" : 61, + "beginColumn" : 63, "endLine" : 532, - "endColumn" : 79, - "offset" : 27768, + "endColumn" : 81, + "offset" : 27775, "length" : 18 } }, @@ -12968,7 +12968,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -12980,11 +12980,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 532, - "beginColumn" : 80, + "beginColumn" : 82, "endLine" : 532, - "endColumn" : 85, - "offset" : 27787, - "length" : 5 + "endColumn" : 89, + "offset" : 27794, + "length" : 7 } } } @@ -13002,11 +13002,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 532, - "beginColumn" : 61, + "beginColumn" : 63, "endLine" : 532, - "endColumn" : 85, - "offset" : 27768, - "length" : 24 + "endColumn" : 89, + "offset" : 27775, + "length" : 26 } }, "resOpt" : { @@ -13030,9 +13030,9 @@ "beginLine" : 532, "beginColumn" : 33, "endLine" : 532, - "endColumn" : 85, - "offset" : 27740, - "length" : 52 + "endColumn" : 89, + "offset" : 27745, + "length" : 56 } }, "resOpt" : { @@ -13059,9 +13059,9 @@ "beginLine" : 532, "beginColumn" : 5, "endLine" : 532, - "endColumn" : 86, - "offset" : 27712, - "length" : 81 + "endColumn" : 90, + "offset" : 27717, + "length" : 85 } } } @@ -13094,7 +13094,7 @@ "beginColumn" : 6, "endLine" : 536, "endColumn" : 13, - "offset" : 27963, + "offset" : 27972, "length" : 7 } } @@ -13114,7 +13114,7 @@ "beginColumn" : 6, "endLine" : 536, "endColumn" : 13, - "offset" : 27963, + "offset" : 27972, "length" : 7 } }, @@ -13146,7 +13146,7 @@ "beginColumn" : 17, "endLine" : 536, "endColumn" : 29, - "offset" : 27974, + "offset" : 27983, "length" : 12 } } @@ -13166,7 +13166,7 @@ "beginColumn" : 17, "endLine" : 536, "endColumn" : 29, - "offset" : 27974, + "offset" : 27983, "length" : 12 } }, @@ -13192,7 +13192,7 @@ "beginColumn" : 6, "endLine" : 536, "endColumn" : 29, - "offset" : 27963, + "offset" : 27972, "length" : 23 } }, @@ -13221,7 +13221,7 @@ "beginColumn" : 5, "endLine" : 536, "endColumn" : 30, - "offset" : 27897, + "offset" : 27906, "length" : 90 } } @@ -13257,7 +13257,7 @@ "beginColumn" : 14, "endLine" : 543, "endColumn" : 28, - "offset" : 28244, + "offset" : 28253, "length" : 14 } } @@ -13277,7 +13277,7 @@ "beginColumn" : 14, "endLine" : 543, "endColumn" : 28, - "offset" : 28244, + "offset" : 28253, "length" : 14 } }, @@ -13317,7 +13317,7 @@ "beginColumn" : 32, "endLine" : 543, "endColumn" : 87, - "offset" : 28262, + "offset" : 28271, "length" : 55 } } @@ -13337,7 +13337,7 @@ "beginColumn" : 32, "endLine" : 543, "endColumn" : 87, - "offset" : 28262, + "offset" : 28271, "length" : 55 } }, @@ -13367,7 +13367,7 @@ "beginColumn" : 32, "endLine" : 543, "endColumn" : 87, - "offset" : 28262, + "offset" : 28271, "length" : 55 } } @@ -13389,7 +13389,7 @@ "beginColumn" : 32, "endLine" : 543, "endColumn" : 87, - "offset" : 28262, + "offset" : 28271, "length" : 55 } }, @@ -13419,7 +13419,7 @@ "beginColumn" : 32, "endLine" : 543, "endColumn" : 87, - "offset" : 28262, + "offset" : 28271, "length" : 55 } } @@ -13441,7 +13441,7 @@ "beginColumn" : 32, "endLine" : 543, "endColumn" : 87, - "offset" : 28262, + "offset" : 28271, "length" : 55 } }, @@ -13467,7 +13467,7 @@ "beginColumn" : 14, "endLine" : 543, "endColumn" : 87, - "offset" : 28244, + "offset" : 28253, "length" : 73 } }, @@ -13503,7 +13503,7 @@ "beginColumn" : 17, "endLine" : 544, "endColumn" : 29, - "offset" : 28335, + "offset" : 28344, "length" : 12 } } @@ -13523,7 +13523,7 @@ "beginColumn" : 17, "endLine" : 544, "endColumn" : 29, - "offset" : 28335, + "offset" : 28344, "length" : 12 } }, @@ -13563,7 +13563,7 @@ "beginColumn" : 33, "endLine" : 544, "endColumn" : 64, - "offset" : 28351, + "offset" : 28360, "length" : 31 } } @@ -13583,7 +13583,7 @@ "beginColumn" : 33, "endLine" : 544, "endColumn" : 64, - "offset" : 28351, + "offset" : 28360, "length" : 31 } }, @@ -13613,7 +13613,7 @@ "beginColumn" : 33, "endLine" : 544, "endColumn" : 64, - "offset" : 28351, + "offset" : 28360, "length" : 31 } } @@ -13635,7 +13635,7 @@ "beginColumn" : 33, "endLine" : 544, "endColumn" : 64, - "offset" : 28351, + "offset" : 28360, "length" : 31 } }, @@ -13665,7 +13665,7 @@ "beginColumn" : 33, "endLine" : 544, "endColumn" : 64, - "offset" : 28351, + "offset" : 28360, "length" : 31 } } @@ -13687,7 +13687,7 @@ "beginColumn" : 33, "endLine" : 544, "endColumn" : 64, - "offset" : 28351, + "offset" : 28360, "length" : 31 } }, @@ -13713,7 +13713,7 @@ "beginColumn" : 17, "endLine" : 544, "endColumn" : 64, - "offset" : 28335, + "offset" : 28344, "length" : 47 } }, @@ -13742,7 +13742,7 @@ "beginColumn" : 6, "endLine" : 544, "endColumn" : 65, - "offset" : 28011, + "offset" : 28020, "length" : 372 } } @@ -13778,7 +13778,7 @@ "beginColumn" : 15, "endLine" : 549, "endColumn" : 29, - "offset" : 28698, + "offset" : 28707, "length" : 14 } } @@ -13798,7 +13798,7 @@ "beginColumn" : 15, "endLine" : 549, "endColumn" : 29, - "offset" : 28698, + "offset" : 28707, "length" : 14 } }, @@ -13838,7 +13838,7 @@ "beginColumn" : 33, "endLine" : 549, "endColumn" : 90, - "offset" : 28716, + "offset" : 28725, "length" : 57 } } @@ -13858,7 +13858,7 @@ "beginColumn" : 33, "endLine" : 549, "endColumn" : 90, - "offset" : 28716, + "offset" : 28725, "length" : 57 } }, @@ -13888,7 +13888,7 @@ "beginColumn" : 33, "endLine" : 549, "endColumn" : 90, - "offset" : 28716, + "offset" : 28725, "length" : 57 } } @@ -13910,7 +13910,7 @@ "beginColumn" : 33, "endLine" : 549, "endColumn" : 90, - "offset" : 28716, + "offset" : 28725, "length" : 57 } }, @@ -13940,7 +13940,7 @@ "beginColumn" : 33, "endLine" : 549, "endColumn" : 90, - "offset" : 28716, + "offset" : 28725, "length" : 57 } } @@ -13962,7 +13962,7 @@ "beginColumn" : 33, "endLine" : 549, "endColumn" : 90, - "offset" : 28716, + "offset" : 28725, "length" : 57 } }, @@ -13988,7 +13988,7 @@ "beginColumn" : 15, "endLine" : 549, "endColumn" : 90, - "offset" : 28698, + "offset" : 28707, "length" : 75 } }, @@ -14029,7 +14029,7 @@ "beginColumn" : 11, "endLine" : 550, "endColumn" : 30, - "offset" : 28785, + "offset" : 28794, "length" : 19 } } @@ -14049,7 +14049,7 @@ "beginColumn" : 11, "endLine" : 550, "endColumn" : 30, - "offset" : 28785, + "offset" : 28794, "length" : 19 } }, @@ -14064,7 +14064,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -14078,9 +14078,9 @@ "beginLine" : 550, "beginColumn" : 31, "endLine" : 550, - "endColumn" : 36, - "offset" : 28805, - "length" : 5 + "endColumn" : 38, + "offset" : 28814, + "length" : 7 } } } @@ -14100,9 +14100,9 @@ "beginLine" : 550, "beginColumn" : 11, "endLine" : 550, - "endColumn" : 36, - "offset" : 28785, - "length" : 25 + "endColumn" : 38, + "offset" : 28794, + "length" : 27 } }, "resOpt" : { @@ -14134,10 +14134,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 550, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 550, - "endColumn" : 57, - "offset" : 28813, + "endColumn" : 59, + "offset" : 28824, "length" : 18 } } @@ -14154,10 +14154,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 550, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 550, - "endColumn" : 57, - "offset" : 28813, + "endColumn" : 59, + "offset" : 28824, "length" : 18 } }, @@ -14172,7 +14172,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -14184,11 +14184,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 550, - "beginColumn" : 58, + "beginColumn" : 60, "endLine" : 550, - "endColumn" : 63, - "offset" : 28832, - "length" : 5 + "endColumn" : 67, + "offset" : 28843, + "length" : 7 } } } @@ -14206,11 +14206,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 550, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 550, - "endColumn" : 63, - "offset" : 28813, - "length" : 24 + "endColumn" : 67, + "offset" : 28824, + "length" : 26 } }, "resOpt" : { @@ -14234,9 +14234,9 @@ "beginLine" : 550, "beginColumn" : 11, "endLine" : 550, - "endColumn" : 63, - "offset" : 28785, - "length" : 52 + "endColumn" : 67, + "offset" : 28794, + "length" : 56 } }, "resOpt" : { @@ -14263,9 +14263,9 @@ "beginLine" : 549, "beginColumn" : 15, "endLine" : 550, - "endColumn" : 63, - "offset" : 28698, - "length" : 139 + "endColumn" : 67, + "offset" : 28707, + "length" : 143 } }, "resOpt" : { @@ -14300,7 +14300,7 @@ "beginColumn" : 17, "endLine" : 551, "endColumn" : 29, - "offset" : 28856, + "offset" : 28869, "length" : 12 } } @@ -14320,7 +14320,7 @@ "beginColumn" : 17, "endLine" : 551, "endColumn" : 29, - "offset" : 28856, + "offset" : 28869, "length" : 12 } }, @@ -14360,7 +14360,7 @@ "beginColumn" : 33, "endLine" : 551, "endColumn" : 64, - "offset" : 28872, + "offset" : 28885, "length" : 31 } } @@ -14380,7 +14380,7 @@ "beginColumn" : 33, "endLine" : 551, "endColumn" : 64, - "offset" : 28872, + "offset" : 28885, "length" : 31 } }, @@ -14410,7 +14410,7 @@ "beginColumn" : 33, "endLine" : 551, "endColumn" : 64, - "offset" : 28872, + "offset" : 28885, "length" : 31 } } @@ -14432,7 +14432,7 @@ "beginColumn" : 33, "endLine" : 551, "endColumn" : 64, - "offset" : 28872, + "offset" : 28885, "length" : 31 } }, @@ -14462,7 +14462,7 @@ "beginColumn" : 33, "endLine" : 551, "endColumn" : 64, - "offset" : 28872, + "offset" : 28885, "length" : 31 } } @@ -14484,7 +14484,7 @@ "beginColumn" : 33, "endLine" : 551, "endColumn" : 64, - "offset" : 28872, + "offset" : 28885, "length" : 31 } }, @@ -14510,7 +14510,7 @@ "beginColumn" : 17, "endLine" : 551, "endColumn" : 64, - "offset" : 28856, + "offset" : 28869, "length" : 47 } }, @@ -14539,8 +14539,8 @@ "beginColumn" : 6, "endLine" : 551, "endColumn" : 65, - "offset" : 28393, - "length" : 511 + "offset" : 28402, + "length" : 515 } } } @@ -14575,7 +14575,7 @@ "beginColumn" : 15, "endLine" : 556, "endColumn" : 29, - "offset" : 29223, + "offset" : 29236, "length" : 14 } } @@ -14595,7 +14595,7 @@ "beginColumn" : 15, "endLine" : 556, "endColumn" : 29, - "offset" : 29223, + "offset" : 29236, "length" : 14 } }, @@ -14635,7 +14635,7 @@ "beginColumn" : 33, "endLine" : 556, "endColumn" : 90, - "offset" : 29241, + "offset" : 29254, "length" : 57 } } @@ -14655,7 +14655,7 @@ "beginColumn" : 33, "endLine" : 556, "endColumn" : 90, - "offset" : 29241, + "offset" : 29254, "length" : 57 } }, @@ -14685,7 +14685,7 @@ "beginColumn" : 33, "endLine" : 556, "endColumn" : 90, - "offset" : 29241, + "offset" : 29254, "length" : 57 } } @@ -14707,7 +14707,7 @@ "beginColumn" : 33, "endLine" : 556, "endColumn" : 90, - "offset" : 29241, + "offset" : 29254, "length" : 57 } }, @@ -14737,7 +14737,7 @@ "beginColumn" : 33, "endLine" : 556, "endColumn" : 90, - "offset" : 29241, + "offset" : 29254, "length" : 57 } } @@ -14759,7 +14759,7 @@ "beginColumn" : 33, "endLine" : 556, "endColumn" : 90, - "offset" : 29241, + "offset" : 29254, "length" : 57 } }, @@ -14785,7 +14785,7 @@ "beginColumn" : 15, "endLine" : 556, "endColumn" : 90, - "offset" : 29223, + "offset" : 29236, "length" : 75 } }, @@ -14826,7 +14826,7 @@ "beginColumn" : 11, "endLine" : 557, "endColumn" : 30, - "offset" : 29310, + "offset" : 29323, "length" : 19 } } @@ -14846,7 +14846,7 @@ "beginColumn" : 11, "endLine" : 557, "endColumn" : 30, - "offset" : 29310, + "offset" : 29323, "length" : 19 } }, @@ -14861,7 +14861,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -14875,9 +14875,9 @@ "beginLine" : 557, "beginColumn" : 31, "endLine" : 557, - "endColumn" : 36, - "offset" : 29330, - "length" : 5 + "endColumn" : 38, + "offset" : 29343, + "length" : 7 } } } @@ -14897,9 +14897,9 @@ "beginLine" : 557, "beginColumn" : 11, "endLine" : 557, - "endColumn" : 36, - "offset" : 29310, - "length" : 25 + "endColumn" : 38, + "offset" : 29323, + "length" : 27 } }, "resOpt" : { @@ -14931,10 +14931,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 557, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 557, - "endColumn" : 57, - "offset" : 29338, + "endColumn" : 59, + "offset" : 29353, "length" : 18 } } @@ -14951,10 +14951,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 557, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 557, - "endColumn" : 57, - "offset" : 29338, + "endColumn" : 59, + "offset" : 29353, "length" : 18 } }, @@ -14969,7 +14969,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -14981,11 +14981,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 557, - "beginColumn" : 58, + "beginColumn" : 60, "endLine" : 557, - "endColumn" : 63, - "offset" : 29357, - "length" : 5 + "endColumn" : 67, + "offset" : 29372, + "length" : 7 } } } @@ -15003,11 +15003,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 557, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 557, - "endColumn" : 63, - "offset" : 29338, - "length" : 24 + "endColumn" : 67, + "offset" : 29353, + "length" : 26 } }, "resOpt" : { @@ -15031,9 +15031,9 @@ "beginLine" : 557, "beginColumn" : 11, "endLine" : 557, - "endColumn" : 63, - "offset" : 29310, - "length" : 52 + "endColumn" : 67, + "offset" : 29323, + "length" : 56 } }, "resOpt" : { @@ -15060,9 +15060,9 @@ "beginLine" : 556, "beginColumn" : 15, "endLine" : 557, - "endColumn" : 63, - "offset" : 29223, - "length" : 139 + "endColumn" : 67, + "offset" : 29236, + "length" : 143 } }, "resOpt" : { @@ -15097,7 +15097,7 @@ "beginColumn" : 17, "endLine" : 558, "endColumn" : 29, - "offset" : 29381, + "offset" : 29398, "length" : 12 } } @@ -15117,7 +15117,7 @@ "beginColumn" : 17, "endLine" : 558, "endColumn" : 29, - "offset" : 29381, + "offset" : 29398, "length" : 12 } }, @@ -15157,7 +15157,7 @@ "beginColumn" : 33, "endLine" : 558, "endColumn" : 64, - "offset" : 29397, + "offset" : 29414, "length" : 31 } } @@ -15177,7 +15177,7 @@ "beginColumn" : 33, "endLine" : 558, "endColumn" : 64, - "offset" : 29397, + "offset" : 29414, "length" : 31 } }, @@ -15207,7 +15207,7 @@ "beginColumn" : 33, "endLine" : 558, "endColumn" : 64, - "offset" : 29397, + "offset" : 29414, "length" : 31 } } @@ -15229,7 +15229,7 @@ "beginColumn" : 33, "endLine" : 558, "endColumn" : 64, - "offset" : 29397, + "offset" : 29414, "length" : 31 } }, @@ -15259,7 +15259,7 @@ "beginColumn" : 33, "endLine" : 558, "endColumn" : 64, - "offset" : 29397, + "offset" : 29414, "length" : 31 } } @@ -15281,7 +15281,7 @@ "beginColumn" : 33, "endLine" : 558, "endColumn" : 64, - "offset" : 29397, + "offset" : 29414, "length" : 31 } }, @@ -15307,7 +15307,7 @@ "beginColumn" : 17, "endLine" : 558, "endColumn" : 64, - "offset" : 29381, + "offset" : 29398, "length" : 47 } }, @@ -15336,8 +15336,8 @@ "beginColumn" : 6, "endLine" : 558, "endColumn" : 65, - "offset" : 28914, - "length" : 515 + "offset" : 28927, + "length" : 519 } } } @@ -15372,7 +15372,7 @@ "beginColumn" : 15, "endLine" : 565, "endColumn" : 29, - "offset" : 29846, + "offset" : 29863, "length" : 14 } } @@ -15392,7 +15392,7 @@ "beginColumn" : 15, "endLine" : 565, "endColumn" : 29, - "offset" : 29846, + "offset" : 29863, "length" : 14 } }, @@ -15432,7 +15432,7 @@ "beginColumn" : 33, "endLine" : 565, "endColumn" : 90, - "offset" : 29864, + "offset" : 29881, "length" : 57 } } @@ -15452,7 +15452,7 @@ "beginColumn" : 33, "endLine" : 565, "endColumn" : 90, - "offset" : 29864, + "offset" : 29881, "length" : 57 } }, @@ -15482,7 +15482,7 @@ "beginColumn" : 33, "endLine" : 565, "endColumn" : 90, - "offset" : 29864, + "offset" : 29881, "length" : 57 } } @@ -15504,7 +15504,7 @@ "beginColumn" : 33, "endLine" : 565, "endColumn" : 90, - "offset" : 29864, + "offset" : 29881, "length" : 57 } }, @@ -15534,7 +15534,7 @@ "beginColumn" : 33, "endLine" : 565, "endColumn" : 90, - "offset" : 29864, + "offset" : 29881, "length" : 57 } } @@ -15556,7 +15556,7 @@ "beginColumn" : 33, "endLine" : 565, "endColumn" : 90, - "offset" : 29864, + "offset" : 29881, "length" : 57 } }, @@ -15582,7 +15582,7 @@ "beginColumn" : 15, "endLine" : 565, "endColumn" : 90, - "offset" : 29846, + "offset" : 29863, "length" : 75 } }, @@ -15625,7 +15625,7 @@ "beginColumn" : 11, "endLine" : 566, "endColumn" : 30, - "offset" : 29933, + "offset" : 29950, "length" : 19 } } @@ -15645,7 +15645,7 @@ "beginColumn" : 11, "endLine" : 566, "endColumn" : 30, - "offset" : 29933, + "offset" : 29950, "length" : 19 } }, @@ -15660,7 +15660,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -15674,9 +15674,9 @@ "beginLine" : 566, "beginColumn" : 31, "endLine" : 566, - "endColumn" : 36, - "offset" : 29953, - "length" : 5 + "endColumn" : 38, + "offset" : 29970, + "length" : 7 } } } @@ -15696,9 +15696,9 @@ "beginLine" : 566, "beginColumn" : 11, "endLine" : 566, - "endColumn" : 36, - "offset" : 29933, - "length" : 25 + "endColumn" : 38, + "offset" : 29950, + "length" : 27 } }, "resOpt" : { @@ -15730,10 +15730,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 566, - "beginColumn" : 40, + "beginColumn" : 42, "endLine" : 566, - "endColumn" : 58, - "offset" : 29962, + "endColumn" : 60, + "offset" : 29981, "length" : 18 } } @@ -15750,10 +15750,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 566, - "beginColumn" : 40, + "beginColumn" : 42, "endLine" : 566, - "endColumn" : 58, - "offset" : 29962, + "endColumn" : 60, + "offset" : 29981, "length" : 18 } }, @@ -15768,7 +15768,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -15780,11 +15780,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 566, - "beginColumn" : 59, + "beginColumn" : 61, "endLine" : 566, - "endColumn" : 64, - "offset" : 29981, - "length" : 5 + "endColumn" : 68, + "offset" : 30000, + "length" : 7 } } } @@ -15802,11 +15802,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 566, - "beginColumn" : 40, + "beginColumn" : 42, "endLine" : 566, - "endColumn" : 64, - "offset" : 29962, - "length" : 24 + "endColumn" : 68, + "offset" : 29981, + "length" : 26 } }, "resOpt" : { @@ -15830,9 +15830,9 @@ "beginLine" : 566, "beginColumn" : 11, "endLine" : 566, - "endColumn" : 64, - "offset" : 29933, - "length" : 53 + "endColumn" : 68, + "offset" : 29950, + "length" : 57 } }, "resOpt" : { @@ -15872,7 +15872,7 @@ "beginColumn" : 10, "endLine" : 567, "endColumn" : 29, - "offset" : 29996, + "offset" : 30017, "length" : 19 } } @@ -15892,7 +15892,7 @@ "beginColumn" : 10, "endLine" : 567, "endColumn" : 29, - "offset" : 29996, + "offset" : 30017, "length" : 19 } }, @@ -15907,7 +15907,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -15921,9 +15921,9 @@ "beginLine" : 567, "beginColumn" : 30, "endLine" : 567, - "endColumn" : 35, - "offset" : 30016, - "length" : 5 + "endColumn" : 37, + "offset" : 30037, + "length" : 7 } } } @@ -15943,9 +15943,9 @@ "beginLine" : 567, "beginColumn" : 10, "endLine" : 567, - "endColumn" : 35, - "offset" : 29996, - "length" : 25 + "endColumn" : 37, + "offset" : 30017, + "length" : 27 } }, "resOpt" : { @@ -15977,10 +15977,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 567, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 567, - "endColumn" : 57, - "offset" : 30025, + "endColumn" : 59, + "offset" : 30048, "length" : 18 } } @@ -15997,10 +15997,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 567, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 567, - "endColumn" : 57, - "offset" : 30025, + "endColumn" : 59, + "offset" : 30048, "length" : 18 } }, @@ -16015,7 +16015,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -16027,11 +16027,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 567, - "beginColumn" : 58, + "beginColumn" : 60, "endLine" : 567, - "endColumn" : 63, - "offset" : 30044, - "length" : 5 + "endColumn" : 67, + "offset" : 30067, + "length" : 7 } } } @@ -16049,11 +16049,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 567, - "beginColumn" : 39, + "beginColumn" : 41, "endLine" : 567, - "endColumn" : 63, - "offset" : 30025, - "length" : 24 + "endColumn" : 67, + "offset" : 30048, + "length" : 26 } }, "resOpt" : { @@ -16077,9 +16077,9 @@ "beginLine" : 567, "beginColumn" : 10, "endLine" : 567, - "endColumn" : 63, - "offset" : 29996, - "length" : 53 + "endColumn" : 67, + "offset" : 30017, + "length" : 57 } }, "resOpt" : { @@ -16106,9 +16106,9 @@ "beginLine" : 566, "beginColumn" : 11, "endLine" : 567, - "endColumn" : 63, - "offset" : 29933, - "length" : 116 + "endColumn" : 67, + "offset" : 29950, + "length" : 124 } }, "resOpt" : { @@ -16135,9 +16135,9 @@ "beginLine" : 565, "beginColumn" : 15, "endLine" : 567, - "endColumn" : 63, - "offset" : 29846, - "length" : 203 + "endColumn" : 67, + "offset" : 29863, + "length" : 211 } }, "resOpt" : { @@ -16172,7 +16172,7 @@ "beginColumn" : 17, "endLine" : 568, "endColumn" : 29, - "offset" : 30069, + "offset" : 30094, "length" : 12 } } @@ -16192,7 +16192,7 @@ "beginColumn" : 17, "endLine" : 568, "endColumn" : 29, - "offset" : 30069, + "offset" : 30094, "length" : 12 } }, @@ -16226,7 +16226,7 @@ "beginColumn" : 33, "endLine" : 568, "endColumn" : 44, - "offset" : 30085, + "offset" : 30110, "length" : 11 } } @@ -16246,7 +16246,7 @@ "beginColumn" : 33, "endLine" : 568, "endColumn" : 44, - "offset" : 30085, + "offset" : 30110, "length" : 11 } }, @@ -16272,7 +16272,7 @@ "beginColumn" : 33, "endLine" : 568, "endColumn" : 44, - "offset" : 30085, + "offset" : 30110, "length" : 11 } } @@ -16292,7 +16292,7 @@ "beginColumn" : 17, "endLine" : 568, "endColumn" : 44, - "offset" : 30069, + "offset" : 30094, "length" : 27 } }, @@ -16321,8 +16321,8 @@ "beginColumn" : 6, "endLine" : 568, "endColumn" : 45, - "offset" : 29439, - "length" : 658 + "offset" : 29456, + "length" : 666 } } } @@ -16355,7 +16355,7 @@ "beginColumn" : 14, "endLine" : 573, "endColumn" : 28, - "offset" : 30341, + "offset" : 30366, "length" : 14 } } @@ -16375,7 +16375,7 @@ "beginColumn" : 14, "endLine" : 573, "endColumn" : 28, - "offset" : 30341, + "offset" : 30366, "length" : 14 } }, @@ -16415,7 +16415,7 @@ "beginColumn" : 32, "endLine" : 573, "endColumn" : 89, - "offset" : 30359, + "offset" : 30384, "length" : 57 } } @@ -16435,7 +16435,7 @@ "beginColumn" : 32, "endLine" : 573, "endColumn" : 89, - "offset" : 30359, + "offset" : 30384, "length" : 57 } }, @@ -16465,7 +16465,7 @@ "beginColumn" : 32, "endLine" : 573, "endColumn" : 89, - "offset" : 30359, + "offset" : 30384, "length" : 57 } } @@ -16487,7 +16487,7 @@ "beginColumn" : 32, "endLine" : 573, "endColumn" : 89, - "offset" : 30359, + "offset" : 30384, "length" : 57 } }, @@ -16517,7 +16517,7 @@ "beginColumn" : 32, "endLine" : 573, "endColumn" : 89, - "offset" : 30359, + "offset" : 30384, "length" : 57 } } @@ -16539,7 +16539,7 @@ "beginColumn" : 32, "endLine" : 573, "endColumn" : 89, - "offset" : 30359, + "offset" : 30384, "length" : 57 } }, @@ -16565,7 +16565,7 @@ "beginColumn" : 14, "endLine" : 573, "endColumn" : 89, - "offset" : 30341, + "offset" : 30366, "length" : 75 } }, @@ -16601,7 +16601,7 @@ "beginColumn" : 17, "endLine" : 574, "endColumn" : 29, - "offset" : 30434, + "offset" : 30459, "length" : 12 } } @@ -16621,7 +16621,7 @@ "beginColumn" : 17, "endLine" : 574, "endColumn" : 29, - "offset" : 30434, + "offset" : 30459, "length" : 12 } }, @@ -16661,7 +16661,7 @@ "beginColumn" : 33, "endLine" : 574, "endColumn" : 64, - "offset" : 30450, + "offset" : 30475, "length" : 31 } } @@ -16681,7 +16681,7 @@ "beginColumn" : 33, "endLine" : 574, "endColumn" : 64, - "offset" : 30450, + "offset" : 30475, "length" : 31 } }, @@ -16711,7 +16711,7 @@ "beginColumn" : 33, "endLine" : 574, "endColumn" : 64, - "offset" : 30450, + "offset" : 30475, "length" : 31 } } @@ -16733,7 +16733,7 @@ "beginColumn" : 33, "endLine" : 574, "endColumn" : 64, - "offset" : 30450, + "offset" : 30475, "length" : 31 } }, @@ -16763,7 +16763,7 @@ "beginColumn" : 33, "endLine" : 574, "endColumn" : 64, - "offset" : 30450, + "offset" : 30475, "length" : 31 } } @@ -16785,7 +16785,7 @@ "beginColumn" : 33, "endLine" : 574, "endColumn" : 64, - "offset" : 30450, + "offset" : 30475, "length" : 31 } }, @@ -16811,7 +16811,7 @@ "beginColumn" : 17, "endLine" : 574, "endColumn" : 64, - "offset" : 30434, + "offset" : 30459, "length" : 47 } }, @@ -16840,7 +16840,7 @@ "beginColumn" : 6, "endLine" : 574, "endColumn" : 65, - "offset" : 30107, + "offset" : 30132, "length" : 375 } } @@ -16865,8 +16865,8 @@ "beginColumn" : 4, "endLine" : 574, "endColumn" : 65, - "offset" : 27629, - "length" : 2853 + "offset" : 27634, + "length" : 2873 } } } @@ -16886,8 +16886,8 @@ "beginColumn" : 4, "endLine" : 574, "endColumn" : 65, - "offset" : 27017, - "length" : 3465 + "offset" : 27022, + "length" : 3485 } } } @@ -16915,7 +16915,7 @@ "beginColumn" : 4, "endLine" : 490, "endColumn" : 46, - "offset" : 25829, + "offset" : 25834, "length" : 42 } } @@ -16938,7 +16938,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -16960,7 +16960,7 @@ "beginColumn" : 4, "endLine" : 506, "endColumn" : 60, - "offset" : 26597, + "offset" : 26602, "length" : 56 } } @@ -17015,7 +17015,7 @@ "beginColumn" : 4, "endLine" : 474, "endColumn" : 60, - "offset" : 25297, + "offset" : 25302, "length" : 56 } } @@ -17065,7 +17065,7 @@ "beginColumn" : 4, "endLine" : 485, "endColumn" : 61, - "offset" : 25596, + "offset" : 25601, "length" : 57 } } @@ -17110,7 +17110,7 @@ "beginColumn" : 4, "endLine" : 465, "endColumn" : 73, - "offset" : 24797, + "offset" : 24802, "length" : 69 } } @@ -17143,7 +17143,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -17165,7 +17165,7 @@ "beginColumn" : 4, "endLine" : 497, "endColumn" : 73, - "offset" : 26097, + "offset" : 26102, "length" : 69 } } @@ -17215,7 +17215,7 @@ "beginColumn" : 4, "endLine" : 487, "endColumn" : 59, - "offset" : 25716, + "offset" : 25721, "length" : 55 } } @@ -17260,7 +17260,7 @@ "beginColumn" : 4, "endLine" : 468, "endColumn" : 65, - "offset" : 25013, + "offset" : 25018, "length" : 61 } } @@ -17293,7 +17293,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -17315,7 +17315,7 @@ "beginColumn" : 4, "endLine" : 500, "endColumn" : 65, - "offset" : 26313, + "offset" : 26318, "length" : 61 } } @@ -17365,7 +17365,7 @@ "beginColumn" : 4, "endLine" : 486, "endColumn" : 59, - "offset" : 25657, + "offset" : 25662, "length" : 55 } } @@ -17410,7 +17410,7 @@ "beginColumn" : 4, "endLine" : 467, "endColumn" : 65, - "offset" : 24948, + "offset" : 24953, "length" : 61 } } @@ -17443,7 +17443,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -17465,7 +17465,7 @@ "beginColumn" : 4, "endLine" : 499, "endColumn" : 65, - "offset" : 26248, + "offset" : 26253, "length" : 61 } } @@ -17515,7 +17515,7 @@ "beginColumn" : 4, "endLine" : 488, "endColumn" : 50, - "offset" : 25775, + "offset" : 25780, "length" : 46 } } @@ -17560,7 +17560,7 @@ "beginColumn" : 4, "endLine" : 470, "endColumn" : 69, - "offset" : 25121, + "offset" : 25126, "length" : 65 } } @@ -17593,7 +17593,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -17615,7 +17615,7 @@ "beginColumn" : 4, "endLine" : 502, "endColumn" : 69, - "offset" : 26421, + "offset" : 26426, "length" : 65 } } @@ -17810,7 +17810,7 @@ "beginColumn" : 4, "endLine" : 313, "endColumn" : 73, - "offset" : 16371, + "offset" : 16384, "length" : 69 } } @@ -17851,7 +17851,7 @@ "beginColumn" : 4, "endLine" : 315, "endColumn" : 72, - "offset" : 16526, + "offset" : 16539, "length" : 68 } } @@ -17892,7 +17892,7 @@ "beginColumn" : 4, "endLine" : 317, "endColumn" : 71, - "offset" : 16666, + "offset" : 16679, "length" : 67 } } @@ -17933,7 +17933,7 @@ "beginColumn" : 4, "endLine" : 321, "endColumn" : 70, - "offset" : 16852, + "offset" : 16865, "length" : 66 } } @@ -18046,7 +18046,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -18080,7 +18080,7 @@ "beginColumn" : 4, "endLine" : 342, "endColumn" : 73, - "offset" : 17642, + "offset" : 17655, "length" : 69 } } @@ -18121,7 +18121,7 @@ "beginColumn" : 4, "endLine" : 344, "endColumn" : 72, - "offset" : 17797, + "offset" : 17810, "length" : 68 } } @@ -18162,7 +18162,7 @@ "beginColumn" : 4, "endLine" : 346, "endColumn" : 71, - "offset" : 17937, + "offset" : 17950, "length" : 67 } } @@ -18203,7 +18203,7 @@ "beginColumn" : 4, "endLine" : 350, "endColumn" : 70, - "offset" : 18123, + "offset" : 18136, "length" : 66 } } @@ -18508,7 +18508,7 @@ "beginColumn" : 4, "endLine" : 355, "endColumn" : 65, - "offset" : 18319, + "offset" : 18332, "length" : 61 } } @@ -18534,7 +18534,7 @@ "beginColumn" : 4, "endLine" : 342, "endColumn" : 73, - "offset" : 17642, + "offset" : 17655, "length" : 69 } } @@ -18557,7 +18557,7 @@ "beginColumn" : 4, "endLine" : 350, "endColumn" : 70, - "offset" : 18123, + "offset" : 18136, "length" : 66 } } @@ -18582,7 +18582,7 @@ "beginColumn" : 4, "endLine" : 356, "endColumn" : 62, - "offset" : 18384, + "offset" : 18397, "length" : 58 } } @@ -18608,7 +18608,7 @@ "beginColumn" : 4, "endLine" : 344, "endColumn" : 72, - "offset" : 17797, + "offset" : 17810, "length" : 68 } } @@ -18631,7 +18631,7 @@ "beginColumn" : 4, "endLine" : 350, "endColumn" : 70, - "offset" : 18123, + "offset" : 18136, "length" : 66 } } @@ -18656,7 +18656,7 @@ "beginColumn" : 4, "endLine" : 357, "endColumn" : 61, - "offset" : 18446, + "offset" : 18459, "length" : 57 } } @@ -18682,7 +18682,7 @@ "beginColumn" : 4, "endLine" : 346, "endColumn" : 71, - "offset" : 17937, + "offset" : 17950, "length" : 67 } } @@ -18705,7 +18705,7 @@ "beginColumn" : 4, "endLine" : 350, "endColumn" : 70, - "offset" : 18123, + "offset" : 18136, "length" : 66 } } @@ -18768,7 +18768,7 @@ "beginColumn" : 5, "endLine" : 362, "endColumn" : 60, - "offset" : 18639, + "offset" : 18652, "length" : 55 } } @@ -18814,7 +18814,7 @@ "beginColumn" : 6, "endLine" : 372, "endColumn" : 20, - "offset" : 19281, + "offset" : 19294, "length" : 14 } } @@ -18834,7 +18834,7 @@ "beginColumn" : 6, "endLine" : 372, "endColumn" : 20, - "offset" : 19281, + "offset" : 19294, "length" : 14 } }, @@ -18874,7 +18874,7 @@ "beginColumn" : 24, "endLine" : 372, "endColumn" : 79, - "offset" : 19299, + "offset" : 19312, "length" : 55 } } @@ -18894,7 +18894,7 @@ "beginColumn" : 24, "endLine" : 372, "endColumn" : 79, - "offset" : 19299, + "offset" : 19312, "length" : 55 } }, @@ -18924,7 +18924,7 @@ "beginColumn" : 24, "endLine" : 372, "endColumn" : 79, - "offset" : 19299, + "offset" : 19312, "length" : 55 } } @@ -18946,7 +18946,7 @@ "beginColumn" : 24, "endLine" : 372, "endColumn" : 79, - "offset" : 19299, + "offset" : 19312, "length" : 55 } }, @@ -18976,7 +18976,7 @@ "beginColumn" : 24, "endLine" : 372, "endColumn" : 79, - "offset" : 19299, + "offset" : 19312, "length" : 55 } } @@ -18998,7 +18998,7 @@ "beginColumn" : 24, "endLine" : 372, "endColumn" : 79, - "offset" : 19299, + "offset" : 19312, "length" : 55 } }, @@ -19024,7 +19024,7 @@ "beginColumn" : 6, "endLine" : 372, "endColumn" : 79, - "offset" : 19281, + "offset" : 19294, "length" : 73 } }, @@ -19053,7 +19053,7 @@ "beginColumn" : 5, "endLine" : 372, "endColumn" : 80, - "offset" : 19090, + "offset" : 19103, "length" : 265 } } @@ -19076,7 +19076,7 @@ "beginColumn" : 4, "endLine" : 372, "endColumn" : 80, - "offset" : 19075, + "offset" : 19088, "length" : 280 } } @@ -19123,7 +19123,7 @@ "beginColumn" : 14, "endLine" : 384, "endColumn" : 31, - "offset" : 19951, + "offset" : 19964, "length" : 17 } } @@ -19143,7 +19143,7 @@ "beginColumn" : 14, "endLine" : 384, "endColumn" : 31, - "offset" : 19951, + "offset" : 19964, "length" : 17 } }, @@ -19183,7 +19183,7 @@ "beginColumn" : 35, "endLine" : 384, "endColumn" : 90, - "offset" : 19972, + "offset" : 19985, "length" : 55 } } @@ -19203,7 +19203,7 @@ "beginColumn" : 35, "endLine" : 384, "endColumn" : 90, - "offset" : 19972, + "offset" : 19985, "length" : 55 } }, @@ -19233,7 +19233,7 @@ "beginColumn" : 35, "endLine" : 384, "endColumn" : 90, - "offset" : 19972, + "offset" : 19985, "length" : 55 } } @@ -19255,7 +19255,7 @@ "beginColumn" : 35, "endLine" : 384, "endColumn" : 90, - "offset" : 19972, + "offset" : 19985, "length" : 55 } }, @@ -19285,7 +19285,7 @@ "beginColumn" : 35, "endLine" : 384, "endColumn" : 90, - "offset" : 19972, + "offset" : 19985, "length" : 55 } } @@ -19307,7 +19307,7 @@ "beginColumn" : 35, "endLine" : 384, "endColumn" : 90, - "offset" : 19972, + "offset" : 19985, "length" : 55 } }, @@ -19333,7 +19333,7 @@ "beginColumn" : 14, "endLine" : 384, "endColumn" : 90, - "offset" : 19951, + "offset" : 19964, "length" : 76 } }, @@ -19383,7 +19383,7 @@ "beginColumn" : 12, "endLine" : 386, "endColumn" : 29, - "offset" : 20057, + "offset" : 20070, "length" : 17 } } @@ -19403,7 +19403,7 @@ "beginColumn" : 12, "endLine" : 386, "endColumn" : 29, - "offset" : 20057, + "offset" : 20070, "length" : 17 } }, @@ -19418,7 +19418,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -19432,9 +19432,9 @@ "beginLine" : 386, "beginColumn" : 30, "endLine" : 386, - "endColumn" : 35, - "offset" : 20075, - "length" : 5 + "endColumn" : 34, + "offset" : 20088, + "length" : 4 } } } @@ -19454,9 +19454,9 @@ "beginLine" : 386, "beginColumn" : 12, "endLine" : 386, - "endColumn" : 35, - "offset" : 20057, - "length" : 23 + "endColumn" : 34, + "offset" : 20070, + "length" : 22 } }, "resOpt" : { @@ -19488,10 +19488,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 386, - "beginColumn" : 39, + "beginColumn" : 38, "endLine" : 386, - "endColumn" : 55, - "offset" : 20084, + "endColumn" : 54, + "offset" : 20096, "length" : 16 } } @@ -19508,10 +19508,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 386, - "beginColumn" : 39, + "beginColumn" : 38, "endLine" : 386, - "endColumn" : 55, - "offset" : 20084, + "endColumn" : 54, + "offset" : 20096, "length" : 16 } }, @@ -19526,7 +19526,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -19538,11 +19538,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 386, - "beginColumn" : 56, + "beginColumn" : 55, "endLine" : 386, - "endColumn" : 61, - "offset" : 20101, - "length" : 5 + "endColumn" : 59, + "offset" : 20113, + "length" : 4 } } } @@ -19560,11 +19560,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 386, - "beginColumn" : 39, + "beginColumn" : 38, "endLine" : 386, - "endColumn" : 61, - "offset" : 20084, - "length" : 22 + "endColumn" : 59, + "offset" : 20096, + "length" : 21 } }, "resOpt" : { @@ -19588,9 +19588,9 @@ "beginLine" : 386, "beginColumn" : 12, "endLine" : 386, - "endColumn" : 61, - "offset" : 20057, - "length" : 49 + "endColumn" : 59, + "offset" : 20070, + "length" : 47 } }, "resOpt" : { @@ -19617,9 +19617,9 @@ "beginLine" : 386, "beginColumn" : 10, "endLine" : 386, - "endColumn" : 62, - "offset" : 20055, - "length" : 52 + "endColumn" : 60, + "offset" : 20068, + "length" : 50 } }, "resOpt" : { @@ -19659,7 +19659,7 @@ "beginColumn" : 9, "endLine" : 387, "endColumn" : 28, - "offset" : 20121, + "offset" : 20132, "length" : 19 } } @@ -19679,7 +19679,7 @@ "beginColumn" : 9, "endLine" : 387, "endColumn" : 28, - "offset" : 20121, + "offset" : 20132, "length" : 19 } }, @@ -19709,7 +19709,7 @@ "beginColumn" : 29, "endLine" : 387, "endColumn" : 35, - "offset" : 20141, + "offset" : 20152, "length" : 6 } } @@ -19731,7 +19731,7 @@ "beginColumn" : 9, "endLine" : 387, "endColumn" : 35, - "offset" : 20121, + "offset" : 20132, "length" : 26 } }, @@ -19771,7 +19771,7 @@ "beginColumn" : 39, "endLine" : 387, "endColumn" : 77, - "offset" : 20151, + "offset" : 20162, "length" : 38 } } @@ -19791,7 +19791,7 @@ "beginColumn" : 39, "endLine" : 387, "endColumn" : 77, - "offset" : 20151, + "offset" : 20162, "length" : 38 } }, @@ -19821,7 +19821,7 @@ "beginColumn" : 39, "endLine" : 387, "endColumn" : 77, - "offset" : 20151, + "offset" : 20162, "length" : 38 } } @@ -19843,7 +19843,7 @@ "beginColumn" : 39, "endLine" : 387, "endColumn" : 77, - "offset" : 20151, + "offset" : 20162, "length" : 38 } }, @@ -19873,7 +19873,7 @@ "beginColumn" : 39, "endLine" : 387, "endColumn" : 77, - "offset" : 20151, + "offset" : 20162, "length" : 38 } } @@ -19895,7 +19895,7 @@ "beginColumn" : 39, "endLine" : 387, "endColumn" : 77, - "offset" : 20151, + "offset" : 20162, "length" : 38 } }, @@ -19921,7 +19921,7 @@ "beginColumn" : 9, "endLine" : 387, "endColumn" : 77, - "offset" : 20121, + "offset" : 20132, "length" : 68 } }, @@ -19950,8 +19950,8 @@ "beginColumn" : 10, "endLine" : 387, "endColumn" : 77, - "offset" : 20055, - "length" : 134 + "offset" : 20068, + "length" : 132 } }, "resOpt" : { @@ -19989,7 +19989,7 @@ "beginColumn" : 9, "endLine" : 388, "endColumn" : 23, - "offset" : 20205, + "offset" : 20216, "length" : 14 } } @@ -20009,7 +20009,7 @@ "beginColumn" : 9, "endLine" : 388, "endColumn" : 23, - "offset" : 20205, + "offset" : 20216, "length" : 14 } }, @@ -20049,7 +20049,7 @@ "beginColumn" : 27, "endLine" : 388, "endColumn" : 84, - "offset" : 20223, + "offset" : 20234, "length" : 57 } } @@ -20069,7 +20069,7 @@ "beginColumn" : 27, "endLine" : 388, "endColumn" : 84, - "offset" : 20223, + "offset" : 20234, "length" : 57 } }, @@ -20099,7 +20099,7 @@ "beginColumn" : 27, "endLine" : 388, "endColumn" : 84, - "offset" : 20223, + "offset" : 20234, "length" : 57 } } @@ -20121,7 +20121,7 @@ "beginColumn" : 27, "endLine" : 388, "endColumn" : 84, - "offset" : 20223, + "offset" : 20234, "length" : 57 } }, @@ -20151,7 +20151,7 @@ "beginColumn" : 27, "endLine" : 388, "endColumn" : 84, - "offset" : 20223, + "offset" : 20234, "length" : 57 } } @@ -20173,7 +20173,7 @@ "beginColumn" : 27, "endLine" : 388, "endColumn" : 84, - "offset" : 20223, + "offset" : 20234, "length" : 57 } }, @@ -20199,7 +20199,7 @@ "beginColumn" : 9, "endLine" : 388, "endColumn" : 84, - "offset" : 20205, + "offset" : 20216, "length" : 75 } }, @@ -20236,7 +20236,7 @@ "beginColumn" : 9, "endLine" : 389, "endColumn" : 26, - "offset" : 20292, + "offset" : 20303, "length" : 17 } } @@ -20256,7 +20256,7 @@ "beginColumn" : 9, "endLine" : 389, "endColumn" : 26, - "offset" : 20292, + "offset" : 20303, "length" : 17 } }, @@ -20296,7 +20296,7 @@ "beginColumn" : 30, "endLine" : 389, "endColumn" : 87, - "offset" : 20313, + "offset" : 20324, "length" : 57 } } @@ -20316,7 +20316,7 @@ "beginColumn" : 30, "endLine" : 389, "endColumn" : 87, - "offset" : 20313, + "offset" : 20324, "length" : 57 } }, @@ -20346,7 +20346,7 @@ "beginColumn" : 30, "endLine" : 389, "endColumn" : 87, - "offset" : 20313, + "offset" : 20324, "length" : 57 } } @@ -20368,7 +20368,7 @@ "beginColumn" : 30, "endLine" : 389, "endColumn" : 87, - "offset" : 20313, + "offset" : 20324, "length" : 57 } }, @@ -20398,7 +20398,7 @@ "beginColumn" : 30, "endLine" : 389, "endColumn" : 87, - "offset" : 20313, + "offset" : 20324, "length" : 57 } } @@ -20420,7 +20420,7 @@ "beginColumn" : 30, "endLine" : 389, "endColumn" : 87, - "offset" : 20313, + "offset" : 20324, "length" : 57 } }, @@ -20446,7 +20446,7 @@ "beginColumn" : 9, "endLine" : 389, "endColumn" : 87, - "offset" : 20292, + "offset" : 20303, "length" : 78 } }, @@ -20475,7 +20475,7 @@ "beginColumn" : 9, "endLine" : 389, "endColumn" : 87, - "offset" : 20205, + "offset" : 20216, "length" : 165 } }, @@ -20504,8 +20504,8 @@ "beginColumn" : 10, "endLine" : 389, "endColumn" : 87, - "offset" : 20055, - "length" : 315 + "offset" : 20068, + "length" : 313 } }, "resOpt" : { @@ -20533,8 +20533,8 @@ "beginColumn" : 6, "endLine" : 389, "endColumn" : 89, - "offset" : 19474, - "length" : 898 + "offset" : 19487, + "length" : 896 } } } @@ -20567,7 +20567,7 @@ "beginColumn" : 14, "endLine" : 400, "endColumn" : 31, - "offset" : 20955, + "offset" : 20966, "length" : 17 } } @@ -20587,7 +20587,7 @@ "beginColumn" : 14, "endLine" : 400, "endColumn" : 31, - "offset" : 20955, + "offset" : 20966, "length" : 17 } }, @@ -20627,7 +20627,7 @@ "beginColumn" : 35, "endLine" : 400, "endColumn" : 92, - "offset" : 20976, + "offset" : 20987, "length" : 57 } } @@ -20647,7 +20647,7 @@ "beginColumn" : 35, "endLine" : 400, "endColumn" : 92, - "offset" : 20976, + "offset" : 20987, "length" : 57 } }, @@ -20677,7 +20677,7 @@ "beginColumn" : 35, "endLine" : 400, "endColumn" : 92, - "offset" : 20976, + "offset" : 20987, "length" : 57 } } @@ -20699,7 +20699,7 @@ "beginColumn" : 35, "endLine" : 400, "endColumn" : 92, - "offset" : 20976, + "offset" : 20987, "length" : 57 } }, @@ -20729,7 +20729,7 @@ "beginColumn" : 35, "endLine" : 400, "endColumn" : 92, - "offset" : 20976, + "offset" : 20987, "length" : 57 } } @@ -20751,7 +20751,7 @@ "beginColumn" : 35, "endLine" : 400, "endColumn" : 92, - "offset" : 20976, + "offset" : 20987, "length" : 57 } }, @@ -20777,7 +20777,7 @@ "beginColumn" : 14, "endLine" : 400, "endColumn" : 92, - "offset" : 20955, + "offset" : 20966, "length" : 78 } }, @@ -20827,7 +20827,7 @@ "beginColumn" : 12, "endLine" : 402, "endColumn" : 29, - "offset" : 21063, + "offset" : 21074, "length" : 17 } } @@ -20847,7 +20847,7 @@ "beginColumn" : 12, "endLine" : 402, "endColumn" : 29, - "offset" : 21063, + "offset" : 21074, "length" : 17 } }, @@ -20862,7 +20862,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -20876,9 +20876,9 @@ "beginLine" : 402, "beginColumn" : 30, "endLine" : 402, - "endColumn" : 35, - "offset" : 21081, - "length" : 5 + "endColumn" : 34, + "offset" : 21092, + "length" : 4 } } } @@ -20898,9 +20898,9 @@ "beginLine" : 402, "beginColumn" : 12, "endLine" : 402, - "endColumn" : 35, - "offset" : 21063, - "length" : 23 + "endColumn" : 34, + "offset" : 21074, + "length" : 22 } }, "resOpt" : { @@ -20932,10 +20932,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 402, - "beginColumn" : 39, + "beginColumn" : 38, "endLine" : 402, - "endColumn" : 55, - "offset" : 21090, + "endColumn" : 54, + "offset" : 21100, "length" : 16 } } @@ -20952,10 +20952,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 402, - "beginColumn" : 39, + "beginColumn" : 38, "endLine" : 402, - "endColumn" : 55, - "offset" : 21090, + "endColumn" : 54, + "offset" : 21100, "length" : 16 } }, @@ -20970,7 +20970,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -20982,11 +20982,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 402, - "beginColumn" : 56, + "beginColumn" : 55, "endLine" : 402, - "endColumn" : 61, - "offset" : 21107, - "length" : 5 + "endColumn" : 59, + "offset" : 21117, + "length" : 4 } } } @@ -21004,11 +21004,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 402, - "beginColumn" : 39, + "beginColumn" : 38, "endLine" : 402, - "endColumn" : 61, - "offset" : 21090, - "length" : 22 + "endColumn" : 59, + "offset" : 21100, + "length" : 21 } }, "resOpt" : { @@ -21032,9 +21032,9 @@ "beginLine" : 402, "beginColumn" : 12, "endLine" : 402, - "endColumn" : 61, - "offset" : 21063, - "length" : 49 + "endColumn" : 59, + "offset" : 21074, + "length" : 47 } }, "resOpt" : { @@ -21061,9 +21061,9 @@ "beginLine" : 402, "beginColumn" : 10, "endLine" : 402, - "endColumn" : 62, - "offset" : 21061, - "length" : 52 + "endColumn" : 60, + "offset" : 21072, + "length" : 50 } }, "resOpt" : { @@ -21103,7 +21103,7 @@ "beginColumn" : 9, "endLine" : 403, "endColumn" : 28, - "offset" : 21127, + "offset" : 21136, "length" : 19 } } @@ -21123,7 +21123,7 @@ "beginColumn" : 9, "endLine" : 403, "endColumn" : 28, - "offset" : 21127, + "offset" : 21136, "length" : 19 } }, @@ -21153,7 +21153,7 @@ "beginColumn" : 29, "endLine" : 403, "endColumn" : 35, - "offset" : 21147, + "offset" : 21156, "length" : 6 } } @@ -21175,7 +21175,7 @@ "beginColumn" : 9, "endLine" : 403, "endColumn" : 35, - "offset" : 21127, + "offset" : 21136, "length" : 26 } }, @@ -21215,7 +21215,7 @@ "beginColumn" : 39, "endLine" : 403, "endColumn" : 77, - "offset" : 21157, + "offset" : 21166, "length" : 38 } } @@ -21235,7 +21235,7 @@ "beginColumn" : 39, "endLine" : 403, "endColumn" : 77, - "offset" : 21157, + "offset" : 21166, "length" : 38 } }, @@ -21265,7 +21265,7 @@ "beginColumn" : 39, "endLine" : 403, "endColumn" : 77, - "offset" : 21157, + "offset" : 21166, "length" : 38 } } @@ -21287,7 +21287,7 @@ "beginColumn" : 39, "endLine" : 403, "endColumn" : 77, - "offset" : 21157, + "offset" : 21166, "length" : 38 } }, @@ -21317,7 +21317,7 @@ "beginColumn" : 39, "endLine" : 403, "endColumn" : 77, - "offset" : 21157, + "offset" : 21166, "length" : 38 } } @@ -21339,7 +21339,7 @@ "beginColumn" : 39, "endLine" : 403, "endColumn" : 77, - "offset" : 21157, + "offset" : 21166, "length" : 38 } }, @@ -21365,7 +21365,7 @@ "beginColumn" : 9, "endLine" : 403, "endColumn" : 77, - "offset" : 21127, + "offset" : 21136, "length" : 68 } }, @@ -21394,8 +21394,8 @@ "beginColumn" : 10, "endLine" : 403, "endColumn" : 77, - "offset" : 21061, - "length" : 134 + "offset" : 21072, + "length" : 132 } }, "resOpt" : { @@ -21433,7 +21433,7 @@ "beginColumn" : 9, "endLine" : 404, "endColumn" : 23, - "offset" : 21210, + "offset" : 21219, "length" : 14 } } @@ -21453,7 +21453,7 @@ "beginColumn" : 9, "endLine" : 404, "endColumn" : 23, - "offset" : 21210, + "offset" : 21219, "length" : 14 } }, @@ -21493,7 +21493,7 @@ "beginColumn" : 27, "endLine" : 404, "endColumn" : 84, - "offset" : 21228, + "offset" : 21237, "length" : 57 } } @@ -21513,7 +21513,7 @@ "beginColumn" : 27, "endLine" : 404, "endColumn" : 84, - "offset" : 21228, + "offset" : 21237, "length" : 57 } }, @@ -21543,7 +21543,7 @@ "beginColumn" : 27, "endLine" : 404, "endColumn" : 84, - "offset" : 21228, + "offset" : 21237, "length" : 57 } } @@ -21565,7 +21565,7 @@ "beginColumn" : 27, "endLine" : 404, "endColumn" : 84, - "offset" : 21228, + "offset" : 21237, "length" : 57 } }, @@ -21595,7 +21595,7 @@ "beginColumn" : 27, "endLine" : 404, "endColumn" : 84, - "offset" : 21228, + "offset" : 21237, "length" : 57 } } @@ -21617,7 +21617,7 @@ "beginColumn" : 27, "endLine" : 404, "endColumn" : 84, - "offset" : 21228, + "offset" : 21237, "length" : 57 } }, @@ -21643,7 +21643,7 @@ "beginColumn" : 9, "endLine" : 404, "endColumn" : 84, - "offset" : 21210, + "offset" : 21219, "length" : 75 } }, @@ -21680,7 +21680,7 @@ "beginColumn" : 9, "endLine" : 405, "endColumn" : 26, - "offset" : 21297, + "offset" : 21306, "length" : 17 } } @@ -21700,7 +21700,7 @@ "beginColumn" : 9, "endLine" : 405, "endColumn" : 26, - "offset" : 21297, + "offset" : 21306, "length" : 17 } }, @@ -21740,7 +21740,7 @@ "beginColumn" : 30, "endLine" : 405, "endColumn" : 87, - "offset" : 21318, + "offset" : 21327, "length" : 57 } } @@ -21760,7 +21760,7 @@ "beginColumn" : 30, "endLine" : 405, "endColumn" : 87, - "offset" : 21318, + "offset" : 21327, "length" : 57 } }, @@ -21790,7 +21790,7 @@ "beginColumn" : 30, "endLine" : 405, "endColumn" : 87, - "offset" : 21318, + "offset" : 21327, "length" : 57 } } @@ -21812,7 +21812,7 @@ "beginColumn" : 30, "endLine" : 405, "endColumn" : 87, - "offset" : 21318, + "offset" : 21327, "length" : 57 } }, @@ -21842,7 +21842,7 @@ "beginColumn" : 30, "endLine" : 405, "endColumn" : 87, - "offset" : 21318, + "offset" : 21327, "length" : 57 } } @@ -21864,7 +21864,7 @@ "beginColumn" : 30, "endLine" : 405, "endColumn" : 87, - "offset" : 21318, + "offset" : 21327, "length" : 57 } }, @@ -21890,7 +21890,7 @@ "beginColumn" : 9, "endLine" : 405, "endColumn" : 87, - "offset" : 21297, + "offset" : 21306, "length" : 78 } }, @@ -21919,7 +21919,7 @@ "beginColumn" : 9, "endLine" : 405, "endColumn" : 87, - "offset" : 21210, + "offset" : 21219, "length" : 165 } }, @@ -21948,8 +21948,8 @@ "beginColumn" : 10, "endLine" : 405, "endColumn" : 87, - "offset" : 21061, - "length" : 314 + "offset" : 21072, + "length" : 312 } }, "resOpt" : { @@ -21977,8 +21977,8 @@ "beginColumn" : 6, "endLine" : 405, "endColumn" : 89, - "offset" : 20382, - "length" : 995 + "offset" : 20393, + "length" : 993 } } } @@ -22011,7 +22011,7 @@ "beginColumn" : 14, "endLine" : 414, "endColumn" : 31, - "offset" : 21878, + "offset" : 21887, "length" : 17 } } @@ -22031,7 +22031,7 @@ "beginColumn" : 14, "endLine" : 414, "endColumn" : 31, - "offset" : 21878, + "offset" : 21887, "length" : 17 } }, @@ -22071,7 +22071,7 @@ "beginColumn" : 35, "endLine" : 414, "endColumn" : 92, - "offset" : 21899, + "offset" : 21908, "length" : 57 } } @@ -22091,7 +22091,7 @@ "beginColumn" : 35, "endLine" : 414, "endColumn" : 92, - "offset" : 21899, + "offset" : 21908, "length" : 57 } }, @@ -22121,7 +22121,7 @@ "beginColumn" : 35, "endLine" : 414, "endColumn" : 92, - "offset" : 21899, + "offset" : 21908, "length" : 57 } } @@ -22143,7 +22143,7 @@ "beginColumn" : 35, "endLine" : 414, "endColumn" : 92, - "offset" : 21899, + "offset" : 21908, "length" : 57 } }, @@ -22173,7 +22173,7 @@ "beginColumn" : 35, "endLine" : 414, "endColumn" : 92, - "offset" : 21899, + "offset" : 21908, "length" : 57 } } @@ -22195,7 +22195,7 @@ "beginColumn" : 35, "endLine" : 414, "endColumn" : 92, - "offset" : 21899, + "offset" : 21908, "length" : 57 } }, @@ -22221,7 +22221,7 @@ "beginColumn" : 14, "endLine" : 414, "endColumn" : 92, - "offset" : 21878, + "offset" : 21887, "length" : 78 } }, @@ -22265,7 +22265,7 @@ "beginColumn" : 10, "endLine" : 416, "endColumn" : 27, - "offset" : 21984, + "offset" : 21993, "length" : 17 } } @@ -22285,7 +22285,7 @@ "beginColumn" : 10, "endLine" : 416, "endColumn" : 27, - "offset" : 21984, + "offset" : 21993, "length" : 17 } }, @@ -22300,7 +22300,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -22314,9 +22314,9 @@ "beginLine" : 416, "beginColumn" : 28, "endLine" : 416, - "endColumn" : 33, - "offset" : 22002, - "length" : 5 + "endColumn" : 32, + "offset" : 22011, + "length" : 4 } } } @@ -22336,9 +22336,9 @@ "beginLine" : 416, "beginColumn" : 10, "endLine" : 416, - "endColumn" : 33, - "offset" : 21984, - "length" : 23 + "endColumn" : 32, + "offset" : 21993, + "length" : 22 } }, "resOpt" : { @@ -22370,10 +22370,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 416, - "beginColumn" : 37, + "beginColumn" : 36, "endLine" : 416, - "endColumn" : 53, - "offset" : 22011, + "endColumn" : 52, + "offset" : 22019, "length" : 16 } } @@ -22390,10 +22390,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 416, - "beginColumn" : 37, + "beginColumn" : 36, "endLine" : 416, - "endColumn" : 53, - "offset" : 22011, + "endColumn" : 52, + "offset" : 22019, "length" : 16 } }, @@ -22408,7 +22408,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -22420,11 +22420,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 416, - "beginColumn" : 54, + "beginColumn" : 53, "endLine" : 416, - "endColumn" : 59, - "offset" : 22028, - "length" : 5 + "endColumn" : 57, + "offset" : 22036, + "length" : 4 } } } @@ -22442,11 +22442,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 416, - "beginColumn" : 37, + "beginColumn" : 36, "endLine" : 416, - "endColumn" : 59, - "offset" : 22011, - "length" : 22 + "endColumn" : 57, + "offset" : 22019, + "length" : 21 } }, "resOpt" : { @@ -22470,9 +22470,9 @@ "beginLine" : 416, "beginColumn" : 10, "endLine" : 416, - "endColumn" : 59, - "offset" : 21984, - "length" : 49 + "endColumn" : 57, + "offset" : 21993, + "length" : 47 } }, "resOpt" : { @@ -22512,7 +22512,7 @@ "beginColumn" : 9, "endLine" : 417, "endColumn" : 28, - "offset" : 22046, + "offset" : 22053, "length" : 19 } } @@ -22532,7 +22532,7 @@ "beginColumn" : 9, "endLine" : 417, "endColumn" : 28, - "offset" : 22046, + "offset" : 22053, "length" : 19 } }, @@ -22562,7 +22562,7 @@ "beginColumn" : 29, "endLine" : 417, "endColumn" : 35, - "offset" : 22066, + "offset" : 22073, "length" : 6 } } @@ -22584,7 +22584,7 @@ "beginColumn" : 9, "endLine" : 417, "endColumn" : 35, - "offset" : 22046, + "offset" : 22053, "length" : 26 } }, @@ -22624,7 +22624,7 @@ "beginColumn" : 39, "endLine" : 417, "endColumn" : 77, - "offset" : 22076, + "offset" : 22083, "length" : 38 } } @@ -22644,7 +22644,7 @@ "beginColumn" : 39, "endLine" : 417, "endColumn" : 77, - "offset" : 22076, + "offset" : 22083, "length" : 38 } }, @@ -22674,7 +22674,7 @@ "beginColumn" : 39, "endLine" : 417, "endColumn" : 77, - "offset" : 22076, + "offset" : 22083, "length" : 38 } } @@ -22696,7 +22696,7 @@ "beginColumn" : 39, "endLine" : 417, "endColumn" : 77, - "offset" : 22076, + "offset" : 22083, "length" : 38 } }, @@ -22726,7 +22726,7 @@ "beginColumn" : 39, "endLine" : 417, "endColumn" : 77, - "offset" : 22076, + "offset" : 22083, "length" : 38 } } @@ -22748,7 +22748,7 @@ "beginColumn" : 39, "endLine" : 417, "endColumn" : 77, - "offset" : 22076, + "offset" : 22083, "length" : 38 } }, @@ -22774,7 +22774,7 @@ "beginColumn" : 9, "endLine" : 417, "endColumn" : 77, - "offset" : 22046, + "offset" : 22053, "length" : 68 } }, @@ -22803,8 +22803,8 @@ "beginColumn" : 10, "endLine" : 417, "endColumn" : 77, - "offset" : 21984, - "length" : 130 + "offset" : 21993, + "length" : 128 } }, "resOpt" : { @@ -22842,7 +22842,7 @@ "beginColumn" : 9, "endLine" : 418, "endColumn" : 23, - "offset" : 22129, + "offset" : 22136, "length" : 14 } } @@ -22862,7 +22862,7 @@ "beginColumn" : 9, "endLine" : 418, "endColumn" : 23, - "offset" : 22129, + "offset" : 22136, "length" : 14 } }, @@ -22902,7 +22902,7 @@ "beginColumn" : 27, "endLine" : 418, "endColumn" : 84, - "offset" : 22147, + "offset" : 22154, "length" : 57 } } @@ -22922,7 +22922,7 @@ "beginColumn" : 27, "endLine" : 418, "endColumn" : 84, - "offset" : 22147, + "offset" : 22154, "length" : 57 } }, @@ -22952,7 +22952,7 @@ "beginColumn" : 27, "endLine" : 418, "endColumn" : 84, - "offset" : 22147, + "offset" : 22154, "length" : 57 } } @@ -22974,7 +22974,7 @@ "beginColumn" : 27, "endLine" : 418, "endColumn" : 84, - "offset" : 22147, + "offset" : 22154, "length" : 57 } }, @@ -23004,7 +23004,7 @@ "beginColumn" : 27, "endLine" : 418, "endColumn" : 84, - "offset" : 22147, + "offset" : 22154, "length" : 57 } } @@ -23026,7 +23026,7 @@ "beginColumn" : 27, "endLine" : 418, "endColumn" : 84, - "offset" : 22147, + "offset" : 22154, "length" : 57 } }, @@ -23052,7 +23052,7 @@ "beginColumn" : 9, "endLine" : 418, "endColumn" : 84, - "offset" : 22129, + "offset" : 22136, "length" : 75 } }, @@ -23089,7 +23089,7 @@ "beginColumn" : 9, "endLine" : 419, "endColumn" : 26, - "offset" : 22216, + "offset" : 22223, "length" : 17 } } @@ -23109,7 +23109,7 @@ "beginColumn" : 9, "endLine" : 419, "endColumn" : 26, - "offset" : 22216, + "offset" : 22223, "length" : 17 } }, @@ -23149,7 +23149,7 @@ "beginColumn" : 30, "endLine" : 419, "endColumn" : 87, - "offset" : 22237, + "offset" : 22244, "length" : 57 } } @@ -23169,7 +23169,7 @@ "beginColumn" : 30, "endLine" : 419, "endColumn" : 87, - "offset" : 22237, + "offset" : 22244, "length" : 57 } }, @@ -23199,7 +23199,7 @@ "beginColumn" : 30, "endLine" : 419, "endColumn" : 87, - "offset" : 22237, + "offset" : 22244, "length" : 57 } } @@ -23221,7 +23221,7 @@ "beginColumn" : 30, "endLine" : 419, "endColumn" : 87, - "offset" : 22237, + "offset" : 22244, "length" : 57 } }, @@ -23251,7 +23251,7 @@ "beginColumn" : 30, "endLine" : 419, "endColumn" : 87, - "offset" : 22237, + "offset" : 22244, "length" : 57 } } @@ -23273,7 +23273,7 @@ "beginColumn" : 30, "endLine" : 419, "endColumn" : 87, - "offset" : 22237, + "offset" : 22244, "length" : 57 } }, @@ -23299,7 +23299,7 @@ "beginColumn" : 9, "endLine" : 419, "endColumn" : 87, - "offset" : 22216, + "offset" : 22223, "length" : 78 } }, @@ -23328,7 +23328,7 @@ "beginColumn" : 9, "endLine" : 419, "endColumn" : 87, - "offset" : 22129, + "offset" : 22136, "length" : 165 } }, @@ -23357,8 +23357,8 @@ "beginColumn" : 10, "endLine" : 419, "endColumn" : 87, - "offset" : 21984, - "length" : 310 + "offset" : 21993, + "length" : 308 } }, "resOpt" : { @@ -23386,8 +23386,8 @@ "beginColumn" : 6, "endLine" : 419, "endColumn" : 89, - "offset" : 21401, - "length" : 895 + "offset" : 21410, + "length" : 893 } } } @@ -23420,7 +23420,7 @@ "beginColumn" : 14, "endLine" : 428, "endColumn" : 31, - "offset" : 22818, + "offset" : 22825, "length" : 17 } } @@ -23440,7 +23440,7 @@ "beginColumn" : 14, "endLine" : 428, "endColumn" : 31, - "offset" : 22818, + "offset" : 22825, "length" : 17 } }, @@ -23480,7 +23480,7 @@ "beginColumn" : 35, "endLine" : 428, "endColumn" : 90, - "offset" : 22839, + "offset" : 22846, "length" : 55 } } @@ -23500,7 +23500,7 @@ "beginColumn" : 35, "endLine" : 428, "endColumn" : 90, - "offset" : 22839, + "offset" : 22846, "length" : 55 } }, @@ -23530,7 +23530,7 @@ "beginColumn" : 35, "endLine" : 428, "endColumn" : 90, - "offset" : 22839, + "offset" : 22846, "length" : 55 } } @@ -23552,7 +23552,7 @@ "beginColumn" : 35, "endLine" : 428, "endColumn" : 90, - "offset" : 22839, + "offset" : 22846, "length" : 55 } }, @@ -23582,7 +23582,7 @@ "beginColumn" : 35, "endLine" : 428, "endColumn" : 90, - "offset" : 22839, + "offset" : 22846, "length" : 55 } } @@ -23604,7 +23604,7 @@ "beginColumn" : 35, "endLine" : 428, "endColumn" : 90, - "offset" : 22839, + "offset" : 22846, "length" : 55 } }, @@ -23630,7 +23630,7 @@ "beginColumn" : 14, "endLine" : 428, "endColumn" : 90, - "offset" : 22818, + "offset" : 22825, "length" : 76 } }, @@ -23674,7 +23674,7 @@ "beginColumn" : 10, "endLine" : 430, "endColumn" : 27, - "offset" : 22922, + "offset" : 22929, "length" : 17 } } @@ -23694,7 +23694,7 @@ "beginColumn" : 10, "endLine" : 430, "endColumn" : 27, - "offset" : 22922, + "offset" : 22929, "length" : 17 } }, @@ -23709,7 +23709,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -23723,9 +23723,9 @@ "beginLine" : 430, "beginColumn" : 28, "endLine" : 430, - "endColumn" : 33, - "offset" : 22940, - "length" : 5 + "endColumn" : 32, + "offset" : 22947, + "length" : 4 } } } @@ -23745,9 +23745,9 @@ "beginLine" : 430, "beginColumn" : 10, "endLine" : 430, - "endColumn" : 33, - "offset" : 22922, - "length" : 23 + "endColumn" : 32, + "offset" : 22929, + "length" : 22 } }, "resOpt" : { @@ -23779,10 +23779,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 430, - "beginColumn" : 37, + "beginColumn" : 36, "endLine" : 430, - "endColumn" : 53, - "offset" : 22949, + "endColumn" : 52, + "offset" : 22955, "length" : 16 } } @@ -23799,10 +23799,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 430, - "beginColumn" : 37, + "beginColumn" : 36, "endLine" : 430, - "endColumn" : 53, - "offset" : 22949, + "endColumn" : 52, + "offset" : 22955, "length" : 16 } }, @@ -23817,7 +23817,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -23829,11 +23829,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 430, - "beginColumn" : 54, + "beginColumn" : 53, "endLine" : 430, - "endColumn" : 59, - "offset" : 22966, - "length" : 5 + "endColumn" : 57, + "offset" : 22972, + "length" : 4 } } } @@ -23851,11 +23851,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Regulate.aadl" }, "beginLine" : 430, - "beginColumn" : 37, + "beginColumn" : 36, "endLine" : 430, - "endColumn" : 59, - "offset" : 22949, - "length" : 22 + "endColumn" : 57, + "offset" : 22955, + "length" : 21 } }, "resOpt" : { @@ -23879,9 +23879,9 @@ "beginLine" : 430, "beginColumn" : 10, "endLine" : 430, - "endColumn" : 59, - "offset" : 22922, - "length" : 49 + "endColumn" : 57, + "offset" : 22929, + "length" : 47 } }, "resOpt" : { @@ -23921,7 +23921,7 @@ "beginColumn" : 9, "endLine" : 431, "endColumn" : 28, - "offset" : 22985, + "offset" : 22990, "length" : 19 } } @@ -23941,7 +23941,7 @@ "beginColumn" : 9, "endLine" : 431, "endColumn" : 28, - "offset" : 22985, + "offset" : 22990, "length" : 19 } }, @@ -23971,7 +23971,7 @@ "beginColumn" : 29, "endLine" : 431, "endColumn" : 35, - "offset" : 23005, + "offset" : 23010, "length" : 6 } } @@ -23993,7 +23993,7 @@ "beginColumn" : 9, "endLine" : 431, "endColumn" : 35, - "offset" : 22985, + "offset" : 22990, "length" : 26 } }, @@ -24033,7 +24033,7 @@ "beginColumn" : 39, "endLine" : 431, "endColumn" : 77, - "offset" : 23015, + "offset" : 23020, "length" : 38 } } @@ -24053,7 +24053,7 @@ "beginColumn" : 39, "endLine" : 431, "endColumn" : 77, - "offset" : 23015, + "offset" : 23020, "length" : 38 } }, @@ -24083,7 +24083,7 @@ "beginColumn" : 39, "endLine" : 431, "endColumn" : 77, - "offset" : 23015, + "offset" : 23020, "length" : 38 } } @@ -24105,7 +24105,7 @@ "beginColumn" : 39, "endLine" : 431, "endColumn" : 77, - "offset" : 23015, + "offset" : 23020, "length" : 38 } }, @@ -24135,7 +24135,7 @@ "beginColumn" : 39, "endLine" : 431, "endColumn" : 77, - "offset" : 23015, + "offset" : 23020, "length" : 38 } } @@ -24157,7 +24157,7 @@ "beginColumn" : 39, "endLine" : 431, "endColumn" : 77, - "offset" : 23015, + "offset" : 23020, "length" : 38 } }, @@ -24183,7 +24183,7 @@ "beginColumn" : 9, "endLine" : 431, "endColumn" : 77, - "offset" : 22985, + "offset" : 22990, "length" : 68 } }, @@ -24212,8 +24212,8 @@ "beginColumn" : 10, "endLine" : 431, "endColumn" : 77, - "offset" : 22922, - "length" : 131 + "offset" : 22929, + "length" : 129 } }, "resOpt" : { @@ -24251,7 +24251,7 @@ "beginColumn" : 9, "endLine" : 432, "endColumn" : 23, - "offset" : 23069, + "offset" : 23074, "length" : 14 } } @@ -24271,7 +24271,7 @@ "beginColumn" : 9, "endLine" : 432, "endColumn" : 23, - "offset" : 23069, + "offset" : 23074, "length" : 14 } }, @@ -24311,7 +24311,7 @@ "beginColumn" : 27, "endLine" : 432, "endColumn" : 84, - "offset" : 23087, + "offset" : 23092, "length" : 57 } } @@ -24331,7 +24331,7 @@ "beginColumn" : 27, "endLine" : 432, "endColumn" : 84, - "offset" : 23087, + "offset" : 23092, "length" : 57 } }, @@ -24361,7 +24361,7 @@ "beginColumn" : 27, "endLine" : 432, "endColumn" : 84, - "offset" : 23087, + "offset" : 23092, "length" : 57 } } @@ -24383,7 +24383,7 @@ "beginColumn" : 27, "endLine" : 432, "endColumn" : 84, - "offset" : 23087, + "offset" : 23092, "length" : 57 } }, @@ -24413,7 +24413,7 @@ "beginColumn" : 27, "endLine" : 432, "endColumn" : 84, - "offset" : 23087, + "offset" : 23092, "length" : 57 } } @@ -24435,7 +24435,7 @@ "beginColumn" : 27, "endLine" : 432, "endColumn" : 84, - "offset" : 23087, + "offset" : 23092, "length" : 57 } }, @@ -24461,7 +24461,7 @@ "beginColumn" : 9, "endLine" : 432, "endColumn" : 84, - "offset" : 23069, + "offset" : 23074, "length" : 75 } }, @@ -24498,7 +24498,7 @@ "beginColumn" : 9, "endLine" : 433, "endColumn" : 26, - "offset" : 23156, + "offset" : 23161, "length" : 17 } } @@ -24518,7 +24518,7 @@ "beginColumn" : 9, "endLine" : 433, "endColumn" : 26, - "offset" : 23156, + "offset" : 23161, "length" : 17 } }, @@ -24558,7 +24558,7 @@ "beginColumn" : 30, "endLine" : 433, "endColumn" : 87, - "offset" : 23177, + "offset" : 23182, "length" : 57 } } @@ -24578,7 +24578,7 @@ "beginColumn" : 30, "endLine" : 433, "endColumn" : 87, - "offset" : 23177, + "offset" : 23182, "length" : 57 } }, @@ -24608,7 +24608,7 @@ "beginColumn" : 30, "endLine" : 433, "endColumn" : 87, - "offset" : 23177, + "offset" : 23182, "length" : 57 } } @@ -24630,7 +24630,7 @@ "beginColumn" : 30, "endLine" : 433, "endColumn" : 87, - "offset" : 23177, + "offset" : 23182, "length" : 57 } }, @@ -24660,7 +24660,7 @@ "beginColumn" : 30, "endLine" : 433, "endColumn" : 87, - "offset" : 23177, + "offset" : 23182, "length" : 57 } } @@ -24682,7 +24682,7 @@ "beginColumn" : 30, "endLine" : 433, "endColumn" : 87, - "offset" : 23177, + "offset" : 23182, "length" : 57 } }, @@ -24708,7 +24708,7 @@ "beginColumn" : 9, "endLine" : 433, "endColumn" : 87, - "offset" : 23156, + "offset" : 23161, "length" : 78 } }, @@ -24737,7 +24737,7 @@ "beginColumn" : 9, "endLine" : 433, "endColumn" : 87, - "offset" : 23069, + "offset" : 23074, "length" : 165 } }, @@ -24766,8 +24766,8 @@ "beginColumn" : 10, "endLine" : 433, "endColumn" : 87, - "offset" : 22922, - "length" : 312 + "offset" : 22929, + "length" : 310 } }, "resOpt" : { @@ -24795,8 +24795,8 @@ "beginColumn" : 6, "endLine" : 433, "endColumn" : 89, - "offset" : 22306, - "length" : 930 + "offset" : 22313, + "length" : 928 } } } @@ -24829,7 +24829,7 @@ "beginColumn" : 14, "endLine" : 439, "endColumn" : 31, - "offset" : 23632, + "offset" : 23637, "length" : 17 } } @@ -24849,7 +24849,7 @@ "beginColumn" : 14, "endLine" : 439, "endColumn" : 31, - "offset" : 23632, + "offset" : 23637, "length" : 17 } }, @@ -24889,7 +24889,7 @@ "beginColumn" : 35, "endLine" : 439, "endColumn" : 92, - "offset" : 23653, + "offset" : 23658, "length" : 57 } } @@ -24909,7 +24909,7 @@ "beginColumn" : 35, "endLine" : 439, "endColumn" : 92, - "offset" : 23653, + "offset" : 23658, "length" : 57 } }, @@ -24939,7 +24939,7 @@ "beginColumn" : 35, "endLine" : 439, "endColumn" : 92, - "offset" : 23653, + "offset" : 23658, "length" : 57 } } @@ -24961,7 +24961,7 @@ "beginColumn" : 35, "endLine" : 439, "endColumn" : 92, - "offset" : 23653, + "offset" : 23658, "length" : 57 } }, @@ -24991,7 +24991,7 @@ "beginColumn" : 35, "endLine" : 439, "endColumn" : 92, - "offset" : 23653, + "offset" : 23658, "length" : 57 } } @@ -25013,7 +25013,7 @@ "beginColumn" : 35, "endLine" : 439, "endColumn" : 92, - "offset" : 23653, + "offset" : 23658, "length" : 57 } }, @@ -25039,7 +25039,7 @@ "beginColumn" : 14, "endLine" : 439, "endColumn" : 92, - "offset" : 23632, + "offset" : 23637, "length" : 78 } }, @@ -25077,7 +25077,7 @@ "beginColumn" : 18, "endLine" : 440, "endColumn" : 32, - "offset" : 23729, + "offset" : 23734, "length" : 14 } } @@ -25097,7 +25097,7 @@ "beginColumn" : 18, "endLine" : 440, "endColumn" : 32, - "offset" : 23729, + "offset" : 23734, "length" : 14 } }, @@ -25137,7 +25137,7 @@ "beginColumn" : 36, "endLine" : 440, "endColumn" : 93, - "offset" : 23747, + "offset" : 23752, "length" : 57 } } @@ -25157,7 +25157,7 @@ "beginColumn" : 36, "endLine" : 440, "endColumn" : 93, - "offset" : 23747, + "offset" : 23752, "length" : 57 } }, @@ -25187,7 +25187,7 @@ "beginColumn" : 36, "endLine" : 440, "endColumn" : 93, - "offset" : 23747, + "offset" : 23752, "length" : 57 } } @@ -25209,7 +25209,7 @@ "beginColumn" : 36, "endLine" : 440, "endColumn" : 93, - "offset" : 23747, + "offset" : 23752, "length" : 57 } }, @@ -25239,7 +25239,7 @@ "beginColumn" : 36, "endLine" : 440, "endColumn" : 93, - "offset" : 23747, + "offset" : 23752, "length" : 57 } } @@ -25261,7 +25261,7 @@ "beginColumn" : 36, "endLine" : 440, "endColumn" : 93, - "offset" : 23747, + "offset" : 23752, "length" : 57 } }, @@ -25287,7 +25287,7 @@ "beginColumn" : 18, "endLine" : 440, "endColumn" : 93, - "offset" : 23729, + "offset" : 23734, "length" : 75 } }, @@ -25324,7 +25324,7 @@ "beginColumn" : 8, "endLine" : 441, "endColumn" : 25, - "offset" : 23815, + "offset" : 23820, "length" : 17 } } @@ -25344,7 +25344,7 @@ "beginColumn" : 8, "endLine" : 441, "endColumn" : 25, - "offset" : 23815, + "offset" : 23820, "length" : 17 } }, @@ -25384,7 +25384,7 @@ "beginColumn" : 29, "endLine" : 441, "endColumn" : 86, - "offset" : 23836, + "offset" : 23841, "length" : 57 } } @@ -25404,7 +25404,7 @@ "beginColumn" : 29, "endLine" : 441, "endColumn" : 86, - "offset" : 23836, + "offset" : 23841, "length" : 57 } }, @@ -25434,7 +25434,7 @@ "beginColumn" : 29, "endLine" : 441, "endColumn" : 86, - "offset" : 23836, + "offset" : 23841, "length" : 57 } } @@ -25456,7 +25456,7 @@ "beginColumn" : 29, "endLine" : 441, "endColumn" : 86, - "offset" : 23836, + "offset" : 23841, "length" : 57 } }, @@ -25486,7 +25486,7 @@ "beginColumn" : 29, "endLine" : 441, "endColumn" : 86, - "offset" : 23836, + "offset" : 23841, "length" : 57 } } @@ -25508,7 +25508,7 @@ "beginColumn" : 29, "endLine" : 441, "endColumn" : 86, - "offset" : 23836, + "offset" : 23841, "length" : 57 } }, @@ -25534,7 +25534,7 @@ "beginColumn" : 8, "endLine" : 441, "endColumn" : 86, - "offset" : 23815, + "offset" : 23820, "length" : 78 } }, @@ -25563,7 +25563,7 @@ "beginColumn" : 18, "endLine" : 441, "endColumn" : 86, - "offset" : 23729, + "offset" : 23734, "length" : 164 } }, @@ -25592,7 +25592,7 @@ "beginColumn" : 6, "endLine" : 441, "endColumn" : 88, - "offset" : 23246, + "offset" : 23251, "length" : 649 } } @@ -25617,8 +25617,8 @@ "beginColumn" : 4, "endLine" : 441, "endColumn" : 88, - "offset" : 19447, - "length" : 4448 + "offset" : 19460, + "length" : 4440 } } } @@ -25638,8 +25638,8 @@ "beginColumn" : 4, "endLine" : 441, "endColumn" : 88, - "offset" : 18629, - "length" : 5266 + "offset" : 18642, + "length" : 5258 } } } @@ -25667,7 +25667,7 @@ "beginColumn" : 4, "endLine" : 332, "endColumn" : 61, - "offset" : 17170, + "offset" : 17183, "length" : 57 } } @@ -25712,7 +25712,7 @@ "beginColumn" : 4, "endLine" : 313, "endColumn" : 73, - "offset" : 16371, + "offset" : 16384, "length" : 69 } } @@ -25745,7 +25745,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -25767,7 +25767,7 @@ "beginColumn" : 4, "endLine" : 342, "endColumn" : 73, - "offset" : 17642, + "offset" : 17655, "length" : 69 } } @@ -25817,7 +25817,7 @@ "beginColumn" : 4, "endLine" : 333, "endColumn" : 57, - "offset" : 17231, + "offset" : 17244, "length" : 53 } } @@ -25862,7 +25862,7 @@ "beginColumn" : 4, "endLine" : 315, "endColumn" : 72, - "offset" : 16526, + "offset" : 16539, "length" : 68 } } @@ -25895,7 +25895,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -25917,7 +25917,7 @@ "beginColumn" : 4, "endLine" : 344, "endColumn" : 72, - "offset" : 17797, + "offset" : 17810, "length" : 68 } } @@ -25967,7 +25967,7 @@ "beginColumn" : 4, "endLine" : 335, "endColumn" : 50, - "offset" : 17343, + "offset" : 17356, "length" : 46 } } @@ -25990,7 +25990,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -26012,7 +26012,7 @@ "beginColumn" : 4, "endLine" : 350, "endColumn" : 70, - "offset" : 18123, + "offset" : 18136, "length" : 66 } } @@ -26067,7 +26067,7 @@ "beginColumn" : 4, "endLine" : 321, "endColumn" : 70, - "offset" : 16852, + "offset" : 16865, "length" : 66 } } @@ -26124,7 +26124,7 @@ "beginColumn" : 4, "endLine" : 335, "endColumn" : 50, - "offset" : 17343, + "offset" : 17356, "length" : 46 } } @@ -26147,7 +26147,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -26169,7 +26169,7 @@ "beginColumn" : 4, "endLine" : 350, "endColumn" : 70, - "offset" : 18123, + "offset" : 18136, "length" : 66 } } @@ -26224,7 +26224,7 @@ "beginColumn" : 4, "endLine" : 321, "endColumn" : 70, - "offset" : 16852, + "offset" : 16865, "length" : 66 } } @@ -26281,7 +26281,7 @@ "beginColumn" : 4, "endLine" : 334, "endColumn" : 55, - "offset" : 17288, + "offset" : 17301, "length" : 51 } } @@ -26326,7 +26326,7 @@ "beginColumn" : 4, "endLine" : 317, "endColumn" : 71, - "offset" : 16666, + "offset" : 16679, "length" : 67 } } @@ -26359,7 +26359,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -26381,7 +26381,7 @@ "beginColumn" : 4, "endLine" : 346, "endColumn" : 71, - "offset" : 17937, + "offset" : 17950, "length" : 67 } } @@ -26576,7 +26576,7 @@ "beginColumn" : 4, "endLine" : 599, "endColumn" : 72, - "offset" : 31535, + "offset" : 31560, "length" : 68 } } @@ -26619,7 +26619,7 @@ "beginColumn" : 4, "endLine" : 608, "endColumn" : 43, - "offset" : 31806, + "offset" : 31831, "length" : 39 } } @@ -26653,7 +26653,7 @@ "beginColumn" : 4, "endLine" : 617, "endColumn" : 72, - "offset" : 32167, + "offset" : 32192, "length" : 68 } } @@ -26924,7 +26924,7 @@ "beginColumn" : 4, "endLine" : 610, "endColumn" : 54, - "offset" : 31864, + "offset" : 31889, "length" : 50 } } @@ -26947,7 +26947,7 @@ "beginColumn" : 4, "endLine" : 608, "endColumn" : 43, - "offset" : 31806, + "offset" : 31831, "length" : 39 } } @@ -26969,7 +26969,7 @@ "beginColumn" : 4, "endLine" : 617, "endColumn" : 72, - "offset" : 32167, + "offset" : 32192, "length" : 68 } } @@ -27024,7 +27024,7 @@ "beginColumn" : 4, "endLine" : 599, "endColumn" : 72, - "offset" : 31535, + "offset" : 31560, "length" : 68 } } @@ -27532,7 +27532,7 @@ "beginColumn" : 4, "endLine" : 474, "endColumn" : 60, - "offset" : 25297, + "offset" : 25302, "length" : 56 } } @@ -28187,7 +28187,7 @@ "beginColumn" : 4, "endLine" : 465, "endColumn" : 73, - "offset" : 24797, + "offset" : 24802, "length" : 69 } } @@ -28337,7 +28337,7 @@ "beginColumn" : 4, "endLine" : 313, "endColumn" : 73, - "offset" : 16371, + "offset" : 16384, "length" : 69 } } @@ -28487,7 +28487,7 @@ "beginColumn" : 4, "endLine" : 468, "endColumn" : 65, - "offset" : 25013, + "offset" : 25018, "length" : 61 } } @@ -28637,7 +28637,7 @@ "beginColumn" : 4, "endLine" : 467, "endColumn" : 65, - "offset" : 24948, + "offset" : 24953, "length" : 61 } } @@ -28787,7 +28787,7 @@ "beginColumn" : 4, "endLine" : 315, "endColumn" : 72, - "offset" : 16526, + "offset" : 16539, "length" : 68 } } @@ -28882,7 +28882,7 @@ "beginColumn" : 4, "endLine" : 321, "endColumn" : 70, - "offset" : 16852, + "offset" : 16865, "length" : 66 } } @@ -29032,7 +29032,7 @@ "beginColumn" : 4, "endLine" : 321, "endColumn" : 70, - "offset" : 16852, + "offset" : 16865, "length" : 66 } } @@ -29087,7 +29087,7 @@ "beginColumn" : 4, "endLine" : 470, "endColumn" : 69, - "offset" : 25121, + "offset" : 25126, "length" : 65 } } @@ -29182,7 +29182,7 @@ "beginColumn" : 4, "endLine" : 599, "endColumn" : 72, - "offset" : 31535, + "offset" : 31560, "length" : 68 } } @@ -29237,7 +29237,7 @@ "beginColumn" : 4, "endLine" : 317, "endColumn" : 71, - "offset" : 16666, + "offset" : 16679, "length" : 67 } } @@ -29364,7 +29364,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -29386,7 +29386,7 @@ "beginColumn" : 4, "endLine" : 500, "endColumn" : 65, - "offset" : 26313, + "offset" : 26318, "length" : 61 } } @@ -29510,7 +29510,7 @@ "beginColumn" : 4, "endLine" : 487, "endColumn" : 59, - "offset" : 25716, + "offset" : 25721, "length" : 55 } } @@ -29633,7 +29633,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -29655,7 +29655,7 @@ "beginColumn" : 4, "endLine" : 499, "endColumn" : 65, - "offset" : 26248, + "offset" : 26253, "length" : 61 } } @@ -29779,7 +29779,7 @@ "beginColumn" : 4, "endLine" : 486, "endColumn" : 59, - "offset" : 25657, + "offset" : 25662, "length" : 55 } } @@ -29902,7 +29902,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -29924,7 +29924,7 @@ "beginColumn" : 4, "endLine" : 344, "endColumn" : 72, - "offset" : 17797, + "offset" : 17810, "length" : 68 } } @@ -30048,7 +30048,7 @@ "beginColumn" : 4, "endLine" : 333, "endColumn" : 57, - "offset" : 17231, + "offset" : 17244, "length" : 53 } } @@ -30096,7 +30096,7 @@ "beginColumn" : 4, "endLine" : 335, "endColumn" : 50, - "offset" : 17343, + "offset" : 17356, "length" : 46 } } @@ -30118,7 +30118,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -30140,7 +30140,7 @@ "beginColumn" : 4, "endLine" : 350, "endColumn" : 70, - "offset" : 18123, + "offset" : 18136, "length" : 66 } } @@ -30229,7 +30229,7 @@ "beginColumn" : 4, "endLine" : 335, "endColumn" : 50, - "offset" : 17343, + "offset" : 17356, "length" : 46 } } @@ -30365,7 +30365,7 @@ "beginColumn" : 4, "endLine" : 335, "endColumn" : 50, - "offset" : 17343, + "offset" : 17356, "length" : 46 } } @@ -30387,7 +30387,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -30409,7 +30409,7 @@ "beginColumn" : 4, "endLine" : 350, "endColumn" : 70, - "offset" : 18123, + "offset" : 18136, "length" : 66 } } @@ -30440,7 +30440,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -30462,7 +30462,7 @@ "beginColumn" : 4, "endLine" : 502, "endColumn" : 69, - "offset" : 26421, + "offset" : 26426, "length" : 65 } } @@ -30498,7 +30498,7 @@ "beginColumn" : 4, "endLine" : 335, "endColumn" : 50, - "offset" : 17343, + "offset" : 17356, "length" : 46 } } @@ -30586,7 +30586,7 @@ "beginColumn" : 4, "endLine" : 488, "endColumn" : 50, - "offset" : 25775, + "offset" : 25780, "length" : 46 } } @@ -30634,7 +30634,7 @@ "beginColumn" : 4, "endLine" : 610, "endColumn" : 54, - "offset" : 31864, + "offset" : 31889, "length" : 50 } } @@ -30656,7 +30656,7 @@ "beginColumn" : 4, "endLine" : 608, "endColumn" : 43, - "offset" : 31806, + "offset" : 31831, "length" : 39 } } @@ -30678,7 +30678,7 @@ "beginColumn" : 4, "endLine" : 617, "endColumn" : 72, - "offset" : 32167, + "offset" : 32192, "length" : 68 } } @@ -30709,7 +30709,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -30731,7 +30731,7 @@ "beginColumn" : 4, "endLine" : 346, "endColumn" : 71, - "offset" : 17937, + "offset" : 17950, "length" : 67 } } @@ -30767,7 +30767,7 @@ "beginColumn" : 4, "endLine" : 610, "endColumn" : 54, - "offset" : 31864, + "offset" : 31889, "length" : 50 } } @@ -30855,7 +30855,7 @@ "beginColumn" : 4, "endLine" : 334, "endColumn" : 55, - "offset" : 17288, + "offset" : 17301, "length" : 51 } } @@ -32944,7 +32944,7 @@ "beginColumn" : 36, "endLine" : 192, "endColumn" : 50, - "offset" : 9712, + "offset" : 9720, "length" : 14 } } @@ -32964,7 +32964,7 @@ "beginColumn" : 36, "endLine" : 192, "endColumn" : 50, - "offset" : 9712, + "offset" : 9720, "length" : 14 } }, @@ -33004,7 +33004,7 @@ "beginColumn" : 54, "endLine" : 192, "endColumn" : 93, - "offset" : 9730, + "offset" : 9738, "length" : 39 } } @@ -33024,7 +33024,7 @@ "beginColumn" : 54, "endLine" : 192, "endColumn" : 93, - "offset" : 9730, + "offset" : 9738, "length" : 39 } }, @@ -33054,7 +33054,7 @@ "beginColumn" : 54, "endLine" : 192, "endColumn" : 93, - "offset" : 9730, + "offset" : 9738, "length" : 39 } } @@ -33076,7 +33076,7 @@ "beginColumn" : 54, "endLine" : 192, "endColumn" : 93, - "offset" : 9730, + "offset" : 9738, "length" : 39 } }, @@ -33106,7 +33106,7 @@ "beginColumn" : 54, "endLine" : 192, "endColumn" : 93, - "offset" : 9730, + "offset" : 9738, "length" : 39 } } @@ -33128,7 +33128,7 @@ "beginColumn" : 54, "endLine" : 192, "endColumn" : 93, - "offset" : 9730, + "offset" : 9738, "length" : 39 } }, @@ -33154,7 +33154,7 @@ "beginColumn" : 36, "endLine" : 192, "endColumn" : 93, - "offset" : 9712, + "offset" : 9720, "length" : 57 } }, @@ -33183,7 +33183,7 @@ "beginColumn" : 7, "endLine" : 192, "endColumn" : 94, - "offset" : 9667, + "offset" : 9675, "length" : 103 } } @@ -33206,7 +33206,7 @@ "beginColumn" : 6, "endLine" : 192, "endColumn" : 94, - "offset" : 9650, + "offset" : 9658, "length" : 120 } } @@ -33311,7 +33311,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -33325,9 +33325,9 @@ "beginLine" : 183, "beginColumn" : 41, "endLine" : 183, - "endColumn" : 46, + "endColumn" : 48, "offset" : 9215, - "length" : 5 + "length" : 7 } } } @@ -33347,9 +33347,9 @@ "beginLine" : 183, "beginColumn" : 17, "endLine" : 183, - "endColumn" : 46, + "endColumn" : 48, "offset" : 9191, - "length" : 29 + "length" : 31 } }, "resOpt" : { @@ -33373,9 +33373,9 @@ "beginLine" : 183, "beginColumn" : 8, "endLine" : 183, - "endColumn" : 46, + "endColumn" : 48, "offset" : 9182, - "length" : 38 + "length" : 40 } }, "resOpt" : { @@ -33412,10 +33412,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 183, - "beginColumn" : 50, + "beginColumn" : 52, "endLine" : 183, - "endColumn" : 73, - "offset" : 9224, + "endColumn" : 75, + "offset" : 9226, "length" : 23 } } @@ -33432,10 +33432,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 183, - "beginColumn" : 50, + "beginColumn" : 52, "endLine" : 183, - "endColumn" : 73, - "offset" : 9224, + "endColumn" : 75, + "offset" : 9226, "length" : 23 } }, @@ -33450,7 +33450,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -33462,11 +33462,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 183, - "beginColumn" : 74, + "beginColumn" : 76, "endLine" : 183, - "endColumn" : 79, - "offset" : 9248, - "length" : 5 + "endColumn" : 83, + "offset" : 9250, + "length" : 7 } } } @@ -33484,11 +33484,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 183, - "beginColumn" : 50, + "beginColumn" : 52, "endLine" : 183, - "endColumn" : 79, - "offset" : 9224, - "length" : 29 + "endColumn" : 83, + "offset" : 9226, + "length" : 31 } }, "resOpt" : { @@ -33514,10 +33514,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 183, - "beginColumn" : 83, + "beginColumn" : 87, "endLine" : 183, - "endColumn" : 89, - "offset" : 9257, + "endColumn" : 93, + "offset" : 9261, "length" : 6 } } @@ -33534,11 +33534,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 183, - "beginColumn" : 50, + "beginColumn" : 52, "endLine" : 183, - "endColumn" : 89, - "offset" : 9224, - "length" : 39 + "endColumn" : 93, + "offset" : 9226, + "length" : 41 } }, "resOpt" : { @@ -33565,9 +33565,9 @@ "beginLine" : 183, "beginColumn" : 8, "endLine" : 183, - "endColumn" : 89, + "endColumn" : 93, "offset" : 9182, - "length" : 81 + "length" : 85 } }, "resOpt" : { @@ -33594,9 +33594,9 @@ "beginLine" : 181, "beginColumn" : 7, "endLine" : 183, - "endColumn" : 90, + "endColumn" : 94, "offset" : 8995, - "length" : 269 + "length" : 273 } } } @@ -33629,7 +33629,7 @@ "beginColumn" : 8, "endLine" : 187, "endColumn" : 13, - "offset" : 9463, + "offset" : 9467, "length" : 5 } } @@ -33659,7 +33659,7 @@ "beginColumn" : 17, "endLine" : 187, "endColumn" : 40, - "offset" : 9472, + "offset" : 9476, "length" : 23 } } @@ -33679,7 +33679,7 @@ "beginColumn" : 17, "endLine" : 187, "endColumn" : 40, - "offset" : 9472, + "offset" : 9476, "length" : 23 } }, @@ -33694,7 +33694,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -33708,9 +33708,9 @@ "beginLine" : 187, "beginColumn" : 41, "endLine" : 187, - "endColumn" : 46, - "offset" : 9496, - "length" : 5 + "endColumn" : 48, + "offset" : 9500, + "length" : 7 } } } @@ -33730,9 +33730,9 @@ "beginLine" : 187, "beginColumn" : 17, "endLine" : 187, - "endColumn" : 46, - "offset" : 9472, - "length" : 29 + "endColumn" : 48, + "offset" : 9476, + "length" : 31 } }, "resOpt" : { @@ -33756,9 +33756,9 @@ "beginLine" : 187, "beginColumn" : 8, "endLine" : 187, - "endColumn" : 46, - "offset" : 9463, - "length" : 38 + "endColumn" : 48, + "offset" : 9467, + "length" : 40 } }, "resOpt" : { @@ -33795,10 +33795,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 187, - "beginColumn" : 50, + "beginColumn" : 52, "endLine" : 187, - "endColumn" : 73, - "offset" : 9505, + "endColumn" : 75, + "offset" : 9511, "length" : 23 } } @@ -33815,10 +33815,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 187, - "beginColumn" : 50, + "beginColumn" : 52, "endLine" : 187, - "endColumn" : 73, - "offset" : 9505, + "endColumn" : 75, + "offset" : 9511, "length" : 23 } }, @@ -33833,7 +33833,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -33845,11 +33845,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 187, - "beginColumn" : 74, + "beginColumn" : 76, "endLine" : 187, - "endColumn" : 79, - "offset" : 9529, - "length" : 5 + "endColumn" : 83, + "offset" : 9535, + "length" : 7 } } } @@ -33867,11 +33867,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 187, - "beginColumn" : 50, + "beginColumn" : 52, "endLine" : 187, - "endColumn" : 79, - "offset" : 9505, - "length" : 29 + "endColumn" : 83, + "offset" : 9511, + "length" : 31 } }, "resOpt" : { @@ -33897,10 +33897,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 187, - "beginColumn" : 83, + "beginColumn" : 87, "endLine" : 187, - "endColumn" : 89, - "offset" : 9538, + "endColumn" : 93, + "offset" : 9546, "length" : 6 } } @@ -33917,11 +33917,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 187, - "beginColumn" : 50, + "beginColumn" : 52, "endLine" : 187, - "endColumn" : 89, - "offset" : 9505, - "length" : 39 + "endColumn" : 93, + "offset" : 9511, + "length" : 41 } }, "resOpt" : { @@ -33948,9 +33948,9 @@ "beginLine" : 187, "beginColumn" : 8, "endLine" : 187, - "endColumn" : 89, - "offset" : 9463, - "length" : 81 + "endColumn" : 93, + "offset" : 9467, + "length" : 85 } }, "resOpt" : { @@ -33977,9 +33977,9 @@ "beginLine" : 185, "beginColumn" : 7, "endLine" : 187, - "endColumn" : 90, - "offset" : 9276, - "length" : 269 + "endColumn" : 94, + "offset" : 9280, + "length" : 273 } } } @@ -33998,9 +33998,9 @@ "beginLine" : 179, "beginColumn" : 6, "endLine" : 187, - "endColumn" : 90, + "endColumn" : 94, "offset" : 8973, - "length" : 572 + "length" : 580 } } } @@ -34043,7 +34043,7 @@ "beginColumn" : 15, "endLine" : 202, "endColumn" : 27, - "offset" : 10166, + "offset" : 10174, "length" : 12 } } @@ -34063,7 +34063,7 @@ "beginColumn" : 15, "endLine" : 202, "endColumn" : 27, - "offset" : 10166, + "offset" : 10174, "length" : 12 } }, @@ -34103,7 +34103,7 @@ "beginColumn" : 31, "endLine" : 202, "endColumn" : 82, - "offset" : 10182, + "offset" : 10190, "length" : 51 } } @@ -34123,7 +34123,7 @@ "beginColumn" : 31, "endLine" : 202, "endColumn" : 82, - "offset" : 10182, + "offset" : 10190, "length" : 51 } }, @@ -34153,7 +34153,7 @@ "beginColumn" : 31, "endLine" : 202, "endColumn" : 82, - "offset" : 10182, + "offset" : 10190, "length" : 51 } } @@ -34175,7 +34175,7 @@ "beginColumn" : 31, "endLine" : 202, "endColumn" : 82, - "offset" : 10182, + "offset" : 10190, "length" : 51 } }, @@ -34205,7 +34205,7 @@ "beginColumn" : 31, "endLine" : 202, "endColumn" : 82, - "offset" : 10182, + "offset" : 10190, "length" : 51 } } @@ -34227,7 +34227,7 @@ "beginColumn" : 31, "endLine" : 202, "endColumn" : 82, - "offset" : 10182, + "offset" : 10190, "length" : 51 } }, @@ -34253,7 +34253,7 @@ "beginColumn" : 15, "endLine" : 202, "endColumn" : 82, - "offset" : 10166, + "offset" : 10174, "length" : 67 } }, @@ -34289,7 +34289,7 @@ "beginColumn" : 18, "endLine" : 203, "endColumn" : 32, - "offset" : 10313, + "offset" : 10321, "length" : 14 } } @@ -34309,7 +34309,7 @@ "beginColumn" : 18, "endLine" : 203, "endColumn" : 32, - "offset" : 10313, + "offset" : 10321, "length" : 14 } }, @@ -34349,7 +34349,7 @@ "beginColumn" : 36, "endLine" : 203, "endColumn" : 75, - "offset" : 10331, + "offset" : 10339, "length" : 39 } } @@ -34369,7 +34369,7 @@ "beginColumn" : 36, "endLine" : 203, "endColumn" : 75, - "offset" : 10331, + "offset" : 10339, "length" : 39 } }, @@ -34399,7 +34399,7 @@ "beginColumn" : 36, "endLine" : 203, "endColumn" : 75, - "offset" : 10331, + "offset" : 10339, "length" : 39 } } @@ -34421,7 +34421,7 @@ "beginColumn" : 36, "endLine" : 203, "endColumn" : 75, - "offset" : 10331, + "offset" : 10339, "length" : 39 } }, @@ -34451,7 +34451,7 @@ "beginColumn" : 36, "endLine" : 203, "endColumn" : 75, - "offset" : 10331, + "offset" : 10339, "length" : 39 } } @@ -34473,7 +34473,7 @@ "beginColumn" : 36, "endLine" : 203, "endColumn" : 75, - "offset" : 10331, + "offset" : 10339, "length" : 39 } }, @@ -34499,7 +34499,7 @@ "beginColumn" : 18, "endLine" : 203, "endColumn" : 75, - "offset" : 10313, + "offset" : 10321, "length" : 57 } }, @@ -34528,7 +34528,7 @@ "beginColumn" : 7, "endLine" : 203, "endColumn" : 76, - "offset" : 9912, + "offset" : 9920, "length" : 459 } } @@ -34562,7 +34562,7 @@ "beginColumn" : 15, "endLine" : 208, "endColumn" : 27, - "offset" : 10706, + "offset" : 10714, "length" : 12 } } @@ -34582,7 +34582,7 @@ "beginColumn" : 15, "endLine" : 208, "endColumn" : 27, - "offset" : 10706, + "offset" : 10714, "length" : 12 } }, @@ -34622,7 +34622,7 @@ "beginColumn" : 31, "endLine" : 208, "endColumn" : 84, - "offset" : 10722, + "offset" : 10730, "length" : 53 } } @@ -34642,7 +34642,7 @@ "beginColumn" : 31, "endLine" : 208, "endColumn" : 84, - "offset" : 10722, + "offset" : 10730, "length" : 53 } }, @@ -34672,7 +34672,7 @@ "beginColumn" : 31, "endLine" : 208, "endColumn" : 84, - "offset" : 10722, + "offset" : 10730, "length" : 53 } } @@ -34694,7 +34694,7 @@ "beginColumn" : 31, "endLine" : 208, "endColumn" : 84, - "offset" : 10722, + "offset" : 10730, "length" : 53 } }, @@ -34724,7 +34724,7 @@ "beginColumn" : 31, "endLine" : 208, "endColumn" : 84, - "offset" : 10722, + "offset" : 10730, "length" : 53 } } @@ -34746,7 +34746,7 @@ "beginColumn" : 31, "endLine" : 208, "endColumn" : 84, - "offset" : 10722, + "offset" : 10730, "length" : 53 } }, @@ -34772,7 +34772,7 @@ "beginColumn" : 15, "endLine" : 208, "endColumn" : 84, - "offset" : 10706, + "offset" : 10714, "length" : 69 } }, @@ -34808,7 +34808,7 @@ "beginColumn" : 18, "endLine" : 209, "endColumn" : 32, - "offset" : 10794, + "offset" : 10802, "length" : 14 } } @@ -34828,7 +34828,7 @@ "beginColumn" : 18, "endLine" : 209, "endColumn" : 32, - "offset" : 10794, + "offset" : 10802, "length" : 14 } }, @@ -34868,7 +34868,7 @@ "beginColumn" : 36, "endLine" : 209, "endColumn" : 73, - "offset" : 10812, + "offset" : 10820, "length" : 37 } } @@ -34888,7 +34888,7 @@ "beginColumn" : 36, "endLine" : 209, "endColumn" : 73, - "offset" : 10812, + "offset" : 10820, "length" : 37 } }, @@ -34918,7 +34918,7 @@ "beginColumn" : 36, "endLine" : 209, "endColumn" : 73, - "offset" : 10812, + "offset" : 10820, "length" : 37 } } @@ -34940,7 +34940,7 @@ "beginColumn" : 36, "endLine" : 209, "endColumn" : 73, - "offset" : 10812, + "offset" : 10820, "length" : 37 } }, @@ -34970,7 +34970,7 @@ "beginColumn" : 36, "endLine" : 209, "endColumn" : 73, - "offset" : 10812, + "offset" : 10820, "length" : 37 } } @@ -34992,7 +34992,7 @@ "beginColumn" : 36, "endLine" : 209, "endColumn" : 73, - "offset" : 10812, + "offset" : 10820, "length" : 37 } }, @@ -35018,7 +35018,7 @@ "beginColumn" : 18, "endLine" : 209, "endColumn" : 73, - "offset" : 10794, + "offset" : 10802, "length" : 55 } }, @@ -35047,7 +35047,7 @@ "beginColumn" : 7, "endLine" : 209, "endColumn" : 74, - "offset" : 10453, + "offset" : 10461, "length" : 397 } } @@ -35081,7 +35081,7 @@ "beginColumn" : 15, "endLine" : 216, "endColumn" : 27, - "offset" : 11194, + "offset" : 11202, "length" : 12 } } @@ -35101,7 +35101,7 @@ "beginColumn" : 15, "endLine" : 216, "endColumn" : 27, - "offset" : 11194, + "offset" : 11202, "length" : 12 } }, @@ -35141,7 +35141,7 @@ "beginColumn" : 31, "endLine" : 216, "endColumn" : 84, - "offset" : 11210, + "offset" : 11218, "length" : 53 } } @@ -35161,7 +35161,7 @@ "beginColumn" : 31, "endLine" : 216, "endColumn" : 84, - "offset" : 11210, + "offset" : 11218, "length" : 53 } }, @@ -35191,7 +35191,7 @@ "beginColumn" : 31, "endLine" : 216, "endColumn" : 84, - "offset" : 11210, + "offset" : 11218, "length" : 53 } } @@ -35213,7 +35213,7 @@ "beginColumn" : 31, "endLine" : 216, "endColumn" : 84, - "offset" : 11210, + "offset" : 11218, "length" : 53 } }, @@ -35243,7 +35243,7 @@ "beginColumn" : 31, "endLine" : 216, "endColumn" : 84, - "offset" : 11210, + "offset" : 11218, "length" : 53 } } @@ -35265,7 +35265,7 @@ "beginColumn" : 31, "endLine" : 216, "endColumn" : 84, - "offset" : 11210, + "offset" : 11218, "length" : 53 } }, @@ -35291,7 +35291,7 @@ "beginColumn" : 15, "endLine" : 216, "endColumn" : 84, - "offset" : 11194, + "offset" : 11202, "length" : 69 } }, @@ -35327,7 +35327,7 @@ "beginColumn" : 18, "endLine" : 217, "endColumn" : 32, - "offset" : 11282, + "offset" : 11290, "length" : 14 } } @@ -35347,7 +35347,7 @@ "beginColumn" : 18, "endLine" : 217, "endColumn" : 32, - "offset" : 11282, + "offset" : 11290, "length" : 14 } }, @@ -35387,7 +35387,7 @@ "beginColumn" : 36, "endLine" : 217, "endColumn" : 77, - "offset" : 11300, + "offset" : 11308, "length" : 41 } } @@ -35407,7 +35407,7 @@ "beginColumn" : 36, "endLine" : 217, "endColumn" : 77, - "offset" : 11300, + "offset" : 11308, "length" : 41 } }, @@ -35437,7 +35437,7 @@ "beginColumn" : 36, "endLine" : 217, "endColumn" : 77, - "offset" : 11300, + "offset" : 11308, "length" : 41 } } @@ -35459,7 +35459,7 @@ "beginColumn" : 36, "endLine" : 217, "endColumn" : 77, - "offset" : 11300, + "offset" : 11308, "length" : 41 } }, @@ -35489,7 +35489,7 @@ "beginColumn" : 36, "endLine" : 217, "endColumn" : 77, - "offset" : 11300, + "offset" : 11308, "length" : 41 } } @@ -35511,7 +35511,7 @@ "beginColumn" : 36, "endLine" : 217, "endColumn" : 77, - "offset" : 11300, + "offset" : 11308, "length" : 41 } }, @@ -35537,7 +35537,7 @@ "beginColumn" : 18, "endLine" : 217, "endColumn" : 77, - "offset" : 11282, + "offset" : 11290, "length" : 59 } }, @@ -35566,7 +35566,7 @@ "beginColumn" : 7, "endLine" : 217, "endColumn" : 78, - "offset" : 10861, + "offset" : 10869, "length" : 481 } } @@ -35606,7 +35606,7 @@ "beginColumn" : 15, "endLine" : 224, "endColumn" : 38, - "offset" : 11721, + "offset" : 11729, "length" : 23 } } @@ -35626,7 +35626,7 @@ "beginColumn" : 15, "endLine" : 224, "endColumn" : 38, - "offset" : 11721, + "offset" : 11729, "length" : 23 } }, @@ -35656,7 +35656,7 @@ "beginColumn" : 39, "endLine" : 224, "endColumn" : 45, - "offset" : 11745, + "offset" : 11753, "length" : 6 } } @@ -35678,7 +35678,7 @@ "beginColumn" : 15, "endLine" : 224, "endColumn" : 45, - "offset" : 11721, + "offset" : 11729, "length" : 30 } }, @@ -35718,7 +35718,7 @@ "beginColumn" : 49, "endLine" : 224, "endColumn" : 89, - "offset" : 11755, + "offset" : 11763, "length" : 40 } } @@ -35738,7 +35738,7 @@ "beginColumn" : 49, "endLine" : 224, "endColumn" : 89, - "offset" : 11755, + "offset" : 11763, "length" : 40 } }, @@ -35768,7 +35768,7 @@ "beginColumn" : 49, "endLine" : 224, "endColumn" : 89, - "offset" : 11755, + "offset" : 11763, "length" : 40 } } @@ -35790,7 +35790,7 @@ "beginColumn" : 49, "endLine" : 224, "endColumn" : 89, - "offset" : 11755, + "offset" : 11763, "length" : 40 } }, @@ -35820,7 +35820,7 @@ "beginColumn" : 49, "endLine" : 224, "endColumn" : 89, - "offset" : 11755, + "offset" : 11763, "length" : 40 } } @@ -35842,7 +35842,7 @@ "beginColumn" : 49, "endLine" : 224, "endColumn" : 89, - "offset" : 11755, + "offset" : 11763, "length" : 40 } }, @@ -35868,7 +35868,7 @@ "beginColumn" : 15, "endLine" : 224, "endColumn" : 89, - "offset" : 11721, + "offset" : 11729, "length" : 74 } }, @@ -35909,7 +35909,7 @@ "beginColumn" : 9, "endLine" : 225, "endColumn" : 32, - "offset" : 11806, + "offset" : 11814, "length" : 23 } } @@ -35929,7 +35929,7 @@ "beginColumn" : 9, "endLine" : 225, "endColumn" : 32, - "offset" : 11806, + "offset" : 11814, "length" : 23 } }, @@ -35959,7 +35959,7 @@ "beginColumn" : 33, "endLine" : 225, "endColumn" : 39, - "offset" : 11830, + "offset" : 11838, "length" : 6 } } @@ -35981,7 +35981,7 @@ "beginColumn" : 9, "endLine" : 225, "endColumn" : 39, - "offset" : 11806, + "offset" : 11814, "length" : 30 } }, @@ -36021,7 +36021,7 @@ "beginColumn" : 43, "endLine" : 225, "endColumn" : 83, - "offset" : 11840, + "offset" : 11848, "length" : 40 } } @@ -36041,7 +36041,7 @@ "beginColumn" : 43, "endLine" : 225, "endColumn" : 83, - "offset" : 11840, + "offset" : 11848, "length" : 40 } }, @@ -36071,7 +36071,7 @@ "beginColumn" : 43, "endLine" : 225, "endColumn" : 83, - "offset" : 11840, + "offset" : 11848, "length" : 40 } } @@ -36093,7 +36093,7 @@ "beginColumn" : 43, "endLine" : 225, "endColumn" : 83, - "offset" : 11840, + "offset" : 11848, "length" : 40 } }, @@ -36123,7 +36123,7 @@ "beginColumn" : 43, "endLine" : 225, "endColumn" : 83, - "offset" : 11840, + "offset" : 11848, "length" : 40 } } @@ -36145,7 +36145,7 @@ "beginColumn" : 43, "endLine" : 225, "endColumn" : 83, - "offset" : 11840, + "offset" : 11848, "length" : 40 } }, @@ -36171,7 +36171,7 @@ "beginColumn" : 9, "endLine" : 225, "endColumn" : 83, - "offset" : 11806, + "offset" : 11814, "length" : 74 } }, @@ -36200,7 +36200,7 @@ "beginColumn" : 15, "endLine" : 225, "endColumn" : 83, - "offset" : 11721, + "offset" : 11729, "length" : 159 } }, @@ -36238,7 +36238,7 @@ "beginColumn" : 18, "endLine" : 226, "endColumn" : 35, - "offset" : 11899, + "offset" : 11907, "length" : 17 } } @@ -36258,7 +36258,7 @@ "beginColumn" : 18, "endLine" : 226, "endColumn" : 35, - "offset" : 11899, + "offset" : 11907, "length" : 17 } }, @@ -36273,7 +36273,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -36287,9 +36287,9 @@ "beginLine" : 226, "beginColumn" : 36, "endLine" : 226, - "endColumn" : 41, - "offset" : 11917, - "length" : 5 + "endColumn" : 40, + "offset" : 11925, + "length" : 4 } } } @@ -36309,9 +36309,9 @@ "beginLine" : 226, "beginColumn" : 18, "endLine" : 226, - "endColumn" : 41, - "offset" : 11899, - "length" : 23 + "endColumn" : 40, + "offset" : 11907, + "length" : 22 } }, "resOpt" : { @@ -36335,9 +36335,9 @@ "beginLine" : 220, "beginColumn" : 7, "endLine" : 226, - "endColumn" : 42, - "offset" : 11394, - "length" : 529 + "endColumn" : 41, + "offset" : 11402, + "length" : 528 } } } @@ -36376,7 +36376,7 @@ "beginColumn" : 15, "endLine" : 232, "endColumn" : 38, - "offset" : 12264, + "offset" : 12271, "length" : 23 } } @@ -36396,7 +36396,7 @@ "beginColumn" : 15, "endLine" : 232, "endColumn" : 38, - "offset" : 12264, + "offset" : 12271, "length" : 23 } }, @@ -36426,7 +36426,7 @@ "beginColumn" : 39, "endLine" : 232, "endColumn" : 45, - "offset" : 12288, + "offset" : 12295, "length" : 6 } } @@ -36448,7 +36448,7 @@ "beginColumn" : 15, "endLine" : 232, "endColumn" : 45, - "offset" : 12264, + "offset" : 12271, "length" : 30 } }, @@ -36488,7 +36488,7 @@ "beginColumn" : 49, "endLine" : 232, "endColumn" : 87, - "offset" : 12298, + "offset" : 12305, "length" : 38 } } @@ -36508,7 +36508,7 @@ "beginColumn" : 49, "endLine" : 232, "endColumn" : 87, - "offset" : 12298, + "offset" : 12305, "length" : 38 } }, @@ -36538,7 +36538,7 @@ "beginColumn" : 49, "endLine" : 232, "endColumn" : 87, - "offset" : 12298, + "offset" : 12305, "length" : 38 } } @@ -36560,7 +36560,7 @@ "beginColumn" : 49, "endLine" : 232, "endColumn" : 87, - "offset" : 12298, + "offset" : 12305, "length" : 38 } }, @@ -36590,7 +36590,7 @@ "beginColumn" : 49, "endLine" : 232, "endColumn" : 87, - "offset" : 12298, + "offset" : 12305, "length" : 38 } } @@ -36612,7 +36612,7 @@ "beginColumn" : 49, "endLine" : 232, "endColumn" : 87, - "offset" : 12298, + "offset" : 12305, "length" : 38 } }, @@ -36638,7 +36638,7 @@ "beginColumn" : 15, "endLine" : 232, "endColumn" : 87, - "offset" : 12264, + "offset" : 12271, "length" : 72 } }, @@ -36679,7 +36679,7 @@ "beginColumn" : 9, "endLine" : 234, "endColumn" : 32, - "offset" : 12355, + "offset" : 12362, "length" : 23 } } @@ -36699,7 +36699,7 @@ "beginColumn" : 9, "endLine" : 234, "endColumn" : 32, - "offset" : 12355, + "offset" : 12362, "length" : 23 } }, @@ -36729,7 +36729,7 @@ "beginColumn" : 33, "endLine" : 234, "endColumn" : 39, - "offset" : 12379, + "offset" : 12386, "length" : 6 } } @@ -36751,7 +36751,7 @@ "beginColumn" : 9, "endLine" : 234, "endColumn" : 39, - "offset" : 12355, + "offset" : 12362, "length" : 30 } }, @@ -36791,7 +36791,7 @@ "beginColumn" : 43, "endLine" : 234, "endColumn" : 81, - "offset" : 12389, + "offset" : 12396, "length" : 38 } } @@ -36811,7 +36811,7 @@ "beginColumn" : 43, "endLine" : 234, "endColumn" : 81, - "offset" : 12389, + "offset" : 12396, "length" : 38 } }, @@ -36841,7 +36841,7 @@ "beginColumn" : 43, "endLine" : 234, "endColumn" : 81, - "offset" : 12389, + "offset" : 12396, "length" : 38 } } @@ -36863,7 +36863,7 @@ "beginColumn" : 43, "endLine" : 234, "endColumn" : 81, - "offset" : 12389, + "offset" : 12396, "length" : 38 } }, @@ -36893,7 +36893,7 @@ "beginColumn" : 43, "endLine" : 234, "endColumn" : 81, - "offset" : 12389, + "offset" : 12396, "length" : 38 } } @@ -36915,7 +36915,7 @@ "beginColumn" : 43, "endLine" : 234, "endColumn" : 81, - "offset" : 12389, + "offset" : 12396, "length" : 38 } }, @@ -36941,7 +36941,7 @@ "beginColumn" : 9, "endLine" : 234, "endColumn" : 81, - "offset" : 12355, + "offset" : 12362, "length" : 72 } }, @@ -36970,7 +36970,7 @@ "beginColumn" : 15, "endLine" : 234, "endColumn" : 81, - "offset" : 12264, + "offset" : 12271, "length" : 163 } }, @@ -37014,7 +37014,7 @@ "beginColumn" : 19, "endLine" : 235, "endColumn" : 36, - "offset" : 12447, + "offset" : 12454, "length" : 17 } } @@ -37034,7 +37034,7 @@ "beginColumn" : 19, "endLine" : 235, "endColumn" : 36, - "offset" : 12447, + "offset" : 12454, "length" : 17 } }, @@ -37049,7 +37049,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -37063,9 +37063,9 @@ "beginLine" : 235, "beginColumn" : 37, "endLine" : 235, - "endColumn" : 42, - "offset" : 12465, - "length" : 5 + "endColumn" : 41, + "offset" : 12472, + "length" : 4 } } } @@ -37085,9 +37085,9 @@ "beginLine" : 235, "beginColumn" : 19, "endLine" : 235, - "endColumn" : 42, - "offset" : 12447, - "length" : 23 + "endColumn" : 41, + "offset" : 12454, + "length" : 22 } }, "resOpt" : { @@ -37111,9 +37111,9 @@ "beginLine" : 235, "beginColumn" : 18, "endLine" : 235, - "endColumn" : 42, - "offset" : 12446, - "length" : 24 + "endColumn" : 41, + "offset" : 12453, + "length" : 23 } }, "resOpt" : { @@ -37140,9 +37140,9 @@ "beginLine" : 228, "beginColumn" : 7, "endLine" : 235, - "endColumn" : 43, - "offset" : 11934, - "length" : 537 + "endColumn" : 42, + "offset" : 11941, + "length" : 536 } } } @@ -37171,7 +37171,7 @@ "beginColumn" : 15, "endLine" : 242, "endColumn" : 16, - "offset" : 12823, + "offset" : 12829, "length" : 1 } } @@ -37208,7 +37208,7 @@ "beginColumn" : 11, "endLine" : 244, "endColumn" : 28, - "offset" : 12854, + "offset" : 12860, "length" : 17 } } @@ -37228,7 +37228,7 @@ "beginColumn" : 11, "endLine" : 244, "endColumn" : 28, - "offset" : 12854, + "offset" : 12860, "length" : 17 } }, @@ -37243,7 +37243,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -37257,9 +37257,9 @@ "beginLine" : 244, "beginColumn" : 29, "endLine" : 244, - "endColumn" : 34, - "offset" : 12872, - "length" : 5 + "endColumn" : 33, + "offset" : 12878, + "length" : 4 } } } @@ -37279,9 +37279,9 @@ "beginLine" : 244, "beginColumn" : 11, "endLine" : 244, - "endColumn" : 34, - "offset" : 12854, - "length" : 23 + "endColumn" : 33, + "offset" : 12860, + "length" : 22 } }, "resOpt" : { @@ -37305,9 +37305,9 @@ "beginLine" : 244, "beginColumn" : 10, "endLine" : 244, - "endColumn" : 34, - "offset" : 12853, - "length" : 24 + "endColumn" : 33, + "offset" : 12859, + "length" : 23 } }, "resOpt" : { @@ -37349,7 +37349,7 @@ "beginColumn" : 11, "endLine" : 245, "endColumn" : 27, - "offset" : 12895, + "offset" : 12900, "length" : 16 } } @@ -37369,7 +37369,7 @@ "beginColumn" : 11, "endLine" : 245, "endColumn" : 27, - "offset" : 12895, + "offset" : 12900, "length" : 16 } }, @@ -37384,7 +37384,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -37398,9 +37398,9 @@ "beginLine" : 245, "beginColumn" : 28, "endLine" : 245, - "endColumn" : 33, - "offset" : 12912, - "length" : 5 + "endColumn" : 35, + "offset" : 12917, + "length" : 7 } } } @@ -37420,9 +37420,9 @@ "beginLine" : 245, "beginColumn" : 11, "endLine" : 245, - "endColumn" : 33, - "offset" : 12895, - "length" : 22 + "endColumn" : 35, + "offset" : 12900, + "length" : 24 } }, "resOpt" : { @@ -37454,10 +37454,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 245, - "beginColumn" : 37, + "beginColumn" : 39, "endLine" : 245, - "endColumn" : 60, - "offset" : 12921, + "endColumn" : 62, + "offset" : 12928, "length" : 23 } } @@ -37474,10 +37474,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 245, - "beginColumn" : 37, + "beginColumn" : 39, "endLine" : 245, - "endColumn" : 60, - "offset" : 12921, + "endColumn" : 62, + "offset" : 12928, "length" : 23 } }, @@ -37492,7 +37492,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -37504,11 +37504,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 245, - "beginColumn" : 61, + "beginColumn" : 63, "endLine" : 245, - "endColumn" : 66, - "offset" : 12945, - "length" : 5 + "endColumn" : 70, + "offset" : 12952, + "length" : 7 } } } @@ -37526,11 +37526,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 245, - "beginColumn" : 37, + "beginColumn" : 39, "endLine" : 245, - "endColumn" : 66, - "offset" : 12921, - "length" : 29 + "endColumn" : 70, + "offset" : 12928, + "length" : 31 } }, "resOpt" : { @@ -37554,9 +37554,9 @@ "beginLine" : 245, "beginColumn" : 11, "endLine" : 245, - "endColumn" : 66, - "offset" : 12895, - "length" : 55 + "endColumn" : 70, + "offset" : 12900, + "length" : 59 } }, "resOpt" : { @@ -37596,7 +37596,7 @@ "beginColumn" : 10, "endLine" : 247, "endColumn" : 26, - "offset" : 12971, + "offset" : 12980, "length" : 16 } } @@ -37616,7 +37616,7 @@ "beginColumn" : 10, "endLine" : 247, "endColumn" : 26, - "offset" : 12971, + "offset" : 12980, "length" : 16 } }, @@ -37631,7 +37631,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -37645,9 +37645,9 @@ "beginLine" : 247, "beginColumn" : 27, "endLine" : 247, - "endColumn" : 32, - "offset" : 12988, - "length" : 5 + "endColumn" : 34, + "offset" : 12997, + "length" : 7 } } } @@ -37667,9 +37667,9 @@ "beginLine" : 247, "beginColumn" : 10, "endLine" : 247, - "endColumn" : 32, - "offset" : 12971, - "length" : 22 + "endColumn" : 34, + "offset" : 12980, + "length" : 24 } }, "resOpt" : { @@ -37701,10 +37701,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 247, - "beginColumn" : 36, + "beginColumn" : 38, "endLine" : 247, - "endColumn" : 59, - "offset" : 12997, + "endColumn" : 61, + "offset" : 13008, "length" : 23 } } @@ -37721,10 +37721,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 247, - "beginColumn" : 36, + "beginColumn" : 38, "endLine" : 247, - "endColumn" : 59, - "offset" : 12997, + "endColumn" : 61, + "offset" : 13008, "length" : 23 } }, @@ -37739,7 +37739,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -37751,11 +37751,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 247, - "beginColumn" : 60, + "beginColumn" : 62, "endLine" : 247, - "endColumn" : 65, - "offset" : 13021, - "length" : 5 + "endColumn" : 69, + "offset" : 13032, + "length" : 7 } } } @@ -37773,11 +37773,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 247, - "beginColumn" : 36, + "beginColumn" : 38, "endLine" : 247, - "endColumn" : 65, - "offset" : 12997, - "length" : 29 + "endColumn" : 69, + "offset" : 13008, + "length" : 31 } }, "resOpt" : { @@ -37801,9 +37801,9 @@ "beginLine" : 247, "beginColumn" : 10, "endLine" : 247, - "endColumn" : 65, - "offset" : 12971, - "length" : 55 + "endColumn" : 69, + "offset" : 12980, + "length" : 59 } }, "resOpt" : { @@ -37830,9 +37830,9 @@ "beginLine" : 245, "beginColumn" : 11, "endLine" : 247, - "endColumn" : 65, - "offset" : 12895, - "length" : 131 + "endColumn" : 69, + "offset" : 12900, + "length" : 139 } }, "resOpt" : { @@ -37859,9 +37859,9 @@ "beginLine" : 244, "beginColumn" : 10, "endLine" : 247, - "endColumn" : 65, - "offset" : 12853, - "length" : 173 + "endColumn" : 69, + "offset" : 12859, + "length" : 180 } }, "resOpt" : { @@ -37888,9 +37888,9 @@ "beginLine" : 239, "beginColumn" : 7, "endLine" : 247, - "endColumn" : 67, - "offset" : 12542, - "length" : 486 + "endColumn" : 71, + "offset" : 12548, + "length" : 493 } } } @@ -37919,7 +37919,7 @@ "beginColumn" : 15, "endLine" : 252, "endColumn" : 16, - "offset" : 13288, + "offset" : 13301, "length" : 1 } } @@ -37950,7 +37950,7 @@ "beginColumn" : 9, "endLine" : 254, "endColumn" : 26, - "offset" : 13317, + "offset" : 13330, "length" : 17 } } @@ -37970,7 +37970,7 @@ "beginColumn" : 9, "endLine" : 254, "endColumn" : 26, - "offset" : 13317, + "offset" : 13330, "length" : 17 } }, @@ -37985,7 +37985,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -37999,9 +37999,9 @@ "beginLine" : 254, "beginColumn" : 27, "endLine" : 254, - "endColumn" : 32, - "offset" : 13335, - "length" : 5 + "endColumn" : 31, + "offset" : 13348, + "length" : 4 } } } @@ -38021,9 +38021,9 @@ "beginLine" : 254, "beginColumn" : 9, "endLine" : 254, - "endColumn" : 32, - "offset" : 13317, - "length" : 23 + "endColumn" : 31, + "offset" : 13330, + "length" : 22 } }, "resOpt" : { @@ -38049,10 +38049,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 254, - "beginColumn" : 38, + "beginColumn" : 37, "endLine" : 254, - "endColumn" : 39, - "offset" : 13346, + "endColumn" : 38, + "offset" : 13358, "length" : 1 } } @@ -38071,9 +38071,9 @@ "beginLine" : 254, "beginColumn" : 9, "endLine" : 254, - "endColumn" : 39, - "offset" : 13317, - "length" : 30 + "endColumn" : 38, + "offset" : 13330, + "length" : 29 } }, "resOpt" : { @@ -38100,9 +38100,9 @@ "beginLine" : 249, "beginColumn" : 7, "endLine" : 254, - "endColumn" : 40, - "offset" : 13039, - "length" : 309 + "endColumn" : 39, + "offset" : 13052, + "length" : 308 } } } @@ -38125,9 +38125,9 @@ "beginLine" : 195, "beginColumn" : 6, "endLine" : 254, - "endColumn" : 40, - "offset" : 9845, - "length" : 3503 + "endColumn" : 39, + "offset" : 9853, + "length" : 3507 } } } @@ -38146,9 +38146,9 @@ "beginLine" : 172, "beginColumn" : 4, "endLine" : 254, - "endColumn" : 40, + "endColumn" : 39, "offset" : 8792, - "length" : 4556 + "length" : 4568 } } } @@ -39521,7 +39521,7 @@ "beginColumn" : 4, "endLine" : 378, "endColumn" : 73, - "offset" : 19463, + "offset" : 19471, "length" : 69 } } @@ -39562,7 +39562,7 @@ "beginColumn" : 4, "endLine" : 380, "endColumn" : 63, - "offset" : 19629, + "offset" : 19637, "length" : 59 } } @@ -39603,7 +39603,7 @@ "beginColumn" : 4, "endLine" : 382, "endColumn" : 63, - "offset" : 19785, + "offset" : 19793, "length" : 59 } } @@ -39644,7 +39644,7 @@ "beginColumn" : 4, "endLine" : 384, "endColumn" : 65, - "offset" : 19888, + "offset" : 19896, "length" : 61 } } @@ -39755,7 +39755,7 @@ "beginColumn" : 4, "endLine" : 388, "endColumn" : 61, - "offset" : 20062, + "offset" : 20070, "length" : 57 } } @@ -39864,7 +39864,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -39898,7 +39898,7 @@ "beginColumn" : 4, "endLine" : 411, "endColumn" : 73, - "offset" : 20816, + "offset" : 20824, "length" : 69 } } @@ -39939,7 +39939,7 @@ "beginColumn" : 4, "endLine" : 413, "endColumn" : 63, - "offset" : 20982, + "offset" : 20990, "length" : 59 } } @@ -39980,7 +39980,7 @@ "beginColumn" : 4, "endLine" : 415, "endColumn" : 63, - "offset" : 21138, + "offset" : 21146, "length" : 59 } } @@ -40021,7 +40021,7 @@ "beginColumn" : 4, "endLine" : 417, "endColumn" : 65, - "offset" : 21241, + "offset" : 21249, "length" : 61 } } @@ -40132,7 +40132,7 @@ "beginColumn" : 4, "endLine" : 421, "endColumn" : 61, - "offset" : 21415, + "offset" : 21423, "length" : 57 } } @@ -40471,7 +40471,7 @@ "beginColumn" : 5, "endLine" : 427, "endColumn" : 42, - "offset" : 21562, + "offset" : 21570, "length" : 37 } } @@ -40512,7 +40512,7 @@ "beginColumn" : 5, "endLine" : 430, "endColumn" : 64, - "offset" : 21622, + "offset" : 21630, "length" : 59 } } @@ -40545,7 +40545,7 @@ "beginColumn" : 5, "endLine" : 430, "endColumn" : 64, - "offset" : 21622, + "offset" : 21630, "length" : 59 } } @@ -40568,7 +40568,7 @@ "beginColumn" : 5, "endLine" : 430, "endColumn" : 64, - "offset" : 21622, + "offset" : 21630, "length" : 59 } } @@ -40589,7 +40589,7 @@ "beginColumn" : 5, "endLine" : 430, "endColumn" : 64, - "offset" : 21622, + "offset" : 21630, "length" : 59 } } @@ -40611,7 +40611,7 @@ "beginColumn" : 5, "endLine" : 430, "endColumn" : 64, - "offset" : 21622, + "offset" : 21630, "length" : 59 } }, @@ -40717,7 +40717,7 @@ "beginColumn" : 62, "endLine" : 430, "endColumn" : 63, - "offset" : 21679, + "offset" : 21687, "length" : 1 } } @@ -40738,7 +40738,7 @@ "beginColumn" : 5, "endLine" : 430, "endColumn" : 64, - "offset" : 21622, + "offset" : 21630, "length" : 59 } }, @@ -40772,7 +40772,7 @@ "beginColumn" : 5, "endLine" : 430, "endColumn" : 64, - "offset" : 21622, + "offset" : 21630, "length" : 59 } }, @@ -40821,11 +40821,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 6, - "endLine" : 447, + "endLine" : 437, "endColumn" : 19, - "offset" : 22490, + "offset" : 21949, "length" : 13 } } @@ -40841,11 +40841,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 6, - "endLine" : 447, + "endLine" : 437, "endColumn" : 19, - "offset" : 22490, + "offset" : 21949, "length" : 13 } }, @@ -40881,11 +40881,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 23, - "endLine" : 447, + "endLine" : 437, "endColumn" : 54, - "offset" : 22507, + "offset" : 21966, "length" : 31 } } @@ -40901,11 +40901,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 23, - "endLine" : 447, + "endLine" : 437, "endColumn" : 54, - "offset" : 22507, + "offset" : 21966, "length" : 31 } }, @@ -40931,11 +40931,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 23, - "endLine" : 447, + "endLine" : 437, "endColumn" : 54, - "offset" : 22507, + "offset" : 21966, "length" : 31 } } @@ -40953,11 +40953,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 23, - "endLine" : 447, + "endLine" : 437, "endColumn" : 54, - "offset" : 22507, + "offset" : 21966, "length" : 31 } }, @@ -40983,11 +40983,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 23, - "endLine" : 447, + "endLine" : 437, "endColumn" : 54, - "offset" : 22507, + "offset" : 21966, "length" : 31 } } @@ -41005,11 +41005,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 23, - "endLine" : 447, + "endLine" : 437, "endColumn" : 54, - "offset" : 22507, + "offset" : 21966, "length" : 31 } }, @@ -41031,11 +41031,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 6, - "endLine" : 447, + "endLine" : 437, "endColumn" : 54, - "offset" : 22490, + "offset" : 21949, "length" : 48 } }, @@ -41068,11 +41068,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 6, - "endLine" : 448, + "endLine" : 438, "endColumn" : 13, - "offset" : 22546, + "offset" : 22005, "length" : 7 } } @@ -41088,11 +41088,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 6, - "endLine" : 448, + "endLine" : 438, "endColumn" : 13, - "offset" : 22546, + "offset" : 22005, "length" : 7 } }, @@ -41128,11 +41128,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 17, - "endLine" : 448, + "endLine" : 438, "endColumn" : 48, - "offset" : 22557, + "offset" : 22016, "length" : 31 } } @@ -41148,11 +41148,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 17, - "endLine" : 448, + "endLine" : 438, "endColumn" : 48, - "offset" : 22557, + "offset" : 22016, "length" : 31 } }, @@ -41178,11 +41178,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 17, - "endLine" : 448, + "endLine" : 438, "endColumn" : 48, - "offset" : 22557, + "offset" : 22016, "length" : 31 } } @@ -41200,11 +41200,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 17, - "endLine" : 448, + "endLine" : 438, "endColumn" : 48, - "offset" : 22557, + "offset" : 22016, "length" : 31 } }, @@ -41230,11 +41230,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 17, - "endLine" : 448, + "endLine" : 438, "endColumn" : 48, - "offset" : 22557, + "offset" : 22016, "length" : 31 } } @@ -41252,11 +41252,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 17, - "endLine" : 448, + "endLine" : 438, "endColumn" : 48, - "offset" : 22557, + "offset" : 22016, "length" : 31 } }, @@ -41278,11 +41278,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 448, + "beginLine" : 438, "beginColumn" : 6, - "endLine" : 448, + "endLine" : 438, "endColumn" : 48, - "offset" : 22546, + "offset" : 22005, "length" : 42 } }, @@ -41307,11 +41307,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 447, + "beginLine" : 437, "beginColumn" : 6, - "endLine" : 448, + "endLine" : 438, "endColumn" : 48, - "offset" : 22490, + "offset" : 21949, "length" : 98 } }, @@ -41336,11 +41336,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 444, + "beginLine" : 434, "beginColumn" : 5, - "endLine" : 448, + "endLine" : 438, "endColumn" : 49, - "offset" : 22262, + "offset" : 21721, "length" : 327 } } @@ -41359,11 +41359,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 442, + "beginLine" : 432, "beginColumn" : 4, - "endLine" : 448, + "endLine" : 438, "endColumn" : 49, - "offset" : 22235, + "offset" : 21694, "length" : 354 } } @@ -41371,46 +41371,27 @@ } }, "integration" : { + "type" : "None" + }, + "compute" : { "type" : "Some", "value" : { - "type" : "GclIntegration", + "type" : "GclCompute", + "modifies" : [ + ], "specs" : [ { "type" : "GclAssume", - "id" : "Table_A_12_LowerAlarmTemp", + "id" : "Figure_A_7", "descriptor" : { "type" : "Some", - "value" : "Range [96..101]\n\t\t\t\t\t\t\t\t\t\t\t\t\t|http:\/\/pub.santoslab.org\/high-assurance\/module-requirements\/reading\/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " + "value" : "This is not explicitly stated in the requirements, but a reasonable\n\t\t\t\t\t\t\t\t\t|assumption is that the lower alarm must be at least 1.0f less than\n\t\t\t\t\t\t\t\t\t|the upper alarm in order to account for the 0.5f tolerance\n\t\t\t\t\t\t\t\t\t|http:\/\/pub.santoslab.org\/high-assurance\/module-requirements\/reading\/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " }, "exp" : { "type" : "org.sireum.lang.ast.Exp.Binary", "left" : { "type" : "org.sireum.lang.ast.Exp.Binary", "left" : { - "type" : "org.sireum.lang.ast.Exp.LitF32", - "value" : 96.0, - "attr" : { - "type" : "org.sireum.lang.ast.Attr", - "posOpt" : { - "type" : "Some", - "value" : { - "type" : "Position", - "uriOpt" : { - "type" : "Some", - "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" - }, - "beginLine" : 436, - "beginColumn" : 6, - "endLine" : 436, - "endColumn" : 11, - "offset" : 21893, - "length" : 5 - } - } - } - }, - "op" : "<=", - "right" : { "type" : "org.sireum.lang.ast.Exp.Select", "receiverOpt" : { "type" : "Some", @@ -41418,7 +41399,7 @@ "type" : "org.sireum.lang.ast.Exp.Ident", "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "lower_alarm_temp", + "value" : "upper_alarm_temp", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -41429,11 +41410,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 15, - "endLine" : 436, - "endColumn" : 31, - "offset" : 21902, + "beginLine" : 447, + "beginColumn" : 6, + "endLine" : 447, + "endColumn" : 22, + "offset" : 22492, "length" : 16 } } @@ -41449,11 +41430,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 15, - "endLine" : 436, - "endColumn" : 31, - "offset" : 21902, + "beginLine" : 447, + "beginColumn" : 6, + "endLine" : 447, + "endColumn" : 22, + "offset" : 22492, "length" : 16 } }, @@ -41468,7 +41449,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -41479,12 +41460,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 32, - "endLine" : 436, - "endColumn" : 37, - "offset" : 21919, - "length" : 5 + "beginLine" : 447, + "beginColumn" : 23, + "endLine" : 447, + "endColumn" : 30, + "offset" : 22509, + "length" : 7 } } } @@ -41501,12 +41482,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 15, - "endLine" : 436, - "endColumn" : 37, - "offset" : 21902, - "length" : 22 + "beginLine" : 447, + "beginColumn" : 6, + "endLine" : 447, + "endColumn" : 30, + "offset" : 22492, + "length" : 24 } }, "resOpt" : { @@ -41517,39 +41498,8 @@ } } }, - "attr" : { - "type" : "org.sireum.lang.ast.ResolvedAttr", - "posOpt" : { - "type" : "Some", - "value" : { - "type" : "Position", - "uriOpt" : { - "type" : "Some", - "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" - }, - "beginLine" : 436, - "beginColumn" : 6, - "endLine" : 436, - "endColumn" : 37, - "offset" : 21893, - "length" : 31 - } - }, - "resOpt" : { - "type" : "None" - }, - "typedOpt" : { - "type" : "None" - } - }, - "opPosOpt" : { - "type" : "None" - } - }, - "op" : "&&", - "right" : { - "type" : "org.sireum.lang.ast.Exp.Binary", - "left" : { + "op" : "-", + "right" : { "type" : "org.sireum.lang.ast.Exp.Select", "receiverOpt" : { "type" : "Some", @@ -41568,11 +41518,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 41, - "endLine" : 436, - "endColumn" : 57, - "offset" : 21928, + "beginLine" : 447, + "beginColumn" : 33, + "endLine" : 447, + "endColumn" : 49, + "offset" : 22519, "length" : 16 } } @@ -41588,11 +41538,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 41, - "endLine" : 436, - "endColumn" : 57, - "offset" : 21928, + "beginLine" : 447, + "beginColumn" : 33, + "endLine" : 447, + "endColumn" : 49, + "offset" : 22519, "length" : 16 } }, @@ -41607,7 +41557,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -41618,12 +41568,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 58, - "endLine" : 436, - "endColumn" : 63, - "offset" : 21945, - "length" : 5 + "beginLine" : 447, + "beginColumn" : 50, + "endLine" : 447, + "endColumn" : 57, + "offset" : 22536, + "length" : 7 } } } @@ -41640,12 +41590,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 41, - "endLine" : 436, - "endColumn" : 63, - "offset" : 21928, - "length" : 22 + "beginLine" : 447, + "beginColumn" : 33, + "endLine" : 447, + "endColumn" : 57, + "offset" : 22519, + "length" : 24 } }, "resOpt" : { @@ -41656,30 +41606,6 @@ } } }, - "op" : "<=", - "right" : { - "type" : "org.sireum.lang.ast.Exp.LitF32", - "value" : 101.0, - "attr" : { - "type" : "org.sireum.lang.ast.Attr", - "posOpt" : { - "type" : "Some", - "value" : { - "type" : "Position", - "uriOpt" : { - "type" : "Some", - "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" - }, - "beginLine" : 436, - "beginColumn" : 67, - "endLine" : 436, - "endColumn" : 73, - "offset" : 21954, - "length" : 6 - } - } - } - }, "attr" : { "type" : "org.sireum.lang.ast.ResolvedAttr", "posOpt" : { @@ -41690,12 +41616,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, - "beginColumn" : 41, - "endLine" : 436, - "endColumn" : 73, - "offset" : 21928, - "length" : 32 + "beginLine" : 447, + "beginColumn" : 6, + "endLine" : 447, + "endColumn" : 57, + "offset" : 22492, + "length" : 51 } }, "resOpt" : { @@ -41709,6 +41635,30 @@ "type" : "None" } }, + "op" : ">=", + "right" : { + "type" : "org.sireum.lang.ast.Exp.LitF32", + "value" : 1.0, + "attr" : { + "type" : "org.sireum.lang.ast.Attr", + "posOpt" : { + "type" : "Some", + "value" : { + "type" : "Position", + "uriOpt" : { + "type" : "Some", + "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" + }, + "beginLine" : 447, + "beginColumn" : 61, + "endLine" : 447, + "endColumn" : 65, + "offset" : 22547, + "length" : 4 + } + } + } + }, "attr" : { "type" : "org.sireum.lang.ast.ResolvedAttr", "posOpt" : { @@ -41719,12 +41669,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 436, + "beginLine" : 447, "beginColumn" : 6, - "endLine" : 436, - "endColumn" : 73, - "offset" : 21893, - "length" : 67 + "endLine" : 447, + "endColumn" : 65, + "offset" : 22492, + "length" : 59 } }, "resOpt" : { @@ -41748,22 +41698,22 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 434, + "beginLine" : 443, "beginColumn" : 5, - "endLine" : 436, - "endColumn" : 74, - "offset" : 21709, - "length" : 252 + "endLine" : 447, + "endColumn" : 66, + "offset" : 22129, + "length" : 423 } } } }, { "type" : "GclAssume", - "id" : "Table_A_12_UpperAlarmTemp", + "id" : "Table_A_12_LowerAlarmTemp", "descriptor" : { "type" : "Some", - "value" : "Range [97..102]\n\t\t\t\t\t\t\t\t\t\t\t\t|http:\/\/pub.santoslab.org\/high-assurance\/module-requirements\/reading\/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " + "value" : "Range [96..101]\n\t\t\t\t\t\t\t\t\t\t\t\t\t|http:\/\/pub.santoslab.org\/high-assurance\/module-requirements\/reading\/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " }, "exp" : { "type" : "org.sireum.lang.ast.Exp.Binary", @@ -41771,7 +41721,7 @@ "type" : "org.sireum.lang.ast.Exp.Binary", "left" : { "type" : "org.sireum.lang.ast.Exp.LitF32", - "value" : 97.0, + "value" : 96.0, "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -41782,11 +41732,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, + "beginLine" : 451, "beginColumn" : 6, - "endLine" : 440, + "endLine" : 451, "endColumn" : 11, - "offset" : 22154, + "offset" : 22745, "length" : 5 } } @@ -41801,7 +41751,7 @@ "type" : "org.sireum.lang.ast.Exp.Ident", "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "upper_alarm_temp", + "value" : "lower_alarm_temp", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -41812,11 +41762,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, + "beginLine" : 451, "beginColumn" : 15, - "endLine" : 440, + "endLine" : 451, "endColumn" : 31, - "offset" : 22163, + "offset" : 22754, "length" : 16 } } @@ -41832,11 +41782,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, + "beginLine" : 451, "beginColumn" : 15, - "endLine" : 440, + "endLine" : 451, "endColumn" : 31, - "offset" : 22163, + "offset" : 22754, "length" : 16 } }, @@ -41851,7 +41801,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -41862,12 +41812,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, + "beginLine" : 451, "beginColumn" : 32, - "endLine" : 440, - "endColumn" : 37, - "offset" : 22180, - "length" : 5 + "endLine" : 451, + "endColumn" : 39, + "offset" : 22771, + "length" : 7 } } } @@ -41884,12 +41834,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, + "beginLine" : 451, "beginColumn" : 15, - "endLine" : 440, - "endColumn" : 37, - "offset" : 22163, - "length" : 22 + "endLine" : 451, + "endColumn" : 39, + "offset" : 22754, + "length" : 24 } }, "resOpt" : { @@ -41910,12 +41860,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, + "beginLine" : 451, "beginColumn" : 6, - "endLine" : 440, - "endColumn" : 37, - "offset" : 22154, - "length" : 31 + "endLine" : 451, + "endColumn" : 39, + "offset" : 22745, + "length" : 33 } }, "resOpt" : { @@ -41940,7 +41890,7 @@ "type" : "org.sireum.lang.ast.Exp.Ident", "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "upper_alarm_temp", + "value" : "lower_alarm_temp", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -41951,11 +41901,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, - "beginColumn" : 41, - "endLine" : 440, - "endColumn" : 57, - "offset" : 22189, + "beginLine" : 451, + "beginColumn" : 43, + "endLine" : 451, + "endColumn" : 59, + "offset" : 22782, "length" : 16 } } @@ -41971,11 +41921,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, - "beginColumn" : 41, - "endLine" : 440, - "endColumn" : 57, - "offset" : 22189, + "beginLine" : 451, + "beginColumn" : 43, + "endLine" : 451, + "endColumn" : 59, + "offset" : 22782, "length" : 16 } }, @@ -41990,7 +41940,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -42001,12 +41951,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, - "beginColumn" : 58, - "endLine" : 440, - "endColumn" : 63, - "offset" : 22206, - "length" : 5 + "beginLine" : 451, + "beginColumn" : 60, + "endLine" : 451, + "endColumn" : 67, + "offset" : 22799, + "length" : 7 } } } @@ -42023,12 +41973,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, - "beginColumn" : 41, - "endLine" : 440, - "endColumn" : 63, - "offset" : 22189, - "length" : 22 + "beginLine" : 451, + "beginColumn" : 43, + "endLine" : 451, + "endColumn" : 67, + "offset" : 22782, + "length" : 24 } }, "resOpt" : { @@ -42042,7 +41992,7 @@ "op" : "<=", "right" : { "type" : "org.sireum.lang.ast.Exp.LitF32", - "value" : 102.0, + "value" : 101.0, "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -42053,11 +42003,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, - "beginColumn" : 67, - "endLine" : 440, - "endColumn" : 73, - "offset" : 22215, + "beginLine" : 451, + "beginColumn" : 71, + "endLine" : 451, + "endColumn" : 77, + "offset" : 22810, "length" : 6 } } @@ -42073,12 +42023,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, - "beginColumn" : 41, - "endLine" : 440, - "endColumn" : 73, - "offset" : 22189, - "length" : 32 + "beginLine" : 451, + "beginColumn" : 43, + "endLine" : 451, + "endColumn" : 77, + "offset" : 22782, + "length" : 34 } }, "resOpt" : { @@ -42102,12 +42052,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 440, + "beginLine" : 451, "beginColumn" : 6, - "endLine" : 440, - "endColumn" : 73, - "offset" : 22154, - "length" : 67 + "endLine" : 451, + "endColumn" : 77, + "offset" : 22745, + "length" : 71 } }, "resOpt" : { @@ -42131,57 +42081,52 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 438, + "beginLine" : 449, "beginColumn" : 5, - "endLine" : 440, - "endColumn" : 74, - "offset" : 21971, - "length" : 251 + "endLine" : 451, + "endColumn" : 78, + "offset" : 22561, + "length" : 256 } } } - } - ], - "attr" : { - "type" : "Attr", - "posOpt" : { - "type" : "Some", - "value" : { - "type" : "Position", - "uriOpt" : { - "type" : "Some", - "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" - }, - "beginLine" : 432, - "beginColumn" : 4, - "endLine" : 440, - "endColumn" : 74, - "offset" : 21689, - "length" : 533 - } - } - } - } - }, - "compute" : { - "type" : "Some", - "value" : { - "type" : "GclCompute", - "modifies" : [ - ], - "specs" : [ + }, { "type" : "GclAssume", - "id" : "Figure_A_7", + "id" : "Table_A_12_UpperAlarmTemp", "descriptor" : { "type" : "Some", - "value" : "This is not explicitly stated in the requirements, but a reasonable\n\t\t\t\t\t\t\t\t\t|assumption is that the lower alarm must be at least 1.0f less than\n\t\t\t\t\t\t\t\t\t|the upper alarm in order to account for the 0.5f tolerance\n\t\t\t\t\t\t\t\t\t|http:\/\/pub.santoslab.org\/high-assurance\/module-requirements\/reading\/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " + "value" : "Range [97..102]\n\t\t\t\t\t\t\t\t\t\t\t\t|http:\/\/pub.santoslab.org\/high-assurance\/module-requirements\/reading\/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " }, "exp" : { "type" : "org.sireum.lang.ast.Exp.Binary", "left" : { "type" : "org.sireum.lang.ast.Exp.Binary", "left" : { + "type" : "org.sireum.lang.ast.Exp.LitF32", + "value" : 97.0, + "attr" : { + "type" : "org.sireum.lang.ast.Attr", + "posOpt" : { + "type" : "Some", + "value" : { + "type" : "Position", + "uriOpt" : { + "type" : "Some", + "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" + }, + "beginLine" : 455, + "beginColumn" : 6, + "endLine" : 455, + "endColumn" : 11, + "offset" : 23010, + "length" : 5 + } + } + } + }, + "op" : "<=", + "right" : { "type" : "org.sireum.lang.ast.Exp.Select", "receiverOpt" : { "type" : "Some", @@ -42200,11 +42145,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 6, - "endLine" : 457, - "endColumn" : 22, - "offset" : 23033, + "beginLine" : 455, + "beginColumn" : 15, + "endLine" : 455, + "endColumn" : 31, + "offset" : 23019, "length" : 16 } } @@ -42220,11 +42165,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 6, - "endLine" : 457, - "endColumn" : 22, - "offset" : 23033, + "beginLine" : 455, + "beginColumn" : 15, + "endLine" : 455, + "endColumn" : 31, + "offset" : 23019, "length" : 16 } }, @@ -42239,7 +42184,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -42250,12 +42195,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 23, - "endLine" : 457, - "endColumn" : 28, - "offset" : 23050, - "length" : 5 + "beginLine" : 455, + "beginColumn" : 32, + "endLine" : 455, + "endColumn" : 39, + "offset" : 23036, + "length" : 7 } } } @@ -42272,12 +42217,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 6, - "endLine" : 457, - "endColumn" : 28, - "offset" : 23033, - "length" : 22 + "beginLine" : 455, + "beginColumn" : 15, + "endLine" : 455, + "endColumn" : 39, + "offset" : 23019, + "length" : 24 } }, "resOpt" : { @@ -42288,8 +42233,39 @@ } } }, - "op" : "-", - "right" : { + "attr" : { + "type" : "org.sireum.lang.ast.ResolvedAttr", + "posOpt" : { + "type" : "Some", + "value" : { + "type" : "Position", + "uriOpt" : { + "type" : "Some", + "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" + }, + "beginLine" : 455, + "beginColumn" : 6, + "endLine" : 455, + "endColumn" : 39, + "offset" : 23010, + "length" : 33 + } + }, + "resOpt" : { + "type" : "None" + }, + "typedOpt" : { + "type" : "None" + } + }, + "opPosOpt" : { + "type" : "None" + } + }, + "op" : "&&", + "right" : { + "type" : "org.sireum.lang.ast.Exp.Binary", + "left" : { "type" : "org.sireum.lang.ast.Exp.Select", "receiverOpt" : { "type" : "Some", @@ -42297,7 +42273,7 @@ "type" : "org.sireum.lang.ast.Exp.Ident", "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "lower_alarm_temp", + "value" : "upper_alarm_temp", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -42308,11 +42284,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 31, - "endLine" : 457, - "endColumn" : 47, - "offset" : 23058, + "beginLine" : 455, + "beginColumn" : 43, + "endLine" : 455, + "endColumn" : 59, + "offset" : 23047, "length" : 16 } } @@ -42328,11 +42304,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 31, - "endLine" : 457, - "endColumn" : 47, - "offset" : 23058, + "beginLine" : 455, + "beginColumn" : 43, + "endLine" : 455, + "endColumn" : 59, + "offset" : 23047, "length" : 16 } }, @@ -42347,7 +42323,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -42358,12 +42334,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 48, - "endLine" : 457, - "endColumn" : 53, - "offset" : 23075, - "length" : 5 + "beginLine" : 455, + "beginColumn" : 60, + "endLine" : 455, + "endColumn" : 67, + "offset" : 23064, + "length" : 7 } } } @@ -42380,12 +42356,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 31, - "endLine" : 457, - "endColumn" : 53, - "offset" : 23058, - "length" : 22 + "beginLine" : 455, + "beginColumn" : 43, + "endLine" : 455, + "endColumn" : 67, + "offset" : 23047, + "length" : 24 } }, "resOpt" : { @@ -42396,6 +42372,30 @@ } } }, + "op" : "<=", + "right" : { + "type" : "org.sireum.lang.ast.Exp.LitF32", + "value" : 102.0, + "attr" : { + "type" : "org.sireum.lang.ast.Attr", + "posOpt" : { + "type" : "Some", + "value" : { + "type" : "Position", + "uriOpt" : { + "type" : "Some", + "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" + }, + "beginLine" : 455, + "beginColumn" : 71, + "endLine" : 455, + "endColumn" : 77, + "offset" : 23075, + "length" : 6 + } + } + } + }, "attr" : { "type" : "org.sireum.lang.ast.ResolvedAttr", "posOpt" : { @@ -42406,12 +42406,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, - "beginColumn" : 6, - "endLine" : 457, - "endColumn" : 53, - "offset" : 23033, - "length" : 47 + "beginLine" : 455, + "beginColumn" : 43, + "endLine" : 455, + "endColumn" : 77, + "offset" : 23047, + "length" : 34 } }, "resOpt" : { @@ -42425,30 +42425,6 @@ "type" : "None" } }, - "op" : ">=", - "right" : { - "type" : "org.sireum.lang.ast.Exp.LitF32", - "value" : 1.0, - "attr" : { - "type" : "org.sireum.lang.ast.Attr", - "posOpt" : { - "type" : "Some", - "value" : { - "type" : "Position", - "uriOpt" : { - "type" : "Some", - "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" - }, - "beginLine" : 457, - "beginColumn" : 57, - "endLine" : 457, - "endColumn" : 61, - "offset" : 23084, - "length" : 4 - } - } - } - }, "attr" : { "type" : "org.sireum.lang.ast.ResolvedAttr", "posOpt" : { @@ -42459,12 +42435,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 457, + "beginLine" : 455, "beginColumn" : 6, - "endLine" : 457, - "endColumn" : 61, - "offset" : 23033, - "length" : 55 + "endLine" : 455, + "endColumn" : 77, + "offset" : 23010, + "length" : 71 } }, "resOpt" : { @@ -42490,10 +42466,10 @@ }, "beginLine" : 453, "beginColumn" : 5, - "endLine" : 457, - "endColumn" : 62, - "offset" : 22670, - "length" : 419 + "endLine" : 455, + "endColumn" : 78, + "offset" : 22827, + "length" : 255 } } } @@ -42524,11 +42500,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 14, - "endLine" : 464, + "endLine" : 462, "endColumn" : 26, - "offset" : 23341, + "offset" : 23334, "length" : 12 } } @@ -42544,11 +42520,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 14, - "endLine" : 464, + "endLine" : 462, "endColumn" : 26, - "offset" : 23341, + "offset" : 23334, "length" : 12 } }, @@ -42584,11 +42560,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 30, - "endLine" : 464, + "endLine" : 462, "endColumn" : 81, - "offset" : 23357, + "offset" : 23350, "length" : 51 } } @@ -42604,11 +42580,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 30, - "endLine" : 464, + "endLine" : 462, "endColumn" : 81, - "offset" : 23357, + "offset" : 23350, "length" : 51 } }, @@ -42634,11 +42610,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 30, - "endLine" : 464, + "endLine" : 462, "endColumn" : 81, - "offset" : 23357, + "offset" : 23350, "length" : 51 } } @@ -42656,11 +42632,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 30, - "endLine" : 464, + "endLine" : 462, "endColumn" : 81, - "offset" : 23357, + "offset" : 23350, "length" : 51 } }, @@ -42686,11 +42662,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 30, - "endLine" : 464, + "endLine" : 462, "endColumn" : 81, - "offset" : 23357, + "offset" : 23350, "length" : 51 } } @@ -42708,11 +42684,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 30, - "endLine" : 464, + "endLine" : 462, "endColumn" : 81, - "offset" : 23357, + "offset" : 23350, "length" : 51 } }, @@ -42734,11 +42710,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 464, + "beginLine" : 462, "beginColumn" : 14, - "endLine" : 464, + "endLine" : 462, "endColumn" : 81, - "offset" : 23341, + "offset" : 23334, "length" : 67 } }, @@ -42772,11 +42748,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 17, - "endLine" : 465, + "endLine" : 463, "endColumn" : 30, - "offset" : 23426, + "offset" : 23419, "length" : 13 } } @@ -42792,11 +42768,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 17, - "endLine" : 465, + "endLine" : 463, "endColumn" : 30, - "offset" : 23426, + "offset" : 23419, "length" : 13 } }, @@ -42832,11 +42808,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 34, - "endLine" : 465, + "endLine" : 463, "endColumn" : 65, - "offset" : 23443, + "offset" : 23436, "length" : 31 } } @@ -42852,11 +42828,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 34, - "endLine" : 465, + "endLine" : 463, "endColumn" : 65, - "offset" : 23443, + "offset" : 23436, "length" : 31 } }, @@ -42882,11 +42858,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 34, - "endLine" : 465, + "endLine" : 463, "endColumn" : 65, - "offset" : 23443, + "offset" : 23436, "length" : 31 } } @@ -42904,11 +42880,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 34, - "endLine" : 465, + "endLine" : 463, "endColumn" : 65, - "offset" : 23443, + "offset" : 23436, "length" : 31 } }, @@ -42934,11 +42910,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 34, - "endLine" : 465, + "endLine" : 463, "endColumn" : 65, - "offset" : 23443, + "offset" : 23436, "length" : 31 } } @@ -42956,11 +42932,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 34, - "endLine" : 465, + "endLine" : 463, "endColumn" : 65, - "offset" : 23443, + "offset" : 23436, "length" : 31 } }, @@ -42982,11 +42958,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 17, - "endLine" : 465, + "endLine" : 463, "endColumn" : 65, - "offset" : 23426, + "offset" : 23419, "length" : 48 } }, @@ -43019,11 +42995,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 8, - "endLine" : 467, + "endLine" : 465, "endColumn" : 15, - "offset" : 23491, + "offset" : 23484, "length" : 7 } } @@ -43039,11 +43015,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 8, - "endLine" : 467, + "endLine" : 465, "endColumn" : 15, - "offset" : 23491, + "offset" : 23484, "length" : 7 } }, @@ -43079,11 +43055,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 19, - "endLine" : 467, + "endLine" : 465, "endColumn" : 50, - "offset" : 23502, + "offset" : 23495, "length" : 31 } } @@ -43099,11 +43075,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 19, - "endLine" : 467, + "endLine" : 465, "endColumn" : 50, - "offset" : 23502, + "offset" : 23495, "length" : 31 } }, @@ -43129,11 +43105,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 19, - "endLine" : 467, + "endLine" : 465, "endColumn" : 50, - "offset" : 23502, + "offset" : 23495, "length" : 31 } } @@ -43151,11 +43127,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 19, - "endLine" : 467, + "endLine" : 465, "endColumn" : 50, - "offset" : 23502, + "offset" : 23495, "length" : 31 } }, @@ -43181,11 +43157,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 19, - "endLine" : 467, + "endLine" : 465, "endColumn" : 50, - "offset" : 23502, + "offset" : 23495, "length" : 31 } } @@ -43203,11 +43179,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 19, - "endLine" : 467, + "endLine" : 465, "endColumn" : 50, - "offset" : 23502, + "offset" : 23495, "length" : 31 } }, @@ -43229,11 +43205,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 467, + "beginLine" : 465, "beginColumn" : 8, - "endLine" : 467, + "endLine" : 465, "endColumn" : 50, - "offset" : 23491, + "offset" : 23484, "length" : 42 } }, @@ -43258,11 +43234,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 465, + "beginLine" : 463, "beginColumn" : 17, - "endLine" : 467, + "endLine" : 465, "endColumn" : 50, - "offset" : 23426, + "offset" : 23419, "length" : 107 } }, @@ -43287,11 +43263,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 461, + "beginLine" : 459, "beginColumn" : 6, - "endLine" : 467, + "endLine" : 465, "endColumn" : 51, - "offset" : 23110, + "offset" : 23103, "length" : 424 } } @@ -43323,11 +43299,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 14, - "endLine" : 473, + "endLine" : 471, "endColumn" : 26, - "offset" : 23899, + "offset" : 23892, "length" : 12 } } @@ -43343,11 +43319,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 14, - "endLine" : 473, + "endLine" : 471, "endColumn" : 26, - "offset" : 23899, + "offset" : 23892, "length" : 12 } }, @@ -43383,11 +43359,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 30, - "endLine" : 473, + "endLine" : 471, "endColumn" : 83, - "offset" : 23915, + "offset" : 23908, "length" : 53 } } @@ -43403,11 +43379,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 30, - "endLine" : 473, + "endLine" : 471, "endColumn" : 83, - "offset" : 23915, + "offset" : 23908, "length" : 53 } }, @@ -43433,11 +43409,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 30, - "endLine" : 473, + "endLine" : 471, "endColumn" : 83, - "offset" : 23915, + "offset" : 23908, "length" : 53 } } @@ -43455,11 +43431,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 30, - "endLine" : 473, + "endLine" : 471, "endColumn" : 83, - "offset" : 23915, + "offset" : 23908, "length" : 53 } }, @@ -43485,11 +43461,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 30, - "endLine" : 473, + "endLine" : 471, "endColumn" : 83, - "offset" : 23915, + "offset" : 23908, "length" : 53 } } @@ -43507,11 +43483,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 30, - "endLine" : 473, + "endLine" : 471, "endColumn" : 83, - "offset" : 23915, + "offset" : 23908, "length" : 53 } }, @@ -43533,11 +43509,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 14, - "endLine" : 473, + "endLine" : 471, "endColumn" : 83, - "offset" : 23899, + "offset" : 23892, "length" : 69 } }, @@ -43576,11 +43552,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, + "beginLine" : 473, "beginColumn" : 9, - "endLine" : 475, + "endLine" : 473, "endColumn" : 28, - "offset" : 23986, + "offset" : 23979, "length" : 19 } } @@ -43596,11 +43572,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, + "beginLine" : 473, "beginColumn" : 9, - "endLine" : 475, + "endLine" : 473, "endColumn" : 28, - "offset" : 23986, + "offset" : 23979, "length" : 19 } }, @@ -43615,7 +43591,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -43626,12 +43602,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, + "beginLine" : 473, "beginColumn" : 29, - "endLine" : 475, - "endColumn" : 34, - "offset" : 24006, - "length" : 5 + "endLine" : 473, + "endColumn" : 36, + "offset" : 23999, + "length" : 7 } } } @@ -43648,12 +43624,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, + "beginLine" : 473, "beginColumn" : 9, - "endLine" : 475, - "endColumn" : 34, - "offset" : 23986, - "length" : 25 + "endLine" : 473, + "endColumn" : 36, + "offset" : 23979, + "length" : 27 } }, "resOpt" : { @@ -43684,11 +43660,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 37, - "endLine" : 475, - "endColumn" : 53, - "offset" : 24014, + "beginLine" : 473, + "beginColumn" : 39, + "endLine" : 473, + "endColumn" : 55, + "offset" : 24009, "length" : 16 } } @@ -43704,11 +43680,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 37, - "endLine" : 475, - "endColumn" : 53, - "offset" : 24014, + "beginLine" : 473, + "beginColumn" : 39, + "endLine" : 473, + "endColumn" : 55, + "offset" : 24009, "length" : 16 } }, @@ -43723,7 +43699,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -43734,12 +43710,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 54, - "endLine" : 475, - "endColumn" : 59, - "offset" : 24031, - "length" : 5 + "beginLine" : 473, + "beginColumn" : 56, + "endLine" : 473, + "endColumn" : 63, + "offset" : 24026, + "length" : 7 } } } @@ -43756,12 +43732,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 37, - "endLine" : 475, - "endColumn" : 59, - "offset" : 24014, - "length" : 22 + "beginLine" : 473, + "beginColumn" : 39, + "endLine" : 473, + "endColumn" : 63, + "offset" : 24009, + "length" : 24 } }, "resOpt" : { @@ -43782,12 +43758,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, + "beginLine" : 473, "beginColumn" : 9, - "endLine" : 475, - "endColumn" : 59, - "offset" : 23986, - "length" : 50 + "endLine" : 473, + "endColumn" : 63, + "offset" : 23979, + "length" : 54 } }, "resOpt" : { @@ -43823,11 +43799,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 63, - "endLine" : 475, - "endColumn" : 82, - "offset" : 24040, + "beginLine" : 473, + "beginColumn" : 67, + "endLine" : 473, + "endColumn" : 86, + "offset" : 24037, "length" : 19 } } @@ -43843,11 +43819,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 63, - "endLine" : 475, - "endColumn" : 82, - "offset" : 24040, + "beginLine" : 473, + "beginColumn" : 67, + "endLine" : 473, + "endColumn" : 86, + "offset" : 24037, "length" : 19 } }, @@ -43862,7 +43838,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -43873,12 +43849,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 83, - "endLine" : 475, - "endColumn" : 88, - "offset" : 24060, - "length" : 5 + "beginLine" : 473, + "beginColumn" : 87, + "endLine" : 473, + "endColumn" : 94, + "offset" : 24057, + "length" : 7 } } } @@ -43895,12 +43871,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 63, - "endLine" : 475, - "endColumn" : 88, - "offset" : 24040, - "length" : 25 + "beginLine" : 473, + "beginColumn" : 67, + "endLine" : 473, + "endColumn" : 94, + "offset" : 24037, + "length" : 27 } }, "resOpt" : { @@ -43931,11 +43907,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 91, - "endLine" : 475, - "endColumn" : 107, - "offset" : 24068, + "beginLine" : 473, + "beginColumn" : 97, + "endLine" : 473, + "endColumn" : 113, + "offset" : 24067, "length" : 16 } } @@ -43951,11 +43927,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 91, - "endLine" : 475, - "endColumn" : 107, - "offset" : 24068, + "beginLine" : 473, + "beginColumn" : 97, + "endLine" : 473, + "endColumn" : 113, + "offset" : 24067, "length" : 16 } }, @@ -43970,7 +43946,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -43981,12 +43957,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 108, - "endLine" : 475, - "endColumn" : 113, - "offset" : 24085, - "length" : 5 + "beginLine" : 473, + "beginColumn" : 114, + "endLine" : 473, + "endColumn" : 121, + "offset" : 24084, + "length" : 7 } } } @@ -44003,12 +43979,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 91, - "endLine" : 475, - "endColumn" : 113, - "offset" : 24068, - "length" : 22 + "beginLine" : 473, + "beginColumn" : 97, + "endLine" : 473, + "endColumn" : 121, + "offset" : 24067, + "length" : 24 } }, "resOpt" : { @@ -44029,12 +44005,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, - "beginColumn" : 63, - "endLine" : 475, - "endColumn" : 113, - "offset" : 24040, - "length" : 50 + "beginLine" : 473, + "beginColumn" : 67, + "endLine" : 473, + "endColumn" : 121, + "offset" : 24037, + "length" : 54 } }, "resOpt" : { @@ -44058,12 +44034,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 475, + "beginLine" : 473, "beginColumn" : 9, - "endLine" : 475, - "endColumn" : 113, - "offset" : 23986, - "length" : 104 + "endLine" : 473, + "endColumn" : 121, + "offset" : 23979, + "length" : 112 } }, "resOpt" : { @@ -44087,12 +44063,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 473, + "beginLine" : 471, "beginColumn" : 14, - "endLine" : 475, - "endColumn" : 113, - "offset" : 23899, - "length" : 191 + "endLine" : 473, + "endColumn" : 121, + "offset" : 23892, + "length" : 199 } }, "resOpt" : { @@ -44125,11 +44101,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 17, - "endLine" : 476, + "endLine" : 474, "endColumn" : 30, - "offset" : 24109, + "offset" : 24110, "length" : 13 } } @@ -44145,11 +44121,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 17, - "endLine" : 476, + "endLine" : 474, "endColumn" : 30, - "offset" : 24109, + "offset" : 24110, "length" : 13 } }, @@ -44185,11 +44161,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 34, - "endLine" : 476, + "endLine" : 474, "endColumn" : 65, - "offset" : 24126, + "offset" : 24127, "length" : 31 } } @@ -44205,11 +44181,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 34, - "endLine" : 476, + "endLine" : 474, "endColumn" : 65, - "offset" : 24126, + "offset" : 24127, "length" : 31 } }, @@ -44235,11 +44211,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 34, - "endLine" : 476, + "endLine" : 474, "endColumn" : 65, - "offset" : 24126, + "offset" : 24127, "length" : 31 } } @@ -44257,11 +44233,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 34, - "endLine" : 476, + "endLine" : 474, "endColumn" : 65, - "offset" : 24126, + "offset" : 24127, "length" : 31 } }, @@ -44287,11 +44263,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 34, - "endLine" : 476, + "endLine" : 474, "endColumn" : 65, - "offset" : 24126, + "offset" : 24127, "length" : 31 } } @@ -44309,11 +44285,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 34, - "endLine" : 476, + "endLine" : 474, "endColumn" : 65, - "offset" : 24126, + "offset" : 24127, "length" : 31 } }, @@ -44335,11 +44311,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 17, - "endLine" : 476, + "endLine" : 474, "endColumn" : 65, - "offset" : 24109, + "offset" : 24110, "length" : 48 } }, @@ -44372,11 +44348,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 8, - "endLine" : 478, + "endLine" : 476, "endColumn" : 15, - "offset" : 24174, + "offset" : 24175, "length" : 7 } } @@ -44392,11 +44368,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 8, - "endLine" : 478, + "endLine" : 476, "endColumn" : 15, - "offset" : 24174, + "offset" : 24175, "length" : 7 } }, @@ -44432,11 +44408,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 19, - "endLine" : 478, + "endLine" : 476, "endColumn" : 50, - "offset" : 24185, + "offset" : 24186, "length" : 31 } } @@ -44452,11 +44428,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 19, - "endLine" : 478, + "endLine" : 476, "endColumn" : 50, - "offset" : 24185, + "offset" : 24186, "length" : 31 } }, @@ -44482,11 +44458,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 19, - "endLine" : 478, + "endLine" : 476, "endColumn" : 50, - "offset" : 24185, + "offset" : 24186, "length" : 31 } } @@ -44504,11 +44480,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 19, - "endLine" : 478, + "endLine" : 476, "endColumn" : 50, - "offset" : 24185, + "offset" : 24186, "length" : 31 } }, @@ -44534,11 +44510,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 19, - "endLine" : 478, + "endLine" : 476, "endColumn" : 50, - "offset" : 24185, + "offset" : 24186, "length" : 31 } } @@ -44556,11 +44532,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 19, - "endLine" : 478, + "endLine" : 476, "endColumn" : 50, - "offset" : 24185, + "offset" : 24186, "length" : 31 } }, @@ -44582,11 +44558,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 478, + "beginLine" : 476, "beginColumn" : 8, - "endLine" : 478, + "endLine" : 476, "endColumn" : 50, - "offset" : 24174, + "offset" : 24175, "length" : 42 } }, @@ -44611,11 +44587,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 476, + "beginLine" : 474, "beginColumn" : 17, - "endLine" : 478, + "endLine" : 476, "endColumn" : 50, - "offset" : 24109, + "offset" : 24110, "length" : 107 } }, @@ -44640,12 +44616,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 469, + "beginLine" : 467, "beginColumn" : 6, - "endLine" : 478, + "endLine" : 476, "endColumn" : 51, - "offset" : 23544, - "length" : 673 + "offset" : 23537, + "length" : 681 } } } @@ -44676,11 +44652,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 14, - "endLine" : 487, + "endLine" : 485, "endColumn" : 26, - "offset" : 24796, + "offset" : 24797, "length" : 12 } } @@ -44696,11 +44672,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 14, - "endLine" : 487, + "endLine" : 485, "endColumn" : 26, - "offset" : 24796, + "offset" : 24797, "length" : 12 } }, @@ -44736,11 +44712,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 30, - "endLine" : 487, + "endLine" : 485, "endColumn" : 83, - "offset" : 24812, + "offset" : 24813, "length" : 53 } } @@ -44756,11 +44732,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 30, - "endLine" : 487, + "endLine" : 485, "endColumn" : 83, - "offset" : 24812, + "offset" : 24813, "length" : 53 } }, @@ -44786,11 +44762,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 30, - "endLine" : 487, + "endLine" : 485, "endColumn" : 83, - "offset" : 24812, + "offset" : 24813, "length" : 53 } } @@ -44808,11 +44784,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 30, - "endLine" : 487, + "endLine" : 485, "endColumn" : 83, - "offset" : 24812, + "offset" : 24813, "length" : 53 } }, @@ -44838,11 +44814,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 30, - "endLine" : 487, + "endLine" : 485, "endColumn" : 83, - "offset" : 24812, + "offset" : 24813, "length" : 53 } } @@ -44860,11 +44836,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 30, - "endLine" : 487, + "endLine" : 485, "endColumn" : 83, - "offset" : 24812, + "offset" : 24813, "length" : 53 } }, @@ -44886,11 +44862,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 14, - "endLine" : 487, + "endLine" : 485, "endColumn" : 83, - "offset" : 24796, + "offset" : 24797, "length" : 69 } }, @@ -44931,11 +44907,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, + "beginLine" : 487, "beginColumn" : 10, - "endLine" : 489, + "endLine" : 487, "endColumn" : 29, - "offset" : 24885, + "offset" : 24886, "length" : 19 } } @@ -44951,11 +44927,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, + "beginLine" : 487, "beginColumn" : 10, - "endLine" : 489, + "endLine" : 487, "endColumn" : 29, - "offset" : 24885, + "offset" : 24886, "length" : 19 } }, @@ -44970,7 +44946,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -44981,12 +44957,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, + "beginLine" : 487, "beginColumn" : 30, - "endLine" : 489, - "endColumn" : 35, - "offset" : 24905, - "length" : 5 + "endLine" : 487, + "endColumn" : 37, + "offset" : 24906, + "length" : 7 } } } @@ -45003,12 +44979,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, + "beginLine" : 487, "beginColumn" : 10, - "endLine" : 489, - "endColumn" : 35, - "offset" : 24885, - "length" : 25 + "endLine" : 487, + "endColumn" : 37, + "offset" : 24886, + "length" : 27 } }, "resOpt" : { @@ -45039,11 +45015,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, - "beginColumn" : 39, - "endLine" : 489, - "endColumn" : 55, - "offset" : 24914, + "beginLine" : 487, + "beginColumn" : 41, + "endLine" : 487, + "endColumn" : 57, + "offset" : 24917, "length" : 16 } } @@ -45059,11 +45035,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, - "beginColumn" : 39, - "endLine" : 489, - "endColumn" : 55, - "offset" : 24914, + "beginLine" : 487, + "beginColumn" : 41, + "endLine" : 487, + "endColumn" : 57, + "offset" : 24917, "length" : 16 } }, @@ -45078,7 +45054,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -45089,12 +45065,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, - "beginColumn" : 56, - "endLine" : 489, - "endColumn" : 61, - "offset" : 24931, - "length" : 5 + "beginLine" : 487, + "beginColumn" : 58, + "endLine" : 487, + "endColumn" : 65, + "offset" : 24934, + "length" : 7 } } } @@ -45111,12 +45087,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, - "beginColumn" : 39, - "endLine" : 489, - "endColumn" : 61, - "offset" : 24914, - "length" : 22 + "beginLine" : 487, + "beginColumn" : 41, + "endLine" : 487, + "endColumn" : 65, + "offset" : 24917, + "length" : 24 } }, "resOpt" : { @@ -45137,12 +45113,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, + "beginLine" : 487, "beginColumn" : 10, - "endLine" : 489, - "endColumn" : 61, - "offset" : 24885, - "length" : 51 + "endLine" : 487, + "endColumn" : 65, + "offset" : 24886, + "length" : 55 } }, "resOpt" : { @@ -45178,11 +45154,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, + "beginLine" : 488, "beginColumn" : 9, - "endLine" : 490, + "endLine" : 488, "endColumn" : 28, - "offset" : 24948, + "offset" : 24953, "length" : 19 } } @@ -45198,11 +45174,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, + "beginLine" : 488, "beginColumn" : 9, - "endLine" : 490, + "endLine" : 488, "endColumn" : 28, - "offset" : 24948, + "offset" : 24953, "length" : 19 } }, @@ -45217,7 +45193,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -45228,12 +45204,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, + "beginLine" : 488, "beginColumn" : 29, - "endLine" : 490, - "endColumn" : 34, - "offset" : 24968, - "length" : 5 + "endLine" : 488, + "endColumn" : 36, + "offset" : 24973, + "length" : 7 } } } @@ -45250,12 +45226,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, + "beginLine" : 488, "beginColumn" : 9, - "endLine" : 490, - "endColumn" : 34, - "offset" : 24948, - "length" : 25 + "endLine" : 488, + "endColumn" : 36, + "offset" : 24953, + "length" : 27 } }, "resOpt" : { @@ -45288,11 +45264,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, - "beginColumn" : 37, - "endLine" : 490, - "endColumn" : 53, - "offset" : 24976, + "beginLine" : 488, + "beginColumn" : 39, + "endLine" : 488, + "endColumn" : 55, + "offset" : 24983, "length" : 16 } } @@ -45308,11 +45284,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, - "beginColumn" : 37, - "endLine" : 490, - "endColumn" : 53, - "offset" : 24976, + "beginLine" : 488, + "beginColumn" : 39, + "endLine" : 488, + "endColumn" : 55, + "offset" : 24983, "length" : 16 } }, @@ -45327,7 +45303,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -45338,12 +45314,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, - "beginColumn" : 54, - "endLine" : 490, - "endColumn" : 59, - "offset" : 24993, - "length" : 5 + "beginLine" : 488, + "beginColumn" : 56, + "endLine" : 488, + "endColumn" : 63, + "offset" : 25000, + "length" : 7 } } } @@ -45360,12 +45336,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, - "beginColumn" : 37, - "endLine" : 490, - "endColumn" : 59, - "offset" : 24976, - "length" : 22 + "beginLine" : 488, + "beginColumn" : 39, + "endLine" : 488, + "endColumn" : 63, + "offset" : 24983, + "length" : 24 } }, "resOpt" : { @@ -45390,11 +45366,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, - "beginColumn" : 62, - "endLine" : 490, - "endColumn" : 70, - "offset" : 25001, + "beginLine" : 488, + "beginColumn" : 66, + "endLine" : 488, + "endColumn" : 74, + "offset" : 25010, "length" : 8 } } @@ -45410,12 +45386,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, - "beginColumn" : 37, - "endLine" : 490, - "endColumn" : 70, - "offset" : 24976, - "length" : 33 + "beginLine" : 488, + "beginColumn" : 39, + "endLine" : 488, + "endColumn" : 74, + "offset" : 24983, + "length" : 35 } }, "resOpt" : { @@ -45439,12 +45415,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 490, + "beginLine" : 488, "beginColumn" : 9, - "endLine" : 490, - "endColumn" : 70, - "offset" : 24948, - "length" : 61 + "endLine" : 488, + "endColumn" : 74, + "offset" : 24953, + "length" : 65 } }, "resOpt" : { @@ -45468,12 +45444,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, + "beginLine" : 487, "beginColumn" : 10, - "endLine" : 490, - "endColumn" : 70, - "offset" : 24885, - "length" : 124 + "endLine" : 488, + "endColumn" : 74, + "offset" : 24886, + "length" : 132 } }, "resOpt" : { @@ -45511,11 +45487,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, + "beginLine" : 489, "beginColumn" : 10, - "endLine" : 491, + "endLine" : 489, "endColumn" : 29, - "offset" : 25023, + "offset" : 25032, "length" : 19 } } @@ -45531,11 +45507,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, + "beginLine" : 489, "beginColumn" : 10, - "endLine" : 491, + "endLine" : 489, "endColumn" : 29, - "offset" : 25023, + "offset" : 25032, "length" : 19 } }, @@ -45550,7 +45526,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -45561,12 +45537,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, + "beginLine" : 489, "beginColumn" : 30, - "endLine" : 491, - "endColumn" : 35, - "offset" : 25043, - "length" : 5 + "endLine" : 489, + "endColumn" : 37, + "offset" : 25052, + "length" : 7 } } } @@ -45583,12 +45559,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, + "beginLine" : 489, "beginColumn" : 10, - "endLine" : 491, - "endColumn" : 35, - "offset" : 25023, - "length" : 25 + "endLine" : 489, + "endColumn" : 37, + "offset" : 25032, + "length" : 27 } }, "resOpt" : { @@ -45621,11 +45597,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, - "beginColumn" : 38, - "endLine" : 491, - "endColumn" : 54, - "offset" : 25051, + "beginLine" : 489, + "beginColumn" : 40, + "endLine" : 489, + "endColumn" : 56, + "offset" : 25062, "length" : 16 } } @@ -45641,11 +45617,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, - "beginColumn" : 38, - "endLine" : 491, - "endColumn" : 54, - "offset" : 25051, + "beginLine" : 489, + "beginColumn" : 40, + "endLine" : 489, + "endColumn" : 56, + "offset" : 25062, "length" : 16 } }, @@ -45660,7 +45636,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -45671,12 +45647,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, - "beginColumn" : 55, - "endLine" : 491, - "endColumn" : 60, - "offset" : 25068, - "length" : 5 + "beginLine" : 489, + "beginColumn" : 57, + "endLine" : 489, + "endColumn" : 64, + "offset" : 25079, + "length" : 7 } } } @@ -45693,12 +45669,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, - "beginColumn" : 38, - "endLine" : 491, - "endColumn" : 60, - "offset" : 25051, - "length" : 22 + "beginLine" : 489, + "beginColumn" : 40, + "endLine" : 489, + "endColumn" : 64, + "offset" : 25062, + "length" : 24 } }, "resOpt" : { @@ -45723,11 +45699,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, - "beginColumn" : 63, - "endLine" : 491, - "endColumn" : 71, - "offset" : 25076, + "beginLine" : 489, + "beginColumn" : 67, + "endLine" : 489, + "endColumn" : 75, + "offset" : 25089, "length" : 8 } } @@ -45743,12 +45719,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, - "beginColumn" : 38, - "endLine" : 491, - "endColumn" : 71, - "offset" : 25051, - "length" : 33 + "beginLine" : 489, + "beginColumn" : 40, + "endLine" : 489, + "endColumn" : 75, + "offset" : 25062, + "length" : 35 } }, "resOpt" : { @@ -45772,12 +45748,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, + "beginLine" : 489, "beginColumn" : 10, - "endLine" : 491, - "endColumn" : 71, - "offset" : 25023, - "length" : 61 + "endLine" : 489, + "endColumn" : 75, + "offset" : 25032, + "length" : 65 } }, "resOpt" : { @@ -45813,11 +45789,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, + "beginLine" : 490, "beginColumn" : 9, - "endLine" : 492, + "endLine" : 490, "endColumn" : 28, - "offset" : 25097, + "offset" : 25110, "length" : 19 } } @@ -45833,11 +45809,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, + "beginLine" : 490, "beginColumn" : 9, - "endLine" : 492, + "endLine" : 490, "endColumn" : 28, - "offset" : 25097, + "offset" : 25110, "length" : 19 } }, @@ -45852,7 +45828,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -45863,12 +45839,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, + "beginLine" : 490, "beginColumn" : 29, - "endLine" : 492, - "endColumn" : 34, - "offset" : 25117, - "length" : 5 + "endLine" : 490, + "endColumn" : 36, + "offset" : 25130, + "length" : 7 } } } @@ -45885,12 +45861,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, + "beginLine" : 490, "beginColumn" : 9, - "endLine" : 492, - "endColumn" : 34, - "offset" : 25097, - "length" : 25 + "endLine" : 490, + "endColumn" : 36, + "offset" : 25110, + "length" : 27 } }, "resOpt" : { @@ -45921,11 +45897,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, - "beginColumn" : 38, - "endLine" : 492, - "endColumn" : 54, - "offset" : 25126, + "beginLine" : 490, + "beginColumn" : 40, + "endLine" : 490, + "endColumn" : 56, + "offset" : 25141, "length" : 16 } } @@ -45941,11 +45917,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, - "beginColumn" : 38, - "endLine" : 492, - "endColumn" : 54, - "offset" : 25126, + "beginLine" : 490, + "beginColumn" : 40, + "endLine" : 490, + "endColumn" : 56, + "offset" : 25141, "length" : 16 } }, @@ -45960,7 +45936,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -45971,12 +45947,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, - "beginColumn" : 55, - "endLine" : 492, - "endColumn" : 60, - "offset" : 25143, - "length" : 5 + "beginLine" : 490, + "beginColumn" : 57, + "endLine" : 490, + "endColumn" : 64, + "offset" : 25158, + "length" : 7 } } } @@ -45993,12 +45969,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, - "beginColumn" : 38, - "endLine" : 492, - "endColumn" : 60, - "offset" : 25126, - "length" : 22 + "beginLine" : 490, + "beginColumn" : 40, + "endLine" : 490, + "endColumn" : 64, + "offset" : 25141, + "length" : 24 } }, "resOpt" : { @@ -46019,12 +45995,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 492, + "beginLine" : 490, "beginColumn" : 9, - "endLine" : 492, - "endColumn" : 60, - "offset" : 25097, - "length" : 51 + "endLine" : 490, + "endColumn" : 64, + "offset" : 25110, + "length" : 55 } }, "resOpt" : { @@ -46048,12 +46024,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 491, + "beginLine" : 489, "beginColumn" : 10, - "endLine" : 492, - "endColumn" : 60, - "offset" : 25023, - "length" : 125 + "endLine" : 490, + "endColumn" : 64, + "offset" : 25032, + "length" : 133 } }, "resOpt" : { @@ -46077,12 +46053,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 489, + "beginLine" : 487, "beginColumn" : 10, - "endLine" : 492, - "endColumn" : 60, - "offset" : 24885, - "length" : 263 + "endLine" : 490, + "endColumn" : 64, + "offset" : 24886, + "length" : 279 } }, "resOpt" : { @@ -46106,12 +46082,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 487, + "beginLine" : 485, "beginColumn" : 14, - "endLine" : 492, - "endColumn" : 60, - "offset" : 24796, - "length" : 352 + "endLine" : 490, + "endColumn" : 64, + "offset" : 24797, + "length" : 368 } }, "resOpt" : { @@ -46144,11 +46120,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 493, + "beginLine" : 491, "beginColumn" : 17, - "endLine" : 493, + "endLine" : 491, "endColumn" : 30, - "offset" : 25168, + "offset" : 25185, "length" : 13 } } @@ -46164,11 +46140,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 493, + "beginLine" : 491, "beginColumn" : 17, - "endLine" : 493, + "endLine" : 491, "endColumn" : 30, - "offset" : 25168, + "offset" : 25185, "length" : 13 } }, @@ -46198,11 +46174,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 493, + "beginLine" : 491, "beginColumn" : 34, - "endLine" : 493, + "endLine" : 491, "endColumn" : 45, - "offset" : 25185, + "offset" : 25202, "length" : 11 } } @@ -46218,11 +46194,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 493, + "beginLine" : 491, "beginColumn" : 34, - "endLine" : 493, + "endLine" : 491, "endColumn" : 45, - "offset" : 25185, + "offset" : 25202, "length" : 11 } }, @@ -46244,11 +46220,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 493, + "beginLine" : 491, "beginColumn" : 34, - "endLine" : 493, + "endLine" : 491, "endColumn" : 45, - "offset" : 25185, + "offset" : 25202, "length" : 11 } } @@ -46264,11 +46240,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 493, + "beginLine" : 491, "beginColumn" : 17, - "endLine" : 493, + "endLine" : 491, "endColumn" : 45, - "offset" : 25168, + "offset" : 25185, "length" : 28 } }, @@ -46301,11 +46277,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 495, + "beginLine" : 493, "beginColumn" : 8, - "endLine" : 495, + "endLine" : 493, "endColumn" : 15, - "offset" : 25213, + "offset" : 25230, "length" : 7 } } @@ -46321,11 +46297,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 495, + "beginLine" : 493, "beginColumn" : 8, - "endLine" : 495, + "endLine" : 493, "endColumn" : 15, - "offset" : 25213, + "offset" : 25230, "length" : 7 } }, @@ -46355,11 +46331,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 495, + "beginLine" : 493, "beginColumn" : 19, - "endLine" : 495, + "endLine" : 493, "endColumn" : 30, - "offset" : 25224, + "offset" : 25241, "length" : 11 } } @@ -46375,11 +46351,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 495, + "beginLine" : 493, "beginColumn" : 19, - "endLine" : 495, + "endLine" : 493, "endColumn" : 30, - "offset" : 25224, + "offset" : 25241, "length" : 11 } }, @@ -46401,11 +46377,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 495, + "beginLine" : 493, "beginColumn" : 19, - "endLine" : 495, + "endLine" : 493, "endColumn" : 30, - "offset" : 25224, + "offset" : 25241, "length" : 11 } } @@ -46421,11 +46397,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 495, + "beginLine" : 493, "beginColumn" : 8, - "endLine" : 495, + "endLine" : 493, "endColumn" : 30, - "offset" : 25213, + "offset" : 25230, "length" : 22 } }, @@ -46450,11 +46426,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 493, + "beginLine" : 491, "beginColumn" : 17, - "endLine" : 495, + "endLine" : 493, "endColumn" : 30, - "offset" : 25168, + "offset" : 25185, "length" : 67 } }, @@ -46479,12 +46455,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 480, + "beginLine" : 478, "beginColumn" : 6, - "endLine" : 495, + "endLine" : 493, "endColumn" : 31, - "offset" : 24231, - "length" : 1005 + "offset" : 24232, + "length" : 1021 } } } @@ -46517,11 +46493,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 14, - "endLine" : 502, + "endLine" : 500, "endColumn" : 26, - "offset" : 25680, + "offset" : 25697, "length" : 12 } } @@ -46537,11 +46513,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 14, - "endLine" : 502, + "endLine" : 500, "endColumn" : 26, - "offset" : 25680, + "offset" : 25697, "length" : 12 } }, @@ -46577,11 +46553,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 30, - "endLine" : 502, + "endLine" : 500, "endColumn" : 83, - "offset" : 25696, + "offset" : 25713, "length" : 53 } } @@ -46597,11 +46573,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 30, - "endLine" : 502, + "endLine" : 500, "endColumn" : 83, - "offset" : 25696, + "offset" : 25713, "length" : 53 } }, @@ -46627,11 +46603,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 30, - "endLine" : 502, + "endLine" : 500, "endColumn" : 83, - "offset" : 25696, + "offset" : 25713, "length" : 53 } } @@ -46649,11 +46625,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 30, - "endLine" : 502, + "endLine" : 500, "endColumn" : 83, - "offset" : 25696, + "offset" : 25713, "length" : 53 } }, @@ -46679,11 +46655,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 30, - "endLine" : 502, + "endLine" : 500, "endColumn" : 83, - "offset" : 25696, + "offset" : 25713, "length" : 53 } } @@ -46701,11 +46677,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 30, - "endLine" : 502, + "endLine" : 500, "endColumn" : 83, - "offset" : 25696, + "offset" : 25713, "length" : 53 } }, @@ -46727,11 +46703,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 14, - "endLine" : 502, + "endLine" : 500, "endColumn" : 83, - "offset" : 25680, + "offset" : 25697, "length" : 69 } }, @@ -46768,11 +46744,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, + "beginLine" : 502, "beginColumn" : 8, - "endLine" : 504, + "endLine" : 502, "endColumn" : 27, - "offset" : 25766, + "offset" : 25783, "length" : 19 } } @@ -46788,11 +46764,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, + "beginLine" : 502, "beginColumn" : 8, - "endLine" : 504, + "endLine" : 502, "endColumn" : 27, - "offset" : 25766, + "offset" : 25783, "length" : 19 } }, @@ -46807,7 +46783,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -46818,12 +46794,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, + "beginLine" : 502, "beginColumn" : 28, - "endLine" : 504, - "endColumn" : 33, - "offset" : 25786, - "length" : 5 + "endLine" : 502, + "endColumn" : 35, + "offset" : 25803, + "length" : 7 } } } @@ -46840,12 +46816,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, + "beginLine" : 502, "beginColumn" : 8, - "endLine" : 504, - "endColumn" : 33, - "offset" : 25766, - "length" : 25 + "endLine" : 502, + "endColumn" : 35, + "offset" : 25783, + "length" : 27 } }, "resOpt" : { @@ -46878,11 +46854,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, - "beginColumn" : 37, - "endLine" : 504, - "endColumn" : 53, - "offset" : 25795, + "beginLine" : 502, + "beginColumn" : 39, + "endLine" : 502, + "endColumn" : 55, + "offset" : 25814, "length" : 16 } } @@ -46898,11 +46874,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, - "beginColumn" : 37, - "endLine" : 504, - "endColumn" : 53, - "offset" : 25795, + "beginLine" : 502, + "beginColumn" : 39, + "endLine" : 502, + "endColumn" : 55, + "offset" : 25814, "length" : 16 } }, @@ -46917,7 +46893,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -46928,12 +46904,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, - "beginColumn" : 54, - "endLine" : 504, - "endColumn" : 59, - "offset" : 25812, - "length" : 5 + "beginLine" : 502, + "beginColumn" : 56, + "endLine" : 502, + "endColumn" : 63, + "offset" : 25831, + "length" : 7 } } } @@ -46950,12 +46926,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, - "beginColumn" : 37, - "endLine" : 504, - "endColumn" : 59, - "offset" : 25795, - "length" : 22 + "beginLine" : 502, + "beginColumn" : 39, + "endLine" : 502, + "endColumn" : 63, + "offset" : 25814, + "length" : 24 } }, "resOpt" : { @@ -46980,11 +46956,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, - "beginColumn" : 62, - "endLine" : 504, - "endColumn" : 70, - "offset" : 25820, + "beginLine" : 502, + "beginColumn" : 66, + "endLine" : 502, + "endColumn" : 74, + "offset" : 25841, "length" : 8 } } @@ -47000,12 +46976,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, - "beginColumn" : 37, - "endLine" : 504, - "endColumn" : 70, - "offset" : 25795, - "length" : 33 + "beginLine" : 502, + "beginColumn" : 39, + "endLine" : 502, + "endColumn" : 74, + "offset" : 25814, + "length" : 35 } }, "resOpt" : { @@ -47029,12 +47005,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 504, + "beginLine" : 502, "beginColumn" : 8, - "endLine" : 504, - "endColumn" : 70, - "offset" : 25766, - "length" : 62 + "endLine" : 502, + "endColumn" : 74, + "offset" : 25783, + "length" : 66 } }, "resOpt" : { @@ -47058,12 +47034,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 14, - "endLine" : 504, - "endColumn" : 70, - "offset" : 25680, - "length" : 148 + "endLine" : 502, + "endColumn" : 74, + "offset" : 25697, + "length" : 152 } }, "resOpt" : { @@ -47099,11 +47075,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, + "beginLine" : 503, "beginColumn" : 8, - "endLine" : 505, + "endLine" : 503, "endColumn" : 27, - "offset" : 25838, + "offset" : 25859, "length" : 19 } } @@ -47119,11 +47095,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, + "beginLine" : 503, "beginColumn" : 8, - "endLine" : 505, + "endLine" : 503, "endColumn" : 27, - "offset" : 25838, + "offset" : 25859, "length" : 19 } }, @@ -47138,7 +47114,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -47149,12 +47125,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, + "beginLine" : 503, "beginColumn" : 28, - "endLine" : 505, - "endColumn" : 33, - "offset" : 25858, - "length" : 5 + "endLine" : 503, + "endColumn" : 35, + "offset" : 25879, + "length" : 7 } } } @@ -47171,12 +47147,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, + "beginLine" : 503, "beginColumn" : 8, - "endLine" : 505, - "endColumn" : 33, - "offset" : 25838, - "length" : 25 + "endLine" : 503, + "endColumn" : 35, + "offset" : 25859, + "length" : 27 } }, "resOpt" : { @@ -47209,11 +47185,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, - "beginColumn" : 37, - "endLine" : 505, - "endColumn" : 53, - "offset" : 25867, + "beginLine" : 503, + "beginColumn" : 39, + "endLine" : 503, + "endColumn" : 55, + "offset" : 25890, "length" : 16 } } @@ -47229,11 +47205,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, - "beginColumn" : 37, - "endLine" : 505, - "endColumn" : 53, - "offset" : 25867, + "beginLine" : 503, + "beginColumn" : 39, + "endLine" : 503, + "endColumn" : 55, + "offset" : 25890, "length" : 16 } }, @@ -47248,7 +47224,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -47259,12 +47235,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, - "beginColumn" : 54, - "endLine" : 505, - "endColumn" : 59, - "offset" : 25884, - "length" : 5 + "beginLine" : 503, + "beginColumn" : 56, + "endLine" : 503, + "endColumn" : 63, + "offset" : 25907, + "length" : 7 } } } @@ -47281,12 +47257,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, - "beginColumn" : 37, - "endLine" : 505, - "endColumn" : 59, - "offset" : 25867, - "length" : 22 + "beginLine" : 503, + "beginColumn" : 39, + "endLine" : 503, + "endColumn" : 63, + "offset" : 25890, + "length" : 24 } }, "resOpt" : { @@ -47311,11 +47287,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, - "beginColumn" : 62, - "endLine" : 505, - "endColumn" : 70, - "offset" : 25892, + "beginLine" : 503, + "beginColumn" : 66, + "endLine" : 503, + "endColumn" : 74, + "offset" : 25917, "length" : 8 } } @@ -47331,12 +47307,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, - "beginColumn" : 37, - "endLine" : 505, - "endColumn" : 70, - "offset" : 25867, - "length" : 33 + "beginLine" : 503, + "beginColumn" : 39, + "endLine" : 503, + "endColumn" : 74, + "offset" : 25890, + "length" : 35 } }, "resOpt" : { @@ -47360,12 +47336,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 505, + "beginLine" : 503, "beginColumn" : 8, - "endLine" : 505, - "endColumn" : 70, - "offset" : 25838, - "length" : 62 + "endLine" : 503, + "endColumn" : 74, + "offset" : 25859, + "length" : 66 } }, "resOpt" : { @@ -47389,12 +47365,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 502, + "beginLine" : 500, "beginColumn" : 14, - "endLine" : 505, - "endColumn" : 70, - "offset" : 25680, - "length" : 220 + "endLine" : 503, + "endColumn" : 74, + "offset" : 25697, + "length" : 228 } }, "resOpt" : { @@ -47427,11 +47403,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 17, - "endLine" : 506, + "endLine" : 504, "endColumn" : 30, - "offset" : 25918, + "offset" : 25943, "length" : 13 } } @@ -47447,11 +47423,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 17, - "endLine" : 506, + "endLine" : 504, "endColumn" : 30, - "offset" : 25918, + "offset" : 25943, "length" : 13 } }, @@ -47487,11 +47463,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 34, - "endLine" : 506, + "endLine" : 504, "endColumn" : 65, - "offset" : 25935, + "offset" : 25960, "length" : 31 } } @@ -47507,11 +47483,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 34, - "endLine" : 506, + "endLine" : 504, "endColumn" : 65, - "offset" : 25935, + "offset" : 25960, "length" : 31 } }, @@ -47537,11 +47513,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 34, - "endLine" : 506, + "endLine" : 504, "endColumn" : 65, - "offset" : 25935, + "offset" : 25960, "length" : 31 } } @@ -47559,11 +47535,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 34, - "endLine" : 506, + "endLine" : 504, "endColumn" : 65, - "offset" : 25935, + "offset" : 25960, "length" : 31 } }, @@ -47589,11 +47565,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 34, - "endLine" : 506, + "endLine" : 504, "endColumn" : 65, - "offset" : 25935, + "offset" : 25960, "length" : 31 } } @@ -47611,11 +47587,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 34, - "endLine" : 506, + "endLine" : 504, "endColumn" : 65, - "offset" : 25935, + "offset" : 25960, "length" : 31 } }, @@ -47637,11 +47613,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 17, - "endLine" : 506, + "endLine" : 504, "endColumn" : 65, - "offset" : 25918, + "offset" : 25943, "length" : 48 } }, @@ -47674,11 +47650,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 8, - "endLine" : 508, + "endLine" : 506, "endColumn" : 15, - "offset" : 25983, + "offset" : 26008, "length" : 7 } } @@ -47694,11 +47670,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 8, - "endLine" : 508, + "endLine" : 506, "endColumn" : 15, - "offset" : 25983, + "offset" : 26008, "length" : 7 } }, @@ -47734,11 +47710,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 19, - "endLine" : 508, + "endLine" : 506, "endColumn" : 50, - "offset" : 25994, + "offset" : 26019, "length" : 31 } } @@ -47754,11 +47730,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 19, - "endLine" : 508, + "endLine" : 506, "endColumn" : 50, - "offset" : 25994, + "offset" : 26019, "length" : 31 } }, @@ -47784,11 +47760,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 19, - "endLine" : 508, + "endLine" : 506, "endColumn" : 50, - "offset" : 25994, + "offset" : 26019, "length" : 31 } } @@ -47806,11 +47782,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 19, - "endLine" : 508, + "endLine" : 506, "endColumn" : 50, - "offset" : 25994, + "offset" : 26019, "length" : 31 } }, @@ -47836,11 +47812,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 19, - "endLine" : 508, + "endLine" : 506, "endColumn" : 50, - "offset" : 25994, + "offset" : 26019, "length" : 31 } } @@ -47858,11 +47834,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 19, - "endLine" : 508, + "endLine" : 506, "endColumn" : 50, - "offset" : 25994, + "offset" : 26019, "length" : 31 } }, @@ -47884,11 +47860,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 508, + "beginLine" : 506, "beginColumn" : 8, - "endLine" : 508, + "endLine" : 506, "endColumn" : 50, - "offset" : 25983, + "offset" : 26008, "length" : 42 } }, @@ -47913,11 +47889,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 506, + "beginLine" : 504, "beginColumn" : 17, - "endLine" : 508, + "endLine" : 506, "endColumn" : 50, - "offset" : 25918, + "offset" : 25943, "length" : 107 } }, @@ -47942,12 +47918,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 497, + "beginLine" : 495, "beginColumn" : 6, - "endLine" : 508, + "endLine" : 506, "endColumn" : 51, - "offset" : 25250, - "length" : 776 + "offset" : 25267, + "length" : 784 } } } @@ -47976,11 +47952,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 14, - "endLine" : 513, + "endLine" : 511, "endColumn" : 26, - "offset" : 26272, + "offset" : 26297, "length" : 12 } } @@ -47996,11 +47972,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 14, - "endLine" : 513, + "endLine" : 511, "endColumn" : 26, - "offset" : 26272, + "offset" : 26297, "length" : 12 } }, @@ -48036,11 +48012,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 30, - "endLine" : 513, + "endLine" : 511, "endColumn" : 83, - "offset" : 26288, + "offset" : 26313, "length" : 53 } } @@ -48056,11 +48032,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 30, - "endLine" : 513, + "endLine" : 511, "endColumn" : 83, - "offset" : 26288, + "offset" : 26313, "length" : 53 } }, @@ -48086,11 +48062,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 30, - "endLine" : 513, + "endLine" : 511, "endColumn" : 83, - "offset" : 26288, + "offset" : 26313, "length" : 53 } } @@ -48108,11 +48084,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 30, - "endLine" : 513, + "endLine" : 511, "endColumn" : 83, - "offset" : 26288, + "offset" : 26313, "length" : 53 } }, @@ -48138,11 +48114,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 30, - "endLine" : 513, + "endLine" : 511, "endColumn" : 83, - "offset" : 26288, + "offset" : 26313, "length" : 53 } } @@ -48160,11 +48136,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 30, - "endLine" : 513, + "endLine" : 511, "endColumn" : 83, - "offset" : 26288, + "offset" : 26313, "length" : 53 } }, @@ -48186,11 +48162,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 513, + "beginLine" : 511, "beginColumn" : 14, - "endLine" : 513, + "endLine" : 511, "endColumn" : 83, - "offset" : 26272, + "offset" : 26297, "length" : 69 } }, @@ -48224,11 +48200,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 17, - "endLine" : 514, + "endLine" : 512, "endColumn" : 30, - "offset" : 26359, + "offset" : 26384, "length" : 13 } } @@ -48244,11 +48220,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 17, - "endLine" : 514, + "endLine" : 512, "endColumn" : 30, - "offset" : 26359, + "offset" : 26384, "length" : 13 } }, @@ -48284,11 +48260,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 34, - "endLine" : 514, + "endLine" : 512, "endColumn" : 65, - "offset" : 26376, + "offset" : 26401, "length" : 31 } } @@ -48304,11 +48280,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 34, - "endLine" : 514, + "endLine" : 512, "endColumn" : 65, - "offset" : 26376, + "offset" : 26401, "length" : 31 } }, @@ -48334,11 +48310,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 34, - "endLine" : 514, + "endLine" : 512, "endColumn" : 65, - "offset" : 26376, + "offset" : 26401, "length" : 31 } } @@ -48356,11 +48332,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 34, - "endLine" : 514, + "endLine" : 512, "endColumn" : 65, - "offset" : 26376, + "offset" : 26401, "length" : 31 } }, @@ -48386,11 +48362,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 34, - "endLine" : 514, + "endLine" : 512, "endColumn" : 65, - "offset" : 26376, + "offset" : 26401, "length" : 31 } } @@ -48408,11 +48384,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 34, - "endLine" : 514, + "endLine" : 512, "endColumn" : 65, - "offset" : 26376, + "offset" : 26401, "length" : 31 } }, @@ -48434,11 +48410,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 17, - "endLine" : 514, + "endLine" : 512, "endColumn" : 65, - "offset" : 26359, + "offset" : 26384, "length" : 48 } }, @@ -48471,11 +48447,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 8, - "endLine" : 516, + "endLine" : 514, "endColumn" : 15, - "offset" : 26424, + "offset" : 26449, "length" : 7 } } @@ -48491,11 +48467,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 8, - "endLine" : 516, + "endLine" : 514, "endColumn" : 15, - "offset" : 26424, + "offset" : 26449, "length" : 7 } }, @@ -48531,11 +48507,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 19, - "endLine" : 516, + "endLine" : 514, "endColumn" : 50, - "offset" : 26435, + "offset" : 26460, "length" : 31 } } @@ -48551,11 +48527,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 19, - "endLine" : 516, + "endLine" : 514, "endColumn" : 50, - "offset" : 26435, + "offset" : 26460, "length" : 31 } }, @@ -48581,11 +48557,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 19, - "endLine" : 516, + "endLine" : 514, "endColumn" : 50, - "offset" : 26435, + "offset" : 26460, "length" : 31 } } @@ -48603,11 +48579,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 19, - "endLine" : 516, + "endLine" : 514, "endColumn" : 50, - "offset" : 26435, + "offset" : 26460, "length" : 31 } }, @@ -48633,11 +48609,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 19, - "endLine" : 516, + "endLine" : 514, "endColumn" : 50, - "offset" : 26435, + "offset" : 26460, "length" : 31 } } @@ -48655,11 +48631,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 19, - "endLine" : 516, + "endLine" : 514, "endColumn" : 50, - "offset" : 26435, + "offset" : 26460, "length" : 31 } }, @@ -48681,11 +48657,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 516, + "beginLine" : 514, "beginColumn" : 8, - "endLine" : 516, + "endLine" : 514, "endColumn" : 50, - "offset" : 26424, + "offset" : 26449, "length" : 42 } }, @@ -48710,11 +48686,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 514, + "beginLine" : 512, "beginColumn" : 17, - "endLine" : 516, + "endLine" : 514, "endColumn" : 50, - "offset" : 26359, + "offset" : 26384, "length" : 107 } }, @@ -48739,11 +48715,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 510, + "beginLine" : 508, "beginColumn" : 6, - "endLine" : 516, + "endLine" : 514, "endColumn" : 51, - "offset" : 26040, + "offset" : 26065, "length" : 427 } } @@ -48764,12 +48740,12 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 451, + "beginLine" : 441, "beginColumn" : 4, - "endLine" : 516, + "endLine" : 514, "endColumn" : 51, - "offset" : 22654, - "length" : 3813 + "offset" : 22113, + "length" : 4379 } } } @@ -48787,10 +48763,10 @@ }, "beginLine" : 426, "beginColumn" : 4, - "endLine" : 516, + "endLine" : 514, "endColumn" : 51, - "offset" : 21552, - "length" : 4915 + "offset" : 21560, + "length" : 4932 } } } @@ -48818,7 +48794,7 @@ "beginColumn" : 4, "endLine" : 404, "endColumn" : 47, - "offset" : 20559, + "offset" : 20567, "length" : 43 } } @@ -48841,7 +48817,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -48863,7 +48839,7 @@ "beginColumn" : 4, "endLine" : 421, "endColumn" : 61, - "offset" : 21415, + "offset" : 21423, "length" : 57 } } @@ -48918,7 +48894,7 @@ "beginColumn" : 4, "endLine" : 388, "endColumn" : 61, - "offset" : 20062, + "offset" : 20070, "length" : 57 } } @@ -48968,7 +48944,7 @@ "beginColumn" : 4, "endLine" : 399, "endColumn" : 60, - "offset" : 20342, + "offset" : 20350, "length" : 56 } } @@ -49013,7 +48989,7 @@ "beginColumn" : 4, "endLine" : 378, "endColumn" : 73, - "offset" : 19463, + "offset" : 19471, "length" : 69 } } @@ -49046,7 +49022,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -49068,7 +49044,7 @@ "beginColumn" : 4, "endLine" : 411, "endColumn" : 73, - "offset" : 20816, + "offset" : 20824, "length" : 69 } } @@ -49118,7 +49094,7 @@ "beginColumn" : 4, "endLine" : 401, "endColumn" : 54, - "offset" : 20456, + "offset" : 20464, "length" : 50 } } @@ -49163,7 +49139,7 @@ "beginColumn" : 4, "endLine" : 382, "endColumn" : 63, - "offset" : 19785, + "offset" : 19793, "length" : 59 } } @@ -49196,7 +49172,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -49218,7 +49194,7 @@ "beginColumn" : 4, "endLine" : 415, "endColumn" : 63, - "offset" : 21138, + "offset" : 21146, "length" : 59 } } @@ -49268,7 +49244,7 @@ "beginColumn" : 4, "endLine" : 400, "endColumn" : 54, - "offset" : 20402, + "offset" : 20410, "length" : 50 } } @@ -49313,7 +49289,7 @@ "beginColumn" : 4, "endLine" : 380, "endColumn" : 63, - "offset" : 19629, + "offset" : 19637, "length" : 59 } } @@ -49346,7 +49322,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -49368,7 +49344,7 @@ "beginColumn" : 4, "endLine" : 413, "endColumn" : 63, - "offset" : 20982, + "offset" : 20990, "length" : 59 } } @@ -49418,7 +49394,7 @@ "beginColumn" : 4, "endLine" : 402, "endColumn" : 45, - "offset" : 20510, + "offset" : 20518, "length" : 41 } } @@ -49463,7 +49439,7 @@ "beginColumn" : 4, "endLine" : 384, "endColumn" : 65, - "offset" : 19888, + "offset" : 19896, "length" : 61 } } @@ -49496,7 +49472,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -49518,7 +49494,7 @@ "beginColumn" : 4, "endLine" : 417, "endColumn" : 65, - "offset" : 21241, + "offset" : 21249, "length" : 61 } } @@ -49713,7 +49689,7 @@ "beginColumn" : 4, "endLine" : 274, "endColumn" : 73, - "offset" : 14121, + "offset" : 14133, "length" : 69 } } @@ -49754,7 +49730,7 @@ "beginColumn" : 4, "endLine" : 276, "endColumn" : 72, - "offset" : 14274, + "offset" : 14286, "length" : 68 } } @@ -49795,7 +49771,7 @@ "beginColumn" : 4, "endLine" : 278, "endColumn" : 71, - "offset" : 14430, + "offset" : 14442, "length" : 67 } } @@ -49836,7 +49812,7 @@ "beginColumn" : 4, "endLine" : 282, "endColumn" : 66, - "offset" : 14601, + "offset" : 14613, "length" : 62 } } @@ -49949,7 +49925,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -49983,7 +49959,7 @@ "beginColumn" : 4, "endLine" : 304, "endColumn" : 73, - "offset" : 15364, + "offset" : 15376, "length" : 69 } } @@ -50024,7 +50000,7 @@ "beginColumn" : 4, "endLine" : 306, "endColumn" : 72, - "offset" : 15517, + "offset" : 15529, "length" : 68 } } @@ -50065,7 +50041,7 @@ "beginColumn" : 4, "endLine" : 308, "endColumn" : 71, - "offset" : 15673, + "offset" : 15685, "length" : 67 } } @@ -50106,7 +50082,7 @@ "beginColumn" : 4, "endLine" : 312, "endColumn" : 66, - "offset" : 15844, + "offset" : 15856, "length" : 62 } } @@ -50449,7 +50425,7 @@ "beginColumn" : 5, "endLine" : 318, "endColumn" : 56, - "offset" : 16010, + "offset" : 16022, "length" : 51 } } @@ -50490,7 +50466,7 @@ "beginColumn" : 5, "endLine" : 321, "endColumn" : 64, - "offset" : 16084, + "offset" : 16096, "length" : 59 } } @@ -50523,7 +50499,7 @@ "beginColumn" : 5, "endLine" : 321, "endColumn" : 64, - "offset" : 16084, + "offset" : 16096, "length" : 59 } } @@ -50546,7 +50522,7 @@ "beginColumn" : 5, "endLine" : 321, "endColumn" : 64, - "offset" : 16084, + "offset" : 16096, "length" : 59 } } @@ -50567,7 +50543,7 @@ "beginColumn" : 5, "endLine" : 321, "endColumn" : 64, - "offset" : 16084, + "offset" : 16096, "length" : 59 } } @@ -50589,7 +50565,7 @@ "beginColumn" : 5, "endLine" : 321, "endColumn" : 64, - "offset" : 16084, + "offset" : 16096, "length" : 59 } }, @@ -50695,7 +50671,7 @@ "beginColumn" : 62, "endLine" : 321, "endColumn" : 63, - "offset" : 16141, + "offset" : 16153, "length" : 1 } } @@ -50716,7 +50692,7 @@ "beginColumn" : 5, "endLine" : 321, "endColumn" : 64, - "offset" : 16084, + "offset" : 16096, "length" : 59 } }, @@ -50750,7 +50726,7 @@ "beginColumn" : 5, "endLine" : 321, "endColumn" : 64, - "offset" : 16084, + "offset" : 16096, "length" : 59 } }, @@ -50801,7 +50777,7 @@ "beginColumn" : 6, "endLine" : 327, "endColumn" : 18, - "offset" : 16480, + "offset" : 16492, "length" : 12 } } @@ -50821,7 +50797,7 @@ "beginColumn" : 6, "endLine" : 327, "endColumn" : 18, - "offset" : 16480, + "offset" : 16492, "length" : 12 } }, @@ -50861,7 +50837,7 @@ "beginColumn" : 22, "endLine" : 327, "endColumn" : 73, - "offset" : 16496, + "offset" : 16508, "length" : 51 } } @@ -50881,7 +50857,7 @@ "beginColumn" : 22, "endLine" : 327, "endColumn" : 73, - "offset" : 16496, + "offset" : 16508, "length" : 51 } }, @@ -50911,7 +50887,7 @@ "beginColumn" : 22, "endLine" : 327, "endColumn" : 73, - "offset" : 16496, + "offset" : 16508, "length" : 51 } } @@ -50933,7 +50909,7 @@ "beginColumn" : 22, "endLine" : 327, "endColumn" : 73, - "offset" : 16496, + "offset" : 16508, "length" : 51 } }, @@ -50963,7 +50939,7 @@ "beginColumn" : 22, "endLine" : 327, "endColumn" : 73, - "offset" : 16496, + "offset" : 16508, "length" : 51 } } @@ -50985,7 +50961,7 @@ "beginColumn" : 22, "endLine" : 327, "endColumn" : 73, - "offset" : 16496, + "offset" : 16508, "length" : 51 } }, @@ -51011,7 +50987,7 @@ "beginColumn" : 6, "endLine" : 327, "endColumn" : 73, - "offset" : 16480, + "offset" : 16492, "length" : 67 } }, @@ -51040,7 +51016,7 @@ "beginColumn" : 5, "endLine" : 327, "endColumn" : 74, - "offset" : 16264, + "offset" : 16276, "length" : 284 } } @@ -51063,7 +51039,7 @@ "beginColumn" : 4, "endLine" : 327, "endColumn" : 74, - "offset" : 16249, + "offset" : 16261, "length" : 299 } } @@ -51110,7 +51086,7 @@ "beginColumn" : 15, "endLine" : 337, "endColumn" : 30, - "offset" : 17058, + "offset" : 17070, "length" : 15 } } @@ -51130,7 +51106,7 @@ "beginColumn" : 15, "endLine" : 337, "endColumn" : 30, - "offset" : 17058, + "offset" : 17070, "length" : 15 } }, @@ -51170,7 +51146,7 @@ "beginColumn" : 34, "endLine" : 337, "endColumn" : 85, - "offset" : 17077, + "offset" : 17089, "length" : 51 } } @@ -51190,7 +51166,7 @@ "beginColumn" : 34, "endLine" : 337, "endColumn" : 85, - "offset" : 17077, + "offset" : 17089, "length" : 51 } }, @@ -51220,7 +51196,7 @@ "beginColumn" : 34, "endLine" : 337, "endColumn" : 85, - "offset" : 17077, + "offset" : 17089, "length" : 51 } } @@ -51242,7 +51218,7 @@ "beginColumn" : 34, "endLine" : 337, "endColumn" : 85, - "offset" : 17077, + "offset" : 17089, "length" : 51 } }, @@ -51272,7 +51248,7 @@ "beginColumn" : 34, "endLine" : 337, "endColumn" : 85, - "offset" : 17077, + "offset" : 17089, "length" : 51 } } @@ -51294,7 +51270,7 @@ "beginColumn" : 34, "endLine" : 337, "endColumn" : 85, - "offset" : 17077, + "offset" : 17089, "length" : 51 } }, @@ -51320,7 +51296,7 @@ "beginColumn" : 15, "endLine" : 337, "endColumn" : 85, - "offset" : 17058, + "offset" : 17070, "length" : 70 } }, @@ -51370,7 +51346,7 @@ "beginColumn" : 13, "endLine" : 339, "endColumn" : 30, - "offset" : 17160, + "offset" : 17172, "length" : 17 } } @@ -51390,7 +51366,7 @@ "beginColumn" : 13, "endLine" : 339, "endColumn" : 30, - "offset" : 17160, + "offset" : 17172, "length" : 17 } }, @@ -51405,7 +51381,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -51419,9 +51395,9 @@ "beginLine" : 339, "beginColumn" : 31, "endLine" : 339, - "endColumn" : 36, - "offset" : 17178, - "length" : 5 + "endColumn" : 35, + "offset" : 17190, + "length" : 4 } } } @@ -51441,9 +51417,9 @@ "beginLine" : 339, "beginColumn" : 13, "endLine" : 339, - "endColumn" : 36, - "offset" : 17160, - "length" : 23 + "endColumn" : 35, + "offset" : 17172, + "length" : 22 } }, "resOpt" : { @@ -51475,10 +51451,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 40, + "beginColumn" : 39, "endLine" : 339, - "endColumn" : 56, - "offset" : 17187, + "endColumn" : 55, + "offset" : 17198, "length" : 16 } } @@ -51495,10 +51471,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 40, + "beginColumn" : 39, "endLine" : 339, - "endColumn" : 56, - "offset" : 17187, + "endColumn" : 55, + "offset" : 17198, "length" : 16 } }, @@ -51513,7 +51489,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -51525,11 +51501,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 57, + "beginColumn" : 56, "endLine" : 339, - "endColumn" : 62, - "offset" : 17204, - "length" : 5 + "endColumn" : 60, + "offset" : 17215, + "length" : 4 } } } @@ -51547,11 +51523,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 40, + "beginColumn" : 39, "endLine" : 339, - "endColumn" : 62, - "offset" : 17187, - "length" : 22 + "endColumn" : 60, + "offset" : 17198, + "length" : 21 } }, "resOpt" : { @@ -51575,9 +51551,9 @@ "beginLine" : 339, "beginColumn" : 13, "endLine" : 339, - "endColumn" : 62, - "offset" : 17160, - "length" : 49 + "endColumn" : 60, + "offset" : 17172, + "length" : 47 } }, "resOpt" : { @@ -51604,9 +51580,9 @@ "beginLine" : 339, "beginColumn" : 11, "endLine" : 339, - "endColumn" : 63, - "offset" : 17158, - "length" : 52 + "endColumn" : 61, + "offset" : 17170, + "length" : 50 } }, "resOpt" : { @@ -51643,10 +51619,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 68, + "beginColumn" : 66, "endLine" : 339, - "endColumn" : 87, - "offset" : 17215, + "endColumn" : 85, + "offset" : 17225, "length" : 19 } } @@ -51663,10 +51639,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 68, + "beginColumn" : 66, "endLine" : 339, - "endColumn" : 87, - "offset" : 17215, + "endColumn" : 85, + "offset" : 17225, "length" : 19 } }, @@ -51693,10 +51669,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 88, + "beginColumn" : 86, "endLine" : 339, - "endColumn" : 94, - "offset" : 17235, + "endColumn" : 92, + "offset" : 17245, "length" : 6 } } @@ -51715,10 +51691,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 68, + "beginColumn" : 66, "endLine" : 339, - "endColumn" : 94, - "offset" : 17215, + "endColumn" : 92, + "offset" : 17225, "length" : 26 } }, @@ -51755,10 +51731,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 98, + "beginColumn" : 96, "endLine" : 339, - "endColumn" : 136, - "offset" : 17245, + "endColumn" : 134, + "offset" : 17255, "length" : 38 } } @@ -51775,10 +51751,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 98, + "beginColumn" : 96, "endLine" : 339, - "endColumn" : 136, - "offset" : 17245, + "endColumn" : 134, + "offset" : 17255, "length" : 38 } }, @@ -51805,10 +51781,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 98, + "beginColumn" : 96, "endLine" : 339, - "endColumn" : 136, - "offset" : 17245, + "endColumn" : 134, + "offset" : 17255, "length" : 38 } } @@ -51827,10 +51803,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 98, + "beginColumn" : 96, "endLine" : 339, - "endColumn" : 136, - "offset" : 17245, + "endColumn" : 134, + "offset" : 17255, "length" : 38 } }, @@ -51857,10 +51833,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 98, + "beginColumn" : 96, "endLine" : 339, - "endColumn" : 136, - "offset" : 17245, + "endColumn" : 134, + "offset" : 17255, "length" : 38 } } @@ -51879,10 +51855,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 98, + "beginColumn" : 96, "endLine" : 339, - "endColumn" : 136, - "offset" : 17245, + "endColumn" : 134, + "offset" : 17255, "length" : 38 } }, @@ -51905,10 +51881,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 339, - "beginColumn" : 68, + "beginColumn" : 66, "endLine" : 339, - "endColumn" : 136, - "offset" : 17215, + "endColumn" : 134, + "offset" : 17225, "length" : 68 } }, @@ -51936,9 +51912,9 @@ "beginLine" : 339, "beginColumn" : 11, "endLine" : 339, - "endColumn" : 136, - "offset" : 17158, - "length" : 125 + "endColumn" : 134, + "offset" : 17170, + "length" : 123 } }, "resOpt" : { @@ -51974,7 +51950,7 @@ "beginColumn" : 11, "endLine" : 340, "endColumn" : 23, - "offset" : 17301, + "offset" : 17311, "length" : 12 } } @@ -51994,7 +51970,7 @@ "beginColumn" : 11, "endLine" : 340, "endColumn" : 23, - "offset" : 17301, + "offset" : 17311, "length" : 12 } }, @@ -52034,7 +52010,7 @@ "beginColumn" : 27, "endLine" : 340, "endColumn" : 80, - "offset" : 17317, + "offset" : 17327, "length" : 53 } } @@ -52054,7 +52030,7 @@ "beginColumn" : 27, "endLine" : 340, "endColumn" : 80, - "offset" : 17317, + "offset" : 17327, "length" : 53 } }, @@ -52084,7 +52060,7 @@ "beginColumn" : 27, "endLine" : 340, "endColumn" : 80, - "offset" : 17317, + "offset" : 17327, "length" : 53 } } @@ -52106,7 +52082,7 @@ "beginColumn" : 27, "endLine" : 340, "endColumn" : 80, - "offset" : 17317, + "offset" : 17327, "length" : 53 } }, @@ -52136,7 +52112,7 @@ "beginColumn" : 27, "endLine" : 340, "endColumn" : 80, - "offset" : 17317, + "offset" : 17327, "length" : 53 } } @@ -52158,7 +52134,7 @@ "beginColumn" : 27, "endLine" : 340, "endColumn" : 80, - "offset" : 17317, + "offset" : 17327, "length" : 53 } }, @@ -52184,7 +52160,7 @@ "beginColumn" : 11, "endLine" : 340, "endColumn" : 80, - "offset" : 17301, + "offset" : 17311, "length" : 69 } }, @@ -52213,8 +52189,8 @@ "beginColumn" : 11, "endLine" : 340, "endColumn" : 80, - "offset" : 17158, - "length" : 212 + "offset" : 17170, + "length" : 210 } }, "resOpt" : { @@ -52242,8 +52218,8 @@ "beginColumn" : 7, "endLine" : 340, "endColumn" : 82, - "offset" : 16643, - "length" : 729 + "offset" : 16655, + "length" : 727 } } } @@ -52276,7 +52252,7 @@ "beginColumn" : 15, "endLine" : 348, "endColumn" : 30, - "offset" : 17807, + "offset" : 17817, "length" : 15 } } @@ -52296,7 +52272,7 @@ "beginColumn" : 15, "endLine" : 348, "endColumn" : 30, - "offset" : 17807, + "offset" : 17817, "length" : 15 } }, @@ -52336,7 +52312,7 @@ "beginColumn" : 34, "endLine" : 348, "endColumn" : 87, - "offset" : 17826, + "offset" : 17836, "length" : 53 } } @@ -52356,7 +52332,7 @@ "beginColumn" : 34, "endLine" : 348, "endColumn" : 87, - "offset" : 17826, + "offset" : 17836, "length" : 53 } }, @@ -52386,7 +52362,7 @@ "beginColumn" : 34, "endLine" : 348, "endColumn" : 87, - "offset" : 17826, + "offset" : 17836, "length" : 53 } } @@ -52408,7 +52384,7 @@ "beginColumn" : 34, "endLine" : 348, "endColumn" : 87, - "offset" : 17826, + "offset" : 17836, "length" : 53 } }, @@ -52438,7 +52414,7 @@ "beginColumn" : 34, "endLine" : 348, "endColumn" : 87, - "offset" : 17826, + "offset" : 17836, "length" : 53 } } @@ -52460,7 +52436,7 @@ "beginColumn" : 34, "endLine" : 348, "endColumn" : 87, - "offset" : 17826, + "offset" : 17836, "length" : 53 } }, @@ -52486,7 +52462,7 @@ "beginColumn" : 15, "endLine" : 348, "endColumn" : 87, - "offset" : 17807, + "offset" : 17817, "length" : 72 } }, @@ -52530,7 +52506,7 @@ "beginColumn" : 11, "endLine" : 350, "endColumn" : 28, - "offset" : 17909, + "offset" : 17919, "length" : 17 } } @@ -52550,7 +52526,7 @@ "beginColumn" : 11, "endLine" : 350, "endColumn" : 28, - "offset" : 17909, + "offset" : 17919, "length" : 17 } }, @@ -52565,7 +52541,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -52579,9 +52555,9 @@ "beginLine" : 350, "beginColumn" : 29, "endLine" : 350, - "endColumn" : 34, - "offset" : 17927, - "length" : 5 + "endColumn" : 33, + "offset" : 17937, + "length" : 4 } } } @@ -52601,9 +52577,9 @@ "beginLine" : 350, "beginColumn" : 11, "endLine" : 350, - "endColumn" : 34, - "offset" : 17909, - "length" : 23 + "endColumn" : 33, + "offset" : 17919, + "length" : 22 } }, "resOpt" : { @@ -52635,10 +52611,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 38, + "beginColumn" : 37, "endLine" : 350, - "endColumn" : 54, - "offset" : 17936, + "endColumn" : 53, + "offset" : 17945, "length" : 16 } } @@ -52655,10 +52631,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 38, + "beginColumn" : 37, "endLine" : 350, - "endColumn" : 54, - "offset" : 17936, + "endColumn" : 53, + "offset" : 17945, "length" : 16 } }, @@ -52673,7 +52649,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "flag", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -52685,11 +52661,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 55, + "beginColumn" : 54, "endLine" : 350, - "endColumn" : 60, - "offset" : 17953, - "length" : 5 + "endColumn" : 58, + "offset" : 17962, + "length" : 4 } } } @@ -52707,11 +52683,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 38, + "beginColumn" : 37, "endLine" : 350, - "endColumn" : 60, - "offset" : 17936, - "length" : 22 + "endColumn" : 58, + "offset" : 17945, + "length" : 21 } }, "resOpt" : { @@ -52735,9 +52711,9 @@ "beginLine" : 350, "beginColumn" : 11, "endLine" : 350, - "endColumn" : 60, - "offset" : 17909, - "length" : 49 + "endColumn" : 58, + "offset" : 17919, + "length" : 47 } }, "resOpt" : { @@ -52774,10 +52750,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 65, + "beginColumn" : 63, "endLine" : 350, - "endColumn" : 84, - "offset" : 17963, + "endColumn" : 82, + "offset" : 17971, "length" : 19 } } @@ -52794,10 +52770,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 65, + "beginColumn" : 63, "endLine" : 350, - "endColumn" : 84, - "offset" : 17963, + "endColumn" : 82, + "offset" : 17971, "length" : 19 } }, @@ -52824,10 +52800,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 85, + "beginColumn" : 83, "endLine" : 350, - "endColumn" : 91, - "offset" : 17983, + "endColumn" : 89, + "offset" : 17991, "length" : 6 } } @@ -52846,10 +52822,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 65, + "beginColumn" : 63, "endLine" : 350, - "endColumn" : 91, - "offset" : 17963, + "endColumn" : 89, + "offset" : 17971, "length" : 26 } }, @@ -52886,10 +52862,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 95, + "beginColumn" : 93, "endLine" : 350, - "endColumn" : 133, - "offset" : 17993, + "endColumn" : 131, + "offset" : 18001, "length" : 38 } } @@ -52906,10 +52882,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 95, + "beginColumn" : 93, "endLine" : 350, - "endColumn" : 133, - "offset" : 17993, + "endColumn" : 131, + "offset" : 18001, "length" : 38 } }, @@ -52936,10 +52912,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 95, + "beginColumn" : 93, "endLine" : 350, - "endColumn" : 133, - "offset" : 17993, + "endColumn" : 131, + "offset" : 18001, "length" : 38 } } @@ -52958,10 +52934,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 95, + "beginColumn" : 93, "endLine" : 350, - "endColumn" : 133, - "offset" : 17993, + "endColumn" : 131, + "offset" : 18001, "length" : 38 } }, @@ -52988,10 +52964,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 95, + "beginColumn" : 93, "endLine" : 350, - "endColumn" : 133, - "offset" : 17993, + "endColumn" : 131, + "offset" : 18001, "length" : 38 } } @@ -53010,10 +52986,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 95, + "beginColumn" : 93, "endLine" : 350, - "endColumn" : 133, - "offset" : 17993, + "endColumn" : 131, + "offset" : 18001, "length" : 38 } }, @@ -53036,10 +53012,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, "beginLine" : 350, - "beginColumn" : 65, + "beginColumn" : 63, "endLine" : 350, - "endColumn" : 133, - "offset" : 17963, + "endColumn" : 131, + "offset" : 17971, "length" : 68 } }, @@ -53067,9 +53043,9 @@ "beginLine" : 350, "beginColumn" : 11, "endLine" : 350, - "endColumn" : 133, - "offset" : 17909, - "length" : 122 + "endColumn" : 131, + "offset" : 17919, + "length" : 120 } }, "resOpt" : { @@ -53105,7 +53081,7 @@ "beginColumn" : 11, "endLine" : 351, "endColumn" : 23, - "offset" : 18049, + "offset" : 18057, "length" : 12 } } @@ -53125,7 +53101,7 @@ "beginColumn" : 11, "endLine" : 351, "endColumn" : 23, - "offset" : 18049, + "offset" : 18057, "length" : 12 } }, @@ -53165,7 +53141,7 @@ "beginColumn" : 27, "endLine" : 351, "endColumn" : 80, - "offset" : 18065, + "offset" : 18073, "length" : 53 } } @@ -53185,7 +53161,7 @@ "beginColumn" : 27, "endLine" : 351, "endColumn" : 80, - "offset" : 18065, + "offset" : 18073, "length" : 53 } }, @@ -53215,7 +53191,7 @@ "beginColumn" : 27, "endLine" : 351, "endColumn" : 80, - "offset" : 18065, + "offset" : 18073, "length" : 53 } } @@ -53237,7 +53213,7 @@ "beginColumn" : 27, "endLine" : 351, "endColumn" : 80, - "offset" : 18065, + "offset" : 18073, "length" : 53 } }, @@ -53267,7 +53243,7 @@ "beginColumn" : 27, "endLine" : 351, "endColumn" : 80, - "offset" : 18065, + "offset" : 18073, "length" : 53 } } @@ -53289,7 +53265,7 @@ "beginColumn" : 27, "endLine" : 351, "endColumn" : 80, - "offset" : 18065, + "offset" : 18073, "length" : 53 } }, @@ -53315,7 +53291,7 @@ "beginColumn" : 11, "endLine" : 351, "endColumn" : 80, - "offset" : 18049, + "offset" : 18057, "length" : 69 } }, @@ -53344,8 +53320,8 @@ "beginColumn" : 11, "endLine" : 351, "endColumn" : 80, - "offset" : 17909, - "length" : 209 + "offset" : 17919, + "length" : 207 } }, "resOpt" : { @@ -53373,8 +53349,8 @@ "beginColumn" : 7, "endLine" : 351, "endColumn" : 82, - "offset" : 17387, - "length" : 733 + "offset" : 17397, + "length" : 731 } } } @@ -53407,7 +53383,7 @@ "beginColumn" : 15, "endLine" : 358, "endColumn" : 30, - "offset" : 18486, + "offset" : 18494, "length" : 15 } } @@ -53427,7 +53403,7 @@ "beginColumn" : 15, "endLine" : 358, "endColumn" : 30, - "offset" : 18486, + "offset" : 18494, "length" : 15 } }, @@ -53467,7 +53443,7 @@ "beginColumn" : 34, "endLine" : 358, "endColumn" : 85, - "offset" : 18505, + "offset" : 18513, "length" : 51 } } @@ -53487,7 +53463,7 @@ "beginColumn" : 34, "endLine" : 358, "endColumn" : 85, - "offset" : 18505, + "offset" : 18513, "length" : 51 } }, @@ -53517,7 +53493,7 @@ "beginColumn" : 34, "endLine" : 358, "endColumn" : 85, - "offset" : 18505, + "offset" : 18513, "length" : 51 } } @@ -53539,7 +53515,7 @@ "beginColumn" : 34, "endLine" : 358, "endColumn" : 85, - "offset" : 18505, + "offset" : 18513, "length" : 51 } }, @@ -53569,7 +53545,7 @@ "beginColumn" : 34, "endLine" : 358, "endColumn" : 85, - "offset" : 18505, + "offset" : 18513, "length" : 51 } } @@ -53591,7 +53567,7 @@ "beginColumn" : 34, "endLine" : 358, "endColumn" : 85, - "offset" : 18505, + "offset" : 18513, "length" : 51 } }, @@ -53617,7 +53593,7 @@ "beginColumn" : 15, "endLine" : 358, "endColumn" : 85, - "offset" : 18486, + "offset" : 18494, "length" : 70 } }, @@ -53658,7 +53634,7 @@ "beginColumn" : 18, "endLine" : 359, "endColumn" : 47, - "offset" : 18575, + "offset" : 18583, "length" : 29 } } @@ -53678,7 +53654,7 @@ "beginColumn" : 18, "endLine" : 359, "endColumn" : 47, - "offset" : 18575, + "offset" : 18583, "length" : 29 } }, @@ -53708,7 +53684,7 @@ "beginColumn" : 18, "endLine" : 359, "endColumn" : 47, - "offset" : 18575, + "offset" : 18583, "length" : 29 } }, @@ -53742,7 +53718,7 @@ "beginColumn" : 52, "endLine" : 359, "endColumn" : 64, - "offset" : 18609, + "offset" : 18617, "length" : 12 } } @@ -53762,7 +53738,7 @@ "beginColumn" : 52, "endLine" : 359, "endColumn" : 64, - "offset" : 18609, + "offset" : 18617, "length" : 12 } }, @@ -53802,7 +53778,7 @@ "beginColumn" : 68, "endLine" : 359, "endColumn" : 121, - "offset" : 18625, + "offset" : 18633, "length" : 53 } } @@ -53822,7 +53798,7 @@ "beginColumn" : 68, "endLine" : 359, "endColumn" : 121, - "offset" : 18625, + "offset" : 18633, "length" : 53 } }, @@ -53852,7 +53828,7 @@ "beginColumn" : 68, "endLine" : 359, "endColumn" : 121, - "offset" : 18625, + "offset" : 18633, "length" : 53 } } @@ -53874,7 +53850,7 @@ "beginColumn" : 68, "endLine" : 359, "endColumn" : 121, - "offset" : 18625, + "offset" : 18633, "length" : 53 } }, @@ -53904,7 +53880,7 @@ "beginColumn" : 68, "endLine" : 359, "endColumn" : 121, - "offset" : 18625, + "offset" : 18633, "length" : 53 } } @@ -53926,7 +53902,7 @@ "beginColumn" : 68, "endLine" : 359, "endColumn" : 121, - "offset" : 18625, + "offset" : 18633, "length" : 53 } }, @@ -53952,7 +53928,7 @@ "beginColumn" : 52, "endLine" : 359, "endColumn" : 121, - "offset" : 18609, + "offset" : 18617, "length" : 69 } }, @@ -53981,7 +53957,7 @@ "beginColumn" : 18, "endLine" : 359, "endColumn" : 121, - "offset" : 18575, + "offset" : 18583, "length" : 103 } }, @@ -54010,7 +53986,7 @@ "beginColumn" : 7, "endLine" : 359, "endColumn" : 123, - "offset" : 18138, + "offset" : 18146, "length" : 542 } } @@ -54035,8 +54011,8 @@ "beginColumn" : 5, "endLine" : 359, "endColumn" : 123, - "offset" : 16618, - "length" : 2062 + "offset" : 16630, + "length" : 2058 } } } @@ -54056,8 +54032,8 @@ "beginColumn" : 4, "endLine" : 359, "endColumn" : 123, - "offset" : 16000, - "length" : 2680 + "offset" : 16012, + "length" : 2676 } } } @@ -54085,7 +54061,7 @@ "beginColumn" : 4, "endLine" : 293, "endColumn" : 61, - "offset" : 14912, + "offset" : 14924, "length" : 57 } } @@ -54130,7 +54106,7 @@ "beginColumn" : 4, "endLine" : 274, "endColumn" : 73, - "offset" : 14121, + "offset" : 14133, "length" : 69 } } @@ -54163,7 +54139,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -54185,7 +54161,7 @@ "beginColumn" : 4, "endLine" : 304, "endColumn" : 73, - "offset" : 15364, + "offset" : 15376, "length" : 69 } } @@ -54235,7 +54211,7 @@ "beginColumn" : 4, "endLine" : 294, "endColumn" : 57, - "offset" : 14973, + "offset" : 14985, "length" : 53 } } @@ -54280,7 +54256,7 @@ "beginColumn" : 4, "endLine" : 276, "endColumn" : 72, - "offset" : 14274, + "offset" : 14286, "length" : 68 } } @@ -54313,7 +54289,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -54335,7 +54311,7 @@ "beginColumn" : 4, "endLine" : 306, "endColumn" : 72, - "offset" : 15517, + "offset" : 15529, "length" : 68 } } @@ -54385,7 +54361,7 @@ "beginColumn" : 4, "endLine" : 297, "endColumn" : 46, - "offset" : 15089, + "offset" : 15101, "length" : 42 } } @@ -54408,7 +54384,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -54430,7 +54406,7 @@ "beginColumn" : 4, "endLine" : 312, "endColumn" : 66, - "offset" : 15844, + "offset" : 15856, "length" : 62 } } @@ -54485,7 +54461,7 @@ "beginColumn" : 4, "endLine" : 282, "endColumn" : 66, - "offset" : 14601, + "offset" : 14613, "length" : 62 } } @@ -54542,7 +54518,7 @@ "beginColumn" : 4, "endLine" : 297, "endColumn" : 46, - "offset" : 15089, + "offset" : 15101, "length" : 42 } } @@ -54565,7 +54541,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -54587,7 +54563,7 @@ "beginColumn" : 4, "endLine" : 312, "endColumn" : 66, - "offset" : 15844, + "offset" : 15856, "length" : 62 } } @@ -54642,7 +54618,7 @@ "beginColumn" : 4, "endLine" : 282, "endColumn" : 66, - "offset" : 14601, + "offset" : 14613, "length" : 62 } } @@ -54699,7 +54675,7 @@ "beginColumn" : 4, "endLine" : 295, "endColumn" : 55, - "offset" : 15030, + "offset" : 15042, "length" : 51 } } @@ -54744,7 +54720,7 @@ "beginColumn" : 4, "endLine" : 278, "endColumn" : 71, - "offset" : 14430, + "offset" : 14442, "length" : 67 } } @@ -54777,7 +54753,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -54799,7 +54775,7 @@ "beginColumn" : 4, "endLine" : 308, "endColumn" : 71, - "offset" : 15673, + "offset" : 15685, "length" : 67 } } @@ -54990,11 +54966,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 537, + "beginLine" : 535, "beginColumn" : 4, - "endLine" : 537, + "endLine" : 535, "endColumn" : 72, - "offset" : 27409, + "offset" : 27434, "length" : 68 } } @@ -55033,11 +55009,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 546, + "beginLine" : 544, "beginColumn" : 4, - "endLine" : 546, + "endLine" : 544, "endColumn" : 41, - "offset" : 27677, + "offset" : 27702, "length" : 37 } } @@ -55067,11 +55043,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 555, + "beginLine" : 553, "beginColumn" : 4, - "endLine" : 555, + "endLine" : 553, "endColumn" : 72, - "offset" : 28029, + "offset" : 28054, "length" : 68 } } @@ -55338,11 +55314,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 548, + "beginLine" : 546, "beginColumn" : 4, - "endLine" : 548, + "endLine" : 546, "endColumn" : 54, - "offset" : 27732, + "offset" : 27757, "length" : 50 } } @@ -55361,11 +55337,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 546, + "beginLine" : 544, "beginColumn" : 4, - "endLine" : 546, + "endLine" : 544, "endColumn" : 41, - "offset" : 27677, + "offset" : 27702, "length" : 37 } } @@ -55383,11 +55359,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 555, + "beginLine" : 553, "beginColumn" : 4, - "endLine" : 555, + "endLine" : 553, "endColumn" : 72, - "offset" : 28029, + "offset" : 28054, "length" : 68 } } @@ -55438,11 +55414,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 537, + "beginLine" : 535, "beginColumn" : 4, - "endLine" : 537, + "endLine" : 535, "endColumn" : 72, - "offset" : 27409, + "offset" : 27434, "length" : 68 } } @@ -55800,7 +55776,7 @@ "beginColumn" : 4, "endLine" : 388, "endColumn" : 61, - "offset" : 20062, + "offset" : 20070, "length" : 57 } } @@ -56455,7 +56431,7 @@ "beginColumn" : 4, "endLine" : 378, "endColumn" : 73, - "offset" : 19463, + "offset" : 19471, "length" : 69 } } @@ -56605,7 +56581,7 @@ "beginColumn" : 4, "endLine" : 274, "endColumn" : 73, - "offset" : 14121, + "offset" : 14133, "length" : 69 } } @@ -56755,7 +56731,7 @@ "beginColumn" : 4, "endLine" : 382, "endColumn" : 63, - "offset" : 19785, + "offset" : 19793, "length" : 59 } } @@ -56905,7 +56881,7 @@ "beginColumn" : 4, "endLine" : 380, "endColumn" : 63, - "offset" : 19629, + "offset" : 19637, "length" : 59 } } @@ -57055,7 +57031,7 @@ "beginColumn" : 4, "endLine" : 276, "endColumn" : 72, - "offset" : 14274, + "offset" : 14286, "length" : 68 } } @@ -57150,7 +57126,7 @@ "beginColumn" : 4, "endLine" : 282, "endColumn" : 66, - "offset" : 14601, + "offset" : 14613, "length" : 62 } } @@ -57300,7 +57276,7 @@ "beginColumn" : 4, "endLine" : 282, "endColumn" : 66, - "offset" : 14601, + "offset" : 14613, "length" : 62 } } @@ -57355,7 +57331,7 @@ "beginColumn" : 4, "endLine" : 384, "endColumn" : 65, - "offset" : 19888, + "offset" : 19896, "length" : 61 } } @@ -57446,11 +57422,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 537, + "beginLine" : 535, "beginColumn" : 4, - "endLine" : 537, + "endLine" : 535, "endColumn" : 72, - "offset" : 27409, + "offset" : 27434, "length" : 68 } } @@ -57505,7 +57481,7 @@ "beginColumn" : 4, "endLine" : 278, "endColumn" : 71, - "offset" : 14430, + "offset" : 14442, "length" : 67 } } @@ -57632,7 +57608,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -57654,7 +57630,7 @@ "beginColumn" : 4, "endLine" : 415, "endColumn" : 63, - "offset" : 21138, + "offset" : 21146, "length" : 59 } } @@ -57778,7 +57754,7 @@ "beginColumn" : 4, "endLine" : 401, "endColumn" : 54, - "offset" : 20456, + "offset" : 20464, "length" : 50 } } @@ -57901,7 +57877,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -57923,7 +57899,7 @@ "beginColumn" : 4, "endLine" : 413, "endColumn" : 63, - "offset" : 20982, + "offset" : 20990, "length" : 59 } } @@ -58047,7 +58023,7 @@ "beginColumn" : 4, "endLine" : 400, "endColumn" : 54, - "offset" : 20402, + "offset" : 20410, "length" : 50 } } @@ -58170,7 +58146,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -58192,7 +58168,7 @@ "beginColumn" : 4, "endLine" : 306, "endColumn" : 72, - "offset" : 15517, + "offset" : 15529, "length" : 68 } } @@ -58316,7 +58292,7 @@ "beginColumn" : 4, "endLine" : 294, "endColumn" : 57, - "offset" : 14973, + "offset" : 14985, "length" : 53 } } @@ -58364,7 +58340,7 @@ "beginColumn" : 4, "endLine" : 297, "endColumn" : 46, - "offset" : 15089, + "offset" : 15101, "length" : 42 } } @@ -58386,7 +58362,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -58408,7 +58384,7 @@ "beginColumn" : 4, "endLine" : 312, "endColumn" : 66, - "offset" : 15844, + "offset" : 15856, "length" : 62 } } @@ -58497,7 +58473,7 @@ "beginColumn" : 4, "endLine" : 297, "endColumn" : 46, - "offset" : 15089, + "offset" : 15101, "length" : 42 } } @@ -58633,7 +58609,7 @@ "beginColumn" : 4, "endLine" : 297, "endColumn" : 46, - "offset" : 15089, + "offset" : 15101, "length" : 42 } } @@ -58655,7 +58631,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -58677,7 +58653,7 @@ "beginColumn" : 4, "endLine" : 312, "endColumn" : 66, - "offset" : 15844, + "offset" : 15856, "length" : 62 } } @@ -58708,7 +58684,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -58730,7 +58706,7 @@ "beginColumn" : 4, "endLine" : 417, "endColumn" : 65, - "offset" : 21241, + "offset" : 21249, "length" : 61 } } @@ -58766,7 +58742,7 @@ "beginColumn" : 4, "endLine" : 297, "endColumn" : 46, - "offset" : 15089, + "offset" : 15101, "length" : 42 } } @@ -58854,7 +58830,7 @@ "beginColumn" : 4, "endLine" : 402, "endColumn" : 45, - "offset" : 20510, + "offset" : 20518, "length" : 41 } } @@ -58898,11 +58874,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 548, + "beginLine" : 546, "beginColumn" : 4, - "endLine" : 548, + "endLine" : 546, "endColumn" : 54, - "offset" : 27732, + "offset" : 27757, "length" : 50 } } @@ -58920,11 +58896,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 546, + "beginLine" : 544, "beginColumn" : 4, - "endLine" : 546, + "endLine" : 544, "endColumn" : 41, - "offset" : 27677, + "offset" : 27702, "length" : 37 } } @@ -58942,11 +58918,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 555, + "beginLine" : 553, "beginColumn" : 4, - "endLine" : 555, + "endLine" : 553, "endColumn" : 72, - "offset" : 28029, + "offset" : 28054, "length" : 68 } } @@ -58977,7 +58953,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -58999,7 +58975,7 @@ "beginColumn" : 4, "endLine" : 308, "endColumn" : 71, - "offset" : 15673, + "offset" : 15685, "length" : 67 } } @@ -59031,11 +59007,11 @@ "type" : "Some", "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Monitor.aadl" }, - "beginLine" : 548, + "beginLine" : 546, "beginColumn" : 4, - "endLine" : 548, + "endLine" : 546, "endColumn" : 54, - "offset" : 27732, + "offset" : 27757, "length" : 50 } } @@ -59123,7 +59099,7 @@ "beginColumn" : 4, "endLine" : 295, "endColumn" : 55, - "offset" : 15030, + "offset" : 15042, "length" : 51 } } @@ -63996,7 +63972,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -64010,9 +63986,9 @@ "beginLine" : 110, "beginColumn" : 39, "endLine" : 110, - "endColumn" : 44, + "endColumn" : 46, "offset" : 5381, - "length" : 5 + "length" : 7 } } } @@ -64032,9 +64008,9 @@ "beginLine" : 110, "beginColumn" : 15, "endLine" : 110, - "endColumn" : 44, + "endColumn" : 46, "offset" : 5357, - "length" : 29 + "length" : 31 } }, "resOpt" : { @@ -64058,9 +64034,9 @@ "beginLine" : 110, "beginColumn" : 6, "endLine" : 110, - "endColumn" : 44, + "endColumn" : 46, "offset" : 5348, - "length" : 38 + "length" : 40 } }, "resOpt" : { @@ -64097,10 +64073,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 110, - "beginColumn" : 48, + "beginColumn" : 50, "endLine" : 110, - "endColumn" : 71, - "offset" : 5390, + "endColumn" : 73, + "offset" : 5392, "length" : 23 } } @@ -64117,10 +64093,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 110, - "beginColumn" : 48, + "beginColumn" : 50, "endLine" : 110, - "endColumn" : 71, - "offset" : 5390, + "endColumn" : 73, + "offset" : 5392, "length" : 23 } }, @@ -64135,7 +64111,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -64147,11 +64123,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 110, - "beginColumn" : 72, + "beginColumn" : 74, "endLine" : 110, - "endColumn" : 77, - "offset" : 5414, - "length" : 5 + "endColumn" : 81, + "offset" : 5416, + "length" : 7 } } } @@ -64169,11 +64145,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 110, - "beginColumn" : 48, + "beginColumn" : 50, "endLine" : 110, - "endColumn" : 77, - "offset" : 5390, - "length" : 29 + "endColumn" : 81, + "offset" : 5392, + "length" : 31 } }, "resOpt" : { @@ -64199,10 +64175,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 110, - "beginColumn" : 81, + "beginColumn" : 85, "endLine" : 110, - "endColumn" : 87, - "offset" : 5423, + "endColumn" : 91, + "offset" : 5427, "length" : 6 } } @@ -64219,11 +64195,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 110, - "beginColumn" : 48, + "beginColumn" : 50, "endLine" : 110, - "endColumn" : 87, - "offset" : 5390, - "length" : 39 + "endColumn" : 91, + "offset" : 5392, + "length" : 41 } }, "resOpt" : { @@ -64250,9 +64226,9 @@ "beginLine" : 110, "beginColumn" : 6, "endLine" : 110, - "endColumn" : 87, + "endColumn" : 91, "offset" : 5348, - "length" : 81 + "length" : 85 } }, "resOpt" : { @@ -64279,9 +64255,9 @@ "beginLine" : 108, "beginColumn" : 5, "endLine" : 110, - "endColumn" : 88, + "endColumn" : 92, "offset" : 5161, - "length" : 269 + "length" : 273 } } } @@ -64314,7 +64290,7 @@ "beginColumn" : 6, "endLine" : 114, "endColumn" : 11, - "offset" : 5626, + "offset" : 5630, "length" : 5 } } @@ -64344,7 +64320,7 @@ "beginColumn" : 15, "endLine" : 114, "endColumn" : 38, - "offset" : 5635, + "offset" : 5639, "length" : 23 } } @@ -64364,7 +64340,7 @@ "beginColumn" : 15, "endLine" : 114, "endColumn" : 38, - "offset" : 5635, + "offset" : 5639, "length" : 23 } }, @@ -64379,7 +64355,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -64393,9 +64369,9 @@ "beginLine" : 114, "beginColumn" : 39, "endLine" : 114, - "endColumn" : 44, - "offset" : 5659, - "length" : 5 + "endColumn" : 46, + "offset" : 5663, + "length" : 7 } } } @@ -64415,9 +64391,9 @@ "beginLine" : 114, "beginColumn" : 15, "endLine" : 114, - "endColumn" : 44, - "offset" : 5635, - "length" : 29 + "endColumn" : 46, + "offset" : 5639, + "length" : 31 } }, "resOpt" : { @@ -64441,9 +64417,9 @@ "beginLine" : 114, "beginColumn" : 6, "endLine" : 114, - "endColumn" : 44, - "offset" : 5626, - "length" : 38 + "endColumn" : 46, + "offset" : 5630, + "length" : 40 } }, "resOpt" : { @@ -64480,10 +64456,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 114, - "beginColumn" : 48, + "beginColumn" : 50, "endLine" : 114, - "endColumn" : 71, - "offset" : 5668, + "endColumn" : 73, + "offset" : 5674, "length" : 23 } } @@ -64500,10 +64476,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 114, - "beginColumn" : 48, + "beginColumn" : 50, "endLine" : 114, - "endColumn" : 71, - "offset" : 5668, + "endColumn" : 73, + "offset" : 5674, "length" : 23 } }, @@ -64518,7 +64494,7 @@ }, "id" : { "type" : "org.sireum.lang.ast.Id", - "value" : "value", + "value" : "degrees", "attr" : { "type" : "org.sireum.lang.ast.Attr", "posOpt" : { @@ -64530,11 +64506,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 114, - "beginColumn" : 72, + "beginColumn" : 74, "endLine" : 114, - "endColumn" : 77, - "offset" : 5692, - "length" : 5 + "endColumn" : 81, + "offset" : 5698, + "length" : 7 } } } @@ -64552,11 +64528,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 114, - "beginColumn" : 48, + "beginColumn" : 50, "endLine" : 114, - "endColumn" : 77, - "offset" : 5668, - "length" : 29 + "endColumn" : 81, + "offset" : 5674, + "length" : 31 } }, "resOpt" : { @@ -64582,10 +64558,10 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 114, - "beginColumn" : 81, + "beginColumn" : 85, "endLine" : 114, - "endColumn" : 87, - "offset" : 5701, + "endColumn" : 91, + "offset" : 5709, "length" : 6 } } @@ -64602,11 +64578,11 @@ "value" : "\/isolette-artifacts-sel4\/aadl\/packages\/Operator_Interface.aadl" }, "beginLine" : 114, - "beginColumn" : 48, + "beginColumn" : 50, "endLine" : 114, - "endColumn" : 87, - "offset" : 5668, - "length" : 39 + "endColumn" : 91, + "offset" : 5674, + "length" : 41 } }, "resOpt" : { @@ -64633,9 +64609,9 @@ "beginLine" : 114, "beginColumn" : 6, "endLine" : 114, - "endColumn" : 87, - "offset" : 5626, - "length" : 81 + "endColumn" : 91, + "offset" : 5630, + "length" : 85 } }, "resOpt" : { @@ -64662,9 +64638,9 @@ "beginLine" : 112, "beginColumn" : 5, "endLine" : 114, - "endColumn" : 88, - "offset" : 5440, - "length" : 268 + "endColumn" : 92, + "offset" : 5444, + "length" : 272 } } } @@ -64683,9 +64659,9 @@ "beginLine" : 106, "beginColumn" : 4, "endLine" : 114, - "endColumn" : 88, + "endColumn" : 92, "offset" : 5141, - "length" : 567 + "length" : 575 } } } @@ -64707,9 +64683,9 @@ "beginLine" : 106, "beginColumn" : 4, "endLine" : 114, - "endColumn" : 88, + "endColumn" : 92, "offset" : 5141, - "length" : 567 + "length" : 575 } } } @@ -76841,7 +76817,7 @@ "beginColumn" : 4, "endLine" : 490, "endColumn" : 46, - "offset" : 25829, + "offset" : 25834, "length" : 42 } } @@ -76863,7 +76839,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -76885,7 +76861,7 @@ "beginColumn" : 4, "endLine" : 506, "endColumn" : 60, - "offset" : 26597, + "offset" : 26602, "length" : 56 } } @@ -76974,7 +76950,7 @@ "beginColumn" : 4, "endLine" : 490, "endColumn" : 46, - "offset" : 25829, + "offset" : 25834, "length" : 42 } } @@ -77643,7 +77619,7 @@ "beginColumn" : 4, "endLine" : 404, "endColumn" : 47, - "offset" : 20559, + "offset" : 20567, "length" : 43 } } @@ -77665,7 +77641,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -77687,7 +77663,7 @@ "beginColumn" : 4, "endLine" : 421, "endColumn" : 61, - "offset" : 21415, + "offset" : 21423, "length" : 57 } } @@ -77776,7 +77752,7 @@ "beginColumn" : 4, "endLine" : 404, "endColumn" : 47, - "offset" : 20559, + "offset" : 20567, "length" : 43 } } @@ -80486,7 +80462,7 @@ "beginColumn" : 4, "endLine" : 397, "endColumn" : 30, - "offset" : 20298, + "offset" : 20306, "length" : 26 } } @@ -80508,7 +80484,7 @@ "beginColumn" : 4, "endLine" : 411, "endColumn" : 73, - "offset" : 20816, + "offset" : 20824, "length" : 69 } } @@ -80764,7 +80740,7 @@ "beginColumn" : 4, "endLine" : 399, "endColumn" : 60, - "offset" : 20342, + "offset" : 20350, "length" : 56 } } @@ -80887,7 +80863,7 @@ "beginColumn" : 4, "endLine" : 291, "endColumn" : 38, - "offset" : 14860, + "offset" : 14872, "length" : 34 } } @@ -80909,7 +80885,7 @@ "beginColumn" : 4, "endLine" : 304, "endColumn" : 73, - "offset" : 15364, + "offset" : 15376, "length" : 69 } } @@ -81165,7 +81141,7 @@ "beginColumn" : 4, "endLine" : 293, "endColumn" : 61, - "offset" : 14912, + "offset" : 14924, "length" : 57 } } @@ -81689,7 +81665,7 @@ "beginColumn" : 4, "endLine" : 483, "endColumn" : 37, - "offset" : 25545, + "offset" : 25550, "length" : 33 } } @@ -81711,7 +81687,7 @@ "beginColumn" : 4, "endLine" : 497, "endColumn" : 73, - "offset" : 26097, + "offset" : 26102, "length" : 69 } } @@ -81967,7 +81943,7 @@ "beginColumn" : 4, "endLine" : 485, "endColumn" : 61, - "offset" : 25596, + "offset" : 25601, "length" : 57 } } @@ -82090,7 +82066,7 @@ "beginColumn" : 4, "endLine" : 330, "endColumn" : 40, - "offset" : 17116, + "offset" : 17129, "length" : 36 } } @@ -82112,7 +82088,7 @@ "beginColumn" : 4, "endLine" : 342, "endColumn" : 73, - "offset" : 17642, + "offset" : 17655, "length" : 69 } } @@ -82368,7 +82344,7 @@ "beginColumn" : 4, "endLine" : 332, "endColumn" : 61, - "offset" : 17170, + "offset" : 17183, "length" : 57 } } @@ -83072,7 +83048,7 @@ "type" : "Component", "identifier" : { "type" : "Name", - "name" : ["value"], + "name" : ["degrees"], "pos" : { "type" : "Some", "value" : { @@ -83084,9 +83060,9 @@ "beginLine" : 60, "beginColumn" : 3, "endLine" : 60, - "endColumn" : 36, - "offset" : 1695, - "length" : 33 + "endColumn" : 38, + "offset" : 1699, + "length" : 35 } } }, @@ -83362,7 +83338,7 @@ "type" : "Component", "identifier" : { "type" : "Name", - "name" : ["value"], + "name" : ["degrees"], "pos" : { "type" : "Some", "value" : { @@ -83374,9 +83350,9 @@ "beginLine" : 34, "beginColumn" : 5, "endLine" : 34, - "endColumn" : 38, + "endColumn" : 40, "offset" : 1136, - "length" : 33 + "length" : 35 } } }, @@ -83523,7 +83499,7 @@ "beginColumn" : 5, "endLine" : 35, "endColumn" : 30, - "offset" : 1174, + "offset" : 1176, "length" : 25 } } @@ -83877,7 +83853,7 @@ "type" : "Component", "identifier" : { "type" : "Name", - "name" : ["value"], + "name" : ["degrees"], "pos" : { "type" : "Some", "value" : { @@ -83889,9 +83865,9 @@ "beginLine" : 50, "beginColumn" : 5, "endLine" : 50, - "endColumn" : 38, - "offset" : 1556, - "length" : 33 + "endColumn" : 40, + "offset" : 1558, + "length" : 35 } } }, @@ -84240,7 +84216,7 @@ "type" : "Component", "identifier" : { "type" : "Name", - "name" : ["value"], + "name" : ["flag"], "pos" : { "type" : "Some", "value" : { @@ -84252,9 +84228,9 @@ "beginLine" : 83, "beginColumn" : 3, "endLine" : 83, - "endColumn" : 35, - "offset" : 2049, - "length" : 32 + "endColumn" : 34, + "offset" : 2055, + "length" : 31 } } }, diff --git a/isolette/aadl/aadl/packages/Abstract_Definitions.aadl b/isolette/aadl/aadl/packages/Abstract_Definitions.aadl index 37f6a00..b762bf2 100644 --- a/isolette/aadl/aadl/packages/Abstract_Definitions.aadl +++ b/isolette/aadl/aadl/packages/Abstract_Definitions.aadl @@ -7,8 +7,6 @@ public Period => Isolette_Properties::ThreadPeriod; - Stack_Size => Isolette_Properties::StackSize; - Timing_Properties::Compute_Execution_Time => Isolette_Properties::Default_Compute_Execution_Time; end Periodic_Thread; diff --git a/isolette/aadl/aadl/packages/Isolette.aadl b/isolette/aadl/aadl/packages/Isolette.aadl index 17c331d..da605cb 100644 --- a/isolette/aadl/aadl/packages/Isolette.aadl +++ b/isolette/aadl/aadl/packages/Isolette.aadl @@ -132,13 +132,8 @@ package Isolette Frame_Period => 1000ms; - Clock_Period => 2ms; - - CASE_Scheduling::Max_Domain => 10; -- not currently used by HAMR + Clock_Period => 1ms; end Isolette_Processor; - - processor implementation Isolette_Processor.impl - end Isolette_Processor.impl; end Isolette; diff --git a/isolette/aadl/aadl/packages/Isolette_Data_Model.aadl b/isolette/aadl/aadl/packages/Isolette_Data_Model.aadl index 6cec551..6dcca16 100644 --- a/isolette/aadl/aadl/packages/Isolette_Data_Model.aadl +++ b/isolette/aadl/aadl/packages/Isolette_Data_Model.aadl @@ -31,7 +31,7 @@ end TempWstatus; data implementation TempWstatus.i subcomponents - value: data Base_Types::Float_32; + degrees: data Base_Types::Float_32; status: data ValueStatus; end TempWstatus.i; @@ -47,7 +47,7 @@ end Temp; data implementation Temp.i subcomponents - value: data Base_Types::Float_32; + degrees: data Base_Types::Float_32; end Temp.i; @@ -57,7 +57,7 @@ end PhysicalTemp; data implementation PhysicalTemp.i subcomponents - value: data Base_Types::Float_32; + degrees: data Base_Types::Float_32; end PhysicalTemp.i; @@ -80,7 +80,7 @@ end Failure_Flag; data implementation Failure_Flag.i subcomponents - value: data Base_Types::Boolean; + flag: data Base_Types::Boolean; end Failure_Flag.i; data ValueStatus diff --git a/isolette/aadl/aadl/packages/Monitor.aadl b/isolette/aadl/aadl/packages/Monitor.aadl index 883fe7c..751e37a 100644 --- a/isolette/aadl/aadl/packages/Monitor.aadl +++ b/isolette/aadl/aadl/packages/Monitor.aadl @@ -180,11 +180,11 @@ public assume Table_A_12_LowerAlarmTemp "Range [96..101] |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : - 96.0f <= lower_alarm_tempWstatus.value && lower_alarm_tempWstatus.value <= 101.0f; + 96.0f <= lower_alarm_tempWstatus.degrees && lower_alarm_tempWstatus.degrees <= 101.0f; assume Table_A_12_UpperAlarmTemp "Range [97..102] |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : - 97.0f <= upper_alarm_tempWstatus.value && upper_alarm_tempWstatus.value <= 102.0f; + 97.0f <= upper_alarm_tempWstatus.degrees && upper_alarm_tempWstatus.degrees <= 102.0f; -- ====== I n i t i a l i z e E n t r y P o i n t Behavior Constraints ====== initialize @@ -223,7 +223,7 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : assume lower_alarm_tempWstatus.status == Isolette_Data_Model::ValueStatus.Invalid | upper_alarm_tempWstatus.status == Isolette_Data_Model::ValueStatus.Invalid; - guarantee interface_failure.value; + guarantee interface_failure.flag; case REQ_MMI_5 "If the Status attribute of the Lower Alarm Temperature |and the Upper Alarm Temperature is Valid, @@ -232,7 +232,7 @@ public assume lower_alarm_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid & upper_alarm_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid; - guarantee !interface_failure.value; + guarantee !interface_failure.flag; -- ===== Upper and Lower Temperature Values ===== @@ -241,17 +241,17 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : assume T; guarantee - (!interface_failure.value) ~~>: - (lower_alarm_temp.value == lower_alarm_tempWstatus.value + (!interface_failure.flag) ~~>: + (lower_alarm_temp.degrees == lower_alarm_tempWstatus.degrees & - upper_alarm_temp.value == upper_alarm_tempWstatus.value); + upper_alarm_temp.degrees == upper_alarm_tempWstatus.degrees); case REQ_MMI_7 "If the Monitor Interface Failure is True, |the Alarm Range variable is UNSPECIFIED |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : assume T; guarantee - interface_failure.value ~~>: T; + interface_failure.flag ~~>: T; **}; end Manage_Monitor_Interface.i; @@ -336,7 +336,7 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=114 " : assume lastMonitorMode == Isolette_Data_Model::Monitor_Mode.Init_Monitor_Mode; guarantee - ((!(interface_failure.value || internal_failure.value)) && current_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) ~~>: + ((!(interface_failure.flag || internal_failure.flag)) && current_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) ~~>: (monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode); case REQ_MMM_3 "If the current Monitor mode is Normal, then @@ -347,7 +347,7 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=114 " : assume lastMonitorMode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode; guarantee - ((interface_failure.value || internal_failure.value) || current_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) ~~>: + ((interface_failure.flag || internal_failure.flag) || current_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) ~~>: (monitor_mode == Isolette_Data_Model::Monitor_Mode.Failed_Monitor_Mode); case REQ_MMM_4 "If the current mode is Init, then @@ -428,17 +428,7 @@ public functions def timeout_condition_satisfied():Base_Types::Boolean := T; - - integration - - assume Table_A_12_LowerAlarmTemp "Range [96..101] - |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : - 96.0f <= lower_alarm_temp.value && lower_alarm_temp.value <= 101.0f; - - assume Table_A_12_UpperAlarmTemp "Range [97..102] - |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : - 97.0f <= upper_alarm_temp.value && upper_alarm_temp.value <= 102.0f; - + initialize -- guarantee REQ_MA_1 "If the Monitor Mode is INIT, the Alarm Control shall be set @@ -454,7 +444,15 @@ public |assumption is that the lower alarm must be at least 1.0f less than |the upper alarm in order to account for the 0.5f tolerance |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 ": - upper_alarm_temp.value - lower_alarm_temp.value >= 1.0f; + upper_alarm_temp.degrees - lower_alarm_temp.degrees >= 1.0f; + + assume Table_A_12_LowerAlarmTemp "Range [96..101] + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : + 96.0f <= lower_alarm_temp.degrees && lower_alarm_temp.degrees <= 101.0f; + + assume Table_A_12_UpperAlarmTemp "Range [97..102] + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : + 97.0f <= upper_alarm_temp.degrees && upper_alarm_temp.degrees <= 102.0f; cases @@ -472,7 +470,7 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " : assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode & - (current_tempWstatus.value < lower_alarm_temp.value || current_tempWstatus.value > upper_alarm_temp.value); + (current_tempWstatus.degrees < lower_alarm_temp.degrees || current_tempWstatus.degrees > upper_alarm_temp.degrees); guarantee alarm_control == Isolette_Data_Model::On_Off.Onn & lastCmd == Isolette_Data_Model::On_Off.Onn; @@ -486,10 +484,10 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " : assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode & - ((current_tempWstatus.value >= lower_alarm_temp.value && - current_tempWstatus.value < lower_alarm_temp.value + f32"0.5") || - ((current_tempWstatus.value > upper_alarm_temp.value - f32"0.5") && - current_tempWstatus.value <= upper_alarm_temp.value)); + ((current_tempWstatus.degrees >= lower_alarm_temp.degrees && + current_tempWstatus.degrees < lower_alarm_temp.degrees + f32"0.5") || + ((current_tempWstatus.degrees > upper_alarm_temp.degrees - f32"0.5") && + current_tempWstatus.degrees <= upper_alarm_temp.degrees)); guarantee alarm_control == In(lastCmd) & lastCmd == In(lastCmd); @@ -501,8 +499,8 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " : assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode & - current_tempWstatus.value >= lower_alarm_temp.value + f32"0.5" & - current_tempWstatus.value <= upper_alarm_temp.value - f32"0.5"; + current_tempWstatus.degrees >= lower_alarm_temp.degrees + f32"0.5" & + current_tempWstatus.degrees <= upper_alarm_temp.degrees - f32"0.5"; guarantee alarm_control == Isolette_Data_Model::On_Off.Off & lastCmd == Isolette_Data_Model::On_Off.Off; diff --git a/isolette/aadl/aadl/packages/Operator_Interface.aadl b/isolette/aadl/aadl/packages/Operator_Interface.aadl index a88114b..1128a7d 100644 --- a/isolette/aadl/aadl/packages/Operator_Interface.aadl +++ b/isolette/aadl/aadl/packages/Operator_Interface.aadl @@ -107,11 +107,11 @@ public guarantee Table_A_12_LowerAlarmTemp "Range [96..101] |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : - 96.0f <= lower_alarm_tempWstatus.value && lower_alarm_tempWstatus.value <= 101.0f; + 96.0f <= lower_alarm_tempWstatus.degrees && lower_alarm_tempWstatus.degrees <= 101.0f; guarantee Table_A_12_UpperAlarmTemp "Range [97..102] |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : - 97.0f <= upper_alarm_tempWstatus.value && upper_alarm_tempWstatus.value <= 102.0f; + 97.0f <= upper_alarm_tempWstatus.degrees && upper_alarm_tempWstatus.degrees <= 102.0f; **}; end Operator_Interface_Thread; diff --git a/isolette/aadl/aadl/packages/Regulate.aadl b/isolette/aadl/aadl/packages/Regulate.aadl index 8f5d81d..eb1ea2a 100644 --- a/isolette/aadl/aadl/packages/Regulate.aadl +++ b/isolette/aadl/aadl/packages/Regulate.aadl @@ -219,7 +219,7 @@ public -- ====== C o m p u t e E n t r y P o i n t Behavior Constraints ===== compute -- general assumption between incoming port values - assume lower_is_not_higher_than_upper: lower_desired_tempWstatus.value <= upper_desired_tempWstatus.value; + assume lower_is_not_higher_than_upper: lower_desired_tempWstatus.degrees <= upper_desired_tempWstatus.degrees; cases -- ====== Regulator Status ====== @@ -249,7 +249,7 @@ public |Current Temperature rounded to the nearest integer. |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": assume regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode; - guarantee displayed_temp.value == ROUND(current_tempWstatus.value); + guarantee displayed_temp.degrees == ROUND(current_tempWstatus.degrees); case REQ_MRI_5 "If the Regulator Mode is not NORMAL, |the value of the Display Temperature is UNSPECIFIED. @@ -264,14 +264,14 @@ public |the Regulator Interface Failure shall be set to True. |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": assume ((upper_desired_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) | (upper_desired_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid)); - guarantee interface_failure.value; + guarantee interface_failure.flag; case REQ_MRI_7 "If the Status attribute of the Lower Desired Temperature |and the Upper Desired Temperature is Valid, |the Regulator Interface Failure shall be set to False. |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": assume T; - guarantee (interface_failure.value == (!((upper_desired_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) & (lower_desired_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid)))); + guarantee (interface_failure.flag == (!((upper_desired_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) & (lower_desired_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid)))); -- ===== Desired Range ===== @@ -279,8 +279,8 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": assume T; guarantee - (!interface_failure.value) ->: - ((lower_desired_temp.value == lower_desired_tempWstatus.value) & (upper_desired_temp.value == upper_desired_tempWstatus.value)); + (!interface_failure.flag) ->: + ((lower_desired_temp.degrees == lower_desired_tempWstatus.degrees) & (upper_desired_temp.degrees == upper_desired_tempWstatus.degrees)); case REQ_MRI_9 "If the Regulator Interface Failure is True, |the Desired Range is UNSPECIFIED. @@ -383,7 +383,7 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 ": assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Init_Regulator_Mode; guarantee - ((!(interface_failure.value || internal_failure.value)) && + ((!(interface_failure.flag || internal_failure.flag)) && current_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) ~~>: (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode); @@ -399,7 +399,7 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 ": assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode; guarantee - ((!(interface_failure.value || internal_failure.value)) && + ((!(interface_failure.flag || internal_failure.flag)) && current_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) ~~>: (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode); @@ -413,7 +413,7 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 ": assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode; guarantee - ((interface_failure.value || internal_failure.value) && + ((interface_failure.flag || internal_failure.flag) && current_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) ~~>: (regulator_mode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode); @@ -427,7 +427,7 @@ public |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109": assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Init_Regulator_Mode; guarantee - ((interface_failure.value || internal_failure.value) && + ((interface_failure.flag || internal_failure.flag) && current_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) ~~>: (regulator_mode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode); @@ -529,7 +529,7 @@ public -- ====== C o m p u t e E n t r y P o i n t Behavior Constraints ===== compute -- assumption on set points enforced within the Operator Interface - assume lower_is_lower_temp: lower_desired_temp.value <= upper_desired_temp.value; + assume lower_is_lower_temp: lower_desired_temp.degrees <= upper_desired_temp.degrees; -- the lastCmd state variable is always equal to the value of the heat_control output port guarantee lastCmd "Set lastCmd to value of output Cmd port": @@ -547,14 +547,14 @@ public |the Lower Desired Temperature, the Heat Control shall be set to On. |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 ": assume (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode) - & (current_tempWstatus.value < lower_desired_temp.value); + & (current_tempWstatus.degrees < lower_desired_temp.degrees); guarantee heat_control == Isolette_Data_Model::On_Off.Onn; case REQ_MHS_3 "If the Regulator Mode is NORMAL and the Current Temperature is greater than |the Upper Desired Temperature, the Heat Control shall be set to Off. |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 ": assume (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode) - & (current_tempWstatus.value > upper_desired_temp.value); + & (current_tempWstatus.degrees > upper_desired_temp.degrees); guarantee heat_control == Isolette_Data_Model::On_Off.Off; case REQ_MHS_4 "If the Regulator Mode is NORMAL and the Current @@ -563,8 +563,8 @@ public |the Heat Control shall not be changed. |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 ": assume (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode) - & (current_tempWstatus.value >= lower_desired_temp.value - & current_tempWstatus.value <= upper_desired_temp.value); + & (current_tempWstatus.degrees >= lower_desired_temp.degrees + & current_tempWstatus.degrees <= upper_desired_temp.degrees); guarantee heat_control == In(lastCmd); case REQ_MHS_5 "If the Regulator Mode is FAILED, the Heat Control shall be diff --git a/isolette/aadl/bin/clean.cmd b/isolette/aadl/bin/clean.cmd index c074b35..b149eec 100755 --- a/isolette/aadl/bin/clean.cmd +++ b/isolette/aadl/bin/clean.cmd @@ -1,4 +1,4 @@ -::#! 2> /dev/null # +::/*#! 2> /dev/null # @ 2>/dev/null # 2>nul & echo off & goto BOF # if [ -z ${SIREUM_HOME} ]; then # echo "Please set SIREUM_HOME env var" # @@ -13,64 +13,93 @@ if not defined SIREUM_HOME ( ) %SIREUM_HOME%\\bin\\sireum.bat slang run "%0" %* exit /B %errorlevel% -::!# +::!#*/ // #Sireum import org.sireum._ -val hamrDir: Os.Path = Os.slashDir.up.up / "hamr" -val microkitDir = hamrDir / "microkit" -val slangDir = hamrDir / "slang" +val aadlDir = Os.slashDir.up -assert (hamrDir.exists) -@sig trait Keep { - @pure def keep(f: Os.Path): B +val sireumBin = Os.path(Os.env("SIREUM_HOME").get) / "bin" +val sireum = sireumBin / (if(Os.isWin) "sireum.bat" else "sireum") + +val osate: Os.Path = Os.env("OSATE_HOME") match { + case Some(s) => Os.path(s) / (if (Os.isWin) "osate.exe" else if (Os.isLinux) "osate" else "Contents/MacOs/osate") + case _ if (Os.isWin) => sireumBin / "win" / "fmide" / "fmide.exe" + case _ if (Os.isMac) => sireumBin / "mac" / "fmide.app" / "Contents" / "MacOs" / "osate" + case _ if (Os.isLinux) => sireumBin / "linux" / "fmide" / "fmide" + case _ => + println("Unsupported operating system") + Os.exit(1) + halt("") } -@datatype class KeepPath (path: Os.Path) extends Keep { - @pure def keep(f: Os.Path): B = { - return f == path - } + +if (!osate.exists) { + eprintln("Please install FMIDE (e.g. '$SIREUM_HOME/bin/install/fmide.cmd') or OSATE (e.g. 'sireum hamr phantom -u')") + Os.exit(1) + halt("") } -@datatype class KeepPattern (pattern: String) extends Keep { - @pure def keep(f: Os.Path): B = { - return ops.StringOps(f.value).contains(pattern) - } + +val osireum = ISZ(osate.string, "-nosplash", "--launcher.suppressErrors", "-data", "@user.home/.sireum", "-application", "org.sireum.aadl.osate.cli") + +if(Os.cliArgs.size > 1) { + eprintln("Only expecting a single argument") + Os.exit(1) } -val toKeep = ISZ( - KeepPattern(".gitignore"), - KeepPattern(".idea"), - KeepPattern("clean.cmd"), - KeepPattern("run-hamr.cmd"), - KeepPattern("run-logika.cmd"), - KeepPath(slangDir / "src" / "main" / "component"), - KeepPath(slangDir / "src" / "test" / "bridge"), - KeepPath(slangDir / "src" / "test" / "system"), - KeepPattern("_user.c") // microkit user implementation files -) +val platform: String = + if(Os.cliArgs.nonEmpty) Os.cliArgs(0) + else "JVM" + +val packageName = "isolette" + +val excludeComponentImpl = F + +val camkes_output_dir = + if (platform == "Microkit") "microkit" + else "camkes" -@pure def keep(f: Os.Path): B = { - for (p <- toKeep if p.keep(f)) { - return T - } - return F +var codegenArgs = ISZ("hamr", "codegen", + "--platform", platform, + "--package-name", packageName, + "--slang-output-dir", (aadlDir.up / "hamr" / "slang").string, + "--output-c-dir", (aadlDir.up / "hamr" / "c").string, + "--camkes-output-dir", (aadlDir.up / "hamr" / camkes_output_dir).string, + "--run-transpiler", + "--bit-width", "32", + "--max-string-size", "256", + "--max-array-size", "1", + "--verbose", + "--workspace-root-dir", aadlDir.string) + +if (platform == "JVM") { + codegenArgs = codegenArgs :+ "--runtime-monitoring" +} else { + println("***********************************************************************") + println(s"Note: runtime-monitoring support is not yet avialable for ${platform}") + println("***********************************************************************") +} + +if (excludeComponentImpl) { + codegenArgs = codegenArgs :+ "--exclude-component-impl" } -def rec(p: Os.Path, onlyDelAutoGen: B): Unit = { - if(p.isFile) { - if ((!keep(p) && !onlyDelAutoGen) || ops.StringOps(p.read).contains("Do not edit")) { - p.remove() - println(s"Removed file: $p") - } - } else { - for (pp <- p.list) { - rec(pp, keep(p) || onlyDelAutoGen) - } - if (p.list.isEmpty) { - p.removeAll() - println(s"Removed empty directory: $p") - } - } +if ((aadlDir.up / "hamr" / "slang" / ".idea").exists) { + codegenArgs = codegenArgs :+ "--no-proyek-ive" +} + +codegenArgs = codegenArgs :+ (aadlDir / ".system").string + +val results = Os.proc(osireum ++ codegenArgs).echo.console.run() + +// Running under windows results in 23 which is an indication +// a platform restart was requested. Codegen completes +// successfully and the cli app returns 0 so +// not sure why this is being issued. +if(results.exitCode == 0 || results.exitCode == 23) { + Os.exit(0) +} else { + println(results.err) + Os.exit(results.exitCode) } -rec(hamrDir, F) diff --git a/isolette/aadl/bin/run-hamr.cmd b/isolette/aadl/bin/run-hamr.cmd index b149eec..c8463f9 100755 --- a/isolette/aadl/bin/run-hamr.cmd +++ b/isolette/aadl/bin/run-hamr.cmd @@ -60,12 +60,14 @@ val camkes_output_dir = if (platform == "Microkit") "microkit" else "camkes" +val hamrDir = aadlDir.up / "hamr" + var codegenArgs = ISZ("hamr", "codegen", "--platform", platform, "--package-name", packageName, - "--slang-output-dir", (aadlDir.up / "hamr" / "slang").string, - "--output-c-dir", (aadlDir.up / "hamr" / "c").string, - "--camkes-output-dir", (aadlDir.up / "hamr" / camkes_output_dir).string, + "--slang-output-dir", (hamrDir / "slang").string, + "--output-c-dir", (hamrDir / "c").string, + "--camkes-output-dir", (hamrDir / camkes_output_dir).string, "--run-transpiler", "--bit-width", "32", "--max-string-size", "256", @@ -85,9 +87,7 @@ if (excludeComponentImpl) { codegenArgs = codegenArgs :+ "--exclude-component-impl" } -if ((aadlDir.up / "hamr" / "slang" / ".idea").exists) { - codegenArgs = codegenArgs :+ "--no-proyek-ive" -} +codegenArgs = codegenArgs :+ "--no-proyek-ive" codegenArgs = codegenArgs :+ (aadlDir / ".system").string diff --git a/isolette/hamr/microkit/microkit.system b/isolette/hamr/microkit/microkit.system index b202fe3..3d5d030 100644 --- a/isolette/hamr/microkit/microkit.system +++ b/isolette/hamr/microkit/microkit.system @@ -28,7 +28,7 @@ - + - + - + - + - + - + - + - + - + - + - + e._1) val Isolette_Single_Sensor_Instance_isolette_processor_timingProperties: ProcessorTimingProperties = ProcessorTimingProperties( - clockPeriod = Some(2), + clockPeriod = Some(1), framePeriod = Some(1000), - maxDomain = Some(10), + maxDomain = None(), slotTime = None()) val Isolette_Single_Sensor_Instance_thermostat_rt_mri_mri_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(7)) val Isolette_Single_Sensor_Instance_thermostat_rt_mhs_mhs_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(9)) val Isolette_Single_Sensor_Instance_thermostat_rt_mrm_mrm_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(8)) val Isolette_Single_Sensor_Instance_thermostat_rt_drf_drf_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(10)) val Isolette_Single_Sensor_Instance_thermostat_mt_mmi_mmi_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(4)) val Isolette_Single_Sensor_Instance_thermostat_mt_ma_ma_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(5)) val Isolette_Single_Sensor_Instance_thermostat_mt_mmm_mmm_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(3)) val Isolette_Single_Sensor_Instance_thermostat_mt_dmf_dmf_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(6)) val Isolette_Single_Sensor_Instance_operator_interface_oip_oit_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(12)) val Isolette_Single_Sensor_Instance_temperature_sensor_cpi_thermostat_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(2)) val Isolette_Single_Sensor_Instance_heat_source_cpi_heat_controller_timingProperties: ThreadTimingProperties = ThreadTimingProperties( - computeExecutionTime = Some((10, 10)), + computeExecutionTime = None(), domain = Some(11)) diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Alarm_i_Api.scala b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Alarm_i_Api.scala index cfeace9..279ce97 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Alarm_i_Api.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Alarm_i_Api.scala @@ -6,24 +6,6 @@ import org.sireum._ import art._ import isolette._ -object Manage_Alarm_i_Api { - // assume Table_A_12_LowerAlarmTemp - // Range [96..101] - // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 - @strictpure def Table_A_12_LowerAlarmTemp(lower_alarm_temp: Isolette_Data_Model.Temp_i): B = - 96.0f <= lower_alarm_temp.value && - lower_alarm_temp.value <= 101.0f - - // assume Table_A_12_UpperAlarmTemp - // Range [97..102] - // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 - @strictpure def Table_A_12_UpperAlarmTemp(upper_alarm_temp: Isolette_Data_Model.Temp_i): B = - 97.0f <= upper_alarm_temp.value && - upper_alarm_temp.value <= 102.0f -} - -import Manage_Alarm_i_Api._ - @sig trait Manage_Alarm_i_Api { def id: Art.BridgeId def current_tempWstatus_Id : Art.PortId @@ -99,14 +81,10 @@ import Manage_Alarm_i_Api._ // Logika spec var representing port state for incoming data port @spec var lower_alarm_temp: Isolette_Data_Model.Temp_i = $ - @spec def lower_alarm_temp_Inv = Invariant( - Table_A_12_LowerAlarmTemp(lower_alarm_temp) - ) def get_lower_alarm_temp() : Option[Isolette_Data_Model.Temp_i] = { Contract( Ensures( - Table_A_12_LowerAlarmTemp(lower_alarm_temp), Res == Some(lower_alarm_temp) ) ) @@ -122,14 +100,10 @@ import Manage_Alarm_i_Api._ // Logika spec var representing port state for incoming data port @spec var upper_alarm_temp: Isolette_Data_Model.Temp_i = $ - @spec def upper_alarm_temp_Inv = Invariant( - Table_A_12_UpperAlarmTemp(upper_alarm_temp) - ) def get_upper_alarm_temp() : Option[Isolette_Data_Model.Temp_i] = { Contract( Ensures( - Table_A_12_UpperAlarmTemp(upper_alarm_temp), Res == Some(upper_alarm_temp) ) ) diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Alarm_i_thermostat_mt_ma_ma_GumboX.scala b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Alarm_i_thermostat_mt_ma_ma_GumboX.scala index fb7306f..e11bd8c 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Alarm_i_thermostat_mt_ma_ma_GumboX.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Alarm_i_thermostat_mt_ma_ma_GumboX.scala @@ -7,34 +7,6 @@ import isolette._ // Do not edit this file as it will be overwritten if HAMR codegen is rerun object Manage_Alarm_i_thermostat_mt_ma_ma_GumboX { - /** I-Assm: Integration constraint on ma's incoming data port lower_alarm_temp - * - * assume Table_A_12_LowerAlarmTemp - * Range [96..101] - * http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 - */ - @strictpure def I_Assm_lower_alarm_temp(lower_alarm_temp: Isolette_Data_Model.Temp_i): B = - 96.0f <= lower_alarm_temp.value && - lower_alarm_temp.value <= 101.0f - - // I-Assm-Guard: Integration constraint on ma's incoming data port lower_alarm_temp - @strictpure def I_Assm_Guard_lower_alarm_temp(lower_alarm_temp: Isolette_Data_Model.Temp_i): B = - I_Assm_lower_alarm_temp(lower_alarm_temp) - - /** I-Assm: Integration constraint on ma's incoming data port upper_alarm_temp - * - * assume Table_A_12_UpperAlarmTemp - * Range [97..102] - * http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 - */ - @strictpure def I_Assm_upper_alarm_temp(upper_alarm_temp: Isolette_Data_Model.Temp_i): B = - 97.0f <= upper_alarm_temp.value && - upper_alarm_temp.value <= 102.0f - - // I-Assm-Guard: Integration constraint on ma's incoming data port upper_alarm_temp - @strictpure def I_Assm_Guard_upper_alarm_temp(upper_alarm_temp: Isolette_Data_Model.Temp_i): B = - I_Assm_upper_alarm_temp(upper_alarm_temp) - /** Initialize Entrypoint Contract * * guarantee REQ_MA_1 @@ -93,7 +65,31 @@ object Manage_Alarm_i_thermostat_mt_ma_ma_GumboX { @strictpure def compute_spec_Figure_A_7_assume( api_lower_alarm_temp: Isolette_Data_Model.Temp_i, api_upper_alarm_temp: Isolette_Data_Model.Temp_i): B = - api_upper_alarm_temp.value - api_lower_alarm_temp.value >= 1.0f + api_upper_alarm_temp.degrees - api_lower_alarm_temp.degrees >= 1.0f + + /** Compute Entrypoint Contract + * + * assumes Table_A_12_LowerAlarmTemp + * Range [96..101] + * http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 + * @param api_lower_alarm_temp incoming data port + */ + @strictpure def compute_spec_Table_A_12_LowerAlarmTemp_assume( + api_lower_alarm_temp: Isolette_Data_Model.Temp_i): B = + 96.0f <= api_lower_alarm_temp.degrees && + api_lower_alarm_temp.degrees <= 101.0f + + /** Compute Entrypoint Contract + * + * assumes Table_A_12_UpperAlarmTemp + * Range [97..102] + * http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 + * @param api_upper_alarm_temp incoming data port + */ + @strictpure def compute_spec_Table_A_12_UpperAlarmTemp_assume( + api_upper_alarm_temp: Isolette_Data_Model.Temp_i): B = + 97.0f <= api_upper_alarm_temp.degrees && + api_upper_alarm_temp.degrees <= 102.0f /** CEP-T-Assm: Top-level assume contracts for ma's compute entrypoint * @@ -103,7 +99,9 @@ object Manage_Alarm_i_thermostat_mt_ma_ma_GumboX { @strictpure def compute_CEP_T_Assm ( api_lower_alarm_temp: Isolette_Data_Model.Temp_i, api_upper_alarm_temp: Isolette_Data_Model.Temp_i): B = - compute_spec_Figure_A_7_assume(api_lower_alarm_temp, api_upper_alarm_temp) + compute_spec_Figure_A_7_assume(api_lower_alarm_temp, api_upper_alarm_temp) & + compute_spec_Table_A_12_LowerAlarmTemp_assume(api_lower_alarm_temp) & + compute_spec_Table_A_12_UpperAlarmTemp_assume(api_upper_alarm_temp) /** CEP-Pre: Compute Entrypoint Pre-Condition for ma * @@ -119,11 +117,7 @@ object Manage_Alarm_i_thermostat_mt_ma_ma_GumboX { api_lower_alarm_temp: Isolette_Data_Model.Temp_i, api_monitor_mode: Isolette_Data_Model.Monitor_Mode.Type, api_upper_alarm_temp: Isolette_Data_Model.Temp_i): B = - (// I-Assm-Guard: Integration constraints for ma's incoming ports - I_Assm_Guard_lower_alarm_temp(api_lower_alarm_temp) & - I_Assm_Guard_upper_alarm_temp(api_upper_alarm_temp) & - - // CEP-Assm: assume clauses of ma's compute entrypoint + (// CEP-Assm: assume clauses of ma's compute entrypoint compute_CEP_T_Assm (api_lower_alarm_temp, api_upper_alarm_temp)) /** CEP-Pre: Compute Entrypoint Pre-Condition for ma via container @@ -174,8 +168,8 @@ object Manage_Alarm_i_thermostat_mt_ma_ma_GumboX { api_upper_alarm_temp: Isolette_Data_Model.Temp_i, api_alarm_control: Isolette_Data_Model.On_Off.Type): B = (api_monitor_mode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode & - (api_current_tempWstatus.value < api_lower_alarm_temp.value || - api_current_tempWstatus.value > api_upper_alarm_temp.value)) -->: + (api_current_tempWstatus.degrees < api_lower_alarm_temp.degrees || + api_current_tempWstatus.degrees > api_upper_alarm_temp.degrees)) -->: (api_alarm_control == Isolette_Data_Model.On_Off.Onn & lastCmd == Isolette_Data_Model.On_Off.Onn) @@ -204,10 +198,10 @@ object Manage_Alarm_i_thermostat_mt_ma_ma_GumboX { api_upper_alarm_temp: Isolette_Data_Model.Temp_i, api_alarm_control: Isolette_Data_Model.On_Off.Type): B = (api_monitor_mode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode & - (api_current_tempWstatus.value >= api_lower_alarm_temp.value && - api_current_tempWstatus.value < api_lower_alarm_temp.value + 0.5f || - api_current_tempWstatus.value > api_upper_alarm_temp.value - 0.5f && - api_current_tempWstatus.value <= api_upper_alarm_temp.value)) -->: + (api_current_tempWstatus.degrees >= api_lower_alarm_temp.degrees && + api_current_tempWstatus.degrees < api_lower_alarm_temp.degrees + 0.5f || + api_current_tempWstatus.degrees > api_upper_alarm_temp.degrees - 0.5f && + api_current_tempWstatus.degrees <= api_upper_alarm_temp.degrees)) -->: (api_alarm_control == In_lastCmd & lastCmd == In_lastCmd) @@ -232,8 +226,8 @@ object Manage_Alarm_i_thermostat_mt_ma_ma_GumboX { api_upper_alarm_temp: Isolette_Data_Model.Temp_i, api_alarm_control: Isolette_Data_Model.On_Off.Type): B = (api_monitor_mode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode & - api_current_tempWstatus.value >= api_lower_alarm_temp.value + 0.5f & - api_current_tempWstatus.value <= api_upper_alarm_temp.value - 0.5f) -->: + (api_current_tempWstatus.degrees >= api_lower_alarm_temp.degrees + 0.5f & + api_current_tempWstatus.degrees <= api_upper_alarm_temp.degrees - 0.5f)) -->: (api_alarm_control == Isolette_Data_Model.On_Off.Off & lastCmd == Isolette_Data_Model.On_Off.Off) diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Interface_i_Api.scala b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Interface_i_Api.scala index f99bb22..f542185 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Interface_i_Api.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Interface_i_Api.scala @@ -11,15 +11,15 @@ object Manage_Monitor_Interface_i_Api { // Range [97..102] // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 @strictpure def Table_A_12_UpperAlarmTemp(upper_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - 97.0f <= upper_alarm_tempWstatus.value && - upper_alarm_tempWstatus.value <= 102.0f + 97.0f <= upper_alarm_tempWstatus.degrees && + upper_alarm_tempWstatus.degrees <= 102.0f // assume Table_A_12_LowerAlarmTemp // Range [96..101] // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 @strictpure def Table_A_12_LowerAlarmTemp(lower_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - 96.0f <= lower_alarm_tempWstatus.value && - lower_alarm_tempWstatus.value <= 101.0f + 96.0f <= lower_alarm_tempWstatus.degrees && + lower_alarm_tempWstatus.degrees <= 101.0f } import Manage_Monitor_Interface_i_Api._ diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX.scala b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX.scala index 8710e21..38fb4d1 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX.scala @@ -14,8 +14,8 @@ object Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX { * http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 */ @strictpure def I_Assm_upper_alarm_tempWstatus(upper_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - 97.0f <= upper_alarm_tempWstatus.value && - upper_alarm_tempWstatus.value <= 102.0f + 97.0f <= upper_alarm_tempWstatus.degrees && + upper_alarm_tempWstatus.degrees <= 102.0f // I-Assm-Guard: Integration constraint on mmi's incoming data port upper_alarm_tempWstatus @strictpure def I_Assm_Guard_upper_alarm_tempWstatus(upper_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = @@ -28,8 +28,8 @@ object Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX { * http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 */ @strictpure def I_Assm_lower_alarm_tempWstatus(lower_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - 96.0f <= lower_alarm_tempWstatus.value && - lower_alarm_tempWstatus.value <= 101.0f + 96.0f <= lower_alarm_tempWstatus.degrees && + lower_alarm_tempWstatus.degrees <= 101.0f // I-Assm-Guard: Integration constraint on mmi's incoming data port lower_alarm_tempWstatus @strictpure def I_Assm_Guard_lower_alarm_tempWstatus(lower_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = @@ -175,7 +175,7 @@ object Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX { api_interface_failure: Isolette_Data_Model.Failure_Flag_i): B = (api_lower_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Invalid | api_upper_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Invalid) -->: - (api_interface_failure.value) + (api_interface_failure.flag) /** guarantee REQ_MMI_5 * If the Status attribute of the Lower Alarm Temperature @@ -192,7 +192,7 @@ object Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX { api_interface_failure: Isolette_Data_Model.Failure_Flag_i): B = (api_lower_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid & api_upper_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: - (!(api_interface_failure.value)) + (!(api_interface_failure.flag)) /** guarantee REQ_MMI_6 * If the Monitor Interface Failure is False, @@ -211,9 +211,9 @@ object Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX { api_lower_alarm_temp: Isolette_Data_Model.Temp_i, api_upper_alarm_temp: Isolette_Data_Model.Temp_i): B = (T) -->: - (!(api_interface_failure.value) -->: - (api_lower_alarm_temp.value == api_lower_alarm_tempWstatus.value & - api_upper_alarm_temp.value == api_upper_alarm_tempWstatus.value)) + (!(api_interface_failure.flag) -->: + (api_lower_alarm_temp.degrees == api_lower_alarm_tempWstatus.degrees & + api_upper_alarm_temp.degrees == api_upper_alarm_tempWstatus.degrees)) /** guarantee REQ_MMI_7 * If the Monitor Interface Failure is True, @@ -224,7 +224,7 @@ object Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_GumboX { @strictpure def compute_case_REQ_MMI_7( api_interface_failure: Isolette_Data_Model.Failure_Flag_i): B = (T) -->: - (api_interface_failure.value -->: T) + (api_interface_failure.flag -->: T) /** CEP-T-Case: Top-Level case contracts for mmi's compute entrypoint * diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_GumboX.scala b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_GumboX.scala index f0205c2..6ba45eb 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_GumboX.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Monitor/Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_GumboX.scala @@ -67,7 +67,7 @@ object Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_GumboX { api_internal_failure: Isolette_Data_Model.Failure_Flag_i, api_monitor_mode: Isolette_Data_Model.Monitor_Mode.Type): B = (In_lastMonitorMode == Isolette_Data_Model.Monitor_Mode.Init_Monitor_Mode) -->: - ((!(api_interface_failure.value || api_internal_failure.value) && + ((!(api_interface_failure.flag || api_internal_failure.flag) && api_current_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: (api_monitor_mode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode)) @@ -91,7 +91,7 @@ object Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_GumboX { api_internal_failure: Isolette_Data_Model.Failure_Flag_i, api_monitor_mode: Isolette_Data_Model.Monitor_Mode.Type): B = (In_lastMonitorMode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode) -->: - ((api_interface_failure.value || api_internal_failure.value || + ((api_interface_failure.flag || api_internal_failure.flag || api_current_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: (api_monitor_mode == Isolette_Data_Model.Monitor_Mode.Failed_Monitor_Mode)) diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Operator_Interface/Operator_Interface_Thread_i_Api.scala b/isolette/hamr/slang/src/main/bridge/isolette/Operator_Interface/Operator_Interface_Thread_i_Api.scala index c5e5dab..c85335d 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Operator_Interface/Operator_Interface_Thread_i_Api.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Operator_Interface/Operator_Interface_Thread_i_Api.scala @@ -11,15 +11,15 @@ object Operator_Interface_Thread_i_Api { // Range [96..101] // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 @strictpure def Table_A_12_LowerAlarmTemp(lower_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - 96.0f <= lower_alarm_tempWstatus.value && - lower_alarm_tempWstatus.value <= 101.0f + 96.0f <= lower_alarm_tempWstatus.degrees && + lower_alarm_tempWstatus.degrees <= 101.0f // guarantee Table_A_12_UpperAlarmTemp // Range [97..102] // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 @strictpure def Table_A_12_UpperAlarmTemp(upper_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - 97.0f <= upper_alarm_tempWstatus.value && - upper_alarm_tempWstatus.value <= 102.0f + 97.0f <= upper_alarm_tempWstatus.degrees && + upper_alarm_tempWstatus.degrees <= 102.0f } import Operator_Interface_Thread_i_Api._ diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Operator_Interface/Operator_Interface_Thread_i_operator_interface_oip_oit_GumboX.scala b/isolette/hamr/slang/src/main/bridge/isolette/Operator_Interface/Operator_Interface_Thread_i_operator_interface_oip_oit_GumboX.scala index c8640c9..7c1e682 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Operator_Interface/Operator_Interface_Thread_i_operator_interface_oip_oit_GumboX.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Operator_Interface/Operator_Interface_Thread_i_operator_interface_oip_oit_GumboX.scala @@ -14,8 +14,8 @@ object Operator_Interface_Thread_i_operator_interface_oip_oit_GumboX { * http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 */ @strictpure def I_Guar_lower_alarm_tempWstatus(lower_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - 96.0f <= lower_alarm_tempWstatus.value && - lower_alarm_tempWstatus.value <= 101.0f + 96.0f <= lower_alarm_tempWstatus.degrees && + lower_alarm_tempWstatus.degrees <= 101.0f // I_Guar-Guard: Integration constraint on oit's outgoing data port lower_alarm_tempWstatus @strictpure def I_Guar_Guard_lower_alarm_tempWstatus(lower_alarm_tempWstatus: Option[Isolette_Data_Model.TempWstatus_i]): B = @@ -28,8 +28,8 @@ object Operator_Interface_Thread_i_operator_interface_oip_oit_GumboX { * http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 */ @strictpure def I_Guar_upper_alarm_tempWstatus(upper_alarm_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - 97.0f <= upper_alarm_tempWstatus.value && - upper_alarm_tempWstatus.value <= 102.0f + 97.0f <= upper_alarm_tempWstatus.degrees && + upper_alarm_tempWstatus.degrees <= 102.0f // I_Guar-Guard: Integration constraint on oit's outgoing data port upper_alarm_tempWstatus @strictpure def I_Guar_Guard_upper_alarm_tempWstatus(upper_alarm_tempWstatus: Option[Isolette_Data_Model.TempWstatus_i]): B = diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Heat_Source_i_thermostat_rt_mhs_mhs_GumboX.scala b/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Heat_Source_i_thermostat_rt_mhs_mhs_GumboX.scala index 6702e6c..b4130ed 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Heat_Source_i_thermostat_rt_mhs_mhs_GumboX.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Heat_Source_i_thermostat_rt_mhs_mhs_GumboX.scala @@ -68,7 +68,7 @@ object Manage_Heat_Source_i_thermostat_rt_mhs_mhs_GumboX { @strictpure def compute_spec_lower_is_lower_temp_assume( api_lower_desired_temp: Isolette_Data_Model.Temp_i, api_upper_desired_temp: Isolette_Data_Model.Temp_i): B = - api_lower_desired_temp.value <= api_upper_desired_temp.value + api_lower_desired_temp.degrees <= api_upper_desired_temp.degrees /** CEP-T-Assm: Top-level assume contracts for mhs's compute entrypoint * @@ -159,7 +159,7 @@ object Manage_Heat_Source_i_thermostat_rt_mhs_mhs_GumboX { api_regulator_mode: Isolette_Data_Model.Regulator_Mode.Type, api_heat_control: Isolette_Data_Model.On_Off.Type): B = (api_regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode & - api_current_tempWstatus.value < api_lower_desired_temp.value) -->: + api_current_tempWstatus.degrees < api_lower_desired_temp.degrees) -->: (api_heat_control == Isolette_Data_Model.On_Off.Onn) /** guarantee REQ_MHS_3 @@ -177,7 +177,7 @@ object Manage_Heat_Source_i_thermostat_rt_mhs_mhs_GumboX { api_upper_desired_temp: Isolette_Data_Model.Temp_i, api_heat_control: Isolette_Data_Model.On_Off.Type): B = (api_regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode & - api_current_tempWstatus.value > api_upper_desired_temp.value) -->: + api_current_tempWstatus.degrees > api_upper_desired_temp.degrees) -->: (api_heat_control == Isolette_Data_Model.On_Off.Off) /** guarantee REQ_MHS_4 @@ -201,8 +201,8 @@ object Manage_Heat_Source_i_thermostat_rt_mhs_mhs_GumboX { api_upper_desired_temp: Isolette_Data_Model.Temp_i, api_heat_control: Isolette_Data_Model.On_Off.Type): B = (api_regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode & - (api_current_tempWstatus.value >= api_lower_desired_temp.value & - api_current_tempWstatus.value <= api_upper_desired_temp.value)) -->: + (api_current_tempWstatus.degrees >= api_lower_desired_temp.degrees & + api_current_tempWstatus.degrees <= api_upper_desired_temp.degrees)) -->: (api_heat_control == In_lastCmd) /** guarantee REQ_MHS_5 diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX.scala b/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX.scala index f9b522c..d6dc6ed 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX.scala @@ -70,7 +70,7 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX { @strictpure def compute_spec_lower_is_not_higher_than_upper_assume( api_lower_desired_tempWstatus: Isolette_Data_Model.TempWstatus_i, api_upper_desired_tempWstatus: Isolette_Data_Model.TempWstatus_i): B = - api_lower_desired_tempWstatus.value <= api_upper_desired_tempWstatus.value + api_lower_desired_tempWstatus.degrees <= api_upper_desired_tempWstatus.degrees /** CEP-T-Assm: Top-level assume contracts for mri's compute entrypoint * @@ -161,7 +161,7 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX { api_regulator_mode: Isolette_Data_Model.Regulator_Mode.Type, api_displayed_temp: Isolette_Data_Model.Temp_i): B = (api_regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: - (api_displayed_temp.value == Manage_Regulator_Interface_i_thermostat_rt_mri_mri.ROUND(api_current_tempWstatus.value)) + (api_displayed_temp.degrees == Manage_Regulator_Interface_i_thermostat_rt_mri_mri.ROUND(api_current_tempWstatus.degrees)) /** guarantee REQ_MRI_5 * If the Regulator Mode is not NORMAL, @@ -186,7 +186,7 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX { api_interface_failure: Isolette_Data_Model.Failure_Flag_i): B = (api_upper_desired_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid | api_upper_desired_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: - (api_interface_failure.value) + (api_interface_failure.flag) /** guarantee REQ_MRI_7 * If the Status attribute of the Lower Desired Temperature @@ -202,7 +202,7 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX { api_upper_desired_tempWstatus: Isolette_Data_Model.TempWstatus_i, api_interface_failure: Isolette_Data_Model.Failure_Flag_i): B = (T) -->: - (api_interface_failure.value == !(api_upper_desired_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid & + (api_interface_failure.flag == !(api_upper_desired_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid & api_lower_desired_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid)) /** guarantee REQ_MRI_8 @@ -221,8 +221,8 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri_GumboX { api_lower_desired_temp: Isolette_Data_Model.Temp_i, api_upper_desired_temp: Isolette_Data_Model.Temp_i): B = (T) -->: - (!(api_interface_failure.value) ->: (api_lower_desired_temp.value == api_lower_desired_tempWstatus.value & - api_upper_desired_temp.value == api_upper_desired_tempWstatus.value)) + (!(api_interface_failure.flag) ->: (api_lower_desired_temp.degrees == api_lower_desired_tempWstatus.degrees & + api_upper_desired_temp.degrees == api_upper_desired_tempWstatus.degrees)) /** guarantee REQ_MRI_9 * If the Regulator Interface Failure is True, diff --git a/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_GumboX.scala b/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_GumboX.scala index b8c5d6e..22330c6 100644 --- a/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_GumboX.scala +++ b/isolette/hamr/slang/src/main/bridge/isolette/Regulate/Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_GumboX.scala @@ -70,7 +70,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_GumboX { api_internal_failure: Isolette_Data_Model.Failure_Flag_i, api_regulator_mode: Isolette_Data_Model.Regulator_Mode.Type): B = (In_lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Init_Regulator_Mode) -->: - ((!(api_interface_failure.value || api_internal_failure.value) && + ((!(api_interface_failure.flag || api_internal_failure.flag) && api_current_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: (api_regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode)) @@ -100,7 +100,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_GumboX { api_internal_failure: Isolette_Data_Model.Failure_Flag_i, api_regulator_mode: Isolette_Data_Model.Regulator_Mode.Type): B = (In_lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: - ((!(api_interface_failure.value || api_internal_failure.value) && + ((!(api_interface_failure.flag || api_internal_failure.flag) && api_current_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: (api_regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode)) @@ -128,7 +128,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_GumboX { api_internal_failure: Isolette_Data_Model.Failure_Flag_i, api_regulator_mode: Isolette_Data_Model.Regulator_Mode.Type): B = (In_lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: - (((api_interface_failure.value || api_internal_failure.value) && + (((api_interface_failure.flag || api_internal_failure.flag) && api_current_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: (api_regulator_mode == Isolette_Data_Model.Regulator_Mode.Failed_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Failed_Regulator_Mode)) @@ -156,7 +156,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_GumboX { api_internal_failure: Isolette_Data_Model.Failure_Flag_i, api_regulator_mode: Isolette_Data_Model.Regulator_Mode.Type): B = (In_lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Init_Regulator_Mode) -->: - (((api_interface_failure.value || api_internal_failure.value) && + (((api_interface_failure.flag || api_internal_failure.flag) && api_current_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: (api_regulator_mode == Isolette_Data_Model.Regulator_Mode.Failed_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Failed_Regulator_Mode)) diff --git a/isolette/hamr/slang/src/main/component/isolette/Devices/Heat_Source_i_heat_source_cpi_heat_controller.scala b/isolette/hamr/slang/src/main/component/isolette/Devices/Heat_Source_i_heat_source_cpi_heat_controller.scala index b43a576..c88773e 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Devices/Heat_Source_i_heat_source_cpi_heat_controller.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Devices/Heat_Source_i_heat_source_cpi_heat_controller.scala @@ -15,7 +15,9 @@ object Heat_Source_i_heat_source_cpi_heat_controller { def initialise(api: Heat_Source_i_Initialization_Api): Unit = { heater_state = Isolette_Data_Model.On_Off.Off - // must initiliaze outgoing data ports during initialization phase + Heat_Source_Native.setState(heater_state) + + // must initialize outgoing data ports during initialization phase api.put_heat_out(Isolette_Environment.Heat.Dummy_Head_Enum) } diff --git a/isolette/hamr/slang/src/main/component/isolette/Devices/Temperature_Sensor__InjectionProvider_Ext.scala b/isolette/hamr/slang/src/main/component/isolette/Devices/Temperature_Sensor__InjectionProvider_Ext.scala index 578858e..c4e34d0 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Devices/Temperature_Sensor__InjectionProvider_Ext.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Devices/Temperature_Sensor__InjectionProvider_Ext.scala @@ -19,7 +19,7 @@ object Temperature_Sensor__InjectionProvider_Ext { val delta = F32((rand.nextGaussian() * 3).abs.min(2).toFloat * (if (Heat_Source_Native_Ext.isOn) 1 else -1)) - lastTemperature(lastTemperature.value + delta) + lastTemperature(lastTemperature.degrees + delta) } else { lastTemperature } diff --git a/isolette/hamr/slang/src/main/component/isolette/Devices/Temperature_Sensor_i_temperature_sensor_cpi_thermostat.scala b/isolette/hamr/slang/src/main/component/isolette/Devices/Temperature_Sensor_i_temperature_sensor_cpi_thermostat.scala index dbf7a49..2263af2 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Devices/Temperature_Sensor_i_temperature_sensor_cpi_thermostat.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Devices/Temperature_Sensor_i_temperature_sensor_cpi_thermostat.scala @@ -12,7 +12,7 @@ object Temperature_Sensor_i_temperature_sensor_cpi_thermostat { Temperature_Sensor__InjectionProvider.init() val defaultTemp: Isolette_Data_Model.Temp_i = Isolette_Data_Model.Temp_i(InitialValues.DEFAULT_CURRENT_TEMPERATURE) - val defaultTempWstatus = Isolette_Data_Model.TempWstatus_i(defaultTemp.value, Isolette_Data_Model.ValueStatus.Valid) + val defaultTempWstatus = Isolette_Data_Model.TempWstatus_i(defaultTemp.degrees, Isolette_Data_Model.ValueStatus.Valid) api.put_current_tempWstatus(defaultTempWstatus) } @@ -23,9 +23,9 @@ object Temperature_Sensor_i_temperature_sensor_cpi_thermostat { // Status value (Valid, Invalid) of sensed temperature. // Determine what meaningful approach should followed to choose a status value. // As of now, the status value is always set to "Valid" - val current_tempWstatus = Isolette_Data_Model.TempWstatus_i(t.value, Isolette_Data_Model.ValueStatus.Valid) + val current_tempWstatus = Isolette_Data_Model.TempWstatus_i(t.degrees, Isolette_Data_Model.ValueStatus.Valid) api.put_current_tempWstatus(current_tempWstatus) - api.logInfo(s"Sensed temperature: ${t.value}") + api.logInfo(s"Sensed temperature: ${t.degrees}") } def finalise(api: Temperature_Sensor_i_Operational_Api): Unit = { } diff --git a/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Alarm_i_thermostat_mt_ma_ma.scala b/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Alarm_i_thermostat_mt_ma_ma.scala index b971147..253afce 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Alarm_i_thermostat_mt_ma_ma.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Alarm_i_thermostat_mt_ma_ma.scala @@ -48,7 +48,17 @@ object Manage_Alarm_i_thermostat_mt_ma_ma { // assumption is that the lower alarm must be at least 1.0f less than // the upper alarm in order to account for the 0.5f tolerance // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 - api.upper_alarm_temp.value - api.lower_alarm_temp.value >= 1.0f + api.upper_alarm_temp.degrees - api.lower_alarm_temp.degrees >= 1.0f, + // assume Table_A_12_LowerAlarmTemp + // Range [96..101] + // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 + 96.0f <= api.lower_alarm_temp.degrees && + api.lower_alarm_temp.degrees <= 101.0f, + // assume Table_A_12_UpperAlarmTemp + // Range [97..102] + // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 + 97.0f <= api.upper_alarm_temp.degrees && + api.upper_alarm_temp.degrees <= 102.0f // END COMPUTE REQUIRES timeTriggered ), Modifies(lastCmd, api), @@ -66,8 +76,8 @@ object Manage_Alarm_i_thermostat_mt_ma_ma { // Temperature, the Alarm Control shall be set to On. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 (api.monitor_mode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode & - (api.current_tempWstatus.value < api.lower_alarm_temp.value || - api.current_tempWstatus.value > api.upper_alarm_temp.value)) -->: (api.alarm_control == Isolette_Data_Model.On_Off.Onn & + (api.current_tempWstatus.degrees < api.lower_alarm_temp.degrees || + api.current_tempWstatus.degrees > api.upper_alarm_temp.degrees)) -->: (api.alarm_control == Isolette_Data_Model.On_Off.Onn & lastCmd == Isolette_Data_Model.On_Off.Onn), // case REQ_MA_3 // If the Monitor Mode is NORMAL and the Current Temperature @@ -78,10 +88,10 @@ object Manage_Alarm_i_thermostat_mt_ma_ma { // not be changed. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 (api.monitor_mode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode & - (api.current_tempWstatus.value >= api.lower_alarm_temp.value && - api.current_tempWstatus.value < api.lower_alarm_temp.value + 0.5f || - api.current_tempWstatus.value > api.upper_alarm_temp.value - 0.5f && - api.current_tempWstatus.value <= api.upper_alarm_temp.value)) -->: (api.alarm_control == In(lastCmd) & + (api.current_tempWstatus.degrees >= api.lower_alarm_temp.degrees && + api.current_tempWstatus.degrees < api.lower_alarm_temp.degrees + 0.5f || + api.current_tempWstatus.degrees > api.upper_alarm_temp.degrees - 0.5f && + api.current_tempWstatus.degrees <= api.upper_alarm_temp.degrees)) -->: (api.alarm_control == In(lastCmd) & lastCmd == In(lastCmd)), // case REQ_MA_4 // If the Monitor Mode is NORMAL and the value of the Current @@ -90,8 +100,8 @@ object Manage_Alarm_i_thermostat_mt_ma_ma { // -0.5 degrees, the Alarm Control shall be set to Off. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 (api.monitor_mode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode & - api.current_tempWstatus.value >= api.lower_alarm_temp.value + 0.5f & - api.current_tempWstatus.value <= api.upper_alarm_temp.value - 0.5f) -->: (api.alarm_control == Isolette_Data_Model.On_Off.Off & + (api.current_tempWstatus.degrees >= api.lower_alarm_temp.degrees + 0.5f & + api.current_tempWstatus.degrees <= api.upper_alarm_temp.degrees - 0.5f)) -->: (api.alarm_control == Isolette_Data_Model.On_Off.Off & lastCmd == Isolette_Data_Model.On_Off.Off), // case REQ_MA_5 // If the Monitor Mode is FAILED, the Alarm Control shall be @@ -121,11 +131,11 @@ object Manage_Alarm_i_thermostat_mt_ma_ma { // REQ_MA_1 currentCmd = Isolette_Data_Model.On_Off.Off case Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode => - if (currentTemp.value < lowerAlarm.value | currentTemp.value > upperAlarm.value) { + if (currentTemp.degrees < lowerAlarm.degrees | currentTemp.degrees > upperAlarm.degrees) { // REQ_MA_2 currentCmd = Isolette_Data_Model.On_Off.Onn } - else if ((currentTemp.value < lowerAlarm.value + 0.5f) | (currentTemp.value > upperAlarm.value - 0.5f)) { + else if ((currentTemp.degrees < lowerAlarm.degrees + 0.5f) | (currentTemp.degrees > upperAlarm.degrees - 0.5f)) { // REQ_MA_3 currentCmd = lastCmd } diff --git a/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi.scala b/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi.scala index 0107c24..3da606c 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi.scala @@ -78,26 +78,26 @@ object Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi { // the Monitor Interface Failure shall be set to True // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 (api.lower_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Invalid | - api.upper_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Invalid) -->: (api.interface_failure.value), + api.upper_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Invalid) -->: (api.interface_failure.flag), // case REQ_MMI_5 // If the Status attribute of the Lower Alarm Temperature // and the Upper Alarm Temperature is Valid, // the Monitor Interface Failure shall be set to False // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 (api.lower_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid & - api.upper_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: (!(api.interface_failure.value)), + api.upper_alarm_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: (!(api.interface_failure.flag)), // case REQ_MMI_6 // If the Monitor Interface Failure is False, // the Alarm Range variable shall be set to the Desired Temperature Range // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 - (T) -->: (!(api.interface_failure.value) -->: - (api.lower_alarm_temp.value == api.lower_alarm_tempWstatus.value & - api.upper_alarm_temp.value == api.upper_alarm_tempWstatus.value)), + (T) -->: (!(api.interface_failure.flag) -->: + (api.lower_alarm_temp.degrees == api.lower_alarm_tempWstatus.degrees & + api.upper_alarm_temp.degrees == api.upper_alarm_tempWstatus.degrees)), // case REQ_MMI_7 // If the Monitor Interface Failure is True, // the Alarm Range variable is UNSPECIFIED // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 - (T) -->: (api.interface_failure.value -->: T) + (T) -->: (api.interface_failure.flag -->: T) // END COMPUTE ENSURES timeTriggered ) ) @@ -170,12 +170,12 @@ object Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi { if (!interface_failure) { // REQ-MMI-6 - api.put_lower_alarm_temp(Isolette_Data_Model.Temp_i(lower.value)) - api.put_upper_alarm_temp(Isolette_Data_Model.Temp_i(upper.value)) + api.put_lower_alarm_temp(Isolette_Data_Model.Temp_i(lower.degrees)) + api.put_upper_alarm_temp(Isolette_Data_Model.Temp_i(upper.degrees)) } else { // REQ-MMI-7 - api.put_lower_alarm_temp(Isolette_Data_Model.Temp_i(lower.value)) - api.put_upper_alarm_temp(Isolette_Data_Model.Temp_i(upper.value)) + api.put_lower_alarm_temp(Isolette_Data_Model.Temp_i(lower.degrees)) + api.put_upper_alarm_temp(Isolette_Data_Model.Temp_i(upper.degrees)) } } diff --git a/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm.scala b/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm.scala index 7cf4101..9ef0478 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Monitor/Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm.scala @@ -52,7 +52,7 @@ object Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm { // if NOT (Monitor Interface Failure OR Monitor Internal Failure) // AND Current Temperature.Status = Valid // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=114 - (In(lastMonitorMode) == Isolette_Data_Model.Monitor_Mode.Init_Monitor_Mode) -->: ((!(api.interface_failure.value || api.internal_failure.value) && + (In(lastMonitorMode) == Isolette_Data_Model.Monitor_Mode.Init_Monitor_Mode) -->: ((!(api.interface_failure.flag || api.internal_failure.flag) && api.current_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: (api.monitor_mode == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode)), // case REQ_MMM_3 @@ -62,7 +62,7 @@ object Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm { // if (Monitor Interface Failure OR Monitor Internal Failure) // OR NOT(Current Temperature.Status = Valid) // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=114 - (In(lastMonitorMode) == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode) -->: ((api.interface_failure.value || api.internal_failure.value || + (In(lastMonitorMode) == Isolette_Data_Model.Monitor_Mode.Normal_Monitor_Mode) -->: ((api.interface_failure.flag || api.internal_failure.flag || api.current_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: (api.monitor_mode == Isolette_Data_Model.Monitor_Mode.Failed_Monitor_Mode)), // case REQ_MMM_4 @@ -88,7 +88,7 @@ object Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm { // monitor_status = NOT (Monitor Interface Failure OR Monitor Internal Failure) // AND Current Temperature.Status = Valid val monitor_status: B = { - (!(interface_failure.value || internal_failure.value) && current_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) + (!(interface_failure.flag || internal_failure.flag) && current_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) } lastMonitorMode match { diff --git a/isolette/hamr/slang/src/main/component/isolette/Operator_Interface/UserInterface/Gui.scala b/isolette/hamr/slang/src/main/component/isolette/Operator_Interface/UserInterface/Gui.scala index 48ccbd0..a1face6 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Operator_Interface/UserInterface/Gui.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Operator_Interface/UserInterface/Gui.scala @@ -70,25 +70,25 @@ class Gui { y = y + 1 } - addSpinner("Lower Desired Temperature", _lowerDesiredTempWstatus.value.native.toFloat, + addSpinner("Lower Desired Temperature", _lowerDesiredTempWstatus.degrees.native.toFloat, InitialValues.LOWER_DESIRED_TEMPERATURE_LOWER_RANGE.native, InitialValues.LOWER_DESIRED_TEMPERATURE_UPPER_RANGE.native, (s: JSpinner) => Interface_Ext.lowerDesiredTempWstatus.set( Isolette_Data_Model.TempWstatus_i(s.getValue.toString.toFloat, Isolette_Data_Model.ValueStatus.Valid))) - addSpinner("Upper Desired Temperature", _upperDesiredTempWstatus.value.native.toFloat, + addSpinner("Upper Desired Temperature", _upperDesiredTempWstatus.degrees.native.toFloat, InitialValues.UPPER_DESIRED_TEMPERATURE_LOWER_RANGE.native, InitialValues.UPPER_DESIRED_TEMPERATURE_UPPER_RANGE.native, (s: JSpinner) => Interface_Ext.upperDesiredTempWstatus.set( Isolette_Data_Model.TempWstatus_i(s.getValue.toString.toFloat, Isolette_Data_Model.ValueStatus.Valid))) - addSpinner("Lower Alarm Temperature", _lowerAlarmTempWstatus.value.native.toFloat, + addSpinner("Lower Alarm Temperature", _lowerAlarmTempWstatus.degrees.native.toFloat, InitialValues.LOWER_ALARM_TEMPERATURE_LOWER_RANGE.native, InitialValues.LOWER_ALARM_TEMPERATURE_UPPER_RANGE.native, (s: JSpinner) => Interface_Ext.lowerAlarmTempWstatus.set( Isolette_Data_Model.TempWstatus_i(s.getValue.toString.toFloat, Isolette_Data_Model.ValueStatus.Valid))) - addSpinner("Upper Alarm Temperature", _upperAlarmTempWstatus.value.native.toFloat, + addSpinner("Upper Alarm Temperature", _upperAlarmTempWstatus.degrees.native.toFloat, InitialValues.UPPER_ALARM_TEMPERATURE_LOWER_RANGE.native, InitialValues.UPPER_ALARM_TEMPERATURE_UPPER_RANGE.native, (s: JSpinner) => Interface_Ext.upperAlarmTempWstatus.set( Isolette_Data_Model.TempWstatus_i(s.getValue.toString.toFloat, @@ -117,7 +117,7 @@ class Gui { def setDisplayTemperature(v: Option[Isolette_Data_Model.Temp_i]): Unit = { v match { - case Some(t) => txtCurrTemp.setText(t.value.toString()) + case Some(t) => txtCurrTemp.setText(t.degrees.toString()) case _ => } } diff --git a/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Heat_Source_i_thermostat_rt_mhs_mhs.scala b/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Heat_Source_i_thermostat_rt_mhs_mhs.scala index ac8fd11..774f0fb 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Heat_Source_i_thermostat_rt_mhs_mhs.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Heat_Source_i_thermostat_rt_mhs_mhs.scala @@ -39,7 +39,7 @@ object Manage_Heat_Source_i_thermostat_rt_mhs_mhs { Requires( // BEGIN COMPUTE REQUIRES timeTriggered // assume lower_is_lower_temp - api.lower_desired_temp.value <= api.upper_desired_temp.value + api.lower_desired_temp.degrees <= api.upper_desired_temp.degrees // END COMPUTE REQUIRES timeTriggered ), Modifies(api,lastCmd), @@ -58,13 +58,13 @@ object Manage_Heat_Source_i_thermostat_rt_mhs_mhs { // the Lower Desired Temperature, the Heat Control shall be set to On. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode & - api.current_tempWstatus.value < api.lower_desired_temp.value) -->: (api.heat_control == Isolette_Data_Model.On_Off.Onn), + api.current_tempWstatus.degrees < api.lower_desired_temp.degrees) -->: (api.heat_control == Isolette_Data_Model.On_Off.Onn), // case REQ_MHS_3 // If the Regulator Mode is NORMAL and the Current Temperature is greater than // the Upper Desired Temperature, the Heat Control shall be set to Off. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode & - api.current_tempWstatus.value > api.upper_desired_temp.value) -->: (api.heat_control == Isolette_Data_Model.On_Off.Off), + api.current_tempWstatus.degrees > api.upper_desired_temp.degrees) -->: (api.heat_control == Isolette_Data_Model.On_Off.Off), // case REQ_MHS_4 // If the Regulator Mode is NORMAL and the Current // Temperature is greater than or equal to the Lower Desired Temperature @@ -72,8 +72,8 @@ object Manage_Heat_Source_i_thermostat_rt_mhs_mhs { // the Heat Control shall not be changed. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode & - (api.current_tempWstatus.value >= api.lower_desired_temp.value & - api.current_tempWstatus.value <= api.upper_desired_temp.value)) -->: (api.heat_control == In(lastCmd)), + (api.current_tempWstatus.degrees >= api.lower_desired_temp.degrees & + api.current_tempWstatus.degrees <= api.upper_desired_temp.degrees)) -->: (api.heat_control == In(lastCmd)), // case REQ_MHS_5 // If the Regulator Mode is FAILED, the Heat Control shall be // set to Off. @@ -103,10 +103,10 @@ object Manage_Heat_Source_i_thermostat_rt_mhs_mhs { // ------ NORMAL Mode ------- case Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode => - if (currentTemp.value > upper.value) { + if (currentTemp.degrees > upper.degrees) { // REQ-MHS-3 currentCmd = Isolette_Data_Model.On_Off.Off - } else if (currentTemp.value < lower.value) { + } else if (currentTemp.degrees < lower.degrees) { // REQ-MHS-2 //currentCmd = Isolette_Data_Model.On_Off.Off // seeded bug/error currentCmd = Isolette_Data_Model.On_Off.Onn diff --git a/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Regulator_Interface_i_thermostat_rt_mri_mri.scala b/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Regulator_Interface_i_thermostat_rt_mri_mri.scala index 179c014..d15a286 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Regulator_Interface_i_thermostat_rt_mri_mri.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Regulator_Interface_i_thermostat_rt_mri_mri.scala @@ -41,7 +41,7 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri { Requires( // BEGIN COMPUTE REQUIRES timeTriggered // assume lower_is_not_higher_than_upper - api.lower_desired_tempWstatus.value <= api.upper_desired_tempWstatus.value + api.lower_desired_tempWstatus.degrees <= api.upper_desired_tempWstatus.degrees // END COMPUTE REQUIRES timeTriggered ), Modifies(api), @@ -67,7 +67,7 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri { // Display Temperature shall be set to the value of the // Current Temperature rounded to the nearest integer. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 - (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: (api.displayed_temp.value == Manage_Regulator_Interface_i_thermostat_rt_mri_mri.ROUND(api.current_tempWstatus.value)), + (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: (api.displayed_temp.degrees == Manage_Regulator_Interface_i_thermostat_rt_mri_mri.ROUND(api.current_tempWstatus.degrees)), // case REQ_MRI_5 // If the Regulator Mode is not NORMAL, // the value of the Display Temperature is UNSPECIFIED. @@ -79,19 +79,19 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri { // the Regulator Interface Failure shall be set to True. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 (api.upper_desired_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid | - api.upper_desired_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: (api.interface_failure.value), + api.upper_desired_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: (api.interface_failure.flag), // case REQ_MRI_7 // If the Status attribute of the Lower Desired Temperature // and the Upper Desired Temperature is Valid, // the Regulator Interface Failure shall be set to False. // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 - (T) -->: (api.interface_failure.value == !(api.upper_desired_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid & + (T) -->: (api.interface_failure.flag == !(api.upper_desired_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid & api.lower_desired_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid)), // case REQ_MRI_8 // If the Regulator Interface Failure is False // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 - (T) -->: (!(api.interface_failure.value) ->: (api.lower_desired_temp.value == api.lower_desired_tempWstatus.value & - api.upper_desired_temp.value == api.upper_desired_tempWstatus.value)), + (T) -->: (!(api.interface_failure.flag) ->: (api.lower_desired_temp.degrees == api.lower_desired_tempWstatus.degrees & + api.upper_desired_temp.degrees == api.upper_desired_tempWstatus.degrees)), // case REQ_MRI_9 // If the Regulator Interface Failure is True, // the Desired Range is UNSPECIFIED. @@ -162,7 +162,7 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri { // NORMAL Mode case Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode => // REQ-MRI-4 - display_temperature = Isolette_Data_Model.Temp_i(ROUND(currentTemp.value)) + display_temperature = Isolette_Data_Model.Temp_i(ROUND(currentTemp.degrees)) // INIT, FAILED Modes @@ -214,8 +214,8 @@ object Manage_Regulator_Interface_i_thermostat_rt_mri_mri { if (!interface_failure) { // REQ-MRI-8 - api.put_lower_desired_temp(Isolette_Data_Model.Temp_i(lower.value)) - api.put_upper_desired_temp(Isolette_Data_Model.Temp_i(upper.value)) + api.put_lower_desired_temp(Isolette_Data_Model.Temp_i(lower.degrees)) + api.put_upper_desired_temp(Isolette_Data_Model.Temp_i(upper.degrees)) //api.logInfo(s"Sent on lower_desired_temp: ${Isolette_Data_Model.Temp_impl(lower.value)}") //api.logInfo(s"Sent on upper_desired_temp: ${Isolette_Data_Model.Temp_impl(upper.value)}") diff --git a/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm.scala b/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm.scala index 1c154a9..888bc42 100644 --- a/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm.scala +++ b/isolette/hamr/slang/src/main/component/isolette/Regulate/Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm.scala @@ -46,7 +46,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm { // if NOT (Regulator Interface Failure OR Regulator Internal Failure) // AND Current Temperature.Status = Valid // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 - (In(lastRegulatorMode) == Isolette_Data_Model.Regulator_Mode.Init_Regulator_Mode) -->: ((!(api.interface_failure.value || api.internal_failure.value) && + (In(lastRegulatorMode) == Isolette_Data_Model.Regulator_Mode.Init_Regulator_Mode) -->: ((!(api.interface_failure.flag || api.internal_failure.flag) && api.current_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode)), @@ -60,7 +60,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm { // OR NOT(Current Temperature.Status = Valid) // ) // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 - (In(lastRegulatorMode) == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: ((!(api.interface_failure.value || api.internal_failure.value) && + (In(lastRegulatorMode) == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: ((!(api.interface_failure.flag || api.internal_failure.flag) && api.current_tempWstatus.status == Isolette_Data_Model.ValueStatus.Valid) -->: (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode)), @@ -72,7 +72,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm { // if (Regulator Interface Failure OR Regulator Internal Failure) // OR NOT(Current Temperature.Status = Valid) // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 - (In(lastRegulatorMode) == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: (((api.interface_failure.value || api.internal_failure.value) && + (In(lastRegulatorMode) == Isolette_Data_Model.Regulator_Mode.Normal_Regulator_Mode) -->: (((api.interface_failure.flag || api.internal_failure.flag) && api.current_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Failed_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Failed_Regulator_Mode)), @@ -84,7 +84,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm { // if (Regulator Interface Failure OR Regulator Internal Failure) // OR NOT(Current Temperature.Status = Valid) // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 - (In(lastRegulatorMode) == Isolette_Data_Model.Regulator_Mode.Init_Regulator_Mode) -->: (((api.interface_failure.value || api.internal_failure.value) && + (In(lastRegulatorMode) == Isolette_Data_Model.Regulator_Mode.Init_Regulator_Mode) -->: (((api.interface_failure.flag || api.internal_failure.flag) && api.current_tempWstatus.status != Isolette_Data_Model.ValueStatus.Valid) -->: (api.regulator_mode == Isolette_Data_Model.Regulator_Mode.Failed_Regulator_Mode && lastRegulatorMode == Isolette_Data_Model.Regulator_Mode.Failed_Regulator_Mode)), @@ -117,7 +117,7 @@ object Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm { // regulator_status = NOT (Monitor Interface Failure OR Monitor Internal Failure) // AND Current Temperature.Status = Valid val regulator_status: B = - (!(interface_failure.value || internal_failure.value) + (!(interface_failure.flag || internal_failure.flag) && (current_temperature_status == Isolette_Data_Model.ValueStatus.Valid)) lastRegulatorMode match { diff --git a/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/Failure_Flag_i.scala b/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/Failure_Flag_i.scala index aa3fc5c..af8551b 100644 --- a/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/Failure_Flag_i.scala +++ b/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/Failure_Flag_i.scala @@ -10,12 +10,12 @@ import isolette._ object Failure_Flag_i { def example(): Isolette_Data_Model.Failure_Flag_i = { return Isolette_Data_Model.Failure_Flag_i( - value = Base_Types.Boolean_example()) + flag = Base_Types.Boolean_example()) } } @datatype class Failure_Flag_i( - val value: B) { + val flag: B) { } object Failure_Flag_i_Payload { diff --git a/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/PhysicalTemp_i.scala b/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/PhysicalTemp_i.scala index 67f88c1..c7d9a71 100644 --- a/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/PhysicalTemp_i.scala +++ b/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/PhysicalTemp_i.scala @@ -10,12 +10,12 @@ import isolette._ object PhysicalTemp_i { def example(): Isolette_Data_Model.PhysicalTemp_i = { return Isolette_Data_Model.PhysicalTemp_i( - value = Base_Types.Float_32_example()) + degrees = Base_Types.Float_32_example()) } } @datatype class PhysicalTemp_i( - val value: F32) { + val degrees: F32) { } object PhysicalTemp_i_Payload { diff --git a/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/TempWstatus_i.scala b/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/TempWstatus_i.scala index 2e9adc5..33a1f81 100644 --- a/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/TempWstatus_i.scala +++ b/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/TempWstatus_i.scala @@ -10,13 +10,13 @@ import isolette._ object TempWstatus_i { def example(): Isolette_Data_Model.TempWstatus_i = { return Isolette_Data_Model.TempWstatus_i( - value = Base_Types.Float_32_example(), + degrees = Base_Types.Float_32_example(), status = Isolette_Data_Model.ValueStatus.byOrdinal(0).get) } } @datatype class TempWstatus_i( - val value: F32, + val degrees: F32, val status: Isolette_Data_Model.ValueStatus.Type) { } diff --git a/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/Temp_i.scala b/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/Temp_i.scala index d99c69c..672be75 100644 --- a/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/Temp_i.scala +++ b/isolette/hamr/slang/src/main/data/isolette/Isolette_Data_Model/Temp_i.scala @@ -10,12 +10,12 @@ import isolette._ object Temp_i { def example(): Isolette_Data_Model.Temp_i = { return Isolette_Data_Model.Temp_i( - value = Base_Types.Float_32_example()) + degrees = Base_Types.Float_32_example()) } } @datatype class Temp_i( - val value: F32) { + val degrees: F32) { } object Temp_i_Payload { diff --git a/isolette/hamr/slang/src/main/data/isolette/Isolette_Environment/Air_Interaction.scala b/isolette/hamr/slang/src/main/data/isolette/Isolette_Environment/Air_Interaction.scala new file mode 100644 index 0000000..38e0b07 --- /dev/null +++ b/isolette/hamr/slang/src/main/data/isolette/Isolette_Environment/Air_Interaction.scala @@ -0,0 +1,20 @@ +// #Sireum + +package isolette.Isolette_Environment + +import org.sireum._ +import isolette._ + +// Do not edit this file as it will be overwritten if HAMR codegen is rerun + +@enum object Air_Interaction { + "Dummy_Air_Interaction_Enum" +} + +object Air_Interaction_Payload { + def example(): Air_Interaction_Payload = { + return Air_Interaction_Payload(Isolette_Environment.Air_Interaction.byOrdinal(0).get) + } +} + +@datatype class Air_Interaction_Payload(value: Isolette_Environment.Air_Interaction.Type) extends art.DataContent diff --git a/isolette/hamr/slang/src/main/util/isolette/JSON.scala b/isolette/hamr/slang/src/main/util/isolette/JSON.scala index e41dad1..5709282 100644 --- a/isolette/hamr/slang/src/main/util/isolette/JSON.scala +++ b/isolette/hamr/slang/src/main/util/isolette/JSON.scala @@ -1,7 +1,7 @@ // #Sireum // @formatter:off -// This file is auto-generated from Heat.scala, Interface_Interaction.scala, PhysicalTemp_i.scala, ValueStatus.scala, TempWstatus_i.scala, On_Off.scala, Status.scala, Temp_i.scala, Regulator_Mode.scala, Failure_Flag_i.scala, Monitor_Mode.scala, Base_Types.scala, Manage_Regulator_Interface_i_thermostat_rt_mri_mri_Containers.scala, Manage_Heat_Source_i_thermostat_rt_mhs_mhs_Containers.scala, Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_Containers.scala, Detect_Regulator_Failure_i_thermostat_rt_drf_drf_Containers.scala, Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_Containers.scala, Manage_Alarm_i_thermostat_mt_ma_ma_Containers.scala, Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_Containers.scala, Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_Containers.scala, Operator_Interface_Thread_i_operator_interface_oip_oit_Containers.scala, Temperature_Sensor_i_temperature_sensor_cpi_thermostat_Containers.scala, Heat_Source_i_heat_source_cpi_heat_controller_Containers.scala, ObservationKind.scala, Container.scala, DataContent.scala, Aux_Types.scala +// This file is auto-generated from PhysicalTemp_i.scala, TempWstatus_i.scala, Temp_i.scala, On_Off.scala, Failure_Flag_i.scala, ValueStatus.scala, Status.scala, Regulator_Mode.scala, Monitor_Mode.scala, Heat.scala, Interface_Interaction.scala, Air_Interaction.scala, Base_Types.scala, Manage_Regulator_Interface_i_thermostat_rt_mri_mri_Containers.scala, Manage_Heat_Source_i_thermostat_rt_mhs_mhs_Containers.scala, Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_Containers.scala, Detect_Regulator_Failure_i_thermostat_rt_drf_drf_Containers.scala, Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_Containers.scala, Manage_Alarm_i_thermostat_mt_ma_ma_Containers.scala, Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_Containers.scala, Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_Containers.scala, Operator_Interface_Thread_i_operator_interface_oip_oit_Containers.scala, Temperature_Sensor_i_temperature_sensor_cpi_thermostat_Containers.scala, Heat_Source_i_heat_source_cpi_heat_controller_Containers.scala, ObservationKind.scala, Container.scala, DataContent.scala, Aux_Types.scala package isolette @@ -12,102 +12,96 @@ object JSON { object Printer { - @pure def printIsolette_EnvironmentHeatType(o: Isolette_Environment.Heat.Type): ST = { - val value: String = o match { - case Isolette_Environment.Heat.Dummy_Head_Enum => "Dummy_Head_Enum" - } + @pure def printIsolette_Data_ModelPhysicalTemp_i(o: Isolette_Data_Model.PhysicalTemp_i): ST = { return printObject(ISZ( - ("type", printString("Isolette_Environment.Heat")), - ("value", printString(value)) + ("type", st""""Isolette_Data_Model.PhysicalTemp_i""""), + ("degrees", printF32(o.degrees)) )) } - @pure def printIsolette_EnvironmentHeat_Payload(o: Isolette_Environment.Heat_Payload): ST = { + @pure def printIsolette_Data_ModelPhysicalTemp_i_Payload(o: Isolette_Data_Model.PhysicalTemp_i_Payload): ST = { return printObject(ISZ( - ("type", st""""Isolette_Environment.Heat_Payload""""), - ("value", printIsolette_EnvironmentHeatType(o.value)) + ("type", st""""Isolette_Data_Model.PhysicalTemp_i_Payload""""), + ("value", printIsolette_Data_ModelPhysicalTemp_i(o.value)) )) } - @pure def printIsolette_EnvironmentInterface_InteractionType(o: Isolette_Environment.Interface_Interaction.Type): ST = { - val value: String = o match { - case Isolette_Environment.Interface_Interaction.Dummy_Interface_Interaction_Enum => "Dummy_Interface_Interaction_Enum" - } + @pure def printIsolette_Data_ModelTempWstatus_i(o: Isolette_Data_Model.TempWstatus_i): ST = { return printObject(ISZ( - ("type", printString("Isolette_Environment.Interface_Interaction")), - ("value", printString(value)) + ("type", st""""Isolette_Data_Model.TempWstatus_i""""), + ("degrees", printF32(o.degrees)), + ("status", printIsolette_Data_ModelValueStatusType(o.status)) )) } - @pure def printIsolette_EnvironmentInterface_Interaction_Payload(o: Isolette_Environment.Interface_Interaction_Payload): ST = { + @pure def printIsolette_Data_ModelTempWstatus_i_Payload(o: Isolette_Data_Model.TempWstatus_i_Payload): ST = { return printObject(ISZ( - ("type", st""""Isolette_Environment.Interface_Interaction_Payload""""), - ("value", printIsolette_EnvironmentInterface_InteractionType(o.value)) + ("type", st""""Isolette_Data_Model.TempWstatus_i_Payload""""), + ("value", printIsolette_Data_ModelTempWstatus_i(o.value)) )) } - @pure def printIsolette_Data_ModelPhysicalTemp_i(o: Isolette_Data_Model.PhysicalTemp_i): ST = { + @pure def printIsolette_Data_ModelTemp_i(o: Isolette_Data_Model.Temp_i): ST = { return printObject(ISZ( - ("type", st""""Isolette_Data_Model.PhysicalTemp_i""""), - ("value", printF32(o.value)) + ("type", st""""Isolette_Data_Model.Temp_i""""), + ("degrees", printF32(o.degrees)) )) } - @pure def printIsolette_Data_ModelPhysicalTemp_i_Payload(o: Isolette_Data_Model.PhysicalTemp_i_Payload): ST = { + @pure def printIsolette_Data_ModelTemp_i_Payload(o: Isolette_Data_Model.Temp_i_Payload): ST = { return printObject(ISZ( - ("type", st""""Isolette_Data_Model.PhysicalTemp_i_Payload""""), - ("value", printIsolette_Data_ModelPhysicalTemp_i(o.value)) + ("type", st""""Isolette_Data_Model.Temp_i_Payload""""), + ("value", printIsolette_Data_ModelTemp_i(o.value)) )) } - @pure def printIsolette_Data_ModelValueStatusType(o: Isolette_Data_Model.ValueStatus.Type): ST = { + @pure def printIsolette_Data_ModelOn_OffType(o: Isolette_Data_Model.On_Off.Type): ST = { val value: String = o match { - case Isolette_Data_Model.ValueStatus.Valid => "Valid" - case Isolette_Data_Model.ValueStatus.Invalid => "Invalid" + case Isolette_Data_Model.On_Off.Onn => "Onn" + case Isolette_Data_Model.On_Off.Off => "Off" } return printObject(ISZ( - ("type", printString("Isolette_Data_Model.ValueStatus")), + ("type", printString("Isolette_Data_Model.On_Off")), ("value", printString(value)) )) } - @pure def printIsolette_Data_ModelValueStatus_Payload(o: Isolette_Data_Model.ValueStatus_Payload): ST = { + @pure def printIsolette_Data_ModelOn_Off_Payload(o: Isolette_Data_Model.On_Off_Payload): ST = { return printObject(ISZ( - ("type", st""""Isolette_Data_Model.ValueStatus_Payload""""), - ("value", printIsolette_Data_ModelValueStatusType(o.value)) + ("type", st""""Isolette_Data_Model.On_Off_Payload""""), + ("value", printIsolette_Data_ModelOn_OffType(o.value)) )) } - @pure def printIsolette_Data_ModelTempWstatus_i(o: Isolette_Data_Model.TempWstatus_i): ST = { + @pure def printIsolette_Data_ModelFailure_Flag_i(o: Isolette_Data_Model.Failure_Flag_i): ST = { return printObject(ISZ( - ("type", st""""Isolette_Data_Model.TempWstatus_i""""), - ("value", printF32(o.value)), - ("status", printIsolette_Data_ModelValueStatusType(o.status)) + ("type", st""""Isolette_Data_Model.Failure_Flag_i""""), + ("flag", printB(o.flag)) )) } - @pure def printIsolette_Data_ModelTempWstatus_i_Payload(o: Isolette_Data_Model.TempWstatus_i_Payload): ST = { + @pure def printIsolette_Data_ModelFailure_Flag_i_Payload(o: Isolette_Data_Model.Failure_Flag_i_Payload): ST = { return printObject(ISZ( - ("type", st""""Isolette_Data_Model.TempWstatus_i_Payload""""), - ("value", printIsolette_Data_ModelTempWstatus_i(o.value)) + ("type", st""""Isolette_Data_Model.Failure_Flag_i_Payload""""), + ("value", printIsolette_Data_ModelFailure_Flag_i(o.value)) )) } - @pure def printIsolette_Data_ModelOn_OffType(o: Isolette_Data_Model.On_Off.Type): ST = { + @pure def printIsolette_Data_ModelValueStatusType(o: Isolette_Data_Model.ValueStatus.Type): ST = { val value: String = o match { - case Isolette_Data_Model.On_Off.Onn => "Onn" - case Isolette_Data_Model.On_Off.Off => "Off" + case Isolette_Data_Model.ValueStatus.Valid => "Valid" + case Isolette_Data_Model.ValueStatus.Invalid => "Invalid" } return printObject(ISZ( - ("type", printString("Isolette_Data_Model.On_Off")), + ("type", printString("Isolette_Data_Model.ValueStatus")), ("value", printString(value)) )) } - @pure def printIsolette_Data_ModelOn_Off_Payload(o: Isolette_Data_Model.On_Off_Payload): ST = { + @pure def printIsolette_Data_ModelValueStatus_Payload(o: Isolette_Data_Model.ValueStatus_Payload): ST = { return printObject(ISZ( - ("type", st""""Isolette_Data_Model.On_Off_Payload""""), - ("value", printIsolette_Data_ModelOn_OffType(o.value)) + ("type", st""""Isolette_Data_Model.ValueStatus_Payload""""), + ("value", printIsolette_Data_ModelValueStatusType(o.value)) )) } @@ -130,20 +124,6 @@ object JSON { )) } - @pure def printIsolette_Data_ModelTemp_i(o: Isolette_Data_Model.Temp_i): ST = { - return printObject(ISZ( - ("type", st""""Isolette_Data_Model.Temp_i""""), - ("value", printF32(o.value)) - )) - } - - @pure def printIsolette_Data_ModelTemp_i_Payload(o: Isolette_Data_Model.Temp_i_Payload): ST = { - return printObject(ISZ( - ("type", st""""Isolette_Data_Model.Temp_i_Payload""""), - ("value", printIsolette_Data_ModelTemp_i(o.value)) - )) - } - @pure def printIsolette_Data_ModelRegulator_ModeType(o: Isolette_Data_Model.Regulator_Mode.Type): ST = { val value: String = o match { case Isolette_Data_Model.Regulator_Mode.Init_Regulator_Mode => "Init_Regulator_Mode" @@ -163,20 +143,6 @@ object JSON { )) } - @pure def printIsolette_Data_ModelFailure_Flag_i(o: Isolette_Data_Model.Failure_Flag_i): ST = { - return printObject(ISZ( - ("type", st""""Isolette_Data_Model.Failure_Flag_i""""), - ("value", printB(o.value)) - )) - } - - @pure def printIsolette_Data_ModelFailure_Flag_i_Payload(o: Isolette_Data_Model.Failure_Flag_i_Payload): ST = { - return printObject(ISZ( - ("type", st""""Isolette_Data_Model.Failure_Flag_i_Payload""""), - ("value", printIsolette_Data_ModelFailure_Flag_i(o.value)) - )) - } - @pure def printIsolette_Data_ModelMonitor_ModeType(o: Isolette_Data_Model.Monitor_Mode.Type): ST = { val value: String = o match { case Isolette_Data_Model.Monitor_Mode.Init_Monitor_Mode => "Init_Monitor_Mode" @@ -196,6 +162,57 @@ object JSON { )) } + @pure def printIsolette_EnvironmentHeatType(o: Isolette_Environment.Heat.Type): ST = { + val value: String = o match { + case Isolette_Environment.Heat.Dummy_Head_Enum => "Dummy_Head_Enum" + } + return printObject(ISZ( + ("type", printString("Isolette_Environment.Heat")), + ("value", printString(value)) + )) + } + + @pure def printIsolette_EnvironmentHeat_Payload(o: Isolette_Environment.Heat_Payload): ST = { + return printObject(ISZ( + ("type", st""""Isolette_Environment.Heat_Payload""""), + ("value", printIsolette_EnvironmentHeatType(o.value)) + )) + } + + @pure def printIsolette_EnvironmentInterface_InteractionType(o: Isolette_Environment.Interface_Interaction.Type): ST = { + val value: String = o match { + case Isolette_Environment.Interface_Interaction.Dummy_Interface_Interaction_Enum => "Dummy_Interface_Interaction_Enum" + } + return printObject(ISZ( + ("type", printString("Isolette_Environment.Interface_Interaction")), + ("value", printString(value)) + )) + } + + @pure def printIsolette_EnvironmentInterface_Interaction_Payload(o: Isolette_Environment.Interface_Interaction_Payload): ST = { + return printObject(ISZ( + ("type", st""""Isolette_Environment.Interface_Interaction_Payload""""), + ("value", printIsolette_EnvironmentInterface_InteractionType(o.value)) + )) + } + + @pure def printIsolette_EnvironmentAir_InteractionType(o: Isolette_Environment.Air_Interaction.Type): ST = { + val value: String = o match { + case Isolette_Environment.Air_Interaction.Dummy_Air_Interaction_Enum => "Dummy_Air_Interaction_Enum" + } + return printObject(ISZ( + ("type", printString("Isolette_Environment.Air_Interaction")), + ("value", printString(value)) + )) + } + + @pure def printIsolette_EnvironmentAir_Interaction_Payload(o: Isolette_Environment.Air_Interaction_Payload): ST = { + return printObject(ISZ( + ("type", st""""Isolette_Environment.Air_Interaction_Payload""""), + ("value", printIsolette_EnvironmentAir_InteractionType(o.value)) + )) + } + @pure def printBase_TypesBoolean_Payload(o: Base_Types.Boolean_Payload): ST = { return printObject(ISZ( ("type", st""""Base_Types.Boolean_Payload""""), @@ -962,6 +979,7 @@ object JSON { case o: Isolette_Data_Model.Regulator_Mode_Payload => return printIsolette_Data_ModelRegulator_Mode_Payload(o) case o: Isolette_Data_Model.Failure_Flag_i_Payload => return printIsolette_Data_ModelFailure_Flag_i_Payload(o) case o: Isolette_Data_Model.PhysicalTemp_i_Payload => return printIsolette_Data_ModelPhysicalTemp_i_Payload(o) + case o: Isolette_Environment.Air_Interaction_Payload => return printIsolette_EnvironmentAir_Interaction_Payload(o) case o: Isolette_Environment.Interface_Interaction_Payload => return printIsolette_EnvironmentInterface_Interaction_Payload(o) case o: Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P => return printMonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P(o) case o: Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS => return printMonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS(o) @@ -1025,211 +1043,199 @@ object JSON { return parser.errorOpt } - def parseIsolette_EnvironmentHeatType(): Isolette_Environment.Heat.Type = { - val r = parseIsolette_EnvironmentHeatT(F) + def parseIsolette_Data_ModelPhysicalTemp_i(): Isolette_Data_Model.PhysicalTemp_i = { + val r = parseIsolette_Data_ModelPhysicalTemp_iT(F) return r } - def parseIsolette_EnvironmentHeatT(typeParsed: B): Isolette_Environment.Heat.Type = { + def parseIsolette_Data_ModelPhysicalTemp_iT(typeParsed: B): Isolette_Data_Model.PhysicalTemp_i = { if (!typeParsed) { - parser.parseObjectType("Isolette_Environment.Heat") + parser.parseObjectType("Isolette_Data_Model.PhysicalTemp_i") } - parser.parseObjectKey("value") - var i = parser.offset - val s = parser.parseString() + parser.parseObjectKey("degrees") + val degrees = parser.parseF32() parser.parseObjectNext() - Isolette_Environment.Heat.byName(s) match { - case Some(r) => return r - case _ => - parser.parseException(i, s"Invalid element name '$s' for Isolette_Environment.Heat.") - return Isolette_Environment.Heat.byOrdinal(0).get - } + return Isolette_Data_Model.PhysicalTemp_i(degrees) } - def parseIsolette_EnvironmentHeat_Payload(): Isolette_Environment.Heat_Payload = { - val r = parseIsolette_EnvironmentHeat_PayloadT(F) + def parseIsolette_Data_ModelPhysicalTemp_i_Payload(): Isolette_Data_Model.PhysicalTemp_i_Payload = { + val r = parseIsolette_Data_ModelPhysicalTemp_i_PayloadT(F) return r } - def parseIsolette_EnvironmentHeat_PayloadT(typeParsed: B): Isolette_Environment.Heat_Payload = { + def parseIsolette_Data_ModelPhysicalTemp_i_PayloadT(typeParsed: B): Isolette_Data_Model.PhysicalTemp_i_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Environment.Heat_Payload") + parser.parseObjectType("Isolette_Data_Model.PhysicalTemp_i_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_EnvironmentHeatType() + val value = parseIsolette_Data_ModelPhysicalTemp_i() parser.parseObjectNext() - return Isolette_Environment.Heat_Payload(value) + return Isolette_Data_Model.PhysicalTemp_i_Payload(value) } - def parseIsolette_EnvironmentInterface_InteractionType(): Isolette_Environment.Interface_Interaction.Type = { - val r = parseIsolette_EnvironmentInterface_InteractionT(F) + def parseIsolette_Data_ModelTempWstatus_i(): Isolette_Data_Model.TempWstatus_i = { + val r = parseIsolette_Data_ModelTempWstatus_iT(F) return r } - def parseIsolette_EnvironmentInterface_InteractionT(typeParsed: B): Isolette_Environment.Interface_Interaction.Type = { + def parseIsolette_Data_ModelTempWstatus_iT(typeParsed: B): Isolette_Data_Model.TempWstatus_i = { if (!typeParsed) { - parser.parseObjectType("Isolette_Environment.Interface_Interaction") + parser.parseObjectType("Isolette_Data_Model.TempWstatus_i") } - parser.parseObjectKey("value") - var i = parser.offset - val s = parser.parseString() + parser.parseObjectKey("degrees") + val degrees = parser.parseF32() parser.parseObjectNext() - Isolette_Environment.Interface_Interaction.byName(s) match { - case Some(r) => return r - case _ => - parser.parseException(i, s"Invalid element name '$s' for Isolette_Environment.Interface_Interaction.") - return Isolette_Environment.Interface_Interaction.byOrdinal(0).get - } + parser.parseObjectKey("status") + val status = parseIsolette_Data_ModelValueStatusType() + parser.parseObjectNext() + return Isolette_Data_Model.TempWstatus_i(degrees, status) } - def parseIsolette_EnvironmentInterface_Interaction_Payload(): Isolette_Environment.Interface_Interaction_Payload = { - val r = parseIsolette_EnvironmentInterface_Interaction_PayloadT(F) + def parseIsolette_Data_ModelTempWstatus_i_Payload(): Isolette_Data_Model.TempWstatus_i_Payload = { + val r = parseIsolette_Data_ModelTempWstatus_i_PayloadT(F) return r } - def parseIsolette_EnvironmentInterface_Interaction_PayloadT(typeParsed: B): Isolette_Environment.Interface_Interaction_Payload = { + def parseIsolette_Data_ModelTempWstatus_i_PayloadT(typeParsed: B): Isolette_Data_Model.TempWstatus_i_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Environment.Interface_Interaction_Payload") + parser.parseObjectType("Isolette_Data_Model.TempWstatus_i_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_EnvironmentInterface_InteractionType() + val value = parseIsolette_Data_ModelTempWstatus_i() parser.parseObjectNext() - return Isolette_Environment.Interface_Interaction_Payload(value) + return Isolette_Data_Model.TempWstatus_i_Payload(value) } - def parseIsolette_Data_ModelPhysicalTemp_i(): Isolette_Data_Model.PhysicalTemp_i = { - val r = parseIsolette_Data_ModelPhysicalTemp_iT(F) + def parseIsolette_Data_ModelTemp_i(): Isolette_Data_Model.Temp_i = { + val r = parseIsolette_Data_ModelTemp_iT(F) return r } - def parseIsolette_Data_ModelPhysicalTemp_iT(typeParsed: B): Isolette_Data_Model.PhysicalTemp_i = { + def parseIsolette_Data_ModelTemp_iT(typeParsed: B): Isolette_Data_Model.Temp_i = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.PhysicalTemp_i") + parser.parseObjectType("Isolette_Data_Model.Temp_i") } - parser.parseObjectKey("value") - val value = parser.parseF32() + parser.parseObjectKey("degrees") + val degrees = parser.parseF32() parser.parseObjectNext() - return Isolette_Data_Model.PhysicalTemp_i(value) + return Isolette_Data_Model.Temp_i(degrees) } - def parseIsolette_Data_ModelPhysicalTemp_i_Payload(): Isolette_Data_Model.PhysicalTemp_i_Payload = { - val r = parseIsolette_Data_ModelPhysicalTemp_i_PayloadT(F) + def parseIsolette_Data_ModelTemp_i_Payload(): Isolette_Data_Model.Temp_i_Payload = { + val r = parseIsolette_Data_ModelTemp_i_PayloadT(F) return r } - def parseIsolette_Data_ModelPhysicalTemp_i_PayloadT(typeParsed: B): Isolette_Data_Model.PhysicalTemp_i_Payload = { + def parseIsolette_Data_ModelTemp_i_PayloadT(typeParsed: B): Isolette_Data_Model.Temp_i_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.PhysicalTemp_i_Payload") + parser.parseObjectType("Isolette_Data_Model.Temp_i_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_Data_ModelPhysicalTemp_i() + val value = parseIsolette_Data_ModelTemp_i() parser.parseObjectNext() - return Isolette_Data_Model.PhysicalTemp_i_Payload(value) + return Isolette_Data_Model.Temp_i_Payload(value) } - def parseIsolette_Data_ModelValueStatusType(): Isolette_Data_Model.ValueStatus.Type = { - val r = parseIsolette_Data_ModelValueStatusT(F) + def parseIsolette_Data_ModelOn_OffType(): Isolette_Data_Model.On_Off.Type = { + val r = parseIsolette_Data_ModelOn_OffT(F) return r } - def parseIsolette_Data_ModelValueStatusT(typeParsed: B): Isolette_Data_Model.ValueStatus.Type = { + def parseIsolette_Data_ModelOn_OffT(typeParsed: B): Isolette_Data_Model.On_Off.Type = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.ValueStatus") + parser.parseObjectType("Isolette_Data_Model.On_Off") } parser.parseObjectKey("value") var i = parser.offset val s = parser.parseString() parser.parseObjectNext() - Isolette_Data_Model.ValueStatus.byName(s) match { + Isolette_Data_Model.On_Off.byName(s) match { case Some(r) => return r case _ => - parser.parseException(i, s"Invalid element name '$s' for Isolette_Data_Model.ValueStatus.") - return Isolette_Data_Model.ValueStatus.byOrdinal(0).get + parser.parseException(i, s"Invalid element name '$s' for Isolette_Data_Model.On_Off.") + return Isolette_Data_Model.On_Off.byOrdinal(0).get } } - def parseIsolette_Data_ModelValueStatus_Payload(): Isolette_Data_Model.ValueStatus_Payload = { - val r = parseIsolette_Data_ModelValueStatus_PayloadT(F) + def parseIsolette_Data_ModelOn_Off_Payload(): Isolette_Data_Model.On_Off_Payload = { + val r = parseIsolette_Data_ModelOn_Off_PayloadT(F) return r } - def parseIsolette_Data_ModelValueStatus_PayloadT(typeParsed: B): Isolette_Data_Model.ValueStatus_Payload = { + def parseIsolette_Data_ModelOn_Off_PayloadT(typeParsed: B): Isolette_Data_Model.On_Off_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.ValueStatus_Payload") + parser.parseObjectType("Isolette_Data_Model.On_Off_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_Data_ModelValueStatusType() + val value = parseIsolette_Data_ModelOn_OffType() parser.parseObjectNext() - return Isolette_Data_Model.ValueStatus_Payload(value) + return Isolette_Data_Model.On_Off_Payload(value) } - def parseIsolette_Data_ModelTempWstatus_i(): Isolette_Data_Model.TempWstatus_i = { - val r = parseIsolette_Data_ModelTempWstatus_iT(F) + def parseIsolette_Data_ModelFailure_Flag_i(): Isolette_Data_Model.Failure_Flag_i = { + val r = parseIsolette_Data_ModelFailure_Flag_iT(F) return r } - def parseIsolette_Data_ModelTempWstatus_iT(typeParsed: B): Isolette_Data_Model.TempWstatus_i = { + def parseIsolette_Data_ModelFailure_Flag_iT(typeParsed: B): Isolette_Data_Model.Failure_Flag_i = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.TempWstatus_i") + parser.parseObjectType("Isolette_Data_Model.Failure_Flag_i") } - parser.parseObjectKey("value") - val value = parser.parseF32() + parser.parseObjectKey("flag") + val flag = parser.parseB() parser.parseObjectNext() - parser.parseObjectKey("status") - val status = parseIsolette_Data_ModelValueStatusType() - parser.parseObjectNext() - return Isolette_Data_Model.TempWstatus_i(value, status) + return Isolette_Data_Model.Failure_Flag_i(flag) } - def parseIsolette_Data_ModelTempWstatus_i_Payload(): Isolette_Data_Model.TempWstatus_i_Payload = { - val r = parseIsolette_Data_ModelTempWstatus_i_PayloadT(F) + def parseIsolette_Data_ModelFailure_Flag_i_Payload(): Isolette_Data_Model.Failure_Flag_i_Payload = { + val r = parseIsolette_Data_ModelFailure_Flag_i_PayloadT(F) return r } - def parseIsolette_Data_ModelTempWstatus_i_PayloadT(typeParsed: B): Isolette_Data_Model.TempWstatus_i_Payload = { + def parseIsolette_Data_ModelFailure_Flag_i_PayloadT(typeParsed: B): Isolette_Data_Model.Failure_Flag_i_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.TempWstatus_i_Payload") + parser.parseObjectType("Isolette_Data_Model.Failure_Flag_i_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_Data_ModelTempWstatus_i() + val value = parseIsolette_Data_ModelFailure_Flag_i() parser.parseObjectNext() - return Isolette_Data_Model.TempWstatus_i_Payload(value) + return Isolette_Data_Model.Failure_Flag_i_Payload(value) } - def parseIsolette_Data_ModelOn_OffType(): Isolette_Data_Model.On_Off.Type = { - val r = parseIsolette_Data_ModelOn_OffT(F) + def parseIsolette_Data_ModelValueStatusType(): Isolette_Data_Model.ValueStatus.Type = { + val r = parseIsolette_Data_ModelValueStatusT(F) return r } - def parseIsolette_Data_ModelOn_OffT(typeParsed: B): Isolette_Data_Model.On_Off.Type = { + def parseIsolette_Data_ModelValueStatusT(typeParsed: B): Isolette_Data_Model.ValueStatus.Type = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.On_Off") + parser.parseObjectType("Isolette_Data_Model.ValueStatus") } parser.parseObjectKey("value") var i = parser.offset val s = parser.parseString() parser.parseObjectNext() - Isolette_Data_Model.On_Off.byName(s) match { + Isolette_Data_Model.ValueStatus.byName(s) match { case Some(r) => return r case _ => - parser.parseException(i, s"Invalid element name '$s' for Isolette_Data_Model.On_Off.") - return Isolette_Data_Model.On_Off.byOrdinal(0).get + parser.parseException(i, s"Invalid element name '$s' for Isolette_Data_Model.ValueStatus.") + return Isolette_Data_Model.ValueStatus.byOrdinal(0).get } } - def parseIsolette_Data_ModelOn_Off_Payload(): Isolette_Data_Model.On_Off_Payload = { - val r = parseIsolette_Data_ModelOn_Off_PayloadT(F) + def parseIsolette_Data_ModelValueStatus_Payload(): Isolette_Data_Model.ValueStatus_Payload = { + val r = parseIsolette_Data_ModelValueStatus_PayloadT(F) return r } - def parseIsolette_Data_ModelOn_Off_PayloadT(typeParsed: B): Isolette_Data_Model.On_Off_Payload = { + def parseIsolette_Data_ModelValueStatus_PayloadT(typeParsed: B): Isolette_Data_Model.ValueStatus_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.On_Off_Payload") + parser.parseObjectType("Isolette_Data_Model.ValueStatus_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_Data_ModelOn_OffType() + val value = parseIsolette_Data_ModelValueStatusType() parser.parseObjectNext() - return Isolette_Data_Model.On_Off_Payload(value) + return Isolette_Data_Model.ValueStatus_Payload(value) } def parseIsolette_Data_ModelStatusType(): Isolette_Data_Model.Status.Type = { @@ -1268,136 +1274,184 @@ object JSON { return Isolette_Data_Model.Status_Payload(value) } - def parseIsolette_Data_ModelTemp_i(): Isolette_Data_Model.Temp_i = { - val r = parseIsolette_Data_ModelTemp_iT(F) + def parseIsolette_Data_ModelRegulator_ModeType(): Isolette_Data_Model.Regulator_Mode.Type = { + val r = parseIsolette_Data_ModelRegulator_ModeT(F) return r } - def parseIsolette_Data_ModelTemp_iT(typeParsed: B): Isolette_Data_Model.Temp_i = { + def parseIsolette_Data_ModelRegulator_ModeT(typeParsed: B): Isolette_Data_Model.Regulator_Mode.Type = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.Temp_i") + parser.parseObjectType("Isolette_Data_Model.Regulator_Mode") } parser.parseObjectKey("value") - val value = parser.parseF32() + var i = parser.offset + val s = parser.parseString() parser.parseObjectNext() - return Isolette_Data_Model.Temp_i(value) + Isolette_Data_Model.Regulator_Mode.byName(s) match { + case Some(r) => return r + case _ => + parser.parseException(i, s"Invalid element name '$s' for Isolette_Data_Model.Regulator_Mode.") + return Isolette_Data_Model.Regulator_Mode.byOrdinal(0).get + } } - def parseIsolette_Data_ModelTemp_i_Payload(): Isolette_Data_Model.Temp_i_Payload = { - val r = parseIsolette_Data_ModelTemp_i_PayloadT(F) + def parseIsolette_Data_ModelRegulator_Mode_Payload(): Isolette_Data_Model.Regulator_Mode_Payload = { + val r = parseIsolette_Data_ModelRegulator_Mode_PayloadT(F) + return r + } + + def parseIsolette_Data_ModelRegulator_Mode_PayloadT(typeParsed: B): Isolette_Data_Model.Regulator_Mode_Payload = { + if (!typeParsed) { + parser.parseObjectType("Isolette_Data_Model.Regulator_Mode_Payload") + } + parser.parseObjectKey("value") + val value = parseIsolette_Data_ModelRegulator_ModeType() + parser.parseObjectNext() + return Isolette_Data_Model.Regulator_Mode_Payload(value) + } + + def parseIsolette_Data_ModelMonitor_ModeType(): Isolette_Data_Model.Monitor_Mode.Type = { + val r = parseIsolette_Data_ModelMonitor_ModeT(F) + return r + } + + def parseIsolette_Data_ModelMonitor_ModeT(typeParsed: B): Isolette_Data_Model.Monitor_Mode.Type = { + if (!typeParsed) { + parser.parseObjectType("Isolette_Data_Model.Monitor_Mode") + } + parser.parseObjectKey("value") + var i = parser.offset + val s = parser.parseString() + parser.parseObjectNext() + Isolette_Data_Model.Monitor_Mode.byName(s) match { + case Some(r) => return r + case _ => + parser.parseException(i, s"Invalid element name '$s' for Isolette_Data_Model.Monitor_Mode.") + return Isolette_Data_Model.Monitor_Mode.byOrdinal(0).get + } + } + + def parseIsolette_Data_ModelMonitor_Mode_Payload(): Isolette_Data_Model.Monitor_Mode_Payload = { + val r = parseIsolette_Data_ModelMonitor_Mode_PayloadT(F) return r } - def parseIsolette_Data_ModelTemp_i_PayloadT(typeParsed: B): Isolette_Data_Model.Temp_i_Payload = { + def parseIsolette_Data_ModelMonitor_Mode_PayloadT(typeParsed: B): Isolette_Data_Model.Monitor_Mode_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.Temp_i_Payload") + parser.parseObjectType("Isolette_Data_Model.Monitor_Mode_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_Data_ModelTemp_i() + val value = parseIsolette_Data_ModelMonitor_ModeType() parser.parseObjectNext() - return Isolette_Data_Model.Temp_i_Payload(value) + return Isolette_Data_Model.Monitor_Mode_Payload(value) } - def parseIsolette_Data_ModelRegulator_ModeType(): Isolette_Data_Model.Regulator_Mode.Type = { - val r = parseIsolette_Data_ModelRegulator_ModeT(F) + def parseIsolette_EnvironmentHeatType(): Isolette_Environment.Heat.Type = { + val r = parseIsolette_EnvironmentHeatT(F) return r } - def parseIsolette_Data_ModelRegulator_ModeT(typeParsed: B): Isolette_Data_Model.Regulator_Mode.Type = { + def parseIsolette_EnvironmentHeatT(typeParsed: B): Isolette_Environment.Heat.Type = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.Regulator_Mode") + parser.parseObjectType("Isolette_Environment.Heat") } parser.parseObjectKey("value") var i = parser.offset val s = parser.parseString() parser.parseObjectNext() - Isolette_Data_Model.Regulator_Mode.byName(s) match { + Isolette_Environment.Heat.byName(s) match { case Some(r) => return r case _ => - parser.parseException(i, s"Invalid element name '$s' for Isolette_Data_Model.Regulator_Mode.") - return Isolette_Data_Model.Regulator_Mode.byOrdinal(0).get + parser.parseException(i, s"Invalid element name '$s' for Isolette_Environment.Heat.") + return Isolette_Environment.Heat.byOrdinal(0).get } } - def parseIsolette_Data_ModelRegulator_Mode_Payload(): Isolette_Data_Model.Regulator_Mode_Payload = { - val r = parseIsolette_Data_ModelRegulator_Mode_PayloadT(F) + def parseIsolette_EnvironmentHeat_Payload(): Isolette_Environment.Heat_Payload = { + val r = parseIsolette_EnvironmentHeat_PayloadT(F) return r } - def parseIsolette_Data_ModelRegulator_Mode_PayloadT(typeParsed: B): Isolette_Data_Model.Regulator_Mode_Payload = { + def parseIsolette_EnvironmentHeat_PayloadT(typeParsed: B): Isolette_Environment.Heat_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.Regulator_Mode_Payload") + parser.parseObjectType("Isolette_Environment.Heat_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_Data_ModelRegulator_ModeType() + val value = parseIsolette_EnvironmentHeatType() parser.parseObjectNext() - return Isolette_Data_Model.Regulator_Mode_Payload(value) + return Isolette_Environment.Heat_Payload(value) } - def parseIsolette_Data_ModelFailure_Flag_i(): Isolette_Data_Model.Failure_Flag_i = { - val r = parseIsolette_Data_ModelFailure_Flag_iT(F) + def parseIsolette_EnvironmentInterface_InteractionType(): Isolette_Environment.Interface_Interaction.Type = { + val r = parseIsolette_EnvironmentInterface_InteractionT(F) return r } - def parseIsolette_Data_ModelFailure_Flag_iT(typeParsed: B): Isolette_Data_Model.Failure_Flag_i = { + def parseIsolette_EnvironmentInterface_InteractionT(typeParsed: B): Isolette_Environment.Interface_Interaction.Type = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.Failure_Flag_i") + parser.parseObjectType("Isolette_Environment.Interface_Interaction") } parser.parseObjectKey("value") - val value = parser.parseB() + var i = parser.offset + val s = parser.parseString() parser.parseObjectNext() - return Isolette_Data_Model.Failure_Flag_i(value) + Isolette_Environment.Interface_Interaction.byName(s) match { + case Some(r) => return r + case _ => + parser.parseException(i, s"Invalid element name '$s' for Isolette_Environment.Interface_Interaction.") + return Isolette_Environment.Interface_Interaction.byOrdinal(0).get + } } - def parseIsolette_Data_ModelFailure_Flag_i_Payload(): Isolette_Data_Model.Failure_Flag_i_Payload = { - val r = parseIsolette_Data_ModelFailure_Flag_i_PayloadT(F) + def parseIsolette_EnvironmentInterface_Interaction_Payload(): Isolette_Environment.Interface_Interaction_Payload = { + val r = parseIsolette_EnvironmentInterface_Interaction_PayloadT(F) return r } - def parseIsolette_Data_ModelFailure_Flag_i_PayloadT(typeParsed: B): Isolette_Data_Model.Failure_Flag_i_Payload = { + def parseIsolette_EnvironmentInterface_Interaction_PayloadT(typeParsed: B): Isolette_Environment.Interface_Interaction_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.Failure_Flag_i_Payload") + parser.parseObjectType("Isolette_Environment.Interface_Interaction_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_Data_ModelFailure_Flag_i() + val value = parseIsolette_EnvironmentInterface_InteractionType() parser.parseObjectNext() - return Isolette_Data_Model.Failure_Flag_i_Payload(value) + return Isolette_Environment.Interface_Interaction_Payload(value) } - def parseIsolette_Data_ModelMonitor_ModeType(): Isolette_Data_Model.Monitor_Mode.Type = { - val r = parseIsolette_Data_ModelMonitor_ModeT(F) + def parseIsolette_EnvironmentAir_InteractionType(): Isolette_Environment.Air_Interaction.Type = { + val r = parseIsolette_EnvironmentAir_InteractionT(F) return r } - def parseIsolette_Data_ModelMonitor_ModeT(typeParsed: B): Isolette_Data_Model.Monitor_Mode.Type = { + def parseIsolette_EnvironmentAir_InteractionT(typeParsed: B): Isolette_Environment.Air_Interaction.Type = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.Monitor_Mode") + parser.parseObjectType("Isolette_Environment.Air_Interaction") } parser.parseObjectKey("value") var i = parser.offset val s = parser.parseString() parser.parseObjectNext() - Isolette_Data_Model.Monitor_Mode.byName(s) match { + Isolette_Environment.Air_Interaction.byName(s) match { case Some(r) => return r case _ => - parser.parseException(i, s"Invalid element name '$s' for Isolette_Data_Model.Monitor_Mode.") - return Isolette_Data_Model.Monitor_Mode.byOrdinal(0).get + parser.parseException(i, s"Invalid element name '$s' for Isolette_Environment.Air_Interaction.") + return Isolette_Environment.Air_Interaction.byOrdinal(0).get } } - def parseIsolette_Data_ModelMonitor_Mode_Payload(): Isolette_Data_Model.Monitor_Mode_Payload = { - val r = parseIsolette_Data_ModelMonitor_Mode_PayloadT(F) + def parseIsolette_EnvironmentAir_Interaction_Payload(): Isolette_Environment.Air_Interaction_Payload = { + val r = parseIsolette_EnvironmentAir_Interaction_PayloadT(F) return r } - def parseIsolette_Data_ModelMonitor_Mode_PayloadT(typeParsed: B): Isolette_Data_Model.Monitor_Mode_Payload = { + def parseIsolette_EnvironmentAir_Interaction_PayloadT(typeParsed: B): Isolette_Environment.Air_Interaction_Payload = { if (!typeParsed) { - parser.parseObjectType("Isolette_Data_Model.Monitor_Mode_Payload") + parser.parseObjectType("Isolette_Environment.Air_Interaction_Payload") } parser.parseObjectKey("value") - val value = parseIsolette_Data_ModelMonitor_ModeType() + val value = parseIsolette_EnvironmentAir_InteractionType() parser.parseObjectNext() - return Isolette_Data_Model.Monitor_Mode_Payload(value) + return Isolette_Environment.Air_Interaction_Payload(value) } def parseBase_TypesBoolean_Payload(): Base_Types.Boolean_Payload = { @@ -2776,7 +2830,7 @@ object JSON { } def parse_artDataContent(): art.DataContent = { - val t = parser.parseObjectTypes(ISZ("art.Empty", "Base_Types.Boolean_Payload", "Base_Types.Integer_Payload", "Base_Types.Integer_8_Payload", "Base_Types.Integer_16_Payload", "Base_Types.Integer_32_Payload", "Base_Types.Integer_64_Payload", "Base_Types.Unsigned_8_Payload", "Base_Types.Unsigned_16_Payload", "Base_Types.Unsigned_32_Payload", "Base_Types.Unsigned_64_Payload", "Base_Types.Float_Payload", "Base_Types.Float_32_Payload", "Base_Types.Float_64_Payload", "Base_Types.Character_Payload", "Base_Types.String_Payload", "Base_Types.Bits_Payload", "util.EmptyContainer", "Isolette_Environment.Heat_Payload", "Isolette_Data_Model.On_Off_Payload", "Isolette_Data_Model.Status_Payload", "Isolette_Data_Model.Temp_i_Payload", "Isolette_Data_Model.ValueStatus_Payload", "Isolette_Data_Model.Monitor_Mode_Payload", "Isolette_Data_Model.TempWstatus_i_Payload", "Isolette_Data_Model.Regulator_Mode_Payload", "Isolette_Data_Model.Failure_Flag_i_Payload", "Isolette_Data_Model.PhysicalTemp_i_Payload", "Isolette_Environment.Interface_Interaction_Payload", "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P", "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS", "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_P", "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_PS", "Monitor.Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_P", "Regulate.Manage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_P", "Monitor.Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_PS", "Regulate.Manage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_PS", "Monitor.Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_P", "Regulate.Manage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_P", "Monitor.Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_PS", "Regulate.Manage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_PS", "Devices.Heat_Source_i_heat_source_cpi_heat_controller_PreState_Container_P", "Devices.Heat_Source_i_heat_source_cpi_heat_controller_PreState_Container_PS", "Devices.Heat_Source_i_heat_source_cpi_heat_controller_PostState_Container_P", "Devices.Heat_Source_i_heat_source_cpi_heat_controller_PostState_Container_PS", "Monitor.Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_P", "Regulate.Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_P", "Monitor.Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_PS", "Monitor.Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P", "Regulate.Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_PS", "Monitor.Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_PS", "Regulate.Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_P", "Regulate.Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_PS", "Monitor.Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_P", "Monitor.Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_PS", "Monitor.Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_P", "Monitor.Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_PS", "Regulate.Detect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_P", "Regulate.Detect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_PS", "Regulate.Detect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_P", "Regulate.Detect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_PS", "Regulate.Manage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_P", "Regulate.Manage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_PS", "Regulate.Manage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_P", "Regulate.Manage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_PS", "Devices.Temperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_P", "Devices.Temperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_PS", "Devices.Temperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_P", "Devices.Temperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_PS", "Operator_Interface.Operator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_P", "Operator_Interface.Operator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_PS", "Operator_Interface.Operator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_P", "Operator_Interface.Operator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_PS")) + val t = parser.parseObjectTypes(ISZ("art.Empty", "Base_Types.Boolean_Payload", "Base_Types.Integer_Payload", "Base_Types.Integer_8_Payload", "Base_Types.Integer_16_Payload", "Base_Types.Integer_32_Payload", "Base_Types.Integer_64_Payload", "Base_Types.Unsigned_8_Payload", "Base_Types.Unsigned_16_Payload", "Base_Types.Unsigned_32_Payload", "Base_Types.Unsigned_64_Payload", "Base_Types.Float_Payload", "Base_Types.Float_32_Payload", "Base_Types.Float_64_Payload", "Base_Types.Character_Payload", "Base_Types.String_Payload", "Base_Types.Bits_Payload", "util.EmptyContainer", "Isolette_Environment.Heat_Payload", "Isolette_Data_Model.On_Off_Payload", "Isolette_Data_Model.Status_Payload", "Isolette_Data_Model.Temp_i_Payload", "Isolette_Data_Model.ValueStatus_Payload", "Isolette_Data_Model.Monitor_Mode_Payload", "Isolette_Data_Model.TempWstatus_i_Payload", "Isolette_Data_Model.Regulator_Mode_Payload", "Isolette_Data_Model.Failure_Flag_i_Payload", "Isolette_Data_Model.PhysicalTemp_i_Payload", "Isolette_Environment.Air_Interaction_Payload", "Isolette_Environment.Interface_Interaction_Payload", "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P", "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS", "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_P", "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_PS", "Monitor.Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_P", "Regulate.Manage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_P", "Monitor.Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_PS", "Regulate.Manage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_PS", "Monitor.Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_P", "Regulate.Manage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_P", "Monitor.Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_PS", "Regulate.Manage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_PS", "Devices.Heat_Source_i_heat_source_cpi_heat_controller_PreState_Container_P", "Devices.Heat_Source_i_heat_source_cpi_heat_controller_PreState_Container_PS", "Devices.Heat_Source_i_heat_source_cpi_heat_controller_PostState_Container_P", "Devices.Heat_Source_i_heat_source_cpi_heat_controller_PostState_Container_PS", "Monitor.Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_P", "Regulate.Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_P", "Monitor.Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_PS", "Monitor.Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P", "Regulate.Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_PS", "Monitor.Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_PS", "Regulate.Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_P", "Regulate.Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_PS", "Monitor.Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_P", "Monitor.Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_PS", "Monitor.Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_P", "Monitor.Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_PS", "Regulate.Detect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_P", "Regulate.Detect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_PS", "Regulate.Detect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_P", "Regulate.Detect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_PS", "Regulate.Manage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_P", "Regulate.Manage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_PS", "Regulate.Manage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_P", "Regulate.Manage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_PS", "Devices.Temperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_P", "Devices.Temperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_PS", "Devices.Temperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_P", "Devices.Temperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_PS", "Operator_Interface.Operator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_P", "Operator_Interface.Operator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_PS", "Operator_Interface.Operator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_P", "Operator_Interface.Operator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_PS")) t.native match { case "art.Empty" => val r = parse_artEmptyT(T); return r case "Base_Types.Boolean_Payload" => val r = parseBase_TypesBoolean_PayloadT(T); return r @@ -2806,6 +2860,7 @@ object JSON { case "Isolette_Data_Model.Regulator_Mode_Payload" => val r = parseIsolette_Data_ModelRegulator_Mode_PayloadT(T); return r case "Isolette_Data_Model.Failure_Flag_i_Payload" => val r = parseIsolette_Data_ModelFailure_Flag_i_PayloadT(T); return r case "Isolette_Data_Model.PhysicalTemp_i_Payload" => val r = parseIsolette_Data_ModelPhysicalTemp_i_PayloadT(T); return r + case "Isolette_Environment.Air_Interaction_Payload" => val r = parseIsolette_EnvironmentAir_Interaction_PayloadT(T); return r case "Isolette_Environment.Interface_Interaction_Payload" => val r = parseIsolette_EnvironmentInterface_Interaction_PayloadT(T); return r case "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P" => val r = parseMonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PT(T); return r case "Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS" => val r = parseMonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PST(T); return r @@ -2884,8 +2939,8 @@ object JSON { } } - def fromIsolette_EnvironmentHeat_Payload(o: Isolette_Environment.Heat_Payload, isCompact: B): String = { - val st = Printer.printIsolette_EnvironmentHeat_Payload(o) + def fromIsolette_Data_ModelPhysicalTemp_i(o: Isolette_Data_Model.PhysicalTemp_i, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelPhysicalTemp_i(o) if (isCompact) { return st.renderCompact } else { @@ -2893,17 +2948,17 @@ object JSON { } } - def toIsolette_EnvironmentHeat_Payload(s: String): Either[Isolette_Environment.Heat_Payload, Json.ErrorMsg] = { - def fIsolette_EnvironmentHeat_Payload(parser: Parser): Isolette_Environment.Heat_Payload = { - val r = parser.parseIsolette_EnvironmentHeat_Payload() + def toIsolette_Data_ModelPhysicalTemp_i(s: String): Either[Isolette_Data_Model.PhysicalTemp_i, Json.ErrorMsg] = { + def fIsolette_Data_ModelPhysicalTemp_i(parser: Parser): Isolette_Data_Model.PhysicalTemp_i = { + val r = parser.parseIsolette_Data_ModelPhysicalTemp_i() return r } - val r = to(s, fIsolette_EnvironmentHeat_Payload _) + val r = to(s, fIsolette_Data_ModelPhysicalTemp_i _) return r } - def fromIsolette_EnvironmentInterface_Interaction_Payload(o: Isolette_Environment.Interface_Interaction_Payload, isCompact: B): String = { - val st = Printer.printIsolette_EnvironmentInterface_Interaction_Payload(o) + def fromIsolette_Data_ModelPhysicalTemp_i_Payload(o: Isolette_Data_Model.PhysicalTemp_i_Payload, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelPhysicalTemp_i_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -2911,17 +2966,17 @@ object JSON { } } - def toIsolette_EnvironmentInterface_Interaction_Payload(s: String): Either[Isolette_Environment.Interface_Interaction_Payload, Json.ErrorMsg] = { - def fIsolette_EnvironmentInterface_Interaction_Payload(parser: Parser): Isolette_Environment.Interface_Interaction_Payload = { - val r = parser.parseIsolette_EnvironmentInterface_Interaction_Payload() + def toIsolette_Data_ModelPhysicalTemp_i_Payload(s: String): Either[Isolette_Data_Model.PhysicalTemp_i_Payload, Json.ErrorMsg] = { + def fIsolette_Data_ModelPhysicalTemp_i_Payload(parser: Parser): Isolette_Data_Model.PhysicalTemp_i_Payload = { + val r = parser.parseIsolette_Data_ModelPhysicalTemp_i_Payload() return r } - val r = to(s, fIsolette_EnvironmentInterface_Interaction_Payload _) + val r = to(s, fIsolette_Data_ModelPhysicalTemp_i_Payload _) return r } - def fromIsolette_Data_ModelPhysicalTemp_i(o: Isolette_Data_Model.PhysicalTemp_i, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelPhysicalTemp_i(o) + def fromIsolette_Data_ModelTempWstatus_i(o: Isolette_Data_Model.TempWstatus_i, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelTempWstatus_i(o) if (isCompact) { return st.renderCompact } else { @@ -2929,17 +2984,17 @@ object JSON { } } - def toIsolette_Data_ModelPhysicalTemp_i(s: String): Either[Isolette_Data_Model.PhysicalTemp_i, Json.ErrorMsg] = { - def fIsolette_Data_ModelPhysicalTemp_i(parser: Parser): Isolette_Data_Model.PhysicalTemp_i = { - val r = parser.parseIsolette_Data_ModelPhysicalTemp_i() + def toIsolette_Data_ModelTempWstatus_i(s: String): Either[Isolette_Data_Model.TempWstatus_i, Json.ErrorMsg] = { + def fIsolette_Data_ModelTempWstatus_i(parser: Parser): Isolette_Data_Model.TempWstatus_i = { + val r = parser.parseIsolette_Data_ModelTempWstatus_i() return r } - val r = to(s, fIsolette_Data_ModelPhysicalTemp_i _) + val r = to(s, fIsolette_Data_ModelTempWstatus_i _) return r } - def fromIsolette_Data_ModelPhysicalTemp_i_Payload(o: Isolette_Data_Model.PhysicalTemp_i_Payload, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelPhysicalTemp_i_Payload(o) + def fromIsolette_Data_ModelTempWstatus_i_Payload(o: Isolette_Data_Model.TempWstatus_i_Payload, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelTempWstatus_i_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -2947,17 +3002,17 @@ object JSON { } } - def toIsolette_Data_ModelPhysicalTemp_i_Payload(s: String): Either[Isolette_Data_Model.PhysicalTemp_i_Payload, Json.ErrorMsg] = { - def fIsolette_Data_ModelPhysicalTemp_i_Payload(parser: Parser): Isolette_Data_Model.PhysicalTemp_i_Payload = { - val r = parser.parseIsolette_Data_ModelPhysicalTemp_i_Payload() + def toIsolette_Data_ModelTempWstatus_i_Payload(s: String): Either[Isolette_Data_Model.TempWstatus_i_Payload, Json.ErrorMsg] = { + def fIsolette_Data_ModelTempWstatus_i_Payload(parser: Parser): Isolette_Data_Model.TempWstatus_i_Payload = { + val r = parser.parseIsolette_Data_ModelTempWstatus_i_Payload() return r } - val r = to(s, fIsolette_Data_ModelPhysicalTemp_i_Payload _) + val r = to(s, fIsolette_Data_ModelTempWstatus_i_Payload _) return r } - def fromIsolette_Data_ModelValueStatus_Payload(o: Isolette_Data_Model.ValueStatus_Payload, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelValueStatus_Payload(o) + def fromIsolette_Data_ModelTemp_i(o: Isolette_Data_Model.Temp_i, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelTemp_i(o) if (isCompact) { return st.renderCompact } else { @@ -2965,17 +3020,17 @@ object JSON { } } - def toIsolette_Data_ModelValueStatus_Payload(s: String): Either[Isolette_Data_Model.ValueStatus_Payload, Json.ErrorMsg] = { - def fIsolette_Data_ModelValueStatus_Payload(parser: Parser): Isolette_Data_Model.ValueStatus_Payload = { - val r = parser.parseIsolette_Data_ModelValueStatus_Payload() + def toIsolette_Data_ModelTemp_i(s: String): Either[Isolette_Data_Model.Temp_i, Json.ErrorMsg] = { + def fIsolette_Data_ModelTemp_i(parser: Parser): Isolette_Data_Model.Temp_i = { + val r = parser.parseIsolette_Data_ModelTemp_i() return r } - val r = to(s, fIsolette_Data_ModelValueStatus_Payload _) + val r = to(s, fIsolette_Data_ModelTemp_i _) return r } - def fromIsolette_Data_ModelTempWstatus_i(o: Isolette_Data_Model.TempWstatus_i, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelTempWstatus_i(o) + def fromIsolette_Data_ModelTemp_i_Payload(o: Isolette_Data_Model.Temp_i_Payload, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelTemp_i_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -2983,17 +3038,17 @@ object JSON { } } - def toIsolette_Data_ModelTempWstatus_i(s: String): Either[Isolette_Data_Model.TempWstatus_i, Json.ErrorMsg] = { - def fIsolette_Data_ModelTempWstatus_i(parser: Parser): Isolette_Data_Model.TempWstatus_i = { - val r = parser.parseIsolette_Data_ModelTempWstatus_i() + def toIsolette_Data_ModelTemp_i_Payload(s: String): Either[Isolette_Data_Model.Temp_i_Payload, Json.ErrorMsg] = { + def fIsolette_Data_ModelTemp_i_Payload(parser: Parser): Isolette_Data_Model.Temp_i_Payload = { + val r = parser.parseIsolette_Data_ModelTemp_i_Payload() return r } - val r = to(s, fIsolette_Data_ModelTempWstatus_i _) + val r = to(s, fIsolette_Data_ModelTemp_i_Payload _) return r } - def fromIsolette_Data_ModelTempWstatus_i_Payload(o: Isolette_Data_Model.TempWstatus_i_Payload, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelTempWstatus_i_Payload(o) + def fromIsolette_Data_ModelOn_Off_Payload(o: Isolette_Data_Model.On_Off_Payload, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelOn_Off_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -3001,17 +3056,17 @@ object JSON { } } - def toIsolette_Data_ModelTempWstatus_i_Payload(s: String): Either[Isolette_Data_Model.TempWstatus_i_Payload, Json.ErrorMsg] = { - def fIsolette_Data_ModelTempWstatus_i_Payload(parser: Parser): Isolette_Data_Model.TempWstatus_i_Payload = { - val r = parser.parseIsolette_Data_ModelTempWstatus_i_Payload() + def toIsolette_Data_ModelOn_Off_Payload(s: String): Either[Isolette_Data_Model.On_Off_Payload, Json.ErrorMsg] = { + def fIsolette_Data_ModelOn_Off_Payload(parser: Parser): Isolette_Data_Model.On_Off_Payload = { + val r = parser.parseIsolette_Data_ModelOn_Off_Payload() return r } - val r = to(s, fIsolette_Data_ModelTempWstatus_i_Payload _) + val r = to(s, fIsolette_Data_ModelOn_Off_Payload _) return r } - def fromIsolette_Data_ModelOn_Off_Payload(o: Isolette_Data_Model.On_Off_Payload, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelOn_Off_Payload(o) + def fromIsolette_Data_ModelFailure_Flag_i(o: Isolette_Data_Model.Failure_Flag_i, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelFailure_Flag_i(o) if (isCompact) { return st.renderCompact } else { @@ -3019,17 +3074,17 @@ object JSON { } } - def toIsolette_Data_ModelOn_Off_Payload(s: String): Either[Isolette_Data_Model.On_Off_Payload, Json.ErrorMsg] = { - def fIsolette_Data_ModelOn_Off_Payload(parser: Parser): Isolette_Data_Model.On_Off_Payload = { - val r = parser.parseIsolette_Data_ModelOn_Off_Payload() + def toIsolette_Data_ModelFailure_Flag_i(s: String): Either[Isolette_Data_Model.Failure_Flag_i, Json.ErrorMsg] = { + def fIsolette_Data_ModelFailure_Flag_i(parser: Parser): Isolette_Data_Model.Failure_Flag_i = { + val r = parser.parseIsolette_Data_ModelFailure_Flag_i() return r } - val r = to(s, fIsolette_Data_ModelOn_Off_Payload _) + val r = to(s, fIsolette_Data_ModelFailure_Flag_i _) return r } - def fromIsolette_Data_ModelStatus_Payload(o: Isolette_Data_Model.Status_Payload, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelStatus_Payload(o) + def fromIsolette_Data_ModelFailure_Flag_i_Payload(o: Isolette_Data_Model.Failure_Flag_i_Payload, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelFailure_Flag_i_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -3037,17 +3092,17 @@ object JSON { } } - def toIsolette_Data_ModelStatus_Payload(s: String): Either[Isolette_Data_Model.Status_Payload, Json.ErrorMsg] = { - def fIsolette_Data_ModelStatus_Payload(parser: Parser): Isolette_Data_Model.Status_Payload = { - val r = parser.parseIsolette_Data_ModelStatus_Payload() + def toIsolette_Data_ModelFailure_Flag_i_Payload(s: String): Either[Isolette_Data_Model.Failure_Flag_i_Payload, Json.ErrorMsg] = { + def fIsolette_Data_ModelFailure_Flag_i_Payload(parser: Parser): Isolette_Data_Model.Failure_Flag_i_Payload = { + val r = parser.parseIsolette_Data_ModelFailure_Flag_i_Payload() return r } - val r = to(s, fIsolette_Data_ModelStatus_Payload _) + val r = to(s, fIsolette_Data_ModelFailure_Flag_i_Payload _) return r } - def fromIsolette_Data_ModelTemp_i(o: Isolette_Data_Model.Temp_i, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelTemp_i(o) + def fromIsolette_Data_ModelValueStatus_Payload(o: Isolette_Data_Model.ValueStatus_Payload, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelValueStatus_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -3055,17 +3110,17 @@ object JSON { } } - def toIsolette_Data_ModelTemp_i(s: String): Either[Isolette_Data_Model.Temp_i, Json.ErrorMsg] = { - def fIsolette_Data_ModelTemp_i(parser: Parser): Isolette_Data_Model.Temp_i = { - val r = parser.parseIsolette_Data_ModelTemp_i() + def toIsolette_Data_ModelValueStatus_Payload(s: String): Either[Isolette_Data_Model.ValueStatus_Payload, Json.ErrorMsg] = { + def fIsolette_Data_ModelValueStatus_Payload(parser: Parser): Isolette_Data_Model.ValueStatus_Payload = { + val r = parser.parseIsolette_Data_ModelValueStatus_Payload() return r } - val r = to(s, fIsolette_Data_ModelTemp_i _) + val r = to(s, fIsolette_Data_ModelValueStatus_Payload _) return r } - def fromIsolette_Data_ModelTemp_i_Payload(o: Isolette_Data_Model.Temp_i_Payload, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelTemp_i_Payload(o) + def fromIsolette_Data_ModelStatus_Payload(o: Isolette_Data_Model.Status_Payload, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelStatus_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -3073,12 +3128,12 @@ object JSON { } } - def toIsolette_Data_ModelTemp_i_Payload(s: String): Either[Isolette_Data_Model.Temp_i_Payload, Json.ErrorMsg] = { - def fIsolette_Data_ModelTemp_i_Payload(parser: Parser): Isolette_Data_Model.Temp_i_Payload = { - val r = parser.parseIsolette_Data_ModelTemp_i_Payload() + def toIsolette_Data_ModelStatus_Payload(s: String): Either[Isolette_Data_Model.Status_Payload, Json.ErrorMsg] = { + def fIsolette_Data_ModelStatus_Payload(parser: Parser): Isolette_Data_Model.Status_Payload = { + val r = parser.parseIsolette_Data_ModelStatus_Payload() return r } - val r = to(s, fIsolette_Data_ModelTemp_i_Payload _) + val r = to(s, fIsolette_Data_ModelStatus_Payload _) return r } @@ -3100,8 +3155,8 @@ object JSON { return r } - def fromIsolette_Data_ModelFailure_Flag_i(o: Isolette_Data_Model.Failure_Flag_i, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelFailure_Flag_i(o) + def fromIsolette_Data_ModelMonitor_Mode_Payload(o: Isolette_Data_Model.Monitor_Mode_Payload, isCompact: B): String = { + val st = Printer.printIsolette_Data_ModelMonitor_Mode_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -3109,17 +3164,17 @@ object JSON { } } - def toIsolette_Data_ModelFailure_Flag_i(s: String): Either[Isolette_Data_Model.Failure_Flag_i, Json.ErrorMsg] = { - def fIsolette_Data_ModelFailure_Flag_i(parser: Parser): Isolette_Data_Model.Failure_Flag_i = { - val r = parser.parseIsolette_Data_ModelFailure_Flag_i() + def toIsolette_Data_ModelMonitor_Mode_Payload(s: String): Either[Isolette_Data_Model.Monitor_Mode_Payload, Json.ErrorMsg] = { + def fIsolette_Data_ModelMonitor_Mode_Payload(parser: Parser): Isolette_Data_Model.Monitor_Mode_Payload = { + val r = parser.parseIsolette_Data_ModelMonitor_Mode_Payload() return r } - val r = to(s, fIsolette_Data_ModelFailure_Flag_i _) + val r = to(s, fIsolette_Data_ModelMonitor_Mode_Payload _) return r } - def fromIsolette_Data_ModelFailure_Flag_i_Payload(o: Isolette_Data_Model.Failure_Flag_i_Payload, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelFailure_Flag_i_Payload(o) + def fromIsolette_EnvironmentHeat_Payload(o: Isolette_Environment.Heat_Payload, isCompact: B): String = { + val st = Printer.printIsolette_EnvironmentHeat_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -3127,17 +3182,17 @@ object JSON { } } - def toIsolette_Data_ModelFailure_Flag_i_Payload(s: String): Either[Isolette_Data_Model.Failure_Flag_i_Payload, Json.ErrorMsg] = { - def fIsolette_Data_ModelFailure_Flag_i_Payload(parser: Parser): Isolette_Data_Model.Failure_Flag_i_Payload = { - val r = parser.parseIsolette_Data_ModelFailure_Flag_i_Payload() + def toIsolette_EnvironmentHeat_Payload(s: String): Either[Isolette_Environment.Heat_Payload, Json.ErrorMsg] = { + def fIsolette_EnvironmentHeat_Payload(parser: Parser): Isolette_Environment.Heat_Payload = { + val r = parser.parseIsolette_EnvironmentHeat_Payload() return r } - val r = to(s, fIsolette_Data_ModelFailure_Flag_i_Payload _) + val r = to(s, fIsolette_EnvironmentHeat_Payload _) return r } - def fromIsolette_Data_ModelMonitor_Mode_Payload(o: Isolette_Data_Model.Monitor_Mode_Payload, isCompact: B): String = { - val st = Printer.printIsolette_Data_ModelMonitor_Mode_Payload(o) + def fromIsolette_EnvironmentInterface_Interaction_Payload(o: Isolette_Environment.Interface_Interaction_Payload, isCompact: B): String = { + val st = Printer.printIsolette_EnvironmentInterface_Interaction_Payload(o) if (isCompact) { return st.renderCompact } else { @@ -3145,12 +3200,30 @@ object JSON { } } - def toIsolette_Data_ModelMonitor_Mode_Payload(s: String): Either[Isolette_Data_Model.Monitor_Mode_Payload, Json.ErrorMsg] = { - def fIsolette_Data_ModelMonitor_Mode_Payload(parser: Parser): Isolette_Data_Model.Monitor_Mode_Payload = { - val r = parser.parseIsolette_Data_ModelMonitor_Mode_Payload() + def toIsolette_EnvironmentInterface_Interaction_Payload(s: String): Either[Isolette_Environment.Interface_Interaction_Payload, Json.ErrorMsg] = { + def fIsolette_EnvironmentInterface_Interaction_Payload(parser: Parser): Isolette_Environment.Interface_Interaction_Payload = { + val r = parser.parseIsolette_EnvironmentInterface_Interaction_Payload() return r } - val r = to(s, fIsolette_Data_ModelMonitor_Mode_Payload _) + val r = to(s, fIsolette_EnvironmentInterface_Interaction_Payload _) + return r + } + + def fromIsolette_EnvironmentAir_Interaction_Payload(o: Isolette_Environment.Air_Interaction_Payload, isCompact: B): String = { + val st = Printer.printIsolette_EnvironmentAir_Interaction_Payload(o) + if (isCompact) { + return st.renderCompact + } else { + return st.render + } + } + + def toIsolette_EnvironmentAir_Interaction_Payload(s: String): Either[Isolette_Environment.Air_Interaction_Payload, Json.ErrorMsg] = { + def fIsolette_EnvironmentAir_Interaction_Payload(parser: Parser): Isolette_Environment.Air_Interaction_Payload = { + val r = parser.parseIsolette_EnvironmentAir_Interaction_Payload() + return r + } + val r = to(s, fIsolette_EnvironmentAir_Interaction_Payload _) return r } diff --git a/isolette/hamr/slang/src/main/util/isolette/MsgPack.scala b/isolette/hamr/slang/src/main/util/isolette/MsgPack.scala index c354847..d6eceb6 100644 --- a/isolette/hamr/slang/src/main/util/isolette/MsgPack.scala +++ b/isolette/hamr/slang/src/main/util/isolette/MsgPack.scala @@ -1,7 +1,7 @@ // #Sireum // @formatter:off -// This file is auto-generated from Heat.scala, Interface_Interaction.scala, PhysicalTemp_i.scala, ValueStatus.scala, TempWstatus_i.scala, On_Off.scala, Status.scala, Temp_i.scala, Regulator_Mode.scala, Failure_Flag_i.scala, Monitor_Mode.scala, Base_Types.scala, Manage_Regulator_Interface_i_thermostat_rt_mri_mri_Containers.scala, Manage_Heat_Source_i_thermostat_rt_mhs_mhs_Containers.scala, Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_Containers.scala, Detect_Regulator_Failure_i_thermostat_rt_drf_drf_Containers.scala, Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_Containers.scala, Manage_Alarm_i_thermostat_mt_ma_ma_Containers.scala, Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_Containers.scala, Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_Containers.scala, Operator_Interface_Thread_i_operator_interface_oip_oit_Containers.scala, Temperature_Sensor_i_temperature_sensor_cpi_thermostat_Containers.scala, Heat_Source_i_heat_source_cpi_heat_controller_Containers.scala, ObservationKind.scala, Container.scala, DataContent.scala, Aux_Types.scala +// This file is auto-generated from PhysicalTemp_i.scala, TempWstatus_i.scala, Temp_i.scala, On_Off.scala, Failure_Flag_i.scala, ValueStatus.scala, Status.scala, Regulator_Mode.scala, Monitor_Mode.scala, Heat.scala, Interface_Interaction.scala, Air_Interaction.scala, Base_Types.scala, Manage_Regulator_Interface_i_thermostat_rt_mri_mri_Containers.scala, Manage_Heat_Source_i_thermostat_rt_mhs_mhs_Containers.scala, Manage_Regulator_Mode_i_thermostat_rt_mrm_mrm_Containers.scala, Detect_Regulator_Failure_i_thermostat_rt_drf_drf_Containers.scala, Manage_Monitor_Interface_i_thermostat_mt_mmi_mmi_Containers.scala, Manage_Alarm_i_thermostat_mt_ma_ma_Containers.scala, Manage_Monitor_Mode_i_thermostat_mt_mmm_mmm_Containers.scala, Detect_Monitor_Failure_i_thermostat_mt_dmf_dmf_Containers.scala, Operator_Interface_Thread_i_operator_interface_oip_oit_Containers.scala, Temperature_Sensor_i_temperature_sensor_cpi_thermostat_Containers.scala, Heat_Source_i_heat_source_cpi_heat_controller_Containers.scala, ObservationKind.scala, Container.scala, DataContent.scala, Aux_Types.scala package isolette @@ -11,159 +11,161 @@ object MsgPack { object Constants { - val Isolette_EnvironmentHeat_Payload: Z = -32 + val Isolette_Data_ModelPhysicalTemp_i: Z = -32 - val Isolette_EnvironmentInterface_Interaction_Payload: Z = -31 + val Isolette_Data_ModelPhysicalTemp_i_Payload: Z = -31 - val Isolette_Data_ModelPhysicalTemp_i: Z = -30 + val Isolette_Data_ModelTempWstatus_i: Z = -30 - val Isolette_Data_ModelPhysicalTemp_i_Payload: Z = -29 + val Isolette_Data_ModelTempWstatus_i_Payload: Z = -29 - val Isolette_Data_ModelValueStatus_Payload: Z = -28 + val Isolette_Data_ModelTemp_i: Z = -28 - val Isolette_Data_ModelTempWstatus_i: Z = -27 + val Isolette_Data_ModelTemp_i_Payload: Z = -27 - val Isolette_Data_ModelTempWstatus_i_Payload: Z = -26 + val Isolette_Data_ModelOn_Off_Payload: Z = -26 - val Isolette_Data_ModelOn_Off_Payload: Z = -25 + val Isolette_Data_ModelFailure_Flag_i: Z = -25 - val Isolette_Data_ModelStatus_Payload: Z = -24 + val Isolette_Data_ModelFailure_Flag_i_Payload: Z = -24 - val Isolette_Data_ModelTemp_i: Z = -23 + val Isolette_Data_ModelValueStatus_Payload: Z = -23 - val Isolette_Data_ModelTemp_i_Payload: Z = -22 + val Isolette_Data_ModelStatus_Payload: Z = -22 val Isolette_Data_ModelRegulator_Mode_Payload: Z = -21 - val Isolette_Data_ModelFailure_Flag_i: Z = -20 + val Isolette_Data_ModelMonitor_Mode_Payload: Z = -20 - val Isolette_Data_ModelFailure_Flag_i_Payload: Z = -19 + val Isolette_EnvironmentHeat_Payload: Z = -19 - val Isolette_Data_ModelMonitor_Mode_Payload: Z = -18 + val Isolette_EnvironmentInterface_Interaction_Payload: Z = -18 - val Base_TypesBoolean_Payload: Z = -17 + val Isolette_EnvironmentAir_Interaction_Payload: Z = -17 - val Base_TypesInteger_Payload: Z = -16 + val Base_TypesBoolean_Payload: Z = -16 - val Base_TypesInteger_8_Payload: Z = -15 + val Base_TypesInteger_Payload: Z = -15 - val Base_TypesInteger_16_Payload: Z = -14 + val Base_TypesInteger_8_Payload: Z = -14 - val Base_TypesInteger_32_Payload: Z = -13 + val Base_TypesInteger_16_Payload: Z = -13 - val Base_TypesInteger_64_Payload: Z = -12 + val Base_TypesInteger_32_Payload: Z = -12 - val Base_TypesUnsigned_8_Payload: Z = -11 + val Base_TypesInteger_64_Payload: Z = -11 - val Base_TypesUnsigned_16_Payload: Z = -10 + val Base_TypesUnsigned_8_Payload: Z = -10 - val Base_TypesUnsigned_32_Payload: Z = -9 + val Base_TypesUnsigned_16_Payload: Z = -9 - val Base_TypesUnsigned_64_Payload: Z = -8 + val Base_TypesUnsigned_32_Payload: Z = -8 - val Base_TypesFloat_Payload: Z = -7 + val Base_TypesUnsigned_64_Payload: Z = -7 - val Base_TypesFloat_32_Payload: Z = -6 + val Base_TypesFloat_Payload: Z = -6 - val Base_TypesFloat_64_Payload: Z = -5 + val Base_TypesFloat_32_Payload: Z = -5 - val Base_TypesCharacter_Payload: Z = -4 + val Base_TypesFloat_64_Payload: Z = -4 - val Base_TypesString_Payload: Z = -3 + val Base_TypesCharacter_Payload: Z = -3 - val Base_TypesBits_Payload: Z = -2 + val Base_TypesString_Payload: Z = -2 - val RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_P: Z = -1 + val Base_TypesBits_Payload: Z = -1 - val RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_PS: Z = 0 + val RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_P: Z = 0 - val RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_P: Z = 1 + val RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_PS: Z = 1 - val RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_PS: Z = 2 + val RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_P: Z = 2 - val RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_P: Z = 3 + val RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_PS: Z = 3 - val RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_PS: Z = 4 + val RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_P: Z = 4 - val RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_P: Z = 5 + val RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_PS: Z = 5 - val RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_PS: Z = 6 + val RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_P: Z = 6 - val RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_P: Z = 7 + val RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_PS: Z = 7 - val RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_PS: Z = 8 + val RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_P: Z = 8 - val RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_P: Z = 9 + val RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_PS: Z = 9 - val RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_PS: Z = 10 + val RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_P: Z = 10 - val RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_P: Z = 11 + val RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_PS: Z = 11 - val RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_PS: Z = 12 + val RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_P: Z = 12 - val RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_P: Z = 13 + val RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_PS: Z = 13 - val RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_PS: Z = 14 + val RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_P: Z = 14 - val MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_P: Z = 15 + val RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_PS: Z = 15 - val MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_PS: Z = 16 + val MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_P: Z = 16 - val MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_P: Z = 17 + val MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_PS: Z = 17 - val MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_PS: Z = 18 + val MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_P: Z = 18 - val MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P: Z = 19 + val MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_PS: Z = 19 - val MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS: Z = 20 + val MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P: Z = 20 - val MonitorManage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_P: Z = 21 + val MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS: Z = 21 - val MonitorManage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_PS: Z = 22 + val MonitorManage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_P: Z = 22 - val MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_P: Z = 23 + val MonitorManage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_PS: Z = 23 - val MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_PS: Z = 24 + val MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_P: Z = 24 - val MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_P: Z = 25 + val MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_PS: Z = 25 - val MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_PS: Z = 26 + val MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_P: Z = 26 - val MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_P: Z = 27 + val MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_PS: Z = 27 - val MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_PS: Z = 28 + val MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_P: Z = 28 - val MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P: Z = 29 + val MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_PS: Z = 29 - val MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_PS: Z = 30 + val MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P: Z = 30 - val Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_P: Z = 31 + val MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_PS: Z = 31 - val Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_PS: Z = 32 + val Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_P: Z = 32 - val Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_P: Z = 33 + val Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_PS: Z = 33 - val Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_PS: Z = 34 + val Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_P: Z = 34 - val DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_P: Z = 35 + val Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_PS: Z = 35 - val DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_PS: Z = 36 + val DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_P: Z = 36 - val DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_P: Z = 37 + val DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_PS: Z = 37 - val DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_PS: Z = 38 + val DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_P: Z = 38 - val DevicesHeat_Source_i_heat_source_cpi_heat_controller_PreState_Container_P: Z = 39 + val DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_PS: Z = 39 - val DevicesHeat_Source_i_heat_source_cpi_heat_controller_PreState_Container_PS: Z = 40 + val DevicesHeat_Source_i_heat_source_cpi_heat_controller_PreState_Container_P: Z = 40 - val DevicesHeat_Source_i_heat_source_cpi_heat_controller_PostState_Container_P: Z = 41 + val DevicesHeat_Source_i_heat_source_cpi_heat_controller_PreState_Container_PS: Z = 41 - val DevicesHeat_Source_i_heat_source_cpi_heat_controller_PostState_Container_PS: Z = 42 + val DevicesHeat_Source_i_heat_source_cpi_heat_controller_PostState_Container_P: Z = 42 - val utilEmptyContainer: Z = 43 + val DevicesHeat_Source_i_heat_source_cpi_heat_controller_PostState_Container_PS: Z = 43 - val _artEmpty: Z = 44 + val utilEmptyContainer: Z = 44 + + val _artEmpty: Z = 45 } @@ -177,27 +179,9 @@ object MsgPack { def writer: MessagePack.Writer - def writeIsolette_EnvironmentHeatType(o: Isolette_Environment.Heat.Type): Unit = { - writer.writeZ(o.ordinal) - } - - def writeIsolette_EnvironmentHeat_Payload(o: Isolette_Environment.Heat_Payload): Unit = { - writer.writeZ(Constants.Isolette_EnvironmentHeat_Payload) - writeIsolette_EnvironmentHeatType(o.value) - } - - def writeIsolette_EnvironmentInterface_InteractionType(o: Isolette_Environment.Interface_Interaction.Type): Unit = { - writer.writeZ(o.ordinal) - } - - def writeIsolette_EnvironmentInterface_Interaction_Payload(o: Isolette_Environment.Interface_Interaction_Payload): Unit = { - writer.writeZ(Constants.Isolette_EnvironmentInterface_Interaction_Payload) - writeIsolette_EnvironmentInterface_InteractionType(o.value) - } - def writeIsolette_Data_ModelPhysicalTemp_i(o: Isolette_Data_Model.PhysicalTemp_i): Unit = { writer.writeZ(Constants.Isolette_Data_ModelPhysicalTemp_i) - writer.writeF32(o.value) + writer.writeF32(o.degrees) } def writeIsolette_Data_ModelPhysicalTemp_i_Payload(o: Isolette_Data_Model.PhysicalTemp_i_Payload): Unit = { @@ -205,18 +189,9 @@ object MsgPack { writeIsolette_Data_ModelPhysicalTemp_i(o.value) } - def writeIsolette_Data_ModelValueStatusType(o: Isolette_Data_Model.ValueStatus.Type): Unit = { - writer.writeZ(o.ordinal) - } - - def writeIsolette_Data_ModelValueStatus_Payload(o: Isolette_Data_Model.ValueStatus_Payload): Unit = { - writer.writeZ(Constants.Isolette_Data_ModelValueStatus_Payload) - writeIsolette_Data_ModelValueStatusType(o.value) - } - def writeIsolette_Data_ModelTempWstatus_i(o: Isolette_Data_Model.TempWstatus_i): Unit = { writer.writeZ(Constants.Isolette_Data_ModelTempWstatus_i) - writer.writeF32(o.value) + writer.writeF32(o.degrees) writeIsolette_Data_ModelValueStatusType(o.status) } @@ -225,6 +200,16 @@ object MsgPack { writeIsolette_Data_ModelTempWstatus_i(o.value) } + def writeIsolette_Data_ModelTemp_i(o: Isolette_Data_Model.Temp_i): Unit = { + writer.writeZ(Constants.Isolette_Data_ModelTemp_i) + writer.writeF32(o.degrees) + } + + def writeIsolette_Data_ModelTemp_i_Payload(o: Isolette_Data_Model.Temp_i_Payload): Unit = { + writer.writeZ(Constants.Isolette_Data_ModelTemp_i_Payload) + writeIsolette_Data_ModelTemp_i(o.value) + } + def writeIsolette_Data_ModelOn_OffType(o: Isolette_Data_Model.On_Off.Type): Unit = { writer.writeZ(o.ordinal) } @@ -234,23 +219,32 @@ object MsgPack { writeIsolette_Data_ModelOn_OffType(o.value) } - def writeIsolette_Data_ModelStatusType(o: Isolette_Data_Model.Status.Type): Unit = { + def writeIsolette_Data_ModelFailure_Flag_i(o: Isolette_Data_Model.Failure_Flag_i): Unit = { + writer.writeZ(Constants.Isolette_Data_ModelFailure_Flag_i) + writer.writeB(o.flag) + } + + def writeIsolette_Data_ModelFailure_Flag_i_Payload(o: Isolette_Data_Model.Failure_Flag_i_Payload): Unit = { + writer.writeZ(Constants.Isolette_Data_ModelFailure_Flag_i_Payload) + writeIsolette_Data_ModelFailure_Flag_i(o.value) + } + + def writeIsolette_Data_ModelValueStatusType(o: Isolette_Data_Model.ValueStatus.Type): Unit = { writer.writeZ(o.ordinal) } - def writeIsolette_Data_ModelStatus_Payload(o: Isolette_Data_Model.Status_Payload): Unit = { - writer.writeZ(Constants.Isolette_Data_ModelStatus_Payload) - writeIsolette_Data_ModelStatusType(o.value) + def writeIsolette_Data_ModelValueStatus_Payload(o: Isolette_Data_Model.ValueStatus_Payload): Unit = { + writer.writeZ(Constants.Isolette_Data_ModelValueStatus_Payload) + writeIsolette_Data_ModelValueStatusType(o.value) } - def writeIsolette_Data_ModelTemp_i(o: Isolette_Data_Model.Temp_i): Unit = { - writer.writeZ(Constants.Isolette_Data_ModelTemp_i) - writer.writeF32(o.value) + def writeIsolette_Data_ModelStatusType(o: Isolette_Data_Model.Status.Type): Unit = { + writer.writeZ(o.ordinal) } - def writeIsolette_Data_ModelTemp_i_Payload(o: Isolette_Data_Model.Temp_i_Payload): Unit = { - writer.writeZ(Constants.Isolette_Data_ModelTemp_i_Payload) - writeIsolette_Data_ModelTemp_i(o.value) + def writeIsolette_Data_ModelStatus_Payload(o: Isolette_Data_Model.Status_Payload): Unit = { + writer.writeZ(Constants.Isolette_Data_ModelStatus_Payload) + writeIsolette_Data_ModelStatusType(o.value) } def writeIsolette_Data_ModelRegulator_ModeType(o: Isolette_Data_Model.Regulator_Mode.Type): Unit = { @@ -262,16 +256,6 @@ object MsgPack { writeIsolette_Data_ModelRegulator_ModeType(o.value) } - def writeIsolette_Data_ModelFailure_Flag_i(o: Isolette_Data_Model.Failure_Flag_i): Unit = { - writer.writeZ(Constants.Isolette_Data_ModelFailure_Flag_i) - writer.writeB(o.value) - } - - def writeIsolette_Data_ModelFailure_Flag_i_Payload(o: Isolette_Data_Model.Failure_Flag_i_Payload): Unit = { - writer.writeZ(Constants.Isolette_Data_ModelFailure_Flag_i_Payload) - writeIsolette_Data_ModelFailure_Flag_i(o.value) - } - def writeIsolette_Data_ModelMonitor_ModeType(o: Isolette_Data_Model.Monitor_Mode.Type): Unit = { writer.writeZ(o.ordinal) } @@ -281,6 +265,33 @@ object MsgPack { writeIsolette_Data_ModelMonitor_ModeType(o.value) } + def writeIsolette_EnvironmentHeatType(o: Isolette_Environment.Heat.Type): Unit = { + writer.writeZ(o.ordinal) + } + + def writeIsolette_EnvironmentHeat_Payload(o: Isolette_Environment.Heat_Payload): Unit = { + writer.writeZ(Constants.Isolette_EnvironmentHeat_Payload) + writeIsolette_EnvironmentHeatType(o.value) + } + + def writeIsolette_EnvironmentInterface_InteractionType(o: Isolette_Environment.Interface_Interaction.Type): Unit = { + writer.writeZ(o.ordinal) + } + + def writeIsolette_EnvironmentInterface_Interaction_Payload(o: Isolette_Environment.Interface_Interaction_Payload): Unit = { + writer.writeZ(Constants.Isolette_EnvironmentInterface_Interaction_Payload) + writeIsolette_EnvironmentInterface_InteractionType(o.value) + } + + def writeIsolette_EnvironmentAir_InteractionType(o: Isolette_Environment.Air_Interaction.Type): Unit = { + writer.writeZ(o.ordinal) + } + + def writeIsolette_EnvironmentAir_Interaction_Payload(o: Isolette_Environment.Air_Interaction_Payload): Unit = { + writer.writeZ(Constants.Isolette_EnvironmentAir_Interaction_Payload) + writeIsolette_EnvironmentAir_InteractionType(o.value) + } + def writeBase_TypesBoolean_Payload(o: Base_Types.Boolean_Payload): Unit = { writer.writeZ(Constants.Base_TypesBoolean_Payload) writer.writeB(o.value) @@ -887,6 +898,7 @@ object MsgPack { case o: Isolette_Data_Model.Regulator_Mode_Payload => writeIsolette_Data_ModelRegulator_Mode_Payload(o) case o: Isolette_Data_Model.Failure_Flag_i_Payload => writeIsolette_Data_ModelFailure_Flag_i_Payload(o) case o: Isolette_Data_Model.PhysicalTemp_i_Payload => writeIsolette_Data_ModelPhysicalTemp_i_Payload(o) + case o: Isolette_Environment.Air_Interaction_Payload => writeIsolette_EnvironmentAir_Interaction_Payload(o) case o: Isolette_Environment.Interface_Interaction_Payload => writeIsolette_EnvironmentInterface_Interaction_Payload(o) case o: Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P => writeMonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P(o) case o: Monitor.Manage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS => writeMonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS(o) @@ -959,42 +971,6 @@ object MsgPack { def reader: MessagePack.Reader - def readIsolette_EnvironmentHeatType(): Isolette_Environment.Heat.Type = { - val r = reader.readZ() - return Isolette_Environment.Heat.byOrdinal(r).get - } - - def readIsolette_EnvironmentHeat_Payload(): Isolette_Environment.Heat_Payload = { - val r = readIsolette_EnvironmentHeat_PayloadT(F) - return r - } - - def readIsolette_EnvironmentHeat_PayloadT(typeParsed: B): Isolette_Environment.Heat_Payload = { - if (!typeParsed) { - reader.expectZ(Constants.Isolette_EnvironmentHeat_Payload) - } - val value = readIsolette_EnvironmentHeatType() - return Isolette_Environment.Heat_Payload(value) - } - - def readIsolette_EnvironmentInterface_InteractionType(): Isolette_Environment.Interface_Interaction.Type = { - val r = reader.readZ() - return Isolette_Environment.Interface_Interaction.byOrdinal(r).get - } - - def readIsolette_EnvironmentInterface_Interaction_Payload(): Isolette_Environment.Interface_Interaction_Payload = { - val r = readIsolette_EnvironmentInterface_Interaction_PayloadT(F) - return r - } - - def readIsolette_EnvironmentInterface_Interaction_PayloadT(typeParsed: B): Isolette_Environment.Interface_Interaction_Payload = { - if (!typeParsed) { - reader.expectZ(Constants.Isolette_EnvironmentInterface_Interaction_Payload) - } - val value = readIsolette_EnvironmentInterface_InteractionType() - return Isolette_Environment.Interface_Interaction_Payload(value) - } - def readIsolette_Data_ModelPhysicalTemp_i(): Isolette_Data_Model.PhysicalTemp_i = { val r = readIsolette_Data_ModelPhysicalTemp_iT(F) return r @@ -1004,8 +980,8 @@ object MsgPack { if (!typeParsed) { reader.expectZ(Constants.Isolette_Data_ModelPhysicalTemp_i) } - val value = reader.readF32() - return Isolette_Data_Model.PhysicalTemp_i(value) + val degrees = reader.readF32() + return Isolette_Data_Model.PhysicalTemp_i(degrees) } def readIsolette_Data_ModelPhysicalTemp_i_Payload(): Isolette_Data_Model.PhysicalTemp_i_Payload = { @@ -1021,24 +997,6 @@ object MsgPack { return Isolette_Data_Model.PhysicalTemp_i_Payload(value) } - def readIsolette_Data_ModelValueStatusType(): Isolette_Data_Model.ValueStatus.Type = { - val r = reader.readZ() - return Isolette_Data_Model.ValueStatus.byOrdinal(r).get - } - - def readIsolette_Data_ModelValueStatus_Payload(): Isolette_Data_Model.ValueStatus_Payload = { - val r = readIsolette_Data_ModelValueStatus_PayloadT(F) - return r - } - - def readIsolette_Data_ModelValueStatus_PayloadT(typeParsed: B): Isolette_Data_Model.ValueStatus_Payload = { - if (!typeParsed) { - reader.expectZ(Constants.Isolette_Data_ModelValueStatus_Payload) - } - val value = readIsolette_Data_ModelValueStatusType() - return Isolette_Data_Model.ValueStatus_Payload(value) - } - def readIsolette_Data_ModelTempWstatus_i(): Isolette_Data_Model.TempWstatus_i = { val r = readIsolette_Data_ModelTempWstatus_iT(F) return r @@ -1048,9 +1006,9 @@ object MsgPack { if (!typeParsed) { reader.expectZ(Constants.Isolette_Data_ModelTempWstatus_i) } - val value = reader.readF32() + val degrees = reader.readF32() val status = readIsolette_Data_ModelValueStatusType() - return Isolette_Data_Model.TempWstatus_i(value, status) + return Isolette_Data_Model.TempWstatus_i(degrees, status) } def readIsolette_Data_ModelTempWstatus_i_Payload(): Isolette_Data_Model.TempWstatus_i_Payload = { @@ -1066,6 +1024,32 @@ object MsgPack { return Isolette_Data_Model.TempWstatus_i_Payload(value) } + def readIsolette_Data_ModelTemp_i(): Isolette_Data_Model.Temp_i = { + val r = readIsolette_Data_ModelTemp_iT(F) + return r + } + + def readIsolette_Data_ModelTemp_iT(typeParsed: B): Isolette_Data_Model.Temp_i = { + if (!typeParsed) { + reader.expectZ(Constants.Isolette_Data_ModelTemp_i) + } + val degrees = reader.readF32() + return Isolette_Data_Model.Temp_i(degrees) + } + + def readIsolette_Data_ModelTemp_i_Payload(): Isolette_Data_Model.Temp_i_Payload = { + val r = readIsolette_Data_ModelTemp_i_PayloadT(F) + return r + } + + def readIsolette_Data_ModelTemp_i_PayloadT(typeParsed: B): Isolette_Data_Model.Temp_i_Payload = { + if (!typeParsed) { + reader.expectZ(Constants.Isolette_Data_ModelTemp_i_Payload) + } + val value = readIsolette_Data_ModelTemp_i() + return Isolette_Data_Model.Temp_i_Payload(value) + } + def readIsolette_Data_ModelOn_OffType(): Isolette_Data_Model.On_Off.Type = { val r = reader.readZ() return Isolette_Data_Model.On_Off.byOrdinal(r).get @@ -1084,48 +1068,66 @@ object MsgPack { return Isolette_Data_Model.On_Off_Payload(value) } - def readIsolette_Data_ModelStatusType(): Isolette_Data_Model.Status.Type = { - val r = reader.readZ() - return Isolette_Data_Model.Status.byOrdinal(r).get + def readIsolette_Data_ModelFailure_Flag_i(): Isolette_Data_Model.Failure_Flag_i = { + val r = readIsolette_Data_ModelFailure_Flag_iT(F) + return r } - def readIsolette_Data_ModelStatus_Payload(): Isolette_Data_Model.Status_Payload = { - val r = readIsolette_Data_ModelStatus_PayloadT(F) + def readIsolette_Data_ModelFailure_Flag_iT(typeParsed: B): Isolette_Data_Model.Failure_Flag_i = { + if (!typeParsed) { + reader.expectZ(Constants.Isolette_Data_ModelFailure_Flag_i) + } + val flag = reader.readB() + return Isolette_Data_Model.Failure_Flag_i(flag) + } + + def readIsolette_Data_ModelFailure_Flag_i_Payload(): Isolette_Data_Model.Failure_Flag_i_Payload = { + val r = readIsolette_Data_ModelFailure_Flag_i_PayloadT(F) return r } - def readIsolette_Data_ModelStatus_PayloadT(typeParsed: B): Isolette_Data_Model.Status_Payload = { + def readIsolette_Data_ModelFailure_Flag_i_PayloadT(typeParsed: B): Isolette_Data_Model.Failure_Flag_i_Payload = { if (!typeParsed) { - reader.expectZ(Constants.Isolette_Data_ModelStatus_Payload) + reader.expectZ(Constants.Isolette_Data_ModelFailure_Flag_i_Payload) } - val value = readIsolette_Data_ModelStatusType() - return Isolette_Data_Model.Status_Payload(value) + val value = readIsolette_Data_ModelFailure_Flag_i() + return Isolette_Data_Model.Failure_Flag_i_Payload(value) } - def readIsolette_Data_ModelTemp_i(): Isolette_Data_Model.Temp_i = { - val r = readIsolette_Data_ModelTemp_iT(F) + def readIsolette_Data_ModelValueStatusType(): Isolette_Data_Model.ValueStatus.Type = { + val r = reader.readZ() + return Isolette_Data_Model.ValueStatus.byOrdinal(r).get + } + + def readIsolette_Data_ModelValueStatus_Payload(): Isolette_Data_Model.ValueStatus_Payload = { + val r = readIsolette_Data_ModelValueStatus_PayloadT(F) return r } - def readIsolette_Data_ModelTemp_iT(typeParsed: B): Isolette_Data_Model.Temp_i = { + def readIsolette_Data_ModelValueStatus_PayloadT(typeParsed: B): Isolette_Data_Model.ValueStatus_Payload = { if (!typeParsed) { - reader.expectZ(Constants.Isolette_Data_ModelTemp_i) + reader.expectZ(Constants.Isolette_Data_ModelValueStatus_Payload) } - val value = reader.readF32() - return Isolette_Data_Model.Temp_i(value) + val value = readIsolette_Data_ModelValueStatusType() + return Isolette_Data_Model.ValueStatus_Payload(value) } - def readIsolette_Data_ModelTemp_i_Payload(): Isolette_Data_Model.Temp_i_Payload = { - val r = readIsolette_Data_ModelTemp_i_PayloadT(F) + def readIsolette_Data_ModelStatusType(): Isolette_Data_Model.Status.Type = { + val r = reader.readZ() + return Isolette_Data_Model.Status.byOrdinal(r).get + } + + def readIsolette_Data_ModelStatus_Payload(): Isolette_Data_Model.Status_Payload = { + val r = readIsolette_Data_ModelStatus_PayloadT(F) return r } - def readIsolette_Data_ModelTemp_i_PayloadT(typeParsed: B): Isolette_Data_Model.Temp_i_Payload = { + def readIsolette_Data_ModelStatus_PayloadT(typeParsed: B): Isolette_Data_Model.Status_Payload = { if (!typeParsed) { - reader.expectZ(Constants.Isolette_Data_ModelTemp_i_Payload) + reader.expectZ(Constants.Isolette_Data_ModelStatus_Payload) } - val value = readIsolette_Data_ModelTemp_i() - return Isolette_Data_Model.Temp_i_Payload(value) + val value = readIsolette_Data_ModelStatusType() + return Isolette_Data_Model.Status_Payload(value) } def readIsolette_Data_ModelRegulator_ModeType(): Isolette_Data_Model.Regulator_Mode.Type = { @@ -1146,48 +1148,76 @@ object MsgPack { return Isolette_Data_Model.Regulator_Mode_Payload(value) } - def readIsolette_Data_ModelFailure_Flag_i(): Isolette_Data_Model.Failure_Flag_i = { - val r = readIsolette_Data_ModelFailure_Flag_iT(F) + def readIsolette_Data_ModelMonitor_ModeType(): Isolette_Data_Model.Monitor_Mode.Type = { + val r = reader.readZ() + return Isolette_Data_Model.Monitor_Mode.byOrdinal(r).get + } + + def readIsolette_Data_ModelMonitor_Mode_Payload(): Isolette_Data_Model.Monitor_Mode_Payload = { + val r = readIsolette_Data_ModelMonitor_Mode_PayloadT(F) return r } - def readIsolette_Data_ModelFailure_Flag_iT(typeParsed: B): Isolette_Data_Model.Failure_Flag_i = { + def readIsolette_Data_ModelMonitor_Mode_PayloadT(typeParsed: B): Isolette_Data_Model.Monitor_Mode_Payload = { if (!typeParsed) { - reader.expectZ(Constants.Isolette_Data_ModelFailure_Flag_i) + reader.expectZ(Constants.Isolette_Data_ModelMonitor_Mode_Payload) } - val value = reader.readB() - return Isolette_Data_Model.Failure_Flag_i(value) + val value = readIsolette_Data_ModelMonitor_ModeType() + return Isolette_Data_Model.Monitor_Mode_Payload(value) } - def readIsolette_Data_ModelFailure_Flag_i_Payload(): Isolette_Data_Model.Failure_Flag_i_Payload = { - val r = readIsolette_Data_ModelFailure_Flag_i_PayloadT(F) + def readIsolette_EnvironmentHeatType(): Isolette_Environment.Heat.Type = { + val r = reader.readZ() + return Isolette_Environment.Heat.byOrdinal(r).get + } + + def readIsolette_EnvironmentHeat_Payload(): Isolette_Environment.Heat_Payload = { + val r = readIsolette_EnvironmentHeat_PayloadT(F) return r } - def readIsolette_Data_ModelFailure_Flag_i_PayloadT(typeParsed: B): Isolette_Data_Model.Failure_Flag_i_Payload = { + def readIsolette_EnvironmentHeat_PayloadT(typeParsed: B): Isolette_Environment.Heat_Payload = { if (!typeParsed) { - reader.expectZ(Constants.Isolette_Data_ModelFailure_Flag_i_Payload) + reader.expectZ(Constants.Isolette_EnvironmentHeat_Payload) } - val value = readIsolette_Data_ModelFailure_Flag_i() - return Isolette_Data_Model.Failure_Flag_i_Payload(value) + val value = readIsolette_EnvironmentHeatType() + return Isolette_Environment.Heat_Payload(value) } - def readIsolette_Data_ModelMonitor_ModeType(): Isolette_Data_Model.Monitor_Mode.Type = { + def readIsolette_EnvironmentInterface_InteractionType(): Isolette_Environment.Interface_Interaction.Type = { val r = reader.readZ() - return Isolette_Data_Model.Monitor_Mode.byOrdinal(r).get + return Isolette_Environment.Interface_Interaction.byOrdinal(r).get } - def readIsolette_Data_ModelMonitor_Mode_Payload(): Isolette_Data_Model.Monitor_Mode_Payload = { - val r = readIsolette_Data_ModelMonitor_Mode_PayloadT(F) + def readIsolette_EnvironmentInterface_Interaction_Payload(): Isolette_Environment.Interface_Interaction_Payload = { + val r = readIsolette_EnvironmentInterface_Interaction_PayloadT(F) return r } - def readIsolette_Data_ModelMonitor_Mode_PayloadT(typeParsed: B): Isolette_Data_Model.Monitor_Mode_Payload = { + def readIsolette_EnvironmentInterface_Interaction_PayloadT(typeParsed: B): Isolette_Environment.Interface_Interaction_Payload = { if (!typeParsed) { - reader.expectZ(Constants.Isolette_Data_ModelMonitor_Mode_Payload) + reader.expectZ(Constants.Isolette_EnvironmentInterface_Interaction_Payload) } - val value = readIsolette_Data_ModelMonitor_ModeType() - return Isolette_Data_Model.Monitor_Mode_Payload(value) + val value = readIsolette_EnvironmentInterface_InteractionType() + return Isolette_Environment.Interface_Interaction_Payload(value) + } + + def readIsolette_EnvironmentAir_InteractionType(): Isolette_Environment.Air_Interaction.Type = { + val r = reader.readZ() + return Isolette_Environment.Air_Interaction.byOrdinal(r).get + } + + def readIsolette_EnvironmentAir_Interaction_Payload(): Isolette_Environment.Air_Interaction_Payload = { + val r = readIsolette_EnvironmentAir_Interaction_PayloadT(F) + return r + } + + def readIsolette_EnvironmentAir_Interaction_PayloadT(typeParsed: B): Isolette_Environment.Air_Interaction_Payload = { + if (!typeParsed) { + reader.expectZ(Constants.Isolette_EnvironmentAir_Interaction_Payload) + } + val value = readIsolette_EnvironmentAir_InteractionType() + return Isolette_Environment.Air_Interaction_Payload(value) } def readBase_TypesBoolean_Payload(): Base_Types.Boolean_Payload = { @@ -2425,6 +2455,7 @@ object MsgPack { case Constants.Isolette_Data_ModelRegulator_Mode_Payload => val r = readIsolette_Data_ModelRegulator_Mode_PayloadT(T); return r case Constants.Isolette_Data_ModelFailure_Flag_i_Payload => val r = readIsolette_Data_ModelFailure_Flag_i_PayloadT(T); return r case Constants.Isolette_Data_ModelPhysicalTemp_i_Payload => val r = readIsolette_Data_ModelPhysicalTemp_i_PayloadT(T); return r + case Constants.Isolette_EnvironmentAir_Interaction_Payload => val r = readIsolette_EnvironmentAir_Interaction_PayloadT(T); return r case Constants.Isolette_EnvironmentInterface_Interaction_Payload => val r = readIsolette_EnvironmentInterface_Interaction_PayloadT(T); return r case Constants.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P => val r = readMonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PT(T); return r case Constants.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS => val r = readMonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PST(T); return r @@ -2501,36 +2532,6 @@ object MsgPack { } } - def fromIsolette_EnvironmentHeat_Payload(o: Isolette_Environment.Heat_Payload, pooling: B): ISZ[U8] = { - val w = Writer.Default(MessagePack.writer(pooling)) - w.writeIsolette_EnvironmentHeat_Payload(o) - return w.result - } - - def toIsolette_EnvironmentHeat_Payload(data: ISZ[U8]): Either[Isolette_Environment.Heat_Payload, MessagePack.ErrorMsg] = { - def fIsolette_EnvironmentHeat_Payload(reader: Reader): Isolette_Environment.Heat_Payload = { - val r = reader.readIsolette_EnvironmentHeat_Payload() - return r - } - val r = to(data, fIsolette_EnvironmentHeat_Payload _) - return r - } - - def fromIsolette_EnvironmentInterface_Interaction_Payload(o: Isolette_Environment.Interface_Interaction_Payload, pooling: B): ISZ[U8] = { - val w = Writer.Default(MessagePack.writer(pooling)) - w.writeIsolette_EnvironmentInterface_Interaction_Payload(o) - return w.result - } - - def toIsolette_EnvironmentInterface_Interaction_Payload(data: ISZ[U8]): Either[Isolette_Environment.Interface_Interaction_Payload, MessagePack.ErrorMsg] = { - def fIsolette_EnvironmentInterface_Interaction_Payload(reader: Reader): Isolette_Environment.Interface_Interaction_Payload = { - val r = reader.readIsolette_EnvironmentInterface_Interaction_Payload() - return r - } - val r = to(data, fIsolette_EnvironmentInterface_Interaction_Payload _) - return r - } - def fromIsolette_Data_ModelPhysicalTemp_i(o: Isolette_Data_Model.PhysicalTemp_i, pooling: B): ISZ[U8] = { val w = Writer.Default(MessagePack.writer(pooling)) w.writeIsolette_Data_ModelPhysicalTemp_i(o) @@ -2561,21 +2562,6 @@ object MsgPack { return r } - def fromIsolette_Data_ModelValueStatus_Payload(o: Isolette_Data_Model.ValueStatus_Payload, pooling: B): ISZ[U8] = { - val w = Writer.Default(MessagePack.writer(pooling)) - w.writeIsolette_Data_ModelValueStatus_Payload(o) - return w.result - } - - def toIsolette_Data_ModelValueStatus_Payload(data: ISZ[U8]): Either[Isolette_Data_Model.ValueStatus_Payload, MessagePack.ErrorMsg] = { - def fIsolette_Data_ModelValueStatus_Payload(reader: Reader): Isolette_Data_Model.ValueStatus_Payload = { - val r = reader.readIsolette_Data_ModelValueStatus_Payload() - return r - } - val r = to(data, fIsolette_Data_ModelValueStatus_Payload _) - return r - } - def fromIsolette_Data_ModelTempWstatus_i(o: Isolette_Data_Model.TempWstatus_i, pooling: B): ISZ[U8] = { val w = Writer.Default(MessagePack.writer(pooling)) w.writeIsolette_Data_ModelTempWstatus_i(o) @@ -2606,36 +2592,6 @@ object MsgPack { return r } - def fromIsolette_Data_ModelOn_Off_Payload(o: Isolette_Data_Model.On_Off_Payload, pooling: B): ISZ[U8] = { - val w = Writer.Default(MessagePack.writer(pooling)) - w.writeIsolette_Data_ModelOn_Off_Payload(o) - return w.result - } - - def toIsolette_Data_ModelOn_Off_Payload(data: ISZ[U8]): Either[Isolette_Data_Model.On_Off_Payload, MessagePack.ErrorMsg] = { - def fIsolette_Data_ModelOn_Off_Payload(reader: Reader): Isolette_Data_Model.On_Off_Payload = { - val r = reader.readIsolette_Data_ModelOn_Off_Payload() - return r - } - val r = to(data, fIsolette_Data_ModelOn_Off_Payload _) - return r - } - - def fromIsolette_Data_ModelStatus_Payload(o: Isolette_Data_Model.Status_Payload, pooling: B): ISZ[U8] = { - val w = Writer.Default(MessagePack.writer(pooling)) - w.writeIsolette_Data_ModelStatus_Payload(o) - return w.result - } - - def toIsolette_Data_ModelStatus_Payload(data: ISZ[U8]): Either[Isolette_Data_Model.Status_Payload, MessagePack.ErrorMsg] = { - def fIsolette_Data_ModelStatus_Payload(reader: Reader): Isolette_Data_Model.Status_Payload = { - val r = reader.readIsolette_Data_ModelStatus_Payload() - return r - } - val r = to(data, fIsolette_Data_ModelStatus_Payload _) - return r - } - def fromIsolette_Data_ModelTemp_i(o: Isolette_Data_Model.Temp_i, pooling: B): ISZ[U8] = { val w = Writer.Default(MessagePack.writer(pooling)) w.writeIsolette_Data_ModelTemp_i(o) @@ -2666,18 +2622,18 @@ object MsgPack { return r } - def fromIsolette_Data_ModelRegulator_Mode_Payload(o: Isolette_Data_Model.Regulator_Mode_Payload, pooling: B): ISZ[U8] = { + def fromIsolette_Data_ModelOn_Off_Payload(o: Isolette_Data_Model.On_Off_Payload, pooling: B): ISZ[U8] = { val w = Writer.Default(MessagePack.writer(pooling)) - w.writeIsolette_Data_ModelRegulator_Mode_Payload(o) + w.writeIsolette_Data_ModelOn_Off_Payload(o) return w.result } - def toIsolette_Data_ModelRegulator_Mode_Payload(data: ISZ[U8]): Either[Isolette_Data_Model.Regulator_Mode_Payload, MessagePack.ErrorMsg] = { - def fIsolette_Data_ModelRegulator_Mode_Payload(reader: Reader): Isolette_Data_Model.Regulator_Mode_Payload = { - val r = reader.readIsolette_Data_ModelRegulator_Mode_Payload() + def toIsolette_Data_ModelOn_Off_Payload(data: ISZ[U8]): Either[Isolette_Data_Model.On_Off_Payload, MessagePack.ErrorMsg] = { + def fIsolette_Data_ModelOn_Off_Payload(reader: Reader): Isolette_Data_Model.On_Off_Payload = { + val r = reader.readIsolette_Data_ModelOn_Off_Payload() return r } - val r = to(data, fIsolette_Data_ModelRegulator_Mode_Payload _) + val r = to(data, fIsolette_Data_ModelOn_Off_Payload _) return r } @@ -2711,6 +2667,51 @@ object MsgPack { return r } + def fromIsolette_Data_ModelValueStatus_Payload(o: Isolette_Data_Model.ValueStatus_Payload, pooling: B): ISZ[U8] = { + val w = Writer.Default(MessagePack.writer(pooling)) + w.writeIsolette_Data_ModelValueStatus_Payload(o) + return w.result + } + + def toIsolette_Data_ModelValueStatus_Payload(data: ISZ[U8]): Either[Isolette_Data_Model.ValueStatus_Payload, MessagePack.ErrorMsg] = { + def fIsolette_Data_ModelValueStatus_Payload(reader: Reader): Isolette_Data_Model.ValueStatus_Payload = { + val r = reader.readIsolette_Data_ModelValueStatus_Payload() + return r + } + val r = to(data, fIsolette_Data_ModelValueStatus_Payload _) + return r + } + + def fromIsolette_Data_ModelStatus_Payload(o: Isolette_Data_Model.Status_Payload, pooling: B): ISZ[U8] = { + val w = Writer.Default(MessagePack.writer(pooling)) + w.writeIsolette_Data_ModelStatus_Payload(o) + return w.result + } + + def toIsolette_Data_ModelStatus_Payload(data: ISZ[U8]): Either[Isolette_Data_Model.Status_Payload, MessagePack.ErrorMsg] = { + def fIsolette_Data_ModelStatus_Payload(reader: Reader): Isolette_Data_Model.Status_Payload = { + val r = reader.readIsolette_Data_ModelStatus_Payload() + return r + } + val r = to(data, fIsolette_Data_ModelStatus_Payload _) + return r + } + + def fromIsolette_Data_ModelRegulator_Mode_Payload(o: Isolette_Data_Model.Regulator_Mode_Payload, pooling: B): ISZ[U8] = { + val w = Writer.Default(MessagePack.writer(pooling)) + w.writeIsolette_Data_ModelRegulator_Mode_Payload(o) + return w.result + } + + def toIsolette_Data_ModelRegulator_Mode_Payload(data: ISZ[U8]): Either[Isolette_Data_Model.Regulator_Mode_Payload, MessagePack.ErrorMsg] = { + def fIsolette_Data_ModelRegulator_Mode_Payload(reader: Reader): Isolette_Data_Model.Regulator_Mode_Payload = { + val r = reader.readIsolette_Data_ModelRegulator_Mode_Payload() + return r + } + val r = to(data, fIsolette_Data_ModelRegulator_Mode_Payload _) + return r + } + def fromIsolette_Data_ModelMonitor_Mode_Payload(o: Isolette_Data_Model.Monitor_Mode_Payload, pooling: B): ISZ[U8] = { val w = Writer.Default(MessagePack.writer(pooling)) w.writeIsolette_Data_ModelMonitor_Mode_Payload(o) @@ -2726,6 +2727,51 @@ object MsgPack { return r } + def fromIsolette_EnvironmentHeat_Payload(o: Isolette_Environment.Heat_Payload, pooling: B): ISZ[U8] = { + val w = Writer.Default(MessagePack.writer(pooling)) + w.writeIsolette_EnvironmentHeat_Payload(o) + return w.result + } + + def toIsolette_EnvironmentHeat_Payload(data: ISZ[U8]): Either[Isolette_Environment.Heat_Payload, MessagePack.ErrorMsg] = { + def fIsolette_EnvironmentHeat_Payload(reader: Reader): Isolette_Environment.Heat_Payload = { + val r = reader.readIsolette_EnvironmentHeat_Payload() + return r + } + val r = to(data, fIsolette_EnvironmentHeat_Payload _) + return r + } + + def fromIsolette_EnvironmentInterface_Interaction_Payload(o: Isolette_Environment.Interface_Interaction_Payload, pooling: B): ISZ[U8] = { + val w = Writer.Default(MessagePack.writer(pooling)) + w.writeIsolette_EnvironmentInterface_Interaction_Payload(o) + return w.result + } + + def toIsolette_EnvironmentInterface_Interaction_Payload(data: ISZ[U8]): Either[Isolette_Environment.Interface_Interaction_Payload, MessagePack.ErrorMsg] = { + def fIsolette_EnvironmentInterface_Interaction_Payload(reader: Reader): Isolette_Environment.Interface_Interaction_Payload = { + val r = reader.readIsolette_EnvironmentInterface_Interaction_Payload() + return r + } + val r = to(data, fIsolette_EnvironmentInterface_Interaction_Payload _) + return r + } + + def fromIsolette_EnvironmentAir_Interaction_Payload(o: Isolette_Environment.Air_Interaction_Payload, pooling: B): ISZ[U8] = { + val w = Writer.Default(MessagePack.writer(pooling)) + w.writeIsolette_EnvironmentAir_Interaction_Payload(o) + return w.result + } + + def toIsolette_EnvironmentAir_Interaction_Payload(data: ISZ[U8]): Either[Isolette_Environment.Air_Interaction_Payload, MessagePack.ErrorMsg] = { + def fIsolette_EnvironmentAir_Interaction_Payload(reader: Reader): Isolette_Environment.Air_Interaction_Payload = { + val r = reader.readIsolette_EnvironmentAir_Interaction_Payload() + return r + } + val r = to(data, fIsolette_EnvironmentAir_Interaction_Payload _) + return r + } + def fromBase_TypesBoolean_Payload(o: Base_Types.Boolean_Payload, pooling: B): ISZ[U8] = { val w = Writer.Default(MessagePack.writer(pooling)) w.writeBase_TypesBoolean_Payload(o) diff --git a/isolette/hamr/slang/src/main/util/isolette/SlangCheckConfig.scala b/isolette/hamr/slang/src/main/util/isolette/SlangCheckConfig.scala index 34c4bdd..1fcfd72 100644 --- a/isolette/hamr/slang/src/main/util/isolette/SlangCheckConfig.scala +++ b/isolette/hamr/slang/src/main/util/isolette/SlangCheckConfig.scala @@ -8,28 +8,30 @@ import org.sireum.Random.Gen64 /* GENERATED FROM -Heat.scala - -Interface_Interaction.scala - PhysicalTemp_i.scala -ValueStatus.scala - TempWstatus_i.scala +Temp_i.scala + On_Off.scala -Status.scala +Failure_Flag_i.scala -Temp_i.scala +ValueStatus.scala -Regulator_Mode.scala +Status.scala -Failure_Flag_i.scala +Regulator_Mode.scala Monitor_Mode.scala +Heat.scala + +Interface_Interaction.scala + +Air_Interaction.scala + Base_Types.scala Manage_Regulator_Interface_i_thermostat_rt_mri_mri_Containers.scala @@ -190,6 +192,10 @@ Aux_Types.scala @datatype class Config_Isolette_Data_ModelValueStatus_Payload(attempts: Z, verbose: B, filter: Isolette_Data_Model.ValueStatus_Payload => B) {} +@datatype class Config_Isolette_EnvironmentAir_InteractionType(attempts: Z, verbose: B, filter: Isolette_Environment.Air_Interaction.Type => B) {} + +@datatype class Config_Isolette_EnvironmentAir_Interaction_Payload(attempts: Z, verbose: B, filter: Isolette_Environment.Air_Interaction_Payload => B) {} + @datatype class Config_Isolette_EnvironmentHeatType(attempts: Z, verbose: B, filter: Isolette_Environment.Heat.Type => B) {} @datatype class Config_Isolette_EnvironmentHeat_Payload(attempts: Z, verbose: B, filter: Isolette_Environment.Heat_Payload => B) {} diff --git a/isolette/hamr/slang/src/main/util/isolette/SlangCheckDataTypeId.scala b/isolette/hamr/slang/src/main/util/isolette/SlangCheckDataTypeId.scala index b1726af..2fe903a 100644 --- a/isolette/hamr/slang/src/main/util/isolette/SlangCheckDataTypeId.scala +++ b/isolette/hamr/slang/src/main/util/isolette/SlangCheckDataTypeId.scala @@ -8,28 +8,30 @@ import org.sireum.Random.Gen64 /* GENERATED FROM -Heat.scala - -Interface_Interaction.scala - PhysicalTemp_i.scala -ValueStatus.scala - TempWstatus_i.scala +Temp_i.scala + On_Off.scala -Status.scala +Failure_Flag_i.scala -Temp_i.scala +ValueStatus.scala -Regulator_Mode.scala +Status.scala -Failure_Flag_i.scala +Regulator_Mode.scala Monitor_Mode.scala +Heat.scala + +Interface_Interaction.scala + +Air_Interaction.scala + Base_Types.scala Manage_Regulator_Interface_i_thermostat_rt_mri_mri_Containers.scala @@ -99,6 +101,7 @@ Aux_Types.scala "Isolette_Data_ModelTempWstatus_i_Payload_Id" "Isolette_Data_ModelTemp_i_Payload_Id" "Isolette_Data_ModelValueStatus_Payload_Id" + "Isolette_EnvironmentAir_Interaction_Payload_Id" "Isolette_EnvironmentHeat_Payload_Id" "Isolette_EnvironmentInterface_Interaction_Payload_Id" "MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P_Id" diff --git a/isolette/hamr/slang/src/main/util/isolette/SlangCheckGenerator.scala b/isolette/hamr/slang/src/main/util/isolette/SlangCheckGenerator.scala index da26062..77e9246 100644 --- a/isolette/hamr/slang/src/main/util/isolette/SlangCheckGenerator.scala +++ b/isolette/hamr/slang/src/main/util/isolette/SlangCheckGenerator.scala @@ -8,28 +8,30 @@ import org.sireum.Random.Gen64 /* GENERATED FROM -Heat.scala - -Interface_Interaction.scala - PhysicalTemp_i.scala -ValueStatus.scala - TempWstatus_i.scala +Temp_i.scala + On_Off.scala -Status.scala +Failure_Flag_i.scala -Temp_i.scala +ValueStatus.scala -Regulator_Mode.scala +Status.scala -Failure_Flag_i.scala +Regulator_Mode.scala Monitor_Mode.scala +Heat.scala + +Interface_Interaction.scala + +Air_Interaction.scala + Base_Types.scala Manage_Regulator_Interface_i_thermostat_rt_mri_mri_Containers.scala @@ -1281,6 +1283,44 @@ Aux_Types.scala } } +@record class Gen_Isolette_EnvironmentAir_InteractionType(param: RandomLibI) extends MJen[Isolette_Environment.Air_Interaction.Type] { + override def generate(f: Isolette_Environment.Air_Interaction.Type => Jen.Action): Jen.Action = { + var continue = Jen.Continue + while (T) { + + continue = f(param.nextIsolette_EnvironmentAir_InteractionType()) + + if (!continue) { + return Jen.End + } + } + return continue + } + + override def string: String = { + return s"" + } +} + +@record class Gen_Isolette_EnvironmentAir_Interaction_Payload(param: RandomLibI) extends MJen[Isolette_Environment.Air_Interaction_Payload] { + override def generate(f: Isolette_Environment.Air_Interaction_Payload => Jen.Action): Jen.Action = { + var continue = Jen.Continue + while (T) { + + continue = f(param.nextIsolette_EnvironmentAir_Interaction_Payload()) + + if (!continue) { + return Jen.End + } + } + return continue + } + + override def string: String = { + return s"" + } +} + @record class Gen_Isolette_EnvironmentHeatType(param: RandomLibI) extends MJen[Isolette_Environment.Heat.Type] { override def generate(f: Isolette_Environment.Heat.Type => Jen.Action): Jen.Action = { var continue = Jen.Continue diff --git a/isolette/hamr/slang/src/main/util/isolette/SlangCheckRandom.scala b/isolette/hamr/slang/src/main/util/isolette/SlangCheckRandom.scala index bdb14ec..a395568 100644 --- a/isolette/hamr/slang/src/main/util/isolette/SlangCheckRandom.scala +++ b/isolette/hamr/slang/src/main/util/isolette/SlangCheckRandom.scala @@ -8,28 +8,30 @@ import org.sireum.Random.Gen64 /* GENERATED FROM -Heat.scala - -Interface_Interaction.scala - PhysicalTemp_i.scala -ValueStatus.scala - TempWstatus_i.scala +Temp_i.scala + On_Off.scala -Status.scala +Failure_Flag_i.scala -Temp_i.scala +ValueStatus.scala -Regulator_Mode.scala +Status.scala -Failure_Flag_i.scala +Regulator_Mode.scala Monitor_Mode.scala +Heat.scala + +Interface_Interaction.scala + +Air_Interaction.scala + Base_Types.scala Manage_Regulator_Interface_i_thermostat_rt_mri_mri_Containers.scala @@ -987,7 +989,7 @@ Aux_Types.scala def set_Config__artDataContent(config: Config__artDataContent): RandomLib def next_artDataContent(): art.DataContent = { - var callEnum: ISZ[_artDataContent_DataTypeId.Type] = ISZ(_artDataContent_DataTypeId._artEmpty_Id, _artDataContent_DataTypeId.Base_TypesBits_Payload_Id, _artDataContent_DataTypeId.Base_TypesBoolean_Payload_Id, _artDataContent_DataTypeId.Base_TypesCharacter_Payload_Id, _artDataContent_DataTypeId.Base_TypesFloat_32_Payload_Id, _artDataContent_DataTypeId.Base_TypesFloat_64_Payload_Id, _artDataContent_DataTypeId.Base_TypesFloat_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_16_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_32_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_64_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_8_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_Payload_Id, _artDataContent_DataTypeId.Base_TypesString_Payload_Id, _artDataContent_DataTypeId.Base_TypesUnsigned_16_Payload_Id, _artDataContent_DataTypeId.Base_TypesUnsigned_32_Payload_Id, _artDataContent_DataTypeId.Base_TypesUnsigned_64_Payload_Id, _artDataContent_DataTypeId.Base_TypesUnsigned_8_Payload_Id, _artDataContent_DataTypeId.DevicesHeat_Source_i_heat_source_cpi_heat_controller_PostState_Container_P_Id, _artDataContent_DataTypeId.DevicesHeat_Source_i_heat_source_cpi_heat_controller_PostState_Container_PS_Id, _artDataContent_DataTypeId.DevicesHeat_Source_i_heat_source_cpi_heat_controller_PreState_Container_P_Id, _artDataContent_DataTypeId.DevicesHeat_Source_i_heat_source_cpi_heat_controller_PreState_Container_PS_Id, _artDataContent_DataTypeId.DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_P_Id, _artDataContent_DataTypeId.DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_PS_Id, _artDataContent_DataTypeId.DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_P_Id, _artDataContent_DataTypeId.DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_PS_Id, _artDataContent_DataTypeId.Isolette_Data_ModelFailure_Flag_i_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelMonitor_Mode_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelOn_Off_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelPhysicalTemp_i_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelRegulator_Mode_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelStatus_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelTempWstatus_i_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelTemp_i_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelValueStatus_Payload_Id, _artDataContent_DataTypeId.Isolette_EnvironmentHeat_Payload_Id, _artDataContent_DataTypeId.Isolette_EnvironmentInterface_Interaction_Payload_Id, _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P_Id, _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_PS_Id, _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_P_Id, _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_PS_Id, _artDataContent_DataTypeId.Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_P_Id, _artDataContent_DataTypeId.Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_PS_Id, _artDataContent_DataTypeId.Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_P_Id, _artDataContent_DataTypeId.Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_PS_Id, _artDataContent_DataTypeId.RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_P_Id, _artDataContent_DataTypeId.RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_PS_Id, _artDataContent_DataTypeId.RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_P_Id, _artDataContent_DataTypeId.RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_PS_Id, _artDataContent_DataTypeId.utilEmptyContainer_Id) + var callEnum: ISZ[_artDataContent_DataTypeId.Type] = ISZ(_artDataContent_DataTypeId._artEmpty_Id, _artDataContent_DataTypeId.Base_TypesBits_Payload_Id, _artDataContent_DataTypeId.Base_TypesBoolean_Payload_Id, _artDataContent_DataTypeId.Base_TypesCharacter_Payload_Id, _artDataContent_DataTypeId.Base_TypesFloat_32_Payload_Id, _artDataContent_DataTypeId.Base_TypesFloat_64_Payload_Id, _artDataContent_DataTypeId.Base_TypesFloat_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_16_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_32_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_64_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_8_Payload_Id, _artDataContent_DataTypeId.Base_TypesInteger_Payload_Id, _artDataContent_DataTypeId.Base_TypesString_Payload_Id, _artDataContent_DataTypeId.Base_TypesUnsigned_16_Payload_Id, _artDataContent_DataTypeId.Base_TypesUnsigned_32_Payload_Id, _artDataContent_DataTypeId.Base_TypesUnsigned_64_Payload_Id, _artDataContent_DataTypeId.Base_TypesUnsigned_8_Payload_Id, _artDataContent_DataTypeId.DevicesHeat_Source_i_heat_source_cpi_heat_controller_PostState_Container_P_Id, _artDataContent_DataTypeId.DevicesHeat_Source_i_heat_source_cpi_heat_controller_PostState_Container_PS_Id, _artDataContent_DataTypeId.DevicesHeat_Source_i_heat_source_cpi_heat_controller_PreState_Container_P_Id, _artDataContent_DataTypeId.DevicesHeat_Source_i_heat_source_cpi_heat_controller_PreState_Container_PS_Id, _artDataContent_DataTypeId.DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_P_Id, _artDataContent_DataTypeId.DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PostState_Container_PS_Id, _artDataContent_DataTypeId.DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_P_Id, _artDataContent_DataTypeId.DevicesTemperature_Sensor_i_temperature_sensor_cpi_thermostat_PreState_Container_PS_Id, _artDataContent_DataTypeId.Isolette_Data_ModelFailure_Flag_i_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelMonitor_Mode_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelOn_Off_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelPhysicalTemp_i_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelRegulator_Mode_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelStatus_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelTempWstatus_i_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelTemp_i_Payload_Id, _artDataContent_DataTypeId.Isolette_Data_ModelValueStatus_Payload_Id, _artDataContent_DataTypeId.Isolette_EnvironmentAir_Interaction_Payload_Id, _artDataContent_DataTypeId.Isolette_EnvironmentHeat_Payload_Id, _artDataContent_DataTypeId.Isolette_EnvironmentInterface_Interaction_Payload_Id, _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P_Id, _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_PS_Id, _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_P_Id, _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PreState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PostState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Alarm_i_thermostat_mt_ma_ma_PreState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PostState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Interface_i_thermostat_mt_mmi_mmi_PreState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PostState_Container_PS_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_P_Id, _artDataContent_DataTypeId.MonitorManage_Monitor_Mode_i_thermostat_mt_mmm_mmm_PreState_Container_PS_Id, _artDataContent_DataTypeId.Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_P_Id, _artDataContent_DataTypeId.Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PostState_Container_PS_Id, _artDataContent_DataTypeId.Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_P_Id, _artDataContent_DataTypeId.Operator_InterfaceOperator_Interface_Thread_i_operator_interface_oip_oit_PreState_Container_PS_Id, _artDataContent_DataTypeId.RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_P_Id, _artDataContent_DataTypeId.RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PostState_Container_PS_Id, _artDataContent_DataTypeId.RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_P_Id, _artDataContent_DataTypeId.RegulateDetect_Regulator_Failure_i_thermostat_rt_drf_drf_PreState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PostState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Heat_Source_i_thermostat_rt_mhs_mhs_PreState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PostState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Interface_i_thermostat_rt_mri_mri_PreState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PostState_Container_PS_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_P_Id, _artDataContent_DataTypeId.RegulateManage_Regulator_Mode_i_thermostat_rt_mrm_mrm_PreState_Container_PS_Id, _artDataContent_DataTypeId.utilEmptyContainer_Id) if(get_Config__artDataContent.additiveTypeFiltering) { callEnum = get_Config__artDataContent.typeFilter @@ -1034,6 +1036,7 @@ Aux_Types.scala case _artDataContent_DataTypeId.Isolette_Data_ModelTempWstatus_i_Payload_Id => (nextIsolette_Data_ModelTempWstatus_i_Payload _).apply() case _artDataContent_DataTypeId.Isolette_Data_ModelTemp_i_Payload_Id => (nextIsolette_Data_ModelTemp_i_Payload _).apply() case _artDataContent_DataTypeId.Isolette_Data_ModelValueStatus_Payload_Id => (nextIsolette_Data_ModelValueStatus_Payload _).apply() + case _artDataContent_DataTypeId.Isolette_EnvironmentAir_Interaction_Payload_Id => (nextIsolette_EnvironmentAir_Interaction_Payload _).apply() case _artDataContent_DataTypeId.Isolette_EnvironmentHeat_Payload_Id => (nextIsolette_EnvironmentHeat_Payload _).apply() case _artDataContent_DataTypeId.Isolette_EnvironmentInterface_Interaction_Payload_Id => (nextIsolette_EnvironmentInterface_Interaction_Payload _).apply() case _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P_Id => (nextMonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P _).apply() @@ -1122,6 +1125,7 @@ Aux_Types.scala case _artDataContent_DataTypeId.Isolette_Data_ModelTempWstatus_i_Payload_Id => (nextIsolette_Data_ModelTempWstatus_i_Payload _).apply() case _artDataContent_DataTypeId.Isolette_Data_ModelTemp_i_Payload_Id => (nextIsolette_Data_ModelTemp_i_Payload _).apply() case _artDataContent_DataTypeId.Isolette_Data_ModelValueStatus_Payload_Id => (nextIsolette_Data_ModelValueStatus_Payload _).apply() + case _artDataContent_DataTypeId.Isolette_EnvironmentAir_Interaction_Payload_Id => (nextIsolette_EnvironmentAir_Interaction_Payload _).apply() case _artDataContent_DataTypeId.Isolette_EnvironmentHeat_Payload_Id => (nextIsolette_EnvironmentHeat_Payload _).apply() case _artDataContent_DataTypeId.Isolette_EnvironmentInterface_Interaction_Payload_Id => (nextIsolette_EnvironmentInterface_Interaction_Payload _).apply() case _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P_Id => (nextMonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P _).apply() @@ -1209,6 +1213,7 @@ Aux_Types.scala case _artDataContent_DataTypeId.Isolette_Data_ModelTempWstatus_i_Payload_Id => (nextIsolette_Data_ModelTempWstatus_i_Payload _).apply() case _artDataContent_DataTypeId.Isolette_Data_ModelTemp_i_Payload_Id => (nextIsolette_Data_ModelTemp_i_Payload _).apply() case _artDataContent_DataTypeId.Isolette_Data_ModelValueStatus_Payload_Id => (nextIsolette_Data_ModelValueStatus_Payload _).apply() + case _artDataContent_DataTypeId.Isolette_EnvironmentAir_Interaction_Payload_Id => (nextIsolette_EnvironmentAir_Interaction_Payload _).apply() case _artDataContent_DataTypeId.Isolette_EnvironmentHeat_Payload_Id => (nextIsolette_EnvironmentHeat_Payload _).apply() case _artDataContent_DataTypeId.Isolette_EnvironmentInterface_Interaction_Payload_Id => (nextIsolette_EnvironmentInterface_Interaction_Payload _).apply() case _artDataContent_DataTypeId.MonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P_Id => (nextMonitorDetect_Monitor_Failure_i_thermostat_mt_dmf_dmf_PostState_Container_P _).apply() @@ -2505,9 +2510,9 @@ Aux_Types.scala def set_Config_Isolette_Data_ModelFailure_Flag_i(config: Config_Isolette_Data_ModelFailure_Flag_i): RandomLib def nextIsolette_Data_ModelFailure_Flag_i(): Isolette_Data_Model.Failure_Flag_i = { - var value: B = nextB() + var flag: B = nextB() - var v: Isolette_Data_Model.Failure_Flag_i = Isolette_Data_Model.Failure_Flag_i(value) + var v: Isolette_Data_Model.Failure_Flag_i = Isolette_Data_Model.Failure_Flag_i(flag) if(get_Config_Isolette_Data_ModelFailure_Flag_i.attempts >= 0) { for(i <- 0 to get_Config_Isolette_Data_ModelFailure_Flag_i.attempts) { @@ -2517,8 +2522,8 @@ Aux_Types.scala if (get_Config_Isolette_Data_ModelFailure_Flag_i.verbose) { println(s"Retrying for failing value: $v") } - value = nextB() - v = Isolette_Data_Model.Failure_Flag_i(value) + flag = nextB() + v = Isolette_Data_Model.Failure_Flag_i(flag) } } else { while(T) { @@ -2528,8 +2533,8 @@ Aux_Types.scala if (get_Config_Isolette_Data_ModelFailure_Flag_i.verbose) { println(s"Retrying for failing value: $v") } - value = nextB() - v = Isolette_Data_Model.Failure_Flag_i(value) + flag = nextB() + v = Isolette_Data_Model.Failure_Flag_i(flag) } } @@ -2731,9 +2736,9 @@ Aux_Types.scala def set_Config_Isolette_Data_ModelPhysicalTemp_i(config: Config_Isolette_Data_ModelPhysicalTemp_i): RandomLib def nextIsolette_Data_ModelPhysicalTemp_i(): Isolette_Data_Model.PhysicalTemp_i = { - var value: F32 = nextF32() + var degrees: F32 = nextF32() - var v: Isolette_Data_Model.PhysicalTemp_i = Isolette_Data_Model.PhysicalTemp_i(value) + var v: Isolette_Data_Model.PhysicalTemp_i = Isolette_Data_Model.PhysicalTemp_i(degrees) if(get_Config_Isolette_Data_ModelPhysicalTemp_i.attempts >= 0) { for(i <- 0 to get_Config_Isolette_Data_ModelPhysicalTemp_i.attempts) { @@ -2743,8 +2748,8 @@ Aux_Types.scala if (get_Config_Isolette_Data_ModelPhysicalTemp_i.verbose) { println(s"Retrying for failing value: $v") } - value = nextF32() - v = Isolette_Data_Model.PhysicalTemp_i(value) + degrees = nextF32() + v = Isolette_Data_Model.PhysicalTemp_i(degrees) } } else { while(T) { @@ -2754,8 +2759,8 @@ Aux_Types.scala if (get_Config_Isolette_Data_ModelPhysicalTemp_i.verbose) { println(s"Retrying for failing value: $v") } - value = nextF32() - v = Isolette_Data_Model.PhysicalTemp_i(value) + degrees = nextF32() + v = Isolette_Data_Model.PhysicalTemp_i(degrees) } } @@ -2957,10 +2962,10 @@ Aux_Types.scala def set_Config_Isolette_Data_ModelTempWstatus_i(config: Config_Isolette_Data_ModelTempWstatus_i): RandomLib def nextIsolette_Data_ModelTempWstatus_i(): Isolette_Data_Model.TempWstatus_i = { - var value: F32 = nextF32() + var degrees: F32 = nextF32() var status: Isolette_Data_Model.ValueStatus.Type = nextIsolette_Data_ModelValueStatusType() - var v: Isolette_Data_Model.TempWstatus_i = Isolette_Data_Model.TempWstatus_i(value, status) + var v: Isolette_Data_Model.TempWstatus_i = Isolette_Data_Model.TempWstatus_i(degrees, status) if(get_Config_Isolette_Data_ModelTempWstatus_i.attempts >= 0) { for(i <- 0 to get_Config_Isolette_Data_ModelTempWstatus_i.attempts) { @@ -2970,9 +2975,9 @@ Aux_Types.scala if (get_Config_Isolette_Data_ModelTempWstatus_i.verbose) { println(s"Retrying for failing value: $v") } - value = nextF32() + degrees = nextF32() status = nextIsolette_Data_ModelValueStatusType() - v = Isolette_Data_Model.TempWstatus_i(value, status) + v = Isolette_Data_Model.TempWstatus_i(degrees, status) } } else { while(T) { @@ -2982,9 +2987,9 @@ Aux_Types.scala if (get_Config_Isolette_Data_ModelTempWstatus_i.verbose) { println(s"Retrying for failing value: $v") } - value = nextF32() + degrees = nextF32() status = nextIsolette_Data_ModelValueStatusType() - v = Isolette_Data_Model.TempWstatus_i(value, status) + v = Isolette_Data_Model.TempWstatus_i(degrees, status) } } @@ -3036,9 +3041,9 @@ Aux_Types.scala def set_Config_Isolette_Data_ModelTemp_i(config: Config_Isolette_Data_ModelTemp_i): RandomLib def nextIsolette_Data_ModelTemp_i(): Isolette_Data_Model.Temp_i = { - var value: F32 = nextF32() + var degrees: F32 = nextF32() - var v: Isolette_Data_Model.Temp_i = Isolette_Data_Model.Temp_i(value) + var v: Isolette_Data_Model.Temp_i = Isolette_Data_Model.Temp_i(degrees) if(get_Config_Isolette_Data_ModelTemp_i.attempts >= 0) { for(i <- 0 to get_Config_Isolette_Data_ModelTemp_i.attempts) { @@ -3048,8 +3053,8 @@ Aux_Types.scala if (get_Config_Isolette_Data_ModelTemp_i.verbose) { println(s"Retrying for failing value: $v") } - value = nextF32() - v = Isolette_Data_Model.Temp_i(value) + degrees = nextF32() + v = Isolette_Data_Model.Temp_i(degrees) } } else { while(T) { @@ -3059,8 +3064,8 @@ Aux_Types.scala if (get_Config_Isolette_Data_ModelTemp_i.verbose) { println(s"Retrying for failing value: $v") } - value = nextF32() - v = Isolette_Data_Model.Temp_i(value) + degrees = nextF32() + v = Isolette_Data_Model.Temp_i(degrees) } } @@ -3181,6 +3186,81 @@ Aux_Types.scala halt("Requirements too strict to generate") } + // ============= Isolette_Environment.Air_Interaction.Type =================== + + def get_Config_Isolette_EnvironmentAir_InteractionType: Config_Isolette_EnvironmentAir_InteractionType + def set_Config_Isolette_EnvironmentAir_InteractionType(config: Config_Isolette_EnvironmentAir_InteractionType): RandomLib + + def nextIsolette_EnvironmentAir_InteractionType(): Isolette_Environment.Air_Interaction.Type = { + + var ordinal: Z = gen.nextZBetween(0, isolette.Isolette_Environment.Air_Interaction.numOfElements-1) + + var v: Isolette_Environment.Air_Interaction.Type = isolette.Isolette_Environment.Air_Interaction.byOrdinal(ordinal).get + if(get_Config_Isolette_EnvironmentAir_InteractionType.attempts >= 0) { + for(i <- 0 to get_Config_Isolette_EnvironmentAir_InteractionType.attempts) { + if(get_Config_Isolette_EnvironmentAir_InteractionType.filter(v)) { + return v + } + if (get_Config_Isolette_EnvironmentAir_InteractionType.verbose) { + println(s"Retrying for failing value: $v") + } + ordinal= gen.nextZBetween(0, isolette.Isolette_Environment.Air_Interaction.numOfElements-1) + v = isolette.Isolette_Environment.Air_Interaction.byOrdinal(ordinal).get + } + } else { + while(T){ + if(get_Config_Isolette_EnvironmentAir_InteractionType.filter(v)) { + return v + } + if (get_Config_Isolette_EnvironmentAir_InteractionType.verbose) { + println(s"Retrying for failing value: $v") + } + ordinal= gen.nextZBetween(0, isolette.Isolette_Environment.Air_Interaction.numOfElements-1) + v = isolette.Isolette_Environment.Air_Interaction.byOrdinal(ordinal).get + } + } + assert(F, "Requirements too strict to generate") + halt("Requirements too strict to generate") + } + + // ============= Isolette_Environment.Air_Interaction_Payload =================== + + def get_Config_Isolette_EnvironmentAir_Interaction_Payload: Config_Isolette_EnvironmentAir_Interaction_Payload + def set_Config_Isolette_EnvironmentAir_Interaction_Payload(config: Config_Isolette_EnvironmentAir_Interaction_Payload): RandomLib + + def nextIsolette_EnvironmentAir_Interaction_Payload(): Isolette_Environment.Air_Interaction_Payload = { + var value: Isolette_Environment.Air_Interaction.Type = nextIsolette_EnvironmentAir_InteractionType() + + var v: Isolette_Environment.Air_Interaction_Payload = Isolette_Environment.Air_Interaction_Payload(value) + + if(get_Config_Isolette_EnvironmentAir_Interaction_Payload.attempts >= 0) { + for(i <- 0 to get_Config_Isolette_EnvironmentAir_Interaction_Payload.attempts) { + if(get_Config_Isolette_EnvironmentAir_Interaction_Payload.filter(v)) { + return v + } + if (get_Config_Isolette_EnvironmentAir_Interaction_Payload.verbose) { + println(s"Retrying for failing value: $v") + } + value = nextIsolette_EnvironmentAir_InteractionType() + v = Isolette_Environment.Air_Interaction_Payload(value) + } + } else { + while(T) { + if(get_Config_Isolette_EnvironmentAir_Interaction_Payload.filter(v)) { + return v + } + if (get_Config_Isolette_EnvironmentAir_Interaction_Payload.verbose) { + println(s"Retrying for failing value: $v") + } + value = nextIsolette_EnvironmentAir_InteractionType() + v = Isolette_Environment.Air_Interaction_Payload(value) + } + } + + assert(F, "Requirements too strict to generate") + halt("Requirements too strict to generate") + } + // ============= Isolette_Environment.Heat.Type =================== def get_Config_Isolette_EnvironmentHeatType: Config_Isolette_EnvironmentHeatType @@ -7042,6 +7122,30 @@ Aux_Types.scala return this } + // ============= Isolette_Environment.Air_Interaction.Type =================== + def alwaysTrue_Isolette_EnvironmentAir_InteractionType(v: Isolette_Environment.Air_Interaction.Type): B = {return T} + + var config_Isolette_EnvironmentAir_InteractionType: Config_Isolette_EnvironmentAir_InteractionType = Config_Isolette_EnvironmentAir_InteractionType(100, _verbose, alwaysTrue_Isolette_EnvironmentAir_InteractionType _) + + def get_Config_Isolette_EnvironmentAir_InteractionType: Config_Isolette_EnvironmentAir_InteractionType = {return config_Isolette_EnvironmentAir_InteractionType} + + def set_Config_Isolette_EnvironmentAir_InteractionType(config: Config_Isolette_EnvironmentAir_InteractionType): RandomLib ={ + config_Isolette_EnvironmentAir_InteractionType = config + return this + } + + // ============= Isolette_Environment.Air_Interaction_Payload =================== + def alwaysTrue_Isolette_EnvironmentAir_Interaction_Payload(v: Isolette_Environment.Air_Interaction_Payload): B = {return T} + + var config_Isolette_EnvironmentAir_Interaction_Payload: Config_Isolette_EnvironmentAir_Interaction_Payload = Config_Isolette_EnvironmentAir_Interaction_Payload(100, _verbose, alwaysTrue_Isolette_EnvironmentAir_Interaction_Payload _) + + def get_Config_Isolette_EnvironmentAir_Interaction_Payload: Config_Isolette_EnvironmentAir_Interaction_Payload = {return config_Isolette_EnvironmentAir_Interaction_Payload} + + def set_Config_Isolette_EnvironmentAir_Interaction_Payload(config: Config_Isolette_EnvironmentAir_Interaction_Payload): RandomLib ={ + config_Isolette_EnvironmentAir_Interaction_Payload = config + return this + } + // ============= Isolette_Environment.Heat.Type =================== def alwaysTrue_Isolette_EnvironmentHeatType(v: Isolette_Environment.Heat.Type): B = {return T} diff --git a/isolette/readme.md b/isolette/readme.md new file mode 100644 index 0000000..2ae8679 --- /dev/null +++ b/isolette/readme.md @@ -0,0 +1,189 @@ +# Isolette + +## Diagrams +### AADL/SysMLv2 Arch +![AADL Arch](aadl/diagrams/arch.svg) + + +## Installation + + +1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) + +1. Clone this repo and cd into it ``INSPECTA-models`` + + ``` + git clone https://github.com/loonwerks/INSPECTA-models.git + cd INSPECTA-models + ``` + +1. Clone the SysMLv2 AADL Libraries into the Isolette sysml directory + + ``` + git clone https://github.com/santoslab/sysml-aadl-libraries.git isolette/sysml/sysml-aadl-libraries + ``` + +1. *OPTIONAL* + + If you want to rerun codegen then you will need to install Sireum + and OSATE. You can do this inside or outside of the container that you'll install in the next step (the latter is probably preferable as you could then use Sireum outside of the container). + + Copy/paste the following to install Sireum + ``` + git clone https://github.com/sireum/kekinian.git + kekinian/bin/build.cmd + ``` + + This installs/build Sireum from source rather than via a binary distribution (which is probably the prefered method for PROVERS). + + Now set ``SIREUM_HOME`` to point to where you cloned kekinian and add ``$SIREUM_HOME/bin`` to your path. E.g. for bash + + ``` + echo "export SIREUM_HOME=$(pwd)/kekinian" >> $HOME/.bashrc + echo "export PATH=\$SIREUM_HOME/bin:\$PATH" >> $HOME/.bashrc + source $HOME/.bashrc + ``` + + To update Sireum in the future do the following + ``` + cd $SIREUM_HOME + git pull --rec + bin/build.cmd + ``` + + + Now install OSATE and the Sireum OSATE plugins into your current directory (or wherever as indicated via the ``-o`` option). For Windows/Linux + + ``` + sireum hamr phantom -u -v -o $(pwd)/osate + ``` + + or for Mac copy/paste + ``` + sireum hamr phantom -u -v -o $(pwd)/osate.app + ``` + + Now set ``OSATE_HOME`` to point to where you installed Osate + + ``` + echo "export OSATE_HOME=$(pwd)/osate" >> $HOME/.bashrc + source $HOME/.bashrc + ``` + +1. Download and run the CAmkES docker container, mounting the ``INSPECTA-models`` directory into it + + ``` + docker run -it -w /root -v $(pwd):/root/INSPECTA-models jasonbelt/microkit_domain_scheduling + ``` + + This container includes customized versions of Microkit and seL4 that support domain scheduling. They were built off the following pull requests + + - [microkit #175](https://github.com/seL4/microkit/pull/175) + - [seL4 #1308](https://github.com/seL4/seL4/pull/1308) + +## JVM + +1. *OPTIONAL* Rerun codegen targeting the JVM + + * From the [AADL model](aadl/aadl) + + Launch the Slash script [isolette/aadl/bin/run-hamr.cmd](aadl/bin/run-hamr.cmd) from the command line. + + ``` + isolette/aadl/bin/run-hamr.cmd JVM + ``` + + * From the [SysMLv2 model](sysml) + + Launch the Slash script [isolette/sysml/bin/run-hamr.cmd](sysml/bin/run-hamr.cmd) from the command line. + + ``` + isolette/sysml/bin/run-hamr.cmd JVM + ``` + +1. Build and run the application + + ``` + sireum proyek run isolette/hamr/slang isolette.Demo + ``` + +1. Verify code level contracts + + ``` + isolette/hamr/slang/bin/run-logika.cmd + ``` + +1. Check model level intergration constraints + + ``` + sireum hamr sysml logika --sourcepath isolette/sysml + ``` + +## Microkit + +1. *OPTIONAL* Rerun codegen targeting Microkit + + * From the [AADL model](aadl/aadl) + + Launch the Slash script [isolette/aadl/bin/run-hamr.cmd](aadl/bin/run-hamr.cmd) from the command line. + + ``` + isolette/aadl/bin/run-hamr.cmd Microkit + ``` + + * From the [SysMLv2 model](sysml) + + Launch the Slash script [isolette/sysml/bin/run-hamr.cmd](sysml/bin/run-hamr.cmd) from the command line. + + ``` + isolette/sysml/bin/run-hamr.cmd Microkit + ``` + +1. Build and simulate the seL4 Microkit image + + Inside the container do the following + + ``` + export MICROKIT_BOARD=qemu_virt_aarch64 + export MICROKIT_SDK=/root/microkit/release/microkit-sdk-1.4.1-dev.14+cf88629 + cd $HOME/INSPECTA-models/isolette/hamr/microkit + make qemu + ``` + + Type ``CTRL-a x`` to exit the QEMU simulation + + + ``` + Booting all finished, dropped to user space + MON|INFO: Microkit Bootstrap + MON|INFO: bootinfo untyped list matches expected list + MON|INFO: Number of bootstrap invocations: 0x0000000a + MON|INFO: Number of system invocations: 0x000002a0 + MON|INFO: completed bootstrap invocations + MON|INFO: completed system invocations + tthermostat_rt_mh: thermostat_rt_mhs_mhs_initialize invoked + thermostat_rt_dr: thermostat_rt_drf_drf_initialize invoked + heat_source_cpi_: heat_source_cpi_heat_controller_initialize invoked + operator_interfa: operator_interface_oip_oit_initialize invoked + temperature_sens: temperature_sensor_cpi_thermostat_initialize invoked + thermostat_mt_mm: thermostat_mt_mmm_mmm_initialize invoked + thermostat_mt_mm: thermostat_mt_mmi_mmi_initialize invoked + thermostat_mt_ma: thermostat_mt_ma_ma_initialize invoked + thermostat_mt_dm: thermostat_mt_dmf_dmf_initialize invoked + thermostat_rt_mr: thermostat_rt_mri_mri_initialize invoked + hermostat_rt_mr: thermostat_rt_mrm_mrm_initialize invoked + thermostat_rt_mr: thermostat_rt_mrm_mrm_timeTriggered invoked + thermostat_rt_mh: thermostat_rt_mhs_mhs_timeTriggered invoked + thermostat_rt_dr: thermostat_rt_drf_drf_timeTriggered invoked + heat_source_cpi_: heat_source_cpi_heat_controller_timeTriggered invoked + operator_interfa: operator_interface_oip_oit_timeTriggered invoked + temperature_sens: temperature_sensor_cpi_thermostat_timeTriggered invoked + thermostat_mt_mm: thermostat_mt_mmm_mmm_timeTriggered invoked + thermostat_mt_mm: thermostat_mt_mmi_mmi_timeTriggered invoked + thermostat_mt_ma: thermostat_mt_ma_ma_timeTriggered invoked + thermostat_mt_dm: thermostat_mt_dmf_dmf_timeTriggered invoked + thermostat_rt_mr: thermostat_rt_mri_mri_timeTriggered invoked + thermostat_rt_mr: thermostat_rt_mrm_mrm_timeTriggered invoked + thermostat_rt_mh: thermostat_rt_mhs_mhs_timeTriggered invoked + thermostat_rt_dr: thermostat_rt_drf_drf_timeTriggered invoked + ``` \ No newline at end of file diff --git a/isolette/sysml/.project b/isolette/sysml/.project new file mode 100644 index 0000000..84bb525 --- /dev/null +++ b/isolette/sysml/.project @@ -0,0 +1,19 @@ + + + isolette-hybrid-omg + + + sysml.library + aadl.library + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + + diff --git a/isolette/sysml/Devices.sysml b/isolette/sysml/Devices.sysml new file mode 100644 index 0000000..5e7b498 --- /dev/null +++ b/isolette/sysml/Devices.sysml @@ -0,0 +1,94 @@ +// Devices.sysml + +package Devices { + + private import Isolette_Data_Model::*; + private import AADL::*; + private import AADL_Project::*; + private import AADL_Project::Time_Units::*; + + //------------------------------------------------------------------------- + // temperature_sensor + //------------------------------------------------------------------------- + part def Temperature_Sensor_System_i :> System { + + part cpi : Temperature_Sensor_Process_i; + + in port air : DataPort { in :> type : Isolette_Data_Model::PhysicalTemp_i; } + out port current_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + + connection c1 : PortConnection + connect air to cpi.air; + connection c2 : PortConnection + connect cpi.current_tempWstatus to current_tempWstatus; + } + + part def Temperature_Sensor_Process_i :> Process { + + part thermostat : Temperature_Sensor_i; + + in port air : DataPort { in :> type : Isolette_Data_Model::PhysicalTemp_i; } + out port current_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + + //Connections + connection c1 : PortConnection + connect air to thermostat.air; + connection c2 : PortConnection + connect thermostat.current_tempWstatus to current_tempWstatus; + + attribute Domain: CASE_Scheduling::Domain = 2; + } + + part def Temperature_Sensor_i :> Thread { + + in port air : DataPort { in :> type : Isolette_Data_Model::PhysicalTemp_i; } + out port current_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + + attribute Domain: CASE_Scheduling::Domain = 2; + } + + //------------------------------------------------------------------------- + // heat_source + //------------------------------------------------------------------------- + part def Heat_Source_System_i :> System { + + part cpi : Heat_Source_Process_i; + + in port heat_control : DataPort { in :> type : Isolette_Data_Model::On_Off; } + out port heat_out : DataPort { out :> type : Isolette_Environment::Heat; } + + connection c3 : PortConnection + connect heat_control to cpi.heat_control; + connection c4 : PortConnection + connect cpi.heat_out to heat_out; + } + + part def Heat_Source_Process_i :> Process { + + part heat_controller : Heat_Source_i; + + in port heat_control : DataPort { in :> type : Isolette_Data_Model::On_Off; } + out port heat_out : DataPort { out :> type : Isolette_Environment::Heat; } + + connection c3 : PortConnection + connect heat_control to heat_controller.heat_control; + connection c4 : PortConnection + connect heat_controller.heat_out to heat_out; + + attribute Domain: CASE_Scheduling::Domain = 11; + } + + part def Heat_Source_i :> Thread { + + in port heat_control : DataPort { in :> type : Isolette_Data_Model::On_Off; } + out port heat_out : DataPort { out :> type : Isolette_Environment::Heat; } + + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 11; + } + +} diff --git a/isolette/sysml/Isolette.sysml b/isolette/sysml/Isolette.sysml new file mode 100644 index 0000000..77e887f --- /dev/null +++ b/isolette/sysml/Isolette.sysml @@ -0,0 +1,127 @@ +// Isolette.sysml +// +// ===================================================================================================================== +// +// I s o l e t t e P a c k a g e +// +// +// Top-level system specification including +// +// - thermostat + temp sensor and heater hardware components +// - system boundary capturing interactions with the environment +// +// ===================================================================================================================== + +// authors Brian Larson and John Hatcliff +// translated to SysMLv2 by Clint McKenzie + +package Isolette { + + private import Isolette_Data_Model::*; + private import Regulate::*; + private import Monitor::*; + private import AADL::*; + private import AADL_Project::*; + private import AADL_Project::Time_Units::*; + + // top-level system component representing the Isolette + part def Isolette_Single_Sensor :> System { + + // Subcomponents + + part thermostat : Thermostat::Thermostat_Single_Sensor_System_i; + + part operator_interface : Operator_Interface::Operator_Interface_System_i; + + part temperature_sensor : Devices::Temperature_Sensor_System_i; + + part heat_source : Devices::Heat_Source_System_i; + + part isolette_processor: Isolette_Processor; + + // Ports + + // models (abstractly) warming of air inside of Isolette enclosure + out port heat_out : DataPort { out :> type : Isolette_Environment::Heat; } + // models (abstractly) commands given by the operator to Isolette operator interface + in port operator_commands : DataPort { in :> type : Isolette_Environment::Interface_Interaction; } + // models (abstractly) visual information presented to the operator on Isolette operator interface + out port operator_visual_information : DataPort { out :> type : Isolette_Environment::Interface_Interaction; } + // models (abstraction) audio information presented to the operator on Isolette operator interface + out port operator_alarm : DataPort { out :> type : Isolette_Environment::Interface_Interaction; } + // models (abstractly) the sensing of the physical air temperature + in port air_temperature : DataPort { in :> type : Isolette_Data_Model::PhysicalTemp_i; } + + // Connections + + // ==== INPUT interface to internal components ==== + // commands from operator flow into the operator interface + connection oioc : PortConnection + connect operator_commands to operator_interface.operator_commands; + // the environment air temperature (abstract/physical) flows into the temp sensor + connection a2ts : PortConnection + connect air_temperature to temperature_sensor.air; + + // ==== OUTPUT interface values from internal components ==== + // information (audio and visual) flows from the operator interface to the operator + connection oiovi : PortConnection + connect operator_interface.operator_visual_information to operator_visual_information; + connection oioa : PortConnection + connect operator_interface.operator_alarm to operator_alarm; + + // heat source's (abstract) output is increase in physical air temperature + connection hs : PortConnection + connect heat_source.heat_out to heat_out; + + // ==== INTERNAL communication ==== + // sensor sends sensed current temperature to thermostat + connection ct : PortConnection + connect temperature_sensor.current_tempWstatus to thermostat.current_tempWstatus; + + // thermostat controls turns the heat source off and on + connection hc : PortConnection + connect thermostat.heat_control to heat_source.heat_control; + + // operator interface communicates desired temperature to thermostat + connection ldt : PortConnection + connect operator_interface.lower_desired_tempWstatus to thermostat.lower_desired_tempWstatus; + connection udt : PortConnection + connect operator_interface.upper_desired_tempWstatus to thermostat.upper_desired_tempWstatus; + + // operator interface communicates alarm temperature to thermostat + connection lat : PortConnection + connect operator_interface.lower_alarm_tempWstatus to thermostat.lower_alarm_tempWstatus; + connection uat : PortConnection + connect operator_interface.upper_alarm_tempWstatus to thermostat.upper_alarm_tempWstatus; + + // thermostat communicates regulator status to display on operator interface + connection rs : PortConnection + connect thermostat.regulator_status to operator_interface.regulator_status; + // thermostat communicates monitor status to display on operator interface + connection ms : PortConnection + connect thermostat.monitor_status to operator_interface.monitor_status; + // thermostat communicates current sensed temperature to display on operator interface + connection dt : PortConnection + connect thermostat.display_temperature to operator_interface.display_temperature; + // thermostat communicates alarm information to display on operator interface + connection al : PortConnection + connect thermostat.alarm_control to operator_interface.alarm_control; + + allocation pb0: Deployment_Properties::Actual_Processor_Binding + allocate thermostat to isolette_processor; + + allocation pb1: Deployment_Properties::Actual_Processor_Binding + allocate operator_interface to isolette_processor; + + allocation pb2: Deployment_Properties::Actual_Processor_Binding + allocate temperature_sensor to isolette_processor; + + allocation pb3: Deployment_Properties::Actual_Processor_Binding + allocate heat_source to isolette_processor; + } + + part def Isolette_Processor :> Processor { + attribute Frame_Period: Timing_Properties::Frame_Period = 1000 [millisecond]; + attribute Clock_Period: Timing_Properties::Clock_Period = 1 [millisecond]; + } +} \ No newline at end of file diff --git a/isolette/sysml/Isolette_Data_Model.sysml b/isolette/sysml/Isolette_Data_Model.sysml new file mode 100644 index 0000000..b17b212 --- /dev/null +++ b/isolette/sysml/Isolette_Data_Model.sysml @@ -0,0 +1,101 @@ +// Isolette_Data_Model.sysml + +package Isolette_Data_Model { + + private import AADL::*; + private import Base_Types::*; + private import ScalarValues::*; + + part def PhysicalTemp_i :> Data { + part degrees : Float_32; + } + + part def TempWstatus_i :> Data { + part degrees : Float_32; + attribute status : ValueStatus; + } + + part def Temp_i :> Data { + part degrees : Float_32; + } + + enum def On_Off { + enum Onn; + enum Off; + } + + part def Failure_Flag_i :> Data { + part flag : Base_Types::Boolean; + } + + enum def ValueStatus { + enum Valid; + enum Invalid; + } + + // Regulator and Monitor Status + enum def Status { + enum Init_Status; + enum On_Status; + enum Failed_Status; + } + + // Regulator Mode + enum def Regulator_Mode { + enum Init_Regulator_Mode; + enum Normal_Regulator_Mode; + enum Failed_Regulator_Mode; + } + + // Monitor Mode + enum def Monitor_Mode { + enum Init_Monitor_Mode; + enum Normal_Monitor_Mode; + enum Failed_Monitor_Mode; + } + + //Table A-3 Thermostat Monitored Variables for Temperature Sensor + + // current temperature : TempWstatus + + //Table A-4 Thermostat Controlled Variables for Heat Source + + // heat control : On_Off + + //Table A-5 + + // lower desired temperature : TempWstatus + // upper desired temperature : TempWstatus + // lower alarm temperature : TempWstatus + // upper alarm temperature : TempWstatus + + //range of Monitored Temperature + // data Measured_Temperature_Range + // properties + // Data_Model::Base_Type => (classifier(BLESS_Types::Fixed_Point)); + // Data_Model::Real_Range => 68.0 .. 105.0; + // Data_Model::Measurement_Unit => "Fahrenheit"; + // BLESS::Typed => "real 68.0 .. 105.0 units Fahrenheit"; + // end Measured_Temperature_Range; + + //Valid/Invalid enumerated type + + + //Current Temperature "t" is temp, "status" is valid/invalid flag + // data Current_Temperature + // properties + // Data_Model::Data_Representation => Struct; + // Data_Model::Element_Names => ("t","status"); + // Data_Model::Base_Type => (classifier (Measured_Temperature_Range), + // classifier (Valid_Flag)); + // BLESS::Typed => "record (t:measured_temperature_range; status:valid_flag;)"; + // end Current_Temperature; + + + //Table A-4. Thermostat Controlled Variables for Heat Source + + //heat control and alarm value + + + //Table A-5 +} \ No newline at end of file diff --git a/isolette/sysml/Isolette_Environment.sysml b/isolette/sysml/Isolette_Environment.sysml new file mode 100644 index 0000000..7a95957 --- /dev/null +++ b/isolette/sysml/Isolette_Environment.sysml @@ -0,0 +1,107 @@ +// Isolette_Environment.sysml +// +// ===================================================================================================================== +// +// I s o l e t t e E n v i r o n m e n t P a c k a g e +// +// +// Modeling of environment for Isolette +// +// Note: These models contribute nothing to the Isolette implementation. +// They are included here to support model-based hazard analysis activities +// as well support Concept of Operations and Use Case modeling +// +// ===================================================================================================================== + +package Isolette_Environment { + + private import AADL::*; + private import AADL_Project::*; + private import AADL_Project::Time_Units::*; + + // air inside room (make air connections flows?) + part def Air :> System { + + // Ports + + // warming of air by heat source + in port heat_in : DataPort { in :> type : Heat; } + // heat-loss of incubator air to room + out port heat_out : DataPort { out :> type : Heat; } + // air contact with infant + // TODO: This is currently modeled as an IN/OUT port, which might cause problems + // with the EMv2/hazard analysis + inout port infant_interaction : DataPort { inout :> type : Air_Interaction; } + //actual air temperature that the sensor measures + out port air_temperature : DataPort { out :> type : Isolette_Data_Model::PhysicalTemp_i; } + } + + // nurse controlling room + part def Nurse :> Abstract { + + // Ports + + // models (abstractly) visual information presented to the operator on Isolette operator interface + in port operator_visual_information : DataPort { in :> type : Interface_Interaction; } + // models (abstraction) audio information presented to the operator on Isolette operator interface + in port operator_alarm : DataPort { in :> type : Interface_Interaction; } + // models (abstractly) commands given by the operator to Isolette operator interface + out port operator_commands : DataPort { out :> type : Interface_Interaction; } + } + + // infant in room + part def Infant :> Abstract { + inout port air_interaction : DataPort { inout :> type : Air_Interaction; } + } + + // heat emitted by source to warm air + enum def Heat { + enum Dummy_Head_Enum; + } + + // data that flows between operator and control panel + enum def Interface_Interaction { + enum Dummy_Interface_Interaction_Enum; + } + + // warming of air by heat source, or of infant by air + enum def Air_Interaction { + enum Dummy_Air_Interaction_Enum; + } + + // implementation of Room that contains incubator, infant, nurse, and air + part def Isolette_Environment_Normal_Operation_Normal_Operation :> System { + + // Subcomponents + part anIncubator : Isolette::Isolette_Single_Sensor; + part theAir : Air; + part aNurse : Nurse; + part anInfant : Infant; + + // models heat-loss of incubator to (presumably) cooler room + out port heat_loss : DataPort { out :> type : Heat;} + + + // Connections + // air with infant interaction + connection a2i : PortConnection + connect theAir.infant_interaction to anInfant.air_interaction; + // heating source warming air interaction + connection hs2a : PortConnection + connect anIncubator.heat_out to theAir.heat_in; + connection tmp : PortConnection + connect theAir.air_temperature to anIncubator.air_temperature; + // heat-loss + connection hl : PortConnection + connect theAir.heat_out to heat_loss; + // nurse with control-panel interaction + connection n2oivi : PortConnection + connect anIncubator.operator_visual_information to aNurse.operator_visual_information; + connection n2ioa : PortConnection + connect anIncubator.operator_alarm to aNurse.operator_alarm; + connection n2ioc : PortConnection + connect aNurse.operator_commands to anIncubator.operator_commands; + + } + +} \ No newline at end of file diff --git a/isolette/sysml/Monitor.sysml b/isolette/sysml/Monitor.sysml new file mode 100644 index 0000000..6c33f32 --- /dev/null +++ b/isolette/sysml/Monitor.sysml @@ -0,0 +1,529 @@ +// Monitor.sysml +package Monitor { + + private import Isolette_Data_Model::*; + private import AADL::*; + private import AADL_Project::*; + private import AADL_Project::Time_Units::*; + + //A.5.2 Monitor Temperature Function + // thread to manage the interactions between with operator interface and the rest + // of the monitor process + part def Monitor_Temperature_i :> System { + + //thread for monitor interface implementation + part mmi : Manage_Monitor_Interface_Process_i; + + //thread for manage alarm implementation + part ma : Manage_Alarm_Process_i; + //thread for monitor mode implementation + part mmm : Manage_Monitor_Mode_Process_i; + + part dmf: Detect_Monitor_Failure_Process_i; + + // ===== INPUTs (monitored variables) ...based in part on Figure A.2 and Table A.5 + // value of current temp (with status flag) from air temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // operator-specific alarm range for temperature + in port lower_alarm_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + in port upper_alarm_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + + // ===== OUTPUTs (controlled variables) ...based in part on Figure A.2 and Table A.6 + // control signal (on/off) to alarm component + out port alarm_control : DataPort { out :> type : Isolette_Data_Model::On_Off; } + // enumerated type describing status/mode of monitor (Init, On/operating, or Failed) + out port monitor_status : DataPort { out :> type : Isolette_Data_Model::Status; } + + // ==== INPUT INTERFACE values to internal components ==== + // send incoming alarm temperature range to monitor interface manager + connection muat : PortConnection + connect upper_alarm_tempWstatus to mmi.upper_alarm_tempWstatus; + connection mlat : PortConnection + connect lower_alarm_tempWstatus to mmi.lower_alarm_tempWstatus; + + // send incoming current temperature (with status value) + // ...to interface manager + connection mcti : PortConnection + connect current_tempWstatus to mmi.current_tempWstatus; + // ...to alarm manager (controls alarm) + connection mcta : PortConnection + connect current_tempWstatus to ma.current_tempWstatus; + // ...to mode manager + connection mctm : PortConnection + connect current_tempWstatus to mmm.current_tempWstatus; + + // ==== OUTPUT INTERFACE values from internal components ==== + // send alarm actuation command (on/off) + connection malrm : PortConnection + connect ma.alarm_control to alarm_control; + // send status of monitor subsystem to operator interface + connection mms : PortConnection + connect mmi.monitor_status to monitor_status; + + // ==== INTERNAL communication ==== + // send validated alarm range from interface manager to alarm manager (controller) + connection maul : PortConnection + connect mmi.upper_alarm_temp to ma.upper_alarm_temp; + connection mall : PortConnection + connect mmi.lower_alarm_temp to ma.lower_alarm_temp; + + // send monitor mode from mode manager + // ... to interface manager + connection mmmi : PortConnection + connect mmm.monitor_mode to mmi.monitor_mode; + // ... to alarm manager + connection mmma : PortConnection + connect mmm.monitor_mode to ma.monitor_mode; + + // send regulator interface failure to mode manager + connection intff : PortConnection + connect mmi.interface_failure to mmm.interface_failure; + + connection mif: PortConnection + connect dmf.internal_failure to mmm.internal_failure; + } + + // =========================================================================================================== + // + // M a n a g e M o n i t o r I n t e r f a c e T h r e a d + // + // + // A.5.2.1 Manage Monitor Interface Function + // + // =========================================================================================================== + + part def Manage_Monitor_Interface_Process_i :> Process { + + part mmi: Manage_Monitor_Interface_i; + + // ==== INPUTS ==== (see Figure A.5) + // operator specified alarm range + in port upper_alarm_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + in port lower_alarm_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // current temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // current mode of monitor subsystem (init, normal or failed) + in port monitor_mode : DataPort { in :> type : Isolette_Data_Model::Monitor_Mode; } + + // ==== OUTPUTS ==== (see Figure A.5) + // validated ("valid" status confirmed & removed) alarm temperature range from operator interface + out port upper_alarm_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + out port lower_alarm_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + // overall status of monitor subsystem sent to operator interface + out port monitor_status : DataPort { out :> type : Isolette_Data_Model::Status; } + // flag indicating improper inputs; sent to determine overall subsystem mode + out port interface_failure : DataPort { out :> type : Isolette_Data_Model::Failure_Flag_i; } + + connection uatw: PortConnection connect upper_alarm_tempWstatus to mmi.upper_alarm_tempWstatus; + connection latw: PortConnection connect lower_alarm_tempWstatus to mmi.lower_alarm_tempWstatus; + connection ctw: PortConnection connect current_tempWstatus to mmi.current_tempWstatus; + connection mm: PortConnection connect monitor_mode to mmi.monitor_mode; + + connection uat: PortConnection connect mmi.upper_alarm_temp to upper_alarm_temp; + connection lat: PortConnection connect mmi.lower_alarm_temp to lower_alarm_temp; + connection ms: PortConnection connect mmi.monitor_status to monitor_status; + connection ifc: PortConnection connect mmi.interface_failure to interface_failure; + + attribute Domain: CASE_Scheduling::Domain = 4; + } + + part def Manage_Monitor_Interface_i :> Thread { + + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 4; + + // ==== INPUTS ==== (see Figure A.5) + // operator specified alarm range + in port upper_alarm_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + in port lower_alarm_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // current temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // current mode of monitor subsystem (init, normal or failed) + in port monitor_mode : DataPort { in :> type : Isolette_Data_Model::Monitor_Mode; } + + // ==== OUTPUTS ==== (see Figure A.5) + // validated ("valid" status confirmed & removed) alarm temperature range from operator interface + out port upper_alarm_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + out port lower_alarm_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + // overall status of monitor subsystem sent to operator interface + out port monitor_status : DataPort { out :> type : Isolette_Data_Model::Status; } + // flag indicating improper inputs; sent to determine overall subsystem mode + out port interface_failure : DataPort { out :> type : Isolette_Data_Model::Failure_Flag_i; } + + language "GUMBO" /*{ + state + lastCmd: Isolette_Data_Model::On_Off; + + // specification helper function + functions + def timeout_condition_satisfied():Base_Types::Boolean := T; + + integration + + assume Table_A_12_LowerAlarmTemp "Range [96..101] + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : + 96.0 [f32] <= lower_alarm_tempWstatus.degrees and lower_alarm_tempWstatus.degrees <= 101.0 [f32]; + + assume Table_A_12_UpperAlarmTemp "Range [97..102] + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : + 97.0 [f32] <= upper_alarm_tempWstatus.degrees and upper_alarm_tempWstatus.degrees <= 102.0 [f32]; + + // ====== I n i t i a l i z e E n t r y P o i n t Behavior Constraints ====== + initialize + guarantee monitorStatusInitiallyInit: + monitor_status == Isolette_Data_Model::Status.Init_Status; + + + // ====== C o m p u t e C o n s t r a i n t s ===== + compute + + compute_cases + // ===== Monitor Status ===== + case REQ_MMI_1 "If the Manage Monitor Interface mode is INIT, + |the Monitor Status shall be set to Init. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : + assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Init_Monitor_Mode; //monitor_status == Isolette_Data_Model::Status.Init_Status; + guarantee monitor_status == Isolette_Data_Model::Status.Init_Status; //monitor_mode == Isolette_Data_Model::Monitor_Mode.Init_Monitor_Mode; + + case REQ_MMI_2 "If the Manage Monitor Interface mode is NORMAL, + |the Monitor Status shall be set to On + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : + assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode; + guarantee monitor_status == Isolette_Data_Model::Status.On_Status; + + case REQ_MMI_3 "If the Manage Monitor Interface mode is FAILED, + |the Monitor Status shall be set to Failed. + |Latency: < Max Operator Response Time + |Tolerance: N/A + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : + assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Failed_Monitor_Mode; + guarantee monitor_status == Isolette_Data_Model::Status.Failed_Status; + + // ===== Interface Failure ===== + case REQ_MMI_4 "If the Status attribute of the Lower Alarm Temperature + |or the Upper Alarm Temperature is Invalid, + |the Monitor Interface Failure shall be set to True + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : + assume lower_alarm_tempWstatus.status == Isolette_Data_Model::ValueStatus.Invalid | + upper_alarm_tempWstatus.status == Isolette_Data_Model::ValueStatus.Invalid; + guarantee interface_failure.flag; + + case REQ_MMI_5 "If the Status attribute of the Lower Alarm Temperature + |and the Upper Alarm Temperature is Valid, + |the Monitor Interface Failure shall be set to False + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : + assume lower_alarm_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid + & + upper_alarm_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid; + guarantee not interface_failure.flag; + + // ===== Upper and Lower Temperature Values ===== + + case REQ_MMI_6 "If the Monitor Interface Failure is False, + |the Alarm Range variable shall be set to the Desired Temperature Range + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : + assume true; + guarantee + (not interface_failure.flag) implies + (lower_alarm_temp.degrees == lower_alarm_tempWstatus.degrees + & + upper_alarm_temp.degrees == upper_alarm_tempWstatus.degrees); + + case REQ_MMI_7 "If the Monitor Interface Failure is True, + |the Alarm Range variable is UNSPECIFIED + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=113 " : + assume true; + guarantee + interface_failure.flag implies true; + + }*/ + } + + // =========================================================================================================== + // + // M a n a g e M o n i t o r M o d e T h r e a d + // + // + // A.5.2.2 Manage Monitor Mode Function + // + // =========================================================================================================== + + // A.5.2.2 Manage Monitor Mode Function + + part def Manage_Monitor_Mode_Process_i :> Process { + + part mmm: Manage_Monitor_Mode_i; + + // ==== INPUTS ======== + // current temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // status of operator interface interactions + in port interface_failure : DataPort { in :> type : Isolette_Data_Model::Failure_Flag_i; } + // in case of internal failure, a flag is raised + in port internal_failure : DataPort { in :> type : Isolette_Data_Model::Failure_Flag_i; } + + // ==== OUTPUTS ======== + // mode of regulator (Init, Normal, Failed) + out port monitor_mode : DataPort { out :> type : Isolette_Data_Model::Monitor_Mode; } + + connection ctw: PortConnection connect current_tempWstatus to mmm.current_tempWstatus; + connection iff: PortConnection connect interface_failure to mmm.interface_failure; + connection inf: PortConnection connect internal_failure to mmm.internal_failure; + + connection mm: PortConnection connect mmm.monitor_mode to monitor_mode; + + attribute Domain: CASE_Scheduling::Domain = 3; + } + + part def Manage_Monitor_Mode_i :> Thread { + + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 3; + + // ==== INPUTS ======== + // current temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // status of operator interface interactions + in port interface_failure : DataPort { in :> type : Isolette_Data_Model::Failure_Flag_i; } + // in case of internal failure, a flag is raised + in port internal_failure : DataPort { in :> type : Isolette_Data_Model::Failure_Flag_i; } + + // ==== OUTPUTS ======== + // mode of regulator (Init, Normal, Failed) + out port monitor_mode : DataPort { out :> type : Isolette_Data_Model::Monitor_Mode; } + + language "GUMBO" /*{ + state + lastMonitorMode: Isolette_Data_Model::Monitor_Mode; + + functions + def timeout_condition_satisfied():Base_Types::Boolean := F; + + // ======= I n i t i a l i z e E n t r y P o i n t Behavior Constraints ====== + initialize + guarantee REQ_MMM_1 "Upon the first dispatch of the thread, the monitor mode is Init. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=114 " : + monitor_mode == Isolette_Data_Model::Monitor_Mode.Init_Monitor_Mode; + + // ====== C o m p u t e C o n s t r a i n t s ===== + compute + compute_cases + case REQ_MMM_2 "If the current mode is Init, then + |the mode is set to NORMAL iff the monitor status is true (valid) (see Table A-15), i.e., + |if NOT (Monitor Interface Failure OR Monitor Internal Failure) + |AND Current Temperature.Status = Valid + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=114 " : + assume lastMonitorMode == Isolette_Data_Model::Monitor_Mode.Init_Monitor_Mode; + guarantee + ((not(interface_failure.flag or internal_failure.flag)) and current_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) implies + (monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode); + + case REQ_MMM_3 "If the current Monitor mode is Normal, then + |the Monitor mode is set to Failed iff + |the Monitor status is false, i.e., + |if (Monitor Interface Failure OR Monitor Internal Failure) + |OR NOT(Current Temperature.Status = Valid) + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=114 " : + assume lastMonitorMode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode; + guarantee + ((interface_failure.flag or internal_failure.flag) or current_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) implies + (monitor_mode == Isolette_Data_Model::Monitor_Mode.Failed_Monitor_Mode); + + case REQ_MMM_4 "If the current mode is Init, then + |the mode is set to Failed iff the time during + |which the thread has been in Init mode exceeds the + |Monitor Init Timeout value. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=114 " : + assume lastMonitorMode == Isolette_Data_Model::Monitor_Mode.Init_Monitor_Mode; + guarantee timeout_condition_satisfied() == (monitor_mode == Isolette_Data_Model::Monitor_Mode.Failed_Monitor_Mode); + }*/ + } + + // =========================================================================================================== + // + // M a n a g e A l a r m T h r e a d + // + // + // A.5.2.3 Manage Alarm Function + // + // =========================================================================================================== + + + // A.5.2.3 Manage Alarm Function + // The Manage Alarm Function turns the Alarm Control on when the Current + // Temperature of the Room falls below or rises above the Alarm Temperature Range. + + part def Manage_Alarm_Process_i :> Process { + + part ma: Manage_Alarm_i; + + // ======== INPUTS ======= + // current temperature (from temp sensor) + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // lowest and upper bound of operator specified alarm temperature range + in port lower_alarm_temp : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + in port upper_alarm_temp : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + // subsystem mode + in port monitor_mode : DataPort { in :> type : Isolette_Data_Model::Monitor_Mode; } + + // ======== OUTPUTS ======= + // command to turn alarm on/off (actuation command) + out port alarm_control : DataPort { out :> type : Isolette_Data_Model::On_Off; } + + connection ctw: PortConnection connect current_tempWstatus to ma.current_tempWstatus; + connection lat: PortConnection connect lower_alarm_temp to ma.lower_alarm_temp; + connection uat: PortConnection connect upper_alarm_temp to ma.upper_alarm_temp; + connection mm: PortConnection connect monitor_mode to ma.monitor_mode; + + connection ac: PortConnection connect ma.alarm_control to alarm_control; + + attribute Domain: CASE_Scheduling::Domain = 5; + } + + part def Manage_Alarm_i :> Thread { + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 5; + + // ======== INPUTS ======= + // current temperature (from temp sensor) + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // lowest and upper bound of operator specified alarm temperature range + in port lower_alarm_temp : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + in port upper_alarm_temp : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + // subsystem mode + in port monitor_mode : DataPort { in :> type : Isolette_Data_Model::Monitor_Mode; } + + // ======== OUTPUTS ======= + // command to turn alarm on/off (actuation command) + out port alarm_control : DataPort { out :> type : Isolette_Data_Model::On_Off; } + + language "GUMBO" /*{ + state + lastCmd: Isolette_Data_Model::On_Off; + + functions + def timeout_condition_satisfied() : Base_Types::Boolean := T; + + initialize + + guarantee REQ_MA_1 "If the Monitor Mode is INIT, the Alarm Control shall be set + |to Off. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " : + alarm_control == Isolette_Data_Model::On_Off.Off & + lastCmd == Isolette_Data_Model::On_Off.Off; + + // ====== C o m p u t e C o n s t r a i n t s ===== + compute + + assume Figure_A_7 "This is not explicitly stated in the requirements, but a reasonable + |assumption is that the lower alarm must be at least 1.0f less than + |the upper alarm in order to account for the 0.5f tolerance + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 ": + upper_alarm_temp.degrees - lower_alarm_temp.degrees >= 1.0 [f32]; + + assume Table_A_12_LowerAlarmTemp "Range [96..101] + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : + 96.0 [f32] <= lower_alarm_temp.degrees and lower_alarm_temp.degrees <= 101.0 [f32]; + + assume Table_A_12_UpperAlarmTemp "Range [97..102] + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : + 97.0 [f32] <= upper_alarm_temp.degrees and upper_alarm_temp.degrees <= 102.0 [f32]; + + compute_cases + + case REQ_MA_1 "If the Monitor Mode is INIT, the Alarm Control shall be set + |to Off. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " : + assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Init_Monitor_Mode; + guarantee alarm_control == Isolette_Data_Model::On_Off.Off + & + lastCmd == Isolette_Data_Model::On_Off.Off; + + case REQ_MA_2 "If the Monitor Mode is NORMAL and the Current Temperature is + |less than the Lower Alarm Temperature or greater than the Upper Alarm + |Temperature, the Alarm Control shall be set to On. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " : + assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode + & + (current_tempWstatus.degrees < lower_alarm_temp.degrees or current_tempWstatus.degrees > upper_alarm_temp.degrees); + guarantee alarm_control == Isolette_Data_Model::On_Off.Onn + & + lastCmd == Isolette_Data_Model::On_Off.Onn; + + case REQ_MA_3 "If the Monitor Mode is NORMAL and the Current Temperature + |is greater than or equal to the Lower Alarm Temperature and less than + |the Lower Alarm Temperature +0.5 degrees, or the Current Temperature is + |greater than the Upper Alarm Temperature -0.5 degrees and less than or equal + |to the Upper Alarm Temperature, the value of the Alarm Control shall + |not be changed. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " : + assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode + & + ((current_tempWstatus.degrees >= lower_alarm_temp.degrees and + current_tempWstatus.degrees < lower_alarm_temp.degrees + 0.5 [f32]) or + ((current_tempWstatus.degrees > upper_alarm_temp.degrees - 0.5 [f32]) and + current_tempWstatus.degrees <= upper_alarm_temp.degrees)); + guarantee alarm_control == In(lastCmd) + & + lastCmd == In(lastCmd); + + case REQ_MA_4 "If the Monitor Mode is NORMAL and the value of the Current + |Temperature is greater than or equal to the Lower Alarm Temperature + |+0.5 degrees and less than or equal to the Upper Alarm Temperature + |-0.5 degrees, the Alarm Control shall be set to Off. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=115 " : + assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Normal_Monitor_Mode + & + current_tempWstatus.degrees >= lower_alarm_temp.degrees + 0.5 [f32] & + current_tempWstatus.degrees <= upper_alarm_temp.degrees - 0.5 [f32]; + guarantee alarm_control == Isolette_Data_Model::On_Off.Off + & + lastCmd == Isolette_Data_Model::On_Off.Off; + + case REQ_MA_5 "If the Monitor Mode is FAILED, the Alarm Control shall be + |set to On. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=116 " : + assume monitor_mode == Isolette_Data_Model::Monitor_Mode.Failed_Monitor_Mode; + guarantee alarm_control == Isolette_Data_Model::On_Off.Onn + & + lastCmd == Isolette_Data_Model::On_Off.Onn; + }*/ + } + + // =========================================================================================================== + // + // D e t e c t M o n i t o r T h r e a d + // + // + // A.5.2.4 Detect Monitor Failure Function + // "The Detect Monitor Failure Function identifies internal failures, (e.g., a memory check failure) + // in the Monitor Temperature Function. It defines a single Boolean-valued internal variable, + // Monitor Internal Failure, which is set to True if an internal failure is detected. " + // + // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=116 + // =========================================================================================================== + + part def Detect_Monitor_Failure_Process_i :> Process { + + part dmf: Detect_Monitor_Failure_i; + + out port internal_failure : DataPort { out :> type : Isolette_Data_Model::Failure_Flag_i; } + + connection inf: PortConnection connect dmf.internal_failure to internal_failure; + + attribute Domain: CASE_Scheduling::Domain = 6; + } + + part def Detect_Monitor_Failure_i :> Thread { + + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 6; + + out port internal_failure : DataPort { out :> type : Isolette_Data_Model::Failure_Flag_i; } + + } +} \ No newline at end of file diff --git a/isolette/sysml/Operator_Interface.sysml b/isolette/sysml/Operator_Interface.sysml new file mode 100644 index 0000000..4f0e6ab --- /dev/null +++ b/isolette/sysml/Operator_Interface.sysml @@ -0,0 +1,127 @@ +package Operator_Interface { + + private import Isolette_Data_Model::*; + private import AADL::*; + private import AADL_Project::*; + private import AADL_Project::Time_Units::*; + + // ===================================================================================================================== + // + // O p e r a t o r I n t e r f a c e + // + // See Section A-5 and Figure A-2 + // + // ===================================================================================================================== + + part def Operator_Interface_System_i :> System { + + part oip : Operator_Interface_Process_i; + + // ======== INPUT from Operator to Operator Interface ======= + in port operator_commands : DataPort { in :> type : Isolette_Environment::Interface_Interaction; } + // ======== OUTPUT from Operator Interface to Operator ======= + // models (abstractly) visual information presented to the operator on Isolette operator interface + out port operator_visual_information : DataPort { out :> type : Isolette_Environment::Interface_Interaction; } + // models (abstraction) audio information presented to the operator on Isolette operator interface + out port operator_alarm : DataPort { out :> type : Isolette_Environment::Interface_Interaction; } + // models (abstractly) the sensing of the physical air temperature + // ==== INPUTS from thermostat to operator interface + in port regulator_status : DataPort { in :> type : Isolette_Data_Model::Status; } + in port monitor_status : DataPort { in :> type : Isolette_Data_Model::Status; } + in port display_temperature : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + in port alarm_control : DataPort { in :> type : Isolette_Data_Model::On_Off; } + + // ==== OUTPUTS from operator interface to thermostat + out port lower_desired_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port upper_desired_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port lower_alarm_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port upper_alarm_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + + connection c1: PortConnection + connect regulator_status to oip.regulator_status; + connection c2: PortConnection + connect monitor_status to oip.monitor_status; + connection c3: PortConnection + connect display_temperature to oip.display_temperature; + connection c4: PortConnection + connect alarm_control to oip.alarm_control; + + connection c5: PortConnection + connect oip.lower_desired_tempWstatus to lower_desired_tempWstatus; + connection c6: PortConnection + connect oip.upper_desired_tempWstatus to upper_desired_tempWstatus; + connection c7: PortConnection + connect oip.lower_alarm_tempWstatus to lower_alarm_tempWstatus; + connection c8: PortConnection + connect oip.upper_alarm_tempWstatus to upper_alarm_tempWstatus; + } + + part def Operator_Interface_Process_i :> Process { + + part oit : Operator_Interface_Thread_i; + + // ==== INPUTS from thermostat to operator interface + in port regulator_status : DataPort { in :> type : Isolette_Data_Model::Status; } + in port monitor_status : DataPort { in :> type : Isolette_Data_Model::Status; } + in port display_temperature : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + in port alarm_control : DataPort { in :> type : Isolette_Data_Model::On_Off; } + + // ==== OUTPUTS from operator interface to thermostat + out port lower_desired_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port upper_desired_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port lower_alarm_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port upper_alarm_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + + connection c1: PortConnection + connect regulator_status to oit.regulator_status; + connection c2: PortConnection + connect monitor_status to oit.monitor_status; + connection c3: PortConnection + connect display_temperature to oit.display_temperature; + connection c4: PortConnection + connect alarm_control to oit.alarm_control; + + connection c5: PortConnection + connect oit.lower_desired_tempWstatus to lower_desired_tempWstatus; + connection c6: PortConnection + connect oit.upper_desired_tempWstatus to upper_desired_tempWstatus; + connection c7: PortConnection + connect oit.lower_alarm_tempWstatus to lower_alarm_tempWstatus; + connection c8: PortConnection + connect oit.upper_alarm_tempWstatus to upper_alarm_tempWstatus; + + attribute Domain: CASE_Scheduling::Domain = 12; + } + + part def Operator_Interface_Thread_i :> Thread { + + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 12; + + // ==== INPUTS from thermostat to operator interface + in port regulator_status : DataPort { in :> type : Isolette_Data_Model::Status; } + in port monitor_status : DataPort { in :> type : Isolette_Data_Model::Status; } + in port display_temperature : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + in port alarm_control : DataPort { in :> type : Isolette_Data_Model::On_Off; } + + // ==== OUTPUTS from operator interface to thermostat + out port lower_desired_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port upper_desired_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port lower_alarm_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + out port upper_alarm_tempWstatus : DataPort { out :> type : Isolette_Data_Model::TempWstatus_i; } + + language "GUMBO" /*{ + + integration + + guarantee Table_A_12_LowerAlarmTemp "Range [96..101] + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : + 96.0 [f32] <= lower_alarm_tempWstatus.degrees and lower_alarm_tempWstatus.degrees <= 101.0 [f32]; + + guarantee Table_A_12_UpperAlarmTemp "Range [97..102] + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=112 " : + 97.0 [f32] <= upper_alarm_tempWstatus.degrees and upper_alarm_tempWstatus.degrees <= 102.0 [f32]; + }*/ + } +} \ No newline at end of file diff --git a/isolette/sysml/README.md b/isolette/sysml/README.md new file mode 100644 index 0000000..77811b4 --- /dev/null +++ b/isolette/sysml/README.md @@ -0,0 +1,3 @@ +# sysml-isolette + +![arch.png](arch.svg) \ No newline at end of file diff --git a/isolette/sysml/Regulate.sysml b/isolette/sysml/Regulate.sysml new file mode 100644 index 0000000..e901f2b --- /dev/null +++ b/isolette/sysml/Regulate.sysml @@ -0,0 +1,546 @@ +// Regulate.sysml + +package Regulate { + + private import Isolette_Data_Model::*; + private import AADL::*; + private import AADL_Project::*; + private import AADL_Project::Time_Units::*; + + // =========================================================================================================== + // + // R e g u l a t e T e m p e r a t u r e P r o c e s s + // + // @description process that holds threads that regulate air temperature + // A.5.1 REGULATE TEMPERATURE FUNCTION + // + // =========================================================================================================== + + // process that holds threads that regulate air temperature + part def Regulate_Temperature_i :> System { + + //thread to manage the interactions between with operator interface and the rest of the regulator process + part mri : Manage_Regulator_Interface_Process; + // thread to manage the heat source. Receives the desired range, current determine, and determines whether or not to + //send an on/off command to the heat source + part mhs : Manage_Heat_Source_Process_i; + //thread to manage the regular mode. Based inputs describing the failure status of the interface, subsystem internals, + //and temperature status, determines the mode of the regulator process (i.e., if the mode is Init, Normal, or Failed modes) + part mrm : Manage_Regulator_Mode_Process_i; + + part drf : Detect_Regulator_Failure_Process_i; + + // ===== INPUTs (monitored variables) ...based in part on Figure A.2 and Table A.5 + // desired temperature range from operator interface + in port lower_desired_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + in port upper_desired_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // actual temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + + // ===== OUTPUTs (controlled variables) ...based in part on Figure A.2 and Table A.6 + // status of regulate temperature function as reported to operator interface + out port regulator_status : DataPort { out :> type : Isolette_Data_Model::Status; } + // value of current temperature to display on operator interface + out port displayed_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + // actuation command to heater + out port heat_control : DataPort { out :> type : Isolette_Data_Model::On_Off; } + + + // ==== INPUT INTERFACE values to internal components ==== + // send incoming desired temperature range to regulator interface manager + connection rudt : PortConnection + connect upper_desired_tempWstatus to mri.upper_desired_tempWstatus; + connection rldt : PortConnection + connect lower_desired_tempWstatus to mri.lower_desired_tempWstatus; + + // send incoming current temperature (with status value) + // ...to interface manager + connection rcti : PortConnection + connect current_tempWstatus to mri.current_tempWstatus; + // ...and to heat source manager + connection rcth : PortConnection + connect current_tempWstatus to mhs.current_tempWstatus; + // ...and to mode manager + connection rctm : PortConnection + connect current_tempWstatus to mrm.current_tempWstatus; + + // ==== OUTPUT INTERFACE values from internal components ==== + // output temperature to display on operator interface + connection rdt : PortConnection + connect mri.displayed_temp to displayed_temp; + // output regulator subsystem status to operator interface + connection rrs : PortConnection + connect mri.regulator_status to regulator_status; + // output on/off command to heat source + connection rhc : PortConnection + connect mhs.heat_control to heat_control; + + // ==== INTERNAL communication ==== + // send validated desired temperature from interface manager to heat source manager + connection mudt : PortConnection + connect mri.upper_desired_temp to mhs.upper_desired_temp; + connection mldt : PortConnection + connect mri.lower_desired_temp to mhs.lower_desired_temp; + + // send regulator mode from mode manager + // ... to interface manager + connection rrmi : PortConnection + connect mrm.regulator_mode to mri.regulator_mode; + // ... and to heat source manager + connection rrmh : PortConnection + connect mrm.regulator_mode to mhs.regulator_mode; + + // send regulator interface failure to mode manager + connection rif : PortConnection + connect mri.interface_failure to mrm.interface_failure; + + connection mif: PortConnection + connect drf.internal_failure to mrm.internal_failure; + } + + + // =========================================================================================================== + // + // M a n a g e R e g u l a t o r I n t e r f a c e T h r e a d + // + // + // A.5.1.1 Manage Regulator Interface Function + // + // =========================================================================================================== + + part def Manage_Regulator_Interface_Process :> Process { + + part mri: Manage_Regulator_Interface_i; + + // ==== INPUTS ==== (see Figure A.3) + // desired temperature from operator interface + in port upper_desired_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + in port lower_desired_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // current temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // current mode of regulator subsystem + in port regulator_mode : DataPort { in :> type : Isolette_Data_Model::Regulator_Mode; } + + // ==== OUTPUTS ==== (see Figure A.3) + // validated ("valid" status confirmed) desired temperature range from operator interface + out port upper_desired_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + out port lower_desired_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + // current temperature to display on operator interface + out port displayed_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + // overall status of regulator subsystem sent to operator interface + out port regulator_status : DataPort { out :> type : Isolette_Data_Model::Status; } + // flag indicating improper inputs; sent to determine overall subsystem mode + out port interface_failure : DataPort { out :> type : Isolette_Data_Model::Failure_Flag_i; } + + connection udtw: PortConnection connect upper_desired_tempWstatus to mri.upper_desired_tempWstatus; + connection ldtw: PortConnection connect lower_desired_tempWstatus to mri.lower_desired_tempWstatus; + connection ctw: PortConnection connect current_tempWstatus to mri.current_tempWstatus; + connection rm: PortConnection connect regulator_mode to mri.regulator_mode; + + connection udt: PortConnection connect mri.upper_desired_temp to upper_desired_temp; + connection ldt: PortConnection connect mri.lower_desired_temp to lower_desired_temp; + connection dt: PortConnection connect mri.displayed_temp to displayed_temp; + connection rs: PortConnection connect mri. regulator_status to regulator_status; + connection inf: PortConnection connect mri.interface_failure to interface_failure; + + attribute Domain: CASE_Scheduling::Domain = 7; + } + + part def Manage_Regulator_Interface_i :> Thread { + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 7; + + // ==== INPUTS ==== (see Figure A.3) + // desired temperature from operator interface + in port upper_desired_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + in port lower_desired_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // current temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // current mode of regulator subsystem + in port regulator_mode : DataPort { in :> type : Isolette_Data_Model::Regulator_Mode; } + + // ==== OUTPUTS ==== (see Figure A.3) + // validated ("valid" status confirmed) desired temperature range from operator interface + out port upper_desired_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + out port lower_desired_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + // current temperature to display on operator interface + out port displayed_temp : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + // overall status of regulator subsystem sent to operator interface + out port regulator_status : DataPort { out :> type : Isolette_Data_Model::Status; } + // flag indicating improper inputs; sent to determine overall subsystem mode + out port interface_failure : DataPort { out :> type : Isolette_Data_Model::Failure_Flag_i; } + + language "GUMBO" /*{ + // specification helper function + functions + def ROUND(num:Base_Types::Float_32):Base_Types::Float_32 := num; + + // ====== I n i t i a l i z e E n t r y P o i n t Behavior Constraints ====== + initialize + guarantee + RegulatorStatusIsInitiallyInit: regulator_status == Isolette_Data_Model::Status.Init_Status; + + // ====== C o m p u t e E n t r y P o i n t Behavior Constraints ===== + compute + // general assumption between incoming port values + assume lower_is_not_higher_than_upper: lower_desired_tempWstatus.degrees <= upper_desired_tempWstatus.degrees; + + compute_cases + // ====== Regulator Status ====== + + case REQ_MRI_1 "If the Regulator Mode is INIT, + |the Regulator Status shall be set to Init. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=107 ": + assume regulator_mode == Isolette_Data_Model::Regulator_Mode.Init_Regulator_Mode; + guarantee regulator_status == Isolette_Data_Model::Status.Init_Status; + + case REQ_MRI_2 "If the Regulator Mode is NORMAL, + |the Regulator Status shall be set to On + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=107 ": + assume regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode; + guarantee regulator_status == Isolette_Data_Model::Status.On_Status; + + case REQ_MRI_3 "If the Regulator Mode is FAILED, + |the Regulator Status shall be set to Failed. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=107 ": + assume regulator_mode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode; + guarantee regulator_status == Isolette_Data_Model::Status.Failed_Status; + + // ===== Display Temperature ===== + + case REQ_MRI_4 "If the Regulator Mode is NORMAL, the + |Display Temperature shall be set to the value of the + |Current Temperature rounded to the nearest integer. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": + assume regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode; + guarantee displayed_temp.degrees == ROUND(current_tempWstatus.degrees); + + case REQ_MRI_5 "If the Regulator Mode is not NORMAL, + |the value of the Display Temperature is UNSPECIFIED. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": + assume true; + guarantee true; + + // ===== Regulator Interface Failure ===== + + case REQ_MRI_6 "If the Status attribute of the Lower Desired Temperature + |or the Upper Desired Temperature is Invalid, + |the Regulator Interface Failure shall be set to True. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": + assume ((upper_desired_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) | (upper_desired_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid)); + guarantee interface_failure.flag; + + case REQ_MRI_7 "If the Status attribute of the Lower Desired Temperature + |and the Upper Desired Temperature is Valid, + |the Regulator Interface Failure shall be set to False. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": + assume true; + guarantee (interface_failure.flag == (not((upper_desired_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) & (lower_desired_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid)))); + + // ===== Desired Range ===== + + case REQ_MRI_8 "If the Regulator Interface Failure is False + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": + assume true; + guarantee + '->:' (not interface_failure.flag, + (lower_desired_temp.degrees == lower_desired_tempWstatus.degrees) & (upper_desired_temp.degrees == upper_desired_tempWstatus.degrees)); + + case REQ_MRI_9 "If the Regulator Interface Failure is True, + |the Desired Range is UNSPECIFIED. + |the Desired Range shall be set to the Desired Temperature Range. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=108 ": + assume true; + guarantee true; + }*/ + } + + // =========================================================================================================== + // + // M a n a g e R e g u l a t o r M o d e T h r e a d + // + // + // A.5.1.2 Manage Regulator Mode Function + // + // =========================================================================================================== + + part def Manage_Regulator_Mode_Process_i :> Process { + + part mrm: Manage_Regulator_Mode_i; + + // ==== INPUTS ======== + // current temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // status of operator interface interactions + in port interface_failure : DataPort { in :> type : Isolette_Data_Model::Failure_Flag_i; } + // internal status of regulator + in port internal_failure : DataPort { in :> type : Isolette_Data_Model::Failure_Flag_i; } + + // ==== OUTPUTS ======== + // mode of regulator (Init, Normal, Failed) + out port regulator_mode : DataPort { out :> type : Isolette_Data_Model::Regulator_Mode; } + + connection ctw: PortConnection connect current_tempWstatus to mrm.current_tempWstatus; + connection iff: PortConnection connect interface_failure to mrm.interface_failure; + connection inf: PortConnection connect internal_failure to mrm.internal_failure; + + connection rm: PortConnection connect mrm.regulator_mode to regulator_mode; + + attribute Domain: CASE_Scheduling::Domain = 8; + } + + part def Manage_Regulator_Mode_i :> Thread { + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 8; + + // ==== INPUTS ======== + // current temperature from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // status of operator interface interactions + in port interface_failure : DataPort { in :> type : Isolette_Data_Model::Failure_Flag_i; } + // internal status of regulator + in port internal_failure : DataPort { in :> type : Isolette_Data_Model::Failure_Flag_i; } + + // ==== OUTPUTS ======== + // mode of regulator (Init, Normal, Failed) + out port regulator_mode : DataPort { out :> type : Isolette_Data_Model::Regulator_Mode; } + + language "GUMBO" /*{ + // indicate that the component maintains an internal state (variables) that influence it's behavior + state + lastRegulatorMode: Isolette_Data_Model::Regulator_Mode; + + // Note: In AR-08-32, requirements for Manage Regulator Mode are not given in natural language clauses, + // but instead are phrased in terms of a state machine. We interpret the state machine transitions + // as natural language clauses in the comments below. + + // ======= I n i t i a l i z e E n t r y P o i n t Behavior Constraints ====== + initialize + guarantee REQ_MRM_1 "The initial mode of the regular is INIT + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 " : + regulator_mode == Isolette_Data_Model::Regulator_Mode.Init_Regulator_Mode; + + // ======= C o m p u t e E n t r y P o i n t Behavior Constraints ====== + compute + compute_cases + + case REQ_MRM_2 "'transition from Init to Normal' + |If the current regulator mode is Init, then + |the regulator mode is set to NORMAL iff the regulator status is valid (see Table A-10), i.e., + | if NOT (Regulator Interface Failure OR Regulator Internal Failure) + | AND Current Temperature.Status = Valid + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 ": + assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Init_Regulator_Mode; + guarantee + ((not(interface_failure.flag or internal_failure.flag)) and + current_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) implies + (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode and + lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode); + + case REQ_MRM_Maintain_Normal "'maintaining NORMAL, NORMAL to NORMAL' + |If the current regulator mode is Normal, then + |the regulator mode is stays normal iff + |the regulaor status is not false i.e., + | if NOT( + | (Regulator Interface Failure OR Regulator Internal Failure) + | OR NOT(Current Temperature.Status = Valid) + | ) + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 ": + assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode; + guarantee + ((not(interface_failure.flag or internal_failure.flag)) and + current_tempWstatus.status == Isolette_Data_Model::ValueStatus.Valid) implies + (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode and + lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode); + + case REQ_MRM_3 "'transition for NORMAL to FAILED' + |If the current regulator mode is Normal, then + |the regulator mode is set to Failed iff + |the regulator status is false, i.e., + | if (Regulator Interface Failure OR Regulator Internal Failure) + | OR NOT(Current Temperature.Status = Valid) + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109 ": + assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode; + guarantee + ((interface_failure.flag or internal_failure.flag) and + current_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) implies + (regulator_mode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode and + lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode); + + case REQ_MRM_4 "'transition from INIT to FAILED' + |If the current regulator mode is Init, then + |the regulator mode and lastRegulatorMode state value is set to Failed iff + |the regulator status is false, i.e., + | if (Regulator Interface Failure OR Regulator Internal Failure) + | OR NOT(Current Temperature.Status = Valid) + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109": + assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Init_Regulator_Mode; + guarantee + ((interface_failure.flag or internal_failure.flag) and + current_tempWstatus.status != Isolette_Data_Model::ValueStatus.Valid) implies + (regulator_mode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode and + lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode); + + case REQ_MRM_MaintainFailed "'maintaining FAIL, FAIL to FAIL' + |If the current regulator mode is Failed, then + |the regulator mode remains in the Failed state and the LastRegulator mode remains Failed.REQ-MRM-Maintain-Failed + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=109": + assume lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode; + guarantee (regulator_mode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode and + lastRegulatorMode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode); + }*/ + } + + // =========================================================================================================== + // + // M a n a g e H e a t S o u r c e T h r e a d + // + // + // A.5.1.3 Manage Heat Source Function + // + // =========================================================================================================== + + part def Manage_Heat_Source_Process_i :> Process { + + part mhs: Manage_Heat_Source_i; + + // ======== INPUTS ======= + // current temperature (from temp sensor) + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // lowest and upper bound of desired temperature range + in port lower_desired_temp : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + in port upper_desired_temp : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + // subsystem mode + in port regulator_mode : DataPort { in :> type : Isolette_Data_Model::Regulator_Mode; } + + // ======== OUTPUTS ======= + // command to turn heater on/off (actuation command) + out port heat_control : DataPort { out :> type : Isolette_Data_Model::On_Off; } + + connection ctw: PortConnection connect current_tempWstatus to mhs.current_tempWstatus; + connection ldt: PortConnection connect lower_desired_temp to mhs.lower_desired_temp; + connection udt: PortConnection connect upper_desired_temp to mhs.upper_desired_temp; + connection rm: PortConnection connect regulator_mode to mhs.regulator_mode; + + connection hc: PortConnection connect mhs.heat_control to heat_control; + + attribute Domain: CASE_Scheduling::Domain = 9; + } + + part def Manage_Heat_Source_i :> Thread { + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 9; + + // ======== INPUTS ======= + // current temperature (from temp sensor) + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // lowest and upper bound of desired temperature range + in port lower_desired_temp : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + in port upper_desired_temp : DataPort { in :> type : Isolette_Data_Model::Temp_i; } + // subsystem mode + in port regulator_mode : DataPort { in :> type : Isolette_Data_Model::Regulator_Mode; } + + // ======== OUTPUTS ======= + // command to turn heater on/off (actuation command) + out port heat_control : DataPort { out :> type : Isolette_Data_Model::On_Off; } + + language "GUMBO" /*{ + // indicate that the component maintains an internal state (variables) that influence its behavior + state + lastCmd: Isolette_Data_Model::On_Off; + + // ======= I n i t i a l i z e E n t r y P o i n t Behavior Constraints ====== + initialize + guarantee + initlastCmd: lastCmd == Isolette_Data_Model::On_Off.Off; + guarantee REQ_MHS_1 "If the Regulator Mode is INIT, the Heat Control shall be + |set to Off + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 ": + heat_control == Isolette_Data_Model::On_Off.Off; + + // ====== C o m p u t e E n t r y P o i n t Behavior Constraints ===== + compute + // assumption on set points enforced within the Operator Interface + assume lower_is_lower_temp: lower_desired_temp.degrees <= upper_desired_temp.degrees; + + // the lastCmd state variable is always equal to the value of the heat_control output port + guarantee lastCmd "Set lastCmd to value of output Cmd port": + lastCmd == heat_control; + + compute_cases + + case REQ_MHS_1 "If the Regulator Mode is INIT, the Heat Control shall be + |set to Off. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 ": + assume regulator_mode == Isolette_Data_Model::Regulator_Mode.Init_Regulator_Mode; + guarantee heat_control == Isolette_Data_Model::On_Off.Off; + + case REQ_MHS_2 "If the Regulator Mode is NORMAL and the Current Temperature is less than + |the Lower Desired Temperature, the Heat Control shall be set to On. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 ": + assume (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode) + & (current_tempWstatus.degrees < lower_desired_temp.degrees); + guarantee heat_control == Isolette_Data_Model::On_Off.Onn; + + case REQ_MHS_3 "If the Regulator Mode is NORMAL and the Current Temperature is greater than + |the Upper Desired Temperature, the Heat Control shall be set to Off. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 ": + assume (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode) + & (current_tempWstatus.degrees > upper_desired_temp.degrees); + guarantee heat_control == Isolette_Data_Model::On_Off.Off; + + case REQ_MHS_4 "If the Regulator Mode is NORMAL and the Current + |Temperature is greater than or equal to the Lower Desired Temperature + |and less than or equal to the Upper Desired Temperature, the value of + |the Heat Control shall not be changed. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=110 ": + assume (regulator_mode == Isolette_Data_Model::Regulator_Mode.Normal_Regulator_Mode) + & (current_tempWstatus.degrees >= lower_desired_temp.degrees + & current_tempWstatus.degrees <= upper_desired_temp.degrees); + guarantee heat_control == In(lastCmd); + + case REQ_MHS_5 "If the Regulator Mode is FAILED, the Heat Control shall be + |set to Off. + |http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=111 ": + assume regulator_mode == Isolette_Data_Model::Regulator_Mode.Failed_Regulator_Mode; + guarantee heat_control == Isolette_Data_Model::On_Off.Off; + }*/ + } + + // =========================================================================================================== + // + // D e t e c t R e g u l a t o r F a i l u r e T h r e a d + // + // + // AR-08-32 A.5.1.4 Detect Regulator Failure Function + // + // "The Detect Regulator Failure Function identifies internal failures, (e.g., a memory check failure) + // in the Regulate Temperature Function. It defines a single Boolean-valued internal variable, + // Regulator Internal Failure, which is set to True if an internal failure is detected." + // + // http://pub.santoslab.org/high-assurance/module-requirements/reading/FAA-DoT-Requirements-AR-08-32.pdf#page=111 + + part def Detect_Regulator_Failure_Process_i :> Process { + + part drf: Detect_Regulator_Failure_i; + + out port internal_failure : DataPort { out :> type : Isolette_Data_Model::Failure_Flag_i; } + + connection inf: PortConnection connect drf.internal_failure to internal_failure; + + attribute Domain: CASE_Scheduling::Domain = 10; + } + + part def Detect_Regulator_Failure_i :> Thread { + + attribute :>> Dispatch_Protocol = Supported_Dispatch_Protocols::Periodic; + attribute :>> Period = 1000 [millisecond]; + attribute Domain: CASE_Scheduling::Domain = 10; + + out port internal_failure : DataPort { out :> type : Isolette_Data_Model::Failure_Flag_i; } + + } +} \ No newline at end of file diff --git a/isolette/sysml/Thermostat.sysml b/isolette/sysml/Thermostat.sysml new file mode 100644 index 0000000..568acd0 --- /dev/null +++ b/isolette/sysml/Thermostat.sysml @@ -0,0 +1,75 @@ +package Thermostat { + + private import Isolette_Data_Model::*; + private import AADL::*; + private import AADL_Project::*; + private import AADL_Project::Time_Units::*; + + // ===================================================================================================================== + // + // T h e r m o s t a t + // + // See Section A-5 and Figure A-2 + // + // ===================================================================================================================== + // See Figure A-2 for overall architecture and Tables A-4, A-5, and A-6 for data descriptions + + part def Thermostat_Single_Sensor_System_i :> System { + + part rt: Regulate::Regulate_Temperature_i; + part mt: Monitor::Monitor_Temperature_i; + + // ======== INPUTS ======= + // receive current temperature (with status info) from temp sensor + in port current_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // receive desired temperature range (with status info) from operator interface + in port lower_desired_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + in port upper_desired_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + // receive alarm temperature range (with status info) from operator interface + in port lower_alarm_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + in port upper_alarm_tempWstatus : DataPort { in :> type : Isolette_Data_Model::TempWstatus_i; } + + // ======== OUTPUTS ========= + // send heat control command to heat source + out port heat_control: DataPort { out :> type : Isolette_Data_Model::On_Off; } + // send information to operator interface + out port regulator_status : DataPort { out :> type : Isolette_Data_Model::Status; } + out port monitor_status : DataPort { out :> type : Isolette_Data_Model::Status; } + out port display_temperature : DataPort { out :> type : Isolette_Data_Model::Temp_i; } + out port alarm_control : DataPort { out :> type : Isolette_Data_Model::On_Off; } + + // ==== INPUT interface to internal components ==== + // current temperature from temp sensor + connection tctm: PortConnection + connect current_tempWstatus to mt.current_tempWstatus; + connection tctr: PortConnection + connect current_tempWstatus to rt.current_tempWstatus; + // desired temperature range + connection tudt: PortConnection + connect upper_desired_tempWstatus to rt.upper_desired_tempWstatus; + connection tldt: PortConnection + connect lower_desired_tempWstatus to rt.lower_desired_tempWstatus; + // alarm temperature range + connection tuat: PortConnection + connect upper_alarm_tempWstatus to mt.upper_alarm_tempWstatus; + connection tlat: PortConnection + connect lower_alarm_tempWstatus to mt.lower_alarm_tempWstatus; + + // ==== OUTPUT interface from internal components ==== + // display temperature + connection tdt: PortConnection + connect rt.displayed_temp to display_temperature; + // subsystem status + connection trs: PortConnection + connect rt.regulator_status to regulator_status; + connection tms : PortConnection + connect mt.monitor_status to monitor_status; + // alarm control + connection ta : PortConnection + connect mt.alarm_control to alarm_control; + // heat control + connection thc: PortConnection + connect rt.heat_control to heat_control; + } +} + \ No newline at end of file diff --git a/isolette/sysml/arch.png b/isolette/sysml/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..12609d955a34c9f0624f1903b1351e251aa25b34 GIT binary patch literal 306283 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 z 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ɷ`Hi%x#V>;DSXdQM++~L$*4_r?bvq#$J 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

<|BMC2ObL`x!*6C5U2*iJlYB>yU)Db!I+-ZG+x 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

5;pFnyEb?g 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 MRMti)?)vlp0nAxi-2eap literal 0 HcmV?d00001 diff --git a/isolette/sysml/arch.svg b/isolette/sysml/arch.svg new file mode 100644 index 0000000..6810215 --- /dev/null +++ b/isolette/sysml/arch.svg @@ -0,0 +1,3082 @@ + + +isolette.single_sensor*air_temperatureoperator_commandsoperator_alarmoperator_visual_informationheat_outheat_source*heat_controlheat_outcpi*heat_controlheat_outheat_controller*heat_controlheat_outoperator_interface*monitor_statusalarm_controldisplay_temperatureoperator_commandsregulator_statusoperator_visual_informationlower_desired_tempWstatusupper_desired_tempWstatusupper_alarm_tempWstatuslower_alarm_tempWstatusoperator_alarmoip*monitor_statusalarm_controldisplay_temperatureregulator_statuslower_desired_tempWstatusupper_desired_tempWstatusupper_alarm_tempWstatuslower_alarm_tempWstatusoit*monitor_statusalarm_controldisplay_temperatureregulator_statuslower_desired_tempWstatusupper_desired_tempWstatusupper_alarm_tempWstatuslower_alarm_tempWstatustemperature_sensor*aircurrent_tempWstatuscpi*aircurrent_tempWstatusthermostat*aircurrent_tempWstatusthermostatthermostat_single_sensor.impllower_desired_tempWstatusupper_desired_tempWstatusupper_alarm_tempWstatuscurrent_tempWstatuslower_alarm_tempWstatusalarm_controlheat_controlmonitor_statusdisplay_temperatureregulator_statusmonitor_temperatureMonitor::Monitor_Temperature.implcurrent_tempWstatusupper_alarm_tempWstatuslower_alarm_tempWstatusmonitor_statusalarm_controlmanage_monitor_mode*Monitor::Manage_Monitor_Mode.implinterface_failureinternal_failurecurrent_tempWstatusmonitor_modemanage_monitor_interface*Monitor::Manage_Monitor_Interface.implcurrent_tempWstatusupper_alarm_tempWstatuslower_alarm_tempWstatusinterface_failuremonitor_statusupper_alarm_templower_alarm_tempmonitor_modemanage_alarm*Monitor::Manage_Alarm.implupper_alarm_tempcurrent_tempWstatuslower_alarm_tempmonitor_modealarm_controldetect_monitor_failure*internal_failureregulate_temperature*lower_desired_tempWstatusupper_desired_tempWstatuscurrent_tempWstatusheat_controldisplayed_tempregulator_statusmanage_regulator_interface*Regulate::Manage_Regulator_Interface.impllower_desired_tempWstatusupper_desired_tempWstatuscurrent_tempWstatusregulator_modelower_desired_tempinterface_failureupper_desired_tempdisplayed_tempregulator_statusdetect_regulator_failure*internal_failuremanage_heat_source*Regulate::Manage_Heat_Source.impllower_desired_tempcurrent_tempWstatusupper_desired_tempregulator_modeheat_controlmanage_regulator_mode*Regulate::Manage_Regulator_Mode.implinternal_failurecurrent_tempWstatusinterface_failureregulator_mode diff --git a/isolette/sysml/bin/clean.cmd b/isolette/sysml/bin/clean.cmd new file mode 100755 index 0000000..b149eec --- /dev/null +++ b/isolette/sysml/bin/clean.cmd @@ -0,0 +1,105 @@ +::/*#! 2> /dev/null # +@ 2>/dev/null # 2>nul & echo off & goto BOF # +if [ -z ${SIREUM_HOME} ]; then # + echo "Please set SIREUM_HOME env var" # + exit -1 # +fi # +exec ${SIREUM_HOME}/bin/sireum slang run "$0" "$@" # +:BOF +setlocal +if not defined SIREUM_HOME ( + echo Please set SIREUM_HOME env var + exit /B -1 +) +%SIREUM_HOME%\\bin\\sireum.bat slang run "%0" %* +exit /B %errorlevel% +::!#*/ +// #Sireum + +import org.sireum._ + +val aadlDir = Os.slashDir.up + + +val sireumBin = Os.path(Os.env("SIREUM_HOME").get) / "bin" +val sireum = sireumBin / (if(Os.isWin) "sireum.bat" else "sireum") + +val osate: Os.Path = Os.env("OSATE_HOME") match { + case Some(s) => Os.path(s) / (if (Os.isWin) "osate.exe" else if (Os.isLinux) "osate" else "Contents/MacOs/osate") + case _ if (Os.isWin) => sireumBin / "win" / "fmide" / "fmide.exe" + case _ if (Os.isMac) => sireumBin / "mac" / "fmide.app" / "Contents" / "MacOs" / "osate" + case _ if (Os.isLinux) => sireumBin / "linux" / "fmide" / "fmide" + case _ => + println("Unsupported operating system") + Os.exit(1) + halt("") +} + +if (!osate.exists) { + eprintln("Please install FMIDE (e.g. '$SIREUM_HOME/bin/install/fmide.cmd') or OSATE (e.g. 'sireum hamr phantom -u')") + Os.exit(1) + halt("") +} + +val osireum = ISZ(osate.string, "-nosplash", "--launcher.suppressErrors", "-data", "@user.home/.sireum", "-application", "org.sireum.aadl.osate.cli") + +if(Os.cliArgs.size > 1) { + eprintln("Only expecting a single argument") + Os.exit(1) +} + +val platform: String = + if(Os.cliArgs.nonEmpty) Os.cliArgs(0) + else "JVM" + +val packageName = "isolette" + +val excludeComponentImpl = F + +val camkes_output_dir = + if (platform == "Microkit") "microkit" + else "camkes" + +var codegenArgs = ISZ("hamr", "codegen", + "--platform", platform, + "--package-name", packageName, + "--slang-output-dir", (aadlDir.up / "hamr" / "slang").string, + "--output-c-dir", (aadlDir.up / "hamr" / "c").string, + "--camkes-output-dir", (aadlDir.up / "hamr" / camkes_output_dir).string, + "--run-transpiler", + "--bit-width", "32", + "--max-string-size", "256", + "--max-array-size", "1", + "--verbose", + "--workspace-root-dir", aadlDir.string) + +if (platform == "JVM") { + codegenArgs = codegenArgs :+ "--runtime-monitoring" +} else { + println("***********************************************************************") + println(s"Note: runtime-monitoring support is not yet avialable for ${platform}") + println("***********************************************************************") +} + +if (excludeComponentImpl) { + codegenArgs = codegenArgs :+ "--exclude-component-impl" +} + +if ((aadlDir.up / "hamr" / "slang" / ".idea").exists) { + codegenArgs = codegenArgs :+ "--no-proyek-ive" +} + +codegenArgs = codegenArgs :+ (aadlDir / ".system").string + +val results = Os.proc(osireum ++ codegenArgs).echo.console.run() + +// Running under windows results in 23 which is an indication +// a platform restart was requested. Codegen completes +// successfully and the cli app returns 0 so +// not sure why this is being issued. +if(results.exitCode == 0 || results.exitCode == 23) { + Os.exit(0) +} else { + println(results.err) + Os.exit(results.exitCode) +} diff --git a/isolette/sysml/bin/run-hamr.cmd b/isolette/sysml/bin/run-hamr.cmd new file mode 100755 index 0000000..98f4ac2 --- /dev/null +++ b/isolette/sysml/bin/run-hamr.cmd @@ -0,0 +1,90 @@ +::/*#! 2> /dev/null # +@ 2>/dev/null # 2>nul & echo off & goto BOF # +if [ -z ${SIREUM_HOME} ]; then # + echo "Please set SIREUM_HOME env var" # + exit -1 # +fi # +exec ${SIREUM_HOME}/bin/sireum slang run "$0" "$@" # +:BOF +setlocal +if not defined SIREUM_HOME ( + echo Please set SIREUM_HOME env var + exit /B -1 +) +%SIREUM_HOME%\\bin\\sireum.bat slang run "%0" %* +exit /B %errorlevel% +::!#*/ +// #Sireum + +import org.sireum._ + +val sysmlDir = Os.slashDir.up + + +val sireumBin = Os.path(Os.env("SIREUM_HOME").get) / "bin" +val sireum = sireumBin / (if(Os.isWin) "sireum.bat" else "sireum") + +if(Os.cliArgs.size > 1) { + eprintln("Only expecting a single argument") + Os.exit(1) +} + +val platform: String = + if(Os.cliArgs.nonEmpty) Os.cliArgs(0) + else "JVM" + +val packageName = "isolette" + +val excludeComponentImpl = F + +val camkes_output_dir = + if (platform == "Microkit") "microkit" + else "sysml" + +val hamrDir = sysmlDir.up / "hamr" + +var codegenArgs = ISZ( + sireum.value, "hamr", "sysml", "codegen", + "--platform", platform, + "--package-name", packageName, + "--slang-output-dir", (hamrDir / "slang").string, + "--output-c-dir", (hamrDir / "c").string, + "--camkes-output-dir", (hamrDir / camkes_output_dir).string, + "--run-transpiler", + "--bit-width", "32", + "--max-string-size", "256", + "--max-array-size", "1", + "--verbose", + "--workspace-root-dir", sysmlDir.string, + "--sourcepath", sysmlDir.value, + "--system-name", "Isolette::Isolette_Single_Sensor", +) + +if (platform == "JVM") { + codegenArgs = codegenArgs :+ "--runtime-monitoring" +} else { + println("***********************************************************************") + println(s"Note: runtime-monitoring support is not yet avialable for ${platform}") + println("***********************************************************************") +} + +if (excludeComponentImpl) { + codegenArgs = codegenArgs :+ "--exclude-component-impl" +} + +codegenArgs = codegenArgs :+ "--no-proyek-ive" + +codegenArgs = codegenArgs :+ (sysmlDir / "Isolette.sysml").value + +val results = Os.proc(codegenArgs).echo.console.run() + +// Running under windows results in 23 which is an indication +// a platform restart was requested. Codegen completes +// successfully and the cli app returns 0 so +// not sure why this is being issued. +if(results.exitCode == 0 || results.exitCode == 23) { + Os.exit(0) +} else { + println(results.err) + Os.exit(results.exitCode) +} diff --git a/micro-examples/microkit/port_queues/event_data_array/aadl/event_data_port_queues.aadl b/micro-examples/microkit/port_queues/event_data_array/aadl/event_data_port_queues.aadl index e1d7275..134461e 100644 --- a/micro-examples/microkit/port_queues/event_data_array/aadl/event_data_port_queues.aadl +++ b/micro-examples/microkit/port_queues/event_data_array/aadl/event_data_port_queues.aadl @@ -29,7 +29,8 @@ public write_port: out event data port ArrayOfStruct; properties Dispatch_Protocol => Periodic; - Period => 2 sec; + Period => 1 sec; + Compute_Execution_Time => 100ms .. 100ms; end producer; thread implementation producer.p @@ -64,6 +65,7 @@ public read_port: in event data port ArrayOfStruct; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_1; thread implementation consumer_queue_1.s @@ -87,6 +89,7 @@ public }; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_2; thread implementation consumer_queue_2.s @@ -110,6 +113,7 @@ public }; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_5; thread implementation consumer_queue_5.s diff --git a/micro-examples/microkit/port_queues/event_data_base_types/aadl/event_data_port_queues.aadl b/micro-examples/microkit/port_queues/event_data_base_types/aadl/event_data_port_queues.aadl index 5f6d363..0ae2849 100644 --- a/micro-examples/microkit/port_queues/event_data_base_types/aadl/event_data_port_queues.aadl +++ b/micro-examples/microkit/port_queues/event_data_base_types/aadl/event_data_port_queues.aadl @@ -9,7 +9,8 @@ public write_port: out event data port Base_Types::Integer_8; properties Dispatch_Protocol => Periodic; - Period => 2 sec; + Period => 1 sec; + Compute_Execution_Time => 100ms .. 100ms; end producer; thread implementation producer.p @@ -44,6 +45,7 @@ public read_port: in event data port Base_Types::Integer_8; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_1; thread implementation consumer_queue_1.s @@ -67,6 +69,7 @@ public }; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_2; thread implementation consumer_queue_2.s @@ -90,6 +93,7 @@ public }; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_5; thread implementation consumer_queue_5.s diff --git a/micro-examples/microkit/port_queues/event_data_struct/aadl/event_data_port_queues.aadl b/micro-examples/microkit/port_queues/event_data_struct/aadl/event_data_port_queues.aadl index f727f10..8324933 100644 --- a/micro-examples/microkit/port_queues/event_data_struct/aadl/event_data_port_queues.aadl +++ b/micro-examples/microkit/port_queues/event_data_struct/aadl/event_data_port_queues.aadl @@ -29,7 +29,8 @@ public write_port: out event data port struct.i; properties Dispatch_Protocol => Periodic; - Period => 2 sec; + Period => 1 sec; + Compute_Execution_Time => 100ms .. 100ms; end producer; thread implementation producer.p @@ -64,6 +65,7 @@ public read_port: in event data port struct.i; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_1; thread implementation consumer_queue_1.s @@ -87,6 +89,7 @@ public }; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_2; thread implementation consumer_queue_2.s @@ -110,6 +113,7 @@ public }; properties Dispatch_Protocol => Sporadic; + Compute_Execution_Time => 100ms .. 100ms; end consumer_queue_5; thread implementation consumer_queue_5.s