**This is a copy of the CASE UAV Phase 2 Step 6 model from the
Loonwerks CASE repository that includes mocked up behavior code written in C, CakeML components and VM bound components. This copy only adds Linux and seL4 code metrics to this readme.**
Table of Contents
- AADL Architecture
- Installing the Tools
- Modify the AADL Model for CakeML Integration
- LMCP Integration
- Linux
- SeL4
System: UAV_Impl_Instance Properties |
---|
Domain Scheduling |
Wire Protocol |
RadioDriver_Attestation Properties |
---|
Virtual Machine |
Periodic: 500 ms |
Domain: 2 |
CASE_AttestationGate Properties |
---|
CakeML |
Periodic: 500 ms |
Domain: 3 |
FlyZonesDatabase Properties |
---|
Native |
Periodic: 500 ms |
Domain: 4 |
CASE_Filter_LST Properties |
---|
CakeML |
Periodic: 500 ms |
Domain: 5 |
UxAS Properties |
---|
Virtual Machine |
Periodic: 500 ms |
Domain: 6 |
CASE_Monitor_Geo Properties |
---|
CakeML |
Periodic: 500 ms |
Domain: 7 |
WaypointPlanManagerService Properties |
---|
Native |
Periodic: 500 ms |
Domain: 8 |
UARTDriver Properties |
---|
Native |
Periodic: 500 ms |
Domain: 9 |
CASE_Monitor_Req Properties |
---|
Native |
Periodic: 500 ms |
Domain: 10 |
Schedule: domain_schedule.c
The following assumes a case-env is used (see https://github.com/loonwerks/CASE/tree/master/TA5/case-env)
Run $HOME/CASE/seL4-CAmkES-L4v-dockerfiles/scripts/cakeml.sh
. Note that installing HOL takes a long time and is optional <-- Junaid/Eric feedback
Once installed, make sure the 64bit version is available from the command line. E.g. in a directory available in my path I have the symlink cake -> /usr/local/bin/cake-x64-64/cake
NOTE: Cake seg faulted the first time I tried to run it from the command line. Restarting the vagrant VM seemed to fix the issue.
Only the wire protocol (ie. byte arrays) is supported for CakeML integration.
-
Attach
HAMR::Bit_Codec_Raw_Connections => true;
to the top-level system UAV.aadl -
Use the
HAMR::Bit_Codec_Max_Size
property to specify the encoded size of each data component that is used by an event data or data port. For example, see AddressAttributedMessage.i that is used by UARTDriver_thrRadioDriver_Attestation_thr.AutomationRequest-
This property only needs to be attached to the top level data component (e.g. array subtypes and record field types do not need to be modified if they are not directly used by a port)
-
HAMR will use the
Memory_Properties::Data_Size
annotation if present for types defined in Base_Types. The following unbounded types are not currently supported:Bases_Types::Boolean
,Base_Types::Character
,Base_Types::String
,Base_Types::Integer
,Base_Types::Float
-
Attach CASE_Properties::Component_Type => CakeML
to the filters or monitors - e.g. CASE_AttestationGate_thr
Attach Source_Text
to the filters or monitors indicating where the CakeML assemblies are - e.g.
CASE_AttestationGate_thr. For this example the assembly can be created by running the script
compile-cakeml.cmd
The data structures that realize the AADL types attached to the event data ports were constructed using the Lightweight Message Construction Protocol (LMCP). LMCP, similar to Bit-Codec, provides a framework for defining structured data and generates serializer/deserializers that enable the data to be transmitted and received regardless of the operating system, platform, or programming language used.
The location of the LMCP library was passed to HAMR (e.g. here) and is therefore available to native components (e.g. Geofence Monitor) as well as for VM components (e.g. UXAS)
CakeML integeration is not currently supported for the Linux platform. However, the behavior of the CakeML components can be mocked up and then the actual CakeML behavior code can be swapped in when deploying to seL4.
refer to aadl/bin/run-hamr-Linux.sh
Click for an example showing how HAMR's plugin dialog box relates to the CLI options
The CLI options verbose
and run-transpiler
are set via Verbose output
and Run Transpiler
options respectively that are located in Preferences >> OSATE >> Sireum HAMR >> Code Generation.
The last two CLI options are set by the HAMR plugin.
./aadl/bin/run-hamr-Linux.sh
./hamr/c/bin/compile.cmd
./hamr/c/bin/run.sh
./hamr/c/bin/stop.sh
The ./aadl/bin/run-hamr-Linux.sh
will rerun HAMR codegen and transpile the generated Slang code. Alternatively you can run
./hamr/slang/bin/transpile.cmd
to transpile the pre-generated checked-in code.
Directories Scanned Using https://github.com/AlDanial/cloc v1.88:
Total LOC
Total number of HAMR-generated transpiled Slang and developer-written C lines of code. It does not include code metrics for the external libraries contained in aadl/c_libraries
Language | files | blank | comment | code |
---|---|---|---|---|
C | 245 | 3277 | 617 | 18745 |
C/C++ Header | 463 | 4128 | 395 | 11302 |
C++ | 1 | 113 | 52 | 498 |
-------- | -------- | -------- | -------- | -------- |
SUM: | 709 | 7518 | 1064 | 30545 |
User LOC
The number of lines of code written by the developer in hamr/c/ext-c. The Slang-based component implementations were excluded by the transpiler so this represents the number of lines of C code needed to realize the component behaviors. "Log" are lines of code used for logging that likely would be excluded in a release build
Type | code |
---|---|
Behavior | 463 |
Log | 57 |
-------- | -------- |
SUM: | 520 |
refer to aadl/bin/run-hamr-SeL4.sh
Click for an example showing how HAMR's plugin dialog box relates to the CLI options
The CLI options verbose
and run-transpiler
are set via Verbose output
and Run Transpiler
options respectively that are located in Preferences >> OSATE >> Sireum HAMR >> Code Generation.
The last two CLI options are set by the HAMR plugin.
* If CAKEML_ASSEMBLIES_PRESENT=ON is passed to run-camkes.sh (see below) then the behavior code for the CakeML components will come from the following CakeML files
NOTE: the following potentially needs a lot of rework depending on the status of the CakeML plugin, CASE tool transforms etc.
The AADL model was hand-modified so that the CakeML components point to the location of their CakeML assemblies (e.g AttestationGate). For this example the assemblies are created by running this Slash script compile-cakeml.cmd. In the future the CASE tranforms + the SPLAT plugin will automate these steps.
Therefore the first build step is to run the Slash script to generate the CakeML assemblies
./aadl/cakeml/compile-cakeml.cmd --stripped --target=arm8
Note that two of the CakeML components (
filter and
monitor
) crash somewhere in the Contigs
when run, so the Slash script 'strips' them via the --stripped
option,
which causes those CakeML components to act as simple pass throughs
(i.e. they're CakeML, but don't do anything interesting).
The target=arm8
may be the culprit for why the above are crashing.
TODO: add discussion regarding issues with the Double
library
if necessary
Another oddity is that the attestation gate's interface indicates it should be stripping the 'address attributed' part of messages before forwarding them onto, for example, the CakeML filter here. That issue also impacts non-CakeML downstream components like the UXAS as the messages flowing in are larger (ie. contain more bits) than expected.
TODO: add more explanation if necessary
TODO explain this step
./hamr/camkes/bin/setup-camkes-arm-vm.sh
Now, run HAMR codegen
./aadl/bin/run-hamr-SeL4.sh
that will regenerate the code and transpile the Slang code. Alternatively you can run
./hamr/slang/bin/transpile-sel4.cmd
to just transpile the pre-generated checked-in code.
TODO: explain why the CASE directory needs to be deleted if running HAMR via FMIDE. For now see this comment
After running run-hamr-SeL4.sh
you must run the command below
in order to patch the code HAMR generates so that it is compatible with
the legacy CakeML code that was produced for the phase 2 deliverable.
TODO: add more explanation if needed
git apply 0001-ffi-data-port-hack.patch
Now build the image and simulate it via QEMU
./hamr/camkes/bin/run-camkes.sh -o "-DCAKEML_ASSEMBLIES_PRESENT=ON -DUSE_PRECONFIGURED_ROOTFS=ON" -s
TODO add instructions on how to start up the separate VM's unde QEMU -- for now, just look at the output below
Directories Scanned Using https://github.com/AlDanial/cloc v1.88:
Total LOC
Total number of HAMR-generated CAmkES, transpiled Slang, CakeML, and developer-written C lines of code
Language | files | blank | comment | code |
---|---|---|---|---|
C | 304 | 4739 | 1258 | 26419 |
C/C++ Header | 486 | 4349 | 603 | 11953 |
CakeML | 14 | 737 | 682 | 3334 |
CAmkES | 13 | 19 | 27 | 529 |
-------- | -------- | -------- | -------- | -------- |
SUM: | 817 | 9844 | 2570 | 42235 |
User LOC
The number of lines of code written by the developer in hamr/c/ext-c. The Slang-based component implementations were excluded by the transpiler so this represents the number of lines of C code needed to realize the component behaviors. "Log" are lines of code used for logging that likely would be excluded in a release build
It excludes the metrics for the attestation gate, geofence monitor, and the line search task filter as their behavior is supplied by CakeML code when targetting seL4. It also replaces the radio and UxAS Linux metrics with the metrics for vmRADIO.c and vmUXAS.c.
Type | code |
---|---|
Behavior | 806 |
Log | 11 |
-------- | -------- |
SUM: | 817 |
Booting all finished, dropped to user space
<<seL4(CPU 0) [decodeUntypedInvocation/212 T0xff807fc1c400 "rootserver" @4006f0]: Untyped Retype: Insufficient memory (1 * 2097152 bytes needed, 0 bytes available).>>
<<seL4(CPU 0) [decodeUntypedInvocation/212 T0xff807fc1c400 "rootserver" @4006f0]: Untyped Retype: Insufficient memory (1 * 2097152 bytes needed, 0 bytes available).>>
<<seL4(CPU 0) [maskVMRights/187 T0xff807fc1c400 "rootserver" @4006f0]: Attempted to make unsupported write only mapping>>
Entering pre-init of FlyZonesDatabase_thr_Impl_MCMP_PROC_SW_FlyZones_FlyZonesDatabase
Art: Registered component: UAV_Impl_Instance_MCMP_PROC_SW_FlyZones_FlyZonesDatabase (periodic: 500)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FlyZones_FlyZonesDatabase_keep_in_zones (data out)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FlyZones_FlyZonesDatabase_keep_out_zones (data out)
Leaving pre-init of FlyZonesDatabase_thr_Impl_MCMP_PROC_SW_FlyZones_FlyZonesDatabase
Entering pre-init of CASE_Filter_LST_thr_Impl_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST
Art: Registered component: UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST (periodic: 500)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST_filter_in (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST_filter_out (event out)
Leaving pre-init of CASE_Filter_LST_thr_Impl_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST
Entering pre-init of CASE_Monitor_Geo_thr_Impl_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo
Art: Registered component: UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo (periodic: 500)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo_keep_in_zones (data in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo_keep_out_zones (data in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo_observed (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo_output (event out)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo_alert (event out)
Leaving pre-init of CASE_Monitor_Geo_thr_Impl_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo
Entering pre-init of WaypointPlanManagerService_thr_Impl_MCMP_PROC_SW_WPM_WaypointPlanManagerService
Entering pre-init of UARTDriver_Impl_MCMP_PROC_SW_FC_UART_UARTDriver
Art: Registered component: UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver (periodic: 500)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver_recv_data (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver_MissionCommand (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver_send_data (event out)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver_AirVehicleState_WPM (event out)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver_AirVehicleState_UXAS (event out)
Entering pre-init of CASE_Monitor_Req_thr_Impl_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req
Art: Registered component: UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req (periodic: 500)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req_observed (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req_reference_1 (event in)
Leaving pre-init of CASE_Monitor_Req_thr_Impl_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req
Entering pre-init of CASE_AttestationGate_thr_Impl_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate
Art: Registered component: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate (periodic: 500)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate_trusted_ids (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate_AutomationRequest_in (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate_AutomationRequest_out_UXAS (event out)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate_AutomationRequest_out_MON_REQ (event out)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate_OperatingRegion_in (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate_OperatingRegi_utspace_split_alloc@split.c:272 Failed to find any untyped capable of creating an object at address 0x8040000
Loading Linux: 'linux' dtb: ''
[email protected]:657 module name: map_frame_hack
[email protected]:657 module name: init_ram
Art: Registered component: UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService (periodic: 500)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService_AutomationResponse (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService_AirVehicleState (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService_MissionCommand (event out)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService_ReturnHome (event in)
Leaving pre-init of WaypointPlanManagerService_thr_Impl_MCMP_PROC_SW_WPM_WaypointPlanManagerService
Leaving pre-init of UARTDriver_Impl_MCMP_PROC_SW_FC_UART_UARTDriver
[email protected]:272 Failed to find any untyped capable of creating an object at address 0x8040000
Loading Linux: 'linux' dtb: ''
[email protected]:657 module name: map_frame_hack
[email protected]:657 module name: init_ram
on_out (event out)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate_LineSearchTask_in (event in)
Art: - Registered port: UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate_LineSearchTask_out (event out)
Leaving pre-init of CASE_AttestationGate_thr_Impl_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate
[email protected]:657 module name: virtio_con
[email protected]:657 module name: cross_vm_connections
[email protected]:657 module name: virtio_con
[email protected]:657 module name: cross_vm_connections
libsel4muslcsys: Error attempting syscall 215
libsel4muslcsys: Error attempting syscall 215
libsel4muslcsys: Error attempting syscall 215
[email protected]:370 Non-existing node None specified to be kept
consume_connection_event@cross_vm_connection.c:247 Failed to inject connection irq
[email protected]:272 Failed to find any untyped capable of creating an object at address 0x8020000
[ 13.490215] Unable to detect cache hierarchy for CPU 0
[ 13.507618] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
[ 13.522675] e1000: Copyright (c) 1999-2006 Intel Corporation.
[ 13.536417] e1000e: Intel(R) consume_connection_event@cross_vm_connection.c:247 Failed to inject connection irq
PRO/1000 Network Driver - 3.2.6-k
[ 14.167203] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 14.187089] mousedev: PS/2 mouse device common for all mice
[ 14.208110] ledtrig-cpu: registered to indicate activity on CPUs
[ 14.222571] dmi-sysfs: dmi entry is absent.
[ 14.235312] ipip: IPv4 and MPLS over IPv4 tunneling driver
[ 14.258057] NET: Registered protocol family 10
consume_connection_event@cross_vm_connection.c:247 Failed to inject connection irq
[ 15.094392] mip6: Mobile IPv6
[ 15.110571] NET: Registered protocol family 17
[ 15.123038] mpls_gso: MPLS GSO support
[ 15.133853] Registered cp15_barrier emulation handler
[ 15.146184] Registered setend emulation handler
[ 15.163470] registered taskstats version 1
[ 15.174288] zswap: loaded using pool lzo/zbud
consume_connection_event@cross_vm_connection.c:247 Failed to inject connection irq
[ 16.036699] ima: No TPM chip found, activating TPM-bypass!
[ 16.047524] ima: Allocated hash algorithm: sha256
[ 16.074911] hctosys: unable to open rtc device (rtc0)
[ 16.086571] PM: Hibernation image not present or could not be loaded.
[ 16.099985] initcall clk_disable_unused blacklisted
[ 13.898284] Unable to detect cache hierarchy for CPU 0
[ 13.915712] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
[ 13.933406] e1000: Copyright (c) 1999-2006 Intel Corporation.
[ 14.991968] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[ 15.005107] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 15.026358] mousedev: PS/2 mouse device common for all mice
[ 15.049692] ledtrig-cpu: registered to indicate activity on CPUs
[ 15.064335] dmi-sysfs: dmi entry is absent.
[ 15.078279] ipip: IPv4 and MPLS over IPv4 tunneling driver
[ 15.096631] NET: Registered protocol family 10
[ 16.144747] mip6: Mobile IPv6
[ 16.173890] NET: Registered protocol family 17
[ 16.184232] mpls_gso: MPLS GSO support
[ 16.193474] Registered cp15_barrier emulation handler
[ 16.204777] Registered setend emulation handler
[ 16.222793] registered taskstats version 1
[ 16.233741] zswap: loaded using pool lzo/zbud
[ 17.272016] ima: No TPM chip found, activating TPM-bypass!
[ 17.282474] ima: Allocated hash algorithm: sha256
[ 17.308676] hctosys: unable to open rtc device (rtc0)
[ 17.321350] PM: Hibernation image not present or could not be loaded.
[ 17.335881] initcall clk_disable_unused blacklisted
[ 20.729690] Freeing unused kernel memory: 3776K
[ 21.984609] Freeing unused kernel memory: 3776K
Starting syslogd: OK
Starting klogd: OK
Starting syslogd: OK
Starting klogd: Running sysctl: OK
Running sysctl: OK
Initializing random number generator... [ 41.748266] random: dd: uninitialized urandom read (512 bytes read)
done.
Starting network: OK
Initializing random number generator... [ 43.959136] random: dd: uninitialized urandom read (512 bytes read)
OK
done.
[ 48.447129] connection: loading out-of-tree module taints kernel.
[ 48.489919] Event Bar (dev-0) initalised
[ 48.512930] 2 Dataports (dev-0) initalised
[ 48.525444] Event Bar (dev-1)Starting network: initalised
[ 49.805964] 2 Dataports (dev-1) initalised
[ 49.815808] Event Bar (dev-2) initalised
[ 49.831236] 2 Dataports (dev-2) initalised
[ 49.851368] Event Bar (dev-3) initalised
[ 49.864498] 2 Dataports (dev-3) initalised
[ 49.876349] Event Bar (dev-4) initalised
[ 49.893538] 2 Dataports (dev-4) initalised
Welcome to Buildroot
buildroot login: OK
[ 51.326527] connection: loading out-of-tree module taints kernel.
[ 51.372969] Event Bar (dev-0) initalised
[ 51.394413] 2 Dataports (dev-0) initalised
[ 51.405703] Event Bar (dev-1) initalised
[ 51.428005] 2 Dataports (dev-1) initalised
[ 52.255684] Event Bar (dev-2) initalised
[ 52.271247] 2 Dataports (dev-2) initalised
[ 52.282360] Event Bar (dev-3) initalised
[ 52.301475] 2 Dataports (dev-3) initalised
[ 52.321077] Event Bar (dev-4) initalised
[ 52.334116] 2 Dataports (dev-4) initalised
[ 53.468091] Event Bar (dev-5) initalised
[ 53.483062] 2 Dataports (dev-5) initalised
[ 53.493903] Event Bar (dev-6) initalised
[ 53.514403] 2 Dataports (dev-6) initalised
Welcome to Buildroot
buildroot login: root
# ls /dev/ui*
/dev/uio0 /dev/uio1 /dev/uio2 /dev/uio3 /dev/uio4 /dev/uio5 /dev/uio6
# vmUXAS
VM App vmUXAS started
Setting up incoming event data port /dev/uio0 with size 262144
Successfully setup incoming event data port /dev/uio0
Setting up incoming event data port /dev/uio1 with size 262144
Successfully setup incoming event data port /dev/uio1
Setting up incoming event data port /dev/uio2 with size 262144
Successfully setup incoming event data port /dev/uio2
Setting up incoming event data port /dev/uio3 with size 262144
Successfully setup incoming event data port /dev/uio3
Setting up outgoing event data port /dev/uio4 262144
Successfully setup /dev/uio4
Setting up outgoing event data port /dev/uio5 262144
Successfully setup /dev/uio5
Setting up incoming event data port /dev/uio6 with size 4096
Successfully setup incoming event data port /dev/uio6
Hello from vmUXAS's run method
Testing LMCP for a pre-baked AutomationResponse
Valid AutomationResponse
Switching input to 1
root
# vmRADIO
VM App vmRADIO started
Setting up outgoing event data port /dev/uio0 262144
Successfully setup /dev/uio0
Setting up outgoing event data port /dev/uio1 262144
Successfully setup /dev/uio1
Setting up outgoing event data port /dev/uio2 262144
Successfully setup /dev/uio2
Setting up outgoing event data port /dev/uio3 262144
Successfully setup /dev/uio3
Setting up incoming event data port /dev/uio4 with size 4096
Successfully setup incoming event data port /dev/uio4
Hello from vmRADIO's run method
Testing out LMCP for a pre-baked LineSearchTask
Valid LineSearchTask
vmRADIO: Sent bad trusted ids
UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate:
** Blocked OperatingRegion **
Valid IDS: tidArray = (555, 666, 777)
Received OperatingRegion ID = 400
UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST: STRIPPED Ver: Just passing on the LineSearchTask
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationRequest from attestation gate
vmUXAS: Received expected messages from AM_Gate/FLT_ST so sent prebaked AutomationResponse
UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo: STRIPPED Ver: just passing on the AutomationResponse to WPM
UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService: Received Automation Response from monitor
UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver: Mission Received!
|| ||
|| ||
|| ||
|| ____ ||
|| .''''''. ||
|| / __ \ ||
||\__..-': /\/\ :'-..__/||
||=__ =|=' |-()-| '=|= __=||
||/ ''-.: \/\/ :.-'' \||
|| \ "" / ||
|| `.____.' ||
|| ||
|| ||
|| ||
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationResponse from uxas
Valid AutomationResponse and length property is satisfied
UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST: STRIPPED Ver: Just passing on the LineSearchTask
vmRADIO: Sent bad trusted ids
UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate:
** Blocked AutomationRequest **
Valid IDS: tidArray = (555, 666, 777)
Received AutomationRequest ID = 400
UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST: STRIPPED Ver: Just passing on the LineSearchTask
vmUXAS: Received expected messages from AM_Gate/FLT_ST so sent prebaked AutomationResponse
UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo: STRIPPED Ver: just passing on the AutomationResponse to WPM
UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService: Received Automation Response from monitor
UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver: Mission Received!
|| ||
|| ||
|| ||
|| ____ ||
|| .''''''. ||
|| / __ \ ||
||\__..-': /\/\ :'-..__/||
||=__ =|=' |-()-| '=|= __=||
||/ ''-.: \/\/ :.-'' \||
|| \ "" / ||
|| `.____.' ||
|| ||
|| ||
|| ||
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationRequest from attestation gate
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationResponse from uxas
Valid AutomationResponse and length property is satisfied
vmRADIO: Sent bad trusted ids
UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate:
** Blocked LineSearchTask **
Valid IDS: tidArray = (555, 666, 777)
Received LineSearchTask ID = 400
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationRequest from attestation gate
UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST: STRIPPED Ver: Just passing on the LineSearchTask
vmUXAS: Received expected messages from AM_Gate/FLT_ST so sent prebaked AutomationResponse
UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo: STRIPPED Ver: just passing on the AutomationResponse to WPM
UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService: Received Automation Response from monitor
UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver: Mission Received!
|| ||
|| ||
|| ||
|| ____ ||
|| .''''''. ||
|| / __ \ ||
||\__..-': /\/\ :'-..__/||
||=__ =|=' |-()-| '=|= __=||
||/ ''-.: \/\/ :.-'' \||
|| \ "" / ||
|| `.____.' ||
|| ||
|| ||
|| ||
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationResponse from uxas
Valid AutomationResponse and length property is satisfied
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationRequest from attestation gate
vmRADIO: Sent bad trusted ids
UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate:
** Blocked OperatingRegion **
Valid IDS: tidArray = (555, 666, 777)
Received OperatingRegion ID = 400
UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST: STRIPPED Ver: Just passing on the LineSearchTask
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationRequest from attestation gate
vmUXAS: Received expected messages from AM_Gate/FLT_ST so sent prebaked AutomationResponse
UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo: STRIPPED Ver: just passing on the AutomationResponse to WPM
UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService: Received Automation Response from monitor
UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver: Mission Received!
|| ||
|| ||
|| ||
|| ____ ||
|| .''''''. ||
|| / __ \ ||
||\__..-': /\/\ :'-..__/||
||=__ =|=' |-()-| '=|= __=||
||/ ''-.: \/\/ :.-'' \||
|| \ "" / ||
|| `.____.' ||
|| ||
|| ||
|| ||
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationResponse from uxas
Valid AutomationResponse and length property is satisfied
UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST: STRIPPED Ver: Just passing on the LineSearchTask
vmRADIO: Sent bad trusted ids
UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate:
** Blocked AutomationRequest **
Valid IDS: tidArray = (555, 666, 777)
Received AutomationRequest ID = 400
UAV_Impl_Instance_MCMP_PROC_SW_FLT_LST_CASE_Filter_LST: STRIPPED Ver: Just passing on the LineSearchTask
vmUXAS: Received expected messages from AM_Gate/FLT_ST so sent prebaked AutomationResponse
UAV_Impl_Instance_MCMP_PROC_SW_MON_GEO_CASE_Monitor_Geo: STRIPPED Ver: just passing on the AutomationResponse to WPM
UAV_Impl_Instance_MCMP_PROC_SW_WPM_WaypointPlanManagerService: Received Automation Response from monitor
UAV_Impl_Instance_MCMP_PROC_SW_FC_UART_UARTDriver: Mission Received!
|| ||
|| ||
|| ||
|| ____ ||
|| .''''''. ||
|| / __ \ ||
||\__..-': /\/\ :'-..__/||
||=__ =|=' |-()-| '=|= __=||
||/ ''-.: \/\/ :.-'' \||
|| \ "" / ||
|| `.____.' ||
|| ||
|| ||
|| ||
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationRequest from attestation gate
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationResponse from uxas
Valid AutomationResponse and length property is satisfied
vmRADIO: Sent bad trusted ids
UAV_Impl_Instance_MCMP_PROC_SW_AM_Gate_CASE_AttestationGate:
** Blocked LineSearchTask **
Valid IDS: tidArray = (555, 666, 777)
Received LineSearchTask ID = 400
UAV_Impl_Instance_MCMP_PROC_SW_MON_REQ_CASE_Monitor_Req: Received AutomationRequest from attestation gate
QEMU: Terminated
NEED TO MANUALLY UPDATE EXPECTED OUTPUT