public int getObservableProperty(String name) {
   DemoObservable obs = (DemoObservable) ObservablesTable.get(name);
   return obs.getProperty();
 }
 public DemoObservable getObservable(String name) {
   return (DemoObservable) ObservablesTable.get(name);
 }
  NavWeapDataHandler() {
    ObservablesTable = new java.util.Hashtable();

    ObservablesTable.put("Navigation", new NavigationObservable());
    ObservablesTable.put("Weapons", new WeaponsObservable());
    ObservablesTable.put("CPU Usage", new Cpu_UsageObservable());
    ObservablesTable.put("Overhead", new OverheadObservable());
    ObservablesTable.put("Latency Jitter (100 ns)", new JitterObservable());
    ObservablesTable.put("Navigation Latency Jitter (100 ns)", new JitterObservable());
    ObservablesTable.put("Weapons Latency Jitter (100 ns)", new JitterObservable());
    ObservablesTable.put("Missed Deadlines", new DeadlinesObservable());
    ObservablesTable.put("Missed Critical Deadlines", new CriticalDeadlinesObservable());
    ObservablesTable.put("Latency (100 ns)", new LatencyObservable());
    ObservablesTable.put("Weapons Latency (100 ns)", new LatencyObservable());
    ObservablesTable.put("Navigation Latency (100 ns)", new LatencyObservable());
    ObservablesTable.put("High Consumer Persian Recursion", new PersianObservable());
    ObservablesTable.put("Low Consumer Persian Recursion", new PersianObservable());
    ObservablesTable.put("High Consumer Execution Time (100 ns)", new LatencyObservable());
    ObservablesTable.put("Low Consumer Execution Time (100 ns)", new LatencyObservable());
  }
 public java.util.Enumeration getObservablesList() {
   return ObservablesTable.keys();
 }
  public synchronized void update(RtecEventComm.Event event) {

    // System.out.println ("in NavWeapDataHandler.update");

    Any any_value;
    PersianRecursion.Data persian_recursion_data;

    any_value = event.data.any_value;

    if (any_value.type().equal(PersianRecursion.DataHelper.type())) {
      //        System.out.println ("type matched PersianRecursion.Data");

      try {
        persian_recursion_data = PersianRecursion.DataHelper.extract(any_value);
      } catch (Exception e) {
        System.err.println(e.getMessage() + "\nThe stack trace is:\n");
        e.printStackTrace();
        return;
      }

      //       System.out.println ("extracted any");

      if (persian_recursion_data.criticality_level.equals(
              RtecScheduler.Criticality_t.HIGH_CRITICALITY)
          || persian_recursion_data.criticality_level.equals(
              RtecScheduler.Criticality_t.VERY_HIGH_CRITICALITY)) {
        //            System.out.println ("obtaining high priority persian recursion observable");

        PersianObservable pobs_hi =
            (PersianObservable) ObservablesTable.get("High Consumer Persian Recursion");

        //            System.out.println ("updating high priority persian recursion observable");

        pobs_hi.updatePersianData(persian_recursion_data);

        // LatencyObservable lobs_hi =
        // (LatencyObservable) ObservablesTable.get ("High Consumer Execution Time (100 ns)");

        // lobs_hi.updateLatency (persian_recursion_data.computation_time);
      } else {
        //            System.out.println ("obtaining low priority persian recursion observable");
        PersianObservable pobs_lo =
            (PersianObservable) ObservablesTable.get("Low Consumer Persian Recursion");

        //            System.out.println ("obtained low priority persian recursion observable");
        // System.out.println ("updating low priority persian recursion observable");

        pobs_lo.updatePersianData(persian_recursion_data);

        //            System.out.println ("updated low priority persian recursion observable");

        // LatencyObservable lobs_lo =
        // (LatencyObservable) ObservablesTable.get ("Low Consumer Execution Time (100 ns)");

        // lobs_lo.updateLatency (persian_recursion_data.computation_time);
      }

      //        System.out.println ("done updating PersianObservables");

      received_events_++;

      //        System.out.println ("total events received: " + received_events_);
    } else if (any_value.type().equal(NavigationHelper.type())) {
      Navigation navigation_ = NavigationHelper.extract(any_value);

      // if the navigation data structure's update data flag is set,
      // update its scheduling data with actual values from the EC
      if (navigation_.update_data > 0) {
        navigation_.arrival_time = event.header.creation_time;
        navigation_.completion_time = event.header.ec_send_time;
        navigation_.deadline_time += event.header.creation_time;
      }

      NavigationObservable nobs = (NavigationObservable) ObservablesTable.get("Navigation");
      nobs.updateNavigation(navigation_);
      Cpu_UsageObservable cobs = (Cpu_UsageObservable) ObservablesTable.get("CPU Usage");
      cobs.updateCpu_Usage(navigation_.utilization);
      OverheadObservable oobs = (OverheadObservable) ObservablesTable.get("Overhead");
      oobs.updateOverhead(navigation_.overhead);
      JitterObservable jobs = (JitterObservable) ObservablesTable.get("Latency Jitter (100 ns)");
      jobs.updateJitter(
          navigation_.completion_time, navigation_.computation_time, navigation_.arrival_time);
      JitterObservable njobs =
          (JitterObservable) ObservablesTable.get("Navigation Latency Jitter (100 ns)");
      njobs.updateJitter(
          navigation_.completion_time, navigation_.computation_time, navigation_.arrival_time);
      DeadlinesObservable dobs = (DeadlinesObservable) ObservablesTable.get("Missed Deadlines");
      dobs.updateDeadlines(navigation_.deadline_time, navigation_.completion_time);
      CriticalDeadlinesObservable cdobs =
          (CriticalDeadlinesObservable) ObservablesTable.get("Missed Critical Deadlines");
      cdobs.updateDeadlines(
          navigation_.deadline_time, navigation_.completion_time, navigation_.criticality);
      LatencyObservable lobs = (LatencyObservable) ObservablesTable.get("Latency (100 ns)");
      lobs.updateLatency(
          navigation_.completion_time, navigation_.computation_time, navigation_.arrival_time);
      LatencyObservable nlobs =
          (LatencyObservable) ObservablesTable.get("Navigation Latency (100 ns)");
      nlobs.updateLatency(
          navigation_.completion_time, navigation_.computation_time, navigation_.arrival_time);
      received_events_++;
    } else if (any_value.type().equal(WeaponsHelper.type())) {
      Weapons weapons_ = WeaponsHelper.extract(any_value);

      // if the weapons structure's update data flag is set, update
      // itss scheduling data with actual values from the EC
      if (weapons_.update_data > 0) {
        weapons_.arrival_time = event.header.creation_time;
        weapons_.completion_time = event.header.ec_send_time;
        weapons_.deadline_time += event.header.creation_time;
      }

      WeaponsObservable wobs = (WeaponsObservable) ObservablesTable.get("Weapons");
      ;
      wobs.updateWeapons(weapons_);
      Cpu_UsageObservable cobs = (Cpu_UsageObservable) ObservablesTable.get("CPU Usage");
      cobs.updateCpu_Usage(weapons_.utilization);
      OverheadObservable oobs = (OverheadObservable) ObservablesTable.get("Overhead");
      oobs.updateOverhead(weapons_.overhead);
      JitterObservable jobs = (JitterObservable) ObservablesTable.get("Latency Jitter (100 ns)");
      jobs.updateJitter(weapons_.completion_time, weapons_.computation_time, weapons_.arrival_time);
      JitterObservable wjobs =
          (JitterObservable) ObservablesTable.get("Weapons Latency Jitter (100 ns)");
      wjobs.updateJitter(
          weapons_.completion_time, weapons_.computation_time, weapons_.arrival_time);
      DeadlinesObservable dobs = (DeadlinesObservable) ObservablesTable.get("Missed Deadlines");
      dobs.updateDeadlines(weapons_.deadline_time, weapons_.completion_time);
      CriticalDeadlinesObservable cdobs =
          (CriticalDeadlinesObservable) ObservablesTable.get("Missed Critical Deadlines");
      cdobs.updateDeadlines(weapons_.deadline_time, weapons_.completion_time, weapons_.criticality);
      LatencyObservable lobs = (LatencyObservable) ObservablesTable.get("Latency (100 ns)");
      lobs.updateLatency(
          weapons_.completion_time, weapons_.computation_time, weapons_.arrival_time);
      LatencyObservable wlobs =
          (LatencyObservable) ObservablesTable.get("Weapons Latency (100 ns)");
      wlobs.updateLatency(
          weapons_.completion_time, weapons_.computation_time, weapons_.arrival_time);
      received_events_++;
    } else {
      System.out.println("Received wrong type information");

      System.out.println("Received any_value.type (): [" + any_value.type() + "]");

      System.out.println("Expected NavigationHelper.type (): [" + NavigationHelper.type() + "]");

      System.out.println("OR WeaponsHelper.type (): [" + WeaponsHelper.type() + "]");

      System.out.println(
          "OR PersianRecursion.DataHelper.type (): [" + PersianRecursion.DataHelper.type() + "]");
    }
  }