Skip to content
Snippets Groups Projects
Select Git revision
  • v4.0.1_stable
  • master default protected
  • thesis
  • fmics-2021
  • vanadium
  • afadl-2021
  • functional-verification
  • v5.17_devel
  • v5.16.0_stable
  • v5.15_devel
  • v5.14.0_stable
  • v5.13.0_testing
  • v5.13_devel
  • v5.12_stable
  • v5.11_devel
  • v5.10_stable
  • v5.9.0_testing
  • v5.8.2_stable
  • v5.8.1_stable
  • v5.9_devel
  • v5.8.0_stable
  • v5.7.1_testing
  • v5.7.0_testing
  • v5.7_devel
  • v5.6.0_stable
  • v5.5.2_testing
  • v5.5.1_testing
27 results

fg.c

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    fg.c 1.25 KiB
    /** Values boxing for Flight Gear */
    
    #include <string.h>
    #include <caml/alloc.h>
    #include <caml/mlvalues.h>
    #include <caml/memory.h>
    
    #include <math.h>
    #include <time.h>
    
    #include "flight_gear.h"
    
    value fg_sizeof(value unit) {
      return Val_int(sizeof(struct FGNetGUI));
    }
    
    value fg_msg_native(value s, value lat, value lon, value z, value phi, value theta, value psi);
    
    value fg_msg_bytecode(value *argv, int argc) {
      return fg_msg_native(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
    
    }
    
    
    value fg_msg_native(value s, value lat, value lon, value z, value phi, value theta, value psi) {
    
      struct FGNetGUI msg;
      msg.version = FG_NET_GUI_VERSION;
    
      msg.longitude = Double_val(lon);
      msg.latitude = Double_val(lat);
      msg.altitude = Double_val(z) + 50;
      msg.agl = 0.;
      msg.phi = Double_val(phi);
      msg.theta = Double_val(theta);
      msg.psi = - Double_val(psi) + M_PI_2;
    
      msg.vcas = 0.;
      msg.climb_rate = 0.;
    
      msg.num_tanks = 1;
      msg.fuel_quantity[0] = 10.;
    
      msg.cur_time = 3213092700ul;//time(NULL);
      msg.warp = 0;
      msg.ground_elev = 0.;
    
      msg.tuned_freq = 123.45;
      msg.nav_radial = 123.;
      msg.in_range = 1;
      msg.course_deviation_deg = 12.;
      msg.gs_deviation_deg = 123.;
    
      memcpy(String_val(s), (char*)&msg, sizeof(msg));
    
      return Val_unit;
    }