package fridge public with Deployment; ----------------- -- Subprograms -- ----------------- subprogram probe_spg properties source_language => C; source_name => "probe_spg"; source_text => ("application_code.c"); end probe_spg; subprogram alarm_spg properties source_language => C; source_name => "alarm_spg"; source_text => ("application_code.c"); end alarm_spg; subprogram lamp_spg properties source_language => C; source_name => "lamp_spg"; source_text => ("application_code.c"); end lamp_spg; subprogram door_spg properties source_language => C; source_name => "door_spg"; source_text => ("application_code.c"); end door_spg; subprogram thermostat_spg properties source_language => C; source_name => "thermostat_spg"; source_text => ("application_code.c"); end thermostat_spg; ------------- -- Threads -- ------------- thread periodic_task properties Dispatch_Protocol => Periodic; end periodic_task; thread implementation periodic_task.thermostat calls c : { s : subprogram thermostat_spg; }; end periodic_task.thermostat; thread implementation periodic_task.door calls c : { s : subprogram door_spg; }; end periodic_task.door; thread implementation periodic_task.alarm calls c : { s : subprogram alarm_spg; }; end periodic_task.alarm; thread implementation periodic_task.lamp calls c : { s : subprogram lamp_spg; }; end periodic_task.lamp; thread implementation periodic_task.probe calls c : { s : subprogram probe_spg; }; end periodic_task.probe; --------------- -- Processor -- --------------- processor cpu properties Deployment::Execution_Platform => native; end cpu; processor implementation cpu.impl properties Scheduling_Protocol => (Posix_1003_Highest_Priority_First_Protocol); end cpu.impl; --------------- -- Processes -- --------------- process node_a end node_a; process implementation node_a.impl subcomponents thermostat : thread periodic_task.thermostat; door : thread periodic_task.door; lamp : thread periodic_task.lamp; alarm : thread periodic_task.alarm; probe : thread periodic_task.probe; properties Deadline => 15 ms applies to thermostat; Period => 15 ms applies to thermostat; Compute_Execution_Time => 1 ms .. 2 ms applies to thermostat; Priority => 70 applies to thermostat; Deadline => 30 ms applies to door; Period => 30 ms applies to door; Compute_Execution_Time => 1 ms .. 2 ms applies to door; Priority => 60 applies to door; Deadline => 10 ms applies to alarm; Period => 10 ms applies to alarm; Compute_Execution_Time => 2 ms .. 3 ms applies to alarm; Priority => 90 applies to alarm; Deadline => 7 ms applies to lamp; Period => 7 ms applies to lamp; Compute_Execution_Time => 1 ms .. 1 ms applies to lamp; Priority => 100 applies to lamp; Deadline => 14 ms applies to probe; Period => 14 ms applies to probe; Compute_Execution_Time => 1 ms .. 2 ms applies to probe; Priority => 80 applies to probe; end node_a.Impl; system cold end cold; system implementation cold.impl subcomponents node_a : process node_a.impl; cpu : processor cpu.impl; properties Actual_Processor_Binding => (reference(cpu)) applies to node_a; end cold.impl; end fridge;