diff --git a/Release/IDL/C909_V1/.vscode/settings.json b/Release/IDL/C909_V1/.vscode/settings.json new file mode 100644 index 0000000..5b12b50 --- /dev/null +++ b/Release/IDL/C909_V1/.vscode/settings.json @@ -0,0 +1,73 @@ +{ + "files.associations": { + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "any": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "bitset": "cpp", + "chrono": "cpp", + "codecvt": "cpp", + "compare": "cpp", + "complex": "cpp", + "concepts": "cpp", + "condition_variable": "cpp", + "cstdint": "cpp", + "deque": "cpp", + "forward_list": "cpp", + "list": "cpp", + "map": "cpp", + "set": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "ratio": "cpp", + "regex": "cpp", + "string": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "ostream": "cpp", + "ranges": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "stop_token": "cpp", + "streambuf": "cpp", + "thread": "cpp", + "cinttypes": "cpp", + "typeindex": "cpp", + "typeinfo": "cpp", + "valarray": "cpp", + "variant": "cpp" + } +} diff --git a/Release/IDL/C909_V1/ATA04/Aerodynamics_heartbeat.hpp b/Release/IDL/C909_V1/ATA04/Aerodynamics_heartbeat.hpp index 5057ce0..47a6731 100644 --- a/Release/IDL/C909_V1/ATA04/Aerodynamics_heartbeat.hpp +++ b/Release/IDL/C909_V1/ATA04/Aerodynamics_heartbeat.hpp @@ -30,7 +30,8 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.aero_model_heartbeat(), model_data->aero_model_heartbeat); + assign_value_set(out_data.aero_model_heartbeat(), model_data->aero_model_heartbeat); + sendOutData(); } protected: DDSType data; diff --git a/Release/IDL/C909_V1/ATA04/Aerodynamics_input.hpp b/Release/IDL/C909_V1/ATA04/Aerodynamics_input.hpp index 8b51c5e..8bf648c 100644 --- a/Release/IDL/C909_V1/ATA04/Aerodynamics_input.hpp +++ b/Release/IDL/C909_V1/ATA04/Aerodynamics_input.hpp @@ -56,33 +56,34 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.l_04_i_aerocomac_alpha_f8(), model_data->l_04_i_aerocomac_alpha_f8); - assign_value_set(data.l_04_i_aerocomac_alpdot_f8(), model_data->l_04_i_aerocomac_alpdot_f8); - assign_value_set(data.l_04_i_aerocomac_beta_f8(), model_data->l_04_i_aerocomac_beta_f8); - assign_value_set(data.l_04_i_aerocomac_press_alt_f8(), model_data->l_04_i_aerocomac_press_alt_f8); - assign_value_set(data.l_04_i_aerocomac_tas_f8(), model_data->l_04_i_aerocomac_tas_f8); - assign_value_set(data.l_04_i_aerocomac_mach_f8(), model_data->l_04_i_aerocomac_mach_f8); - assign_value_set(data.l_04_i_aerocomac_nx_f8(), model_data->l_04_i_aerocomac_nx_f8); - assign_value_set(data.l_04_i_aerocomac_ny_f8(), model_data->l_04_i_aerocomac_ny_f8); - assign_value_set(data.l_04_i_aerocomac_nz_f8(), model_data->l_04_i_aerocomac_nz_f8); - assign_value_set(data.l_04_i_aerocomac_p_f8(), model_data->l_04_i_aerocomac_p_f8); - assign_value_set(data.l_04_i_aerocomac_q_f8(), model_data->l_04_i_aerocomac_q_f8); - assign_value_set(data.l_04_i_aerocomac_r_f8(), model_data->l_04_i_aerocomac_r_f8); - assign_value_set(data.l_04_i_aerocomac_qbar_f8(), model_data->l_04_i_aerocomac_qbar_f8); - assign_value_set(data.l_04_i_aerocomac_blcg_f8(), model_data->l_04_i_aerocomac_blcg_f8); - assign_value_set(data.l_04_i_aerocomac_bscg_f8(), model_data->l_04_i_aerocomac_bscg_f8); - assign_value_set(data.l_04_i_aerocomac_wlcg_f8(), model_data->l_04_i_aerocomac_wlcg_f8); - assign_value_set(data.l_04_i_aerocomac_ail_f8(), model_data->l_04_i_aerocomac_ail_f8); - assign_value_set(data.l_04_i_aerocomac_elv_f8(), model_data->l_04_i_aerocomac_elv_f8); - assign_value_set(data.l_04_i_aerocomac_rud_f8(), model_data->l_04_i_aerocomac_rud_f8); - assign_value_set(data.l_04_i_aerocomac_stab_f8(), model_data->l_04_i_aerocomac_stab_f8); - assign_value_set(data.l_04_i_aerocomac_gear_f8(), model_data->l_04_i_aerocomac_gear_f8); - assign_value_set(data.l_04_i_aerocomac_flap_f8(), model_data->l_04_i_aerocomac_flap_f8); - assign_value_set(data.l_04_i_aerocomac_slat_f8(), model_data->l_04_i_aerocomac_slat_f8); - assign_value_set(data.l_04_i_aerocomac_spl_f8(), model_data->l_04_i_aerocomac_spl_f8); - assign_value_set(data.l_04_i_aerocomac_tnet_f8(), model_data->l_04_i_aerocomac_tnet_f8); - assign_value_set(data.l_04_i_aerocomac_kice_f8(), model_data->l_04_i_aerocomac_kice_f8); - assign_value_set(data.l_04_i_aerocomac_alt_agl_f8(), model_data->l_04_i_aerocomac_alt_agl_f8); + assign_value_set(out_data.l_04_i_aerocomac_alpha_f8(), model_data->l_04_i_aerocomac_alpha_f8); + assign_value_set(out_data.l_04_i_aerocomac_alpdot_f8(), model_data->l_04_i_aerocomac_alpdot_f8); + assign_value_set(out_data.l_04_i_aerocomac_beta_f8(), model_data->l_04_i_aerocomac_beta_f8); + assign_value_set(out_data.l_04_i_aerocomac_press_alt_f8(), model_data->l_04_i_aerocomac_press_alt_f8); + assign_value_set(out_data.l_04_i_aerocomac_tas_f8(), model_data->l_04_i_aerocomac_tas_f8); + assign_value_set(out_data.l_04_i_aerocomac_mach_f8(), model_data->l_04_i_aerocomac_mach_f8); + assign_value_set(out_data.l_04_i_aerocomac_nx_f8(), model_data->l_04_i_aerocomac_nx_f8); + assign_value_set(out_data.l_04_i_aerocomac_ny_f8(), model_data->l_04_i_aerocomac_ny_f8); + assign_value_set(out_data.l_04_i_aerocomac_nz_f8(), model_data->l_04_i_aerocomac_nz_f8); + assign_value_set(out_data.l_04_i_aerocomac_p_f8(), model_data->l_04_i_aerocomac_p_f8); + assign_value_set(out_data.l_04_i_aerocomac_q_f8(), model_data->l_04_i_aerocomac_q_f8); + assign_value_set(out_data.l_04_i_aerocomac_r_f8(), model_data->l_04_i_aerocomac_r_f8); + assign_value_set(out_data.l_04_i_aerocomac_qbar_f8(), model_data->l_04_i_aerocomac_qbar_f8); + assign_value_set(out_data.l_04_i_aerocomac_blcg_f8(), model_data->l_04_i_aerocomac_blcg_f8); + assign_value_set(out_data.l_04_i_aerocomac_bscg_f8(), model_data->l_04_i_aerocomac_bscg_f8); + assign_value_set(out_data.l_04_i_aerocomac_wlcg_f8(), model_data->l_04_i_aerocomac_wlcg_f8); + assign_value_set(out_data.l_04_i_aerocomac_ail_f8(), model_data->l_04_i_aerocomac_ail_f8); + assign_value_set(out_data.l_04_i_aerocomac_elv_f8(), model_data->l_04_i_aerocomac_elv_f8); + assign_value_set(out_data.l_04_i_aerocomac_rud_f8(), model_data->l_04_i_aerocomac_rud_f8); + assign_value_set(out_data.l_04_i_aerocomac_stab_f8(), model_data->l_04_i_aerocomac_stab_f8); + assign_value_set(out_data.l_04_i_aerocomac_gear_f8(), model_data->l_04_i_aerocomac_gear_f8); + assign_value_set(out_data.l_04_i_aerocomac_flap_f8(), model_data->l_04_i_aerocomac_flap_f8); + assign_value_set(out_data.l_04_i_aerocomac_slat_f8(), model_data->l_04_i_aerocomac_slat_f8); + assign_value_set(out_data.l_04_i_aerocomac_spl_f8(), model_data->l_04_i_aerocomac_spl_f8); + assign_value_set(out_data.l_04_i_aerocomac_tnet_f8(), model_data->l_04_i_aerocomac_tnet_f8); + assign_value_set(out_data.l_04_i_aerocomac_kice_f8(), model_data->l_04_i_aerocomac_kice_f8); + assign_value_set(out_data.l_04_i_aerocomac_alt_agl_f8(), model_data->l_04_i_aerocomac_alt_agl_f8); + sendOutData(); } protected: DDSType data; diff --git a/Release/IDL/C909_V1/ATA04/Aerodynamics_output.hpp b/Release/IDL/C909_V1/ATA04/Aerodynamics_output.hpp index 0fa91c6..e913724 100644 --- a/Release/IDL/C909_V1/ATA04/Aerodynamics_output.hpp +++ b/Release/IDL/C909_V1/ATA04/Aerodynamics_output.hpp @@ -42,19 +42,20 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.l_04_o_aerocomac_fxb_f8(), model_data->l_04_o_aerocomac_fxb_f8); - assign_value_set(data.l_04_o_aerocomac_fyb_f8(), model_data->l_04_o_aerocomac_fyb_f8); - assign_value_set(data.l_04_o_aerocomac_fzb_f8(), model_data->l_04_o_aerocomac_fzb_f8); - assign_value_set(data.l_04_o_aerocomac_mxb_f8(), model_data->l_04_o_aerocomac_mxb_f8); - assign_value_set(data.l_04_o_aerocomac_myb_f8(), model_data->l_04_o_aerocomac_myb_f8); - assign_value_set(data.l_04_o_aerocomac_mzb_f8(), model_data->l_04_o_aerocomac_mzb_f8); - assign_value_set(data.l_04_o_aerocomac_cls_f8(), model_data->l_04_o_aerocomac_cls_f8); - assign_value_set(data.l_04_o_aerocomac_cl_f8(), model_data->l_04_o_aerocomac_cl_f8); - assign_value_set(data.l_04_o_aerocomac_cd_f8(), model_data->l_04_o_aerocomac_cd_f8); - assign_value_set(data.l_04_o_aerocomac_cm_f8(), model_data->l_04_o_aerocomac_cm_f8); - assign_value_set(data.l_04_o_aerocomac_cr_f8(), model_data->l_04_o_aerocomac_cr_f8); - assign_value_set(data.l_04_o_aerocomac_cy_f8(), model_data->l_04_o_aerocomac_cy_f8); - assign_value_set(data.l_04_o_aerocomac_cn_f8(), model_data->l_04_o_aerocomac_cn_f8); + assign_value_set(out_data.l_04_o_aerocomac_fxb_f8(), model_data->l_04_o_aerocomac_fxb_f8); + assign_value_set(out_data.l_04_o_aerocomac_fyb_f8(), model_data->l_04_o_aerocomac_fyb_f8); + assign_value_set(out_data.l_04_o_aerocomac_fzb_f8(), model_data->l_04_o_aerocomac_fzb_f8); + assign_value_set(out_data.l_04_o_aerocomac_mxb_f8(), model_data->l_04_o_aerocomac_mxb_f8); + assign_value_set(out_data.l_04_o_aerocomac_myb_f8(), model_data->l_04_o_aerocomac_myb_f8); + assign_value_set(out_data.l_04_o_aerocomac_mzb_f8(), model_data->l_04_o_aerocomac_mzb_f8); + assign_value_set(out_data.l_04_o_aerocomac_cls_f8(), model_data->l_04_o_aerocomac_cls_f8); + assign_value_set(out_data.l_04_o_aerocomac_cl_f8(), model_data->l_04_o_aerocomac_cl_f8); + assign_value_set(out_data.l_04_o_aerocomac_cd_f8(), model_data->l_04_o_aerocomac_cd_f8); + assign_value_set(out_data.l_04_o_aerocomac_cm_f8(), model_data->l_04_o_aerocomac_cm_f8); + assign_value_set(out_data.l_04_o_aerocomac_cr_f8(), model_data->l_04_o_aerocomac_cr_f8); + assign_value_set(out_data.l_04_o_aerocomac_cy_f8(), model_data->l_04_o_aerocomac_cy_f8); + assign_value_set(out_data.l_04_o_aerocomac_cn_f8(), model_data->l_04_o_aerocomac_cn_f8); + sendOutData(); } protected: DDSType data; diff --git a/Release/IDL/C909_V1/ATA04/GroundHandling_heartbeat.hpp b/Release/IDL/C909_V1/ATA04/GroundHandling_heartbeat.hpp index c55294c..0b72ca2 100644 --- a/Release/IDL/C909_V1/ATA04/GroundHandling_heartbeat.hpp +++ b/Release/IDL/C909_V1/ATA04/GroundHandling_heartbeat.hpp @@ -30,7 +30,8 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.groundhandling_model_heartbeat(), model_data->groundhandling_model_heartbeat); + assign_value_set(out_data.groundhandling_model_heartbeat(), model_data->groundhandling_model_heartbeat); + sendOutData(); } protected: DDSType data; diff --git a/Release/IDL/C909_V1/ATA04/GroundHandling_input.hpp b/Release/IDL/C909_V1/ATA04/GroundHandling_input.hpp index cc6cc10..13a19ec 100644 --- a/Release/IDL/C909_V1/ATA04/GroundHandling_input.hpp +++ b/Release/IDL/C909_V1/ATA04/GroundHandling_input.hpp @@ -68,45 +68,46 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.l_04_i_gdcomac_frz_l1(), model_data->l_04_i_gdcomac_frz_l1); - assign_value_set(data.l_04_i_gdcomac_chocks_l1(), model_data->l_04_i_gdcomac_chocks_l1); - assign_value_set(data.l_04_i_gdcomac_alt_agl_f8(), model_data->l_04_i_gdcomac_alt_agl_f8); - assign_value_set(data.l_04_i_gdcomac_frzflt_l1(), model_data->l_04_i_gdcomac_frzflt_l1); - assign_value_set(data.l_04_i_gdcomac_p_f8(), model_data->l_04_i_gdcomac_p_f8); - assign_value_set(data.l_04_i_gdcomac_q_f8(), model_data->l_04_i_gdcomac_q_f8); - assign_value_set(data.l_04_i_gdcomac_r_f8(), model_data->l_04_i_gdcomac_r_f8); - assign_value_set(data.l_04_i_gdcomac_ug_f8(), model_data->l_04_i_gdcomac_ug_f8); - assign_value_set(data.l_04_i_gdcomac_vg_f8(), model_data->l_04_i_gdcomac_vg_f8); - assign_value_set(data.l_04_i_gdcomac_wg_f8(), model_data->l_04_i_gdcomac_wg_f8); - assign_value_set(data.l_04_i_gdcomac_blcg_f8(), model_data->l_04_i_gdcomac_blcg_f8); - assign_value_set(data.l_04_i_gdcomac_bscg_f8(), model_data->l_04_i_gdcomac_bscg_f8); - assign_value_set(data.l_04_i_gdcomac_wlcg_f8(), model_data->l_04_i_gdcomac_wlcg_f8); - assign_value_set(data.l_04_i_gdcomac_pb_active_l1(), model_data->l_04_i_gdcomac_pb_active_l1); - assign_value_set(data.l_04_i_gdcomac_brake_torq_f8(), model_data->l_04_i_gdcomac_brake_torq_f8); - assign_value_set(data.l_04_i_gdcomac_gear_f8(), model_data->l_04_i_gdcomac_gear_f8); - assign_value_set(data.l_04_i_gdcomac_gsteer_f8(), model_data->l_04_i_gdcomac_gsteer_f8); - assign_value_set(data.l_04_i_gdcomac_tire_pres_f8(), model_data->l_04_i_gdcomac_tire_pres_f8); - assign_value_set(data.l_04_i_gdcomac_onjax_l1(), model_data->l_04_i_gdcomac_onjax_l1); - assign_value_set(data.l_04_i_gdcomac_contdep_f8(), model_data->l_04_i_gdcomac_contdep_f8); - assign_value_set(data.l_04_i_gdcomac_thetag_f8(), model_data->l_04_i_gdcomac_thetag_f8); - assign_value_set(data.l_04_i_gdcomac_phig_f8(), model_data->l_04_i_gdcomac_phig_f8); - assign_value_set(data.l_04_i_gdcomac_rwyrgh_i2(), model_data->l_04_i_gdcomac_rwyrgh_i2); - assign_value_set(data.l_04_i_gdcomac_rwyhdg_f8(), model_data->l_04_i_gdcomac_rwyhdg_f8); - assign_value_set(data.l_04_i_gdcomac_reset_braketemp_l1(), model_data->l_04_i_gdcomac_reset_braketemp_l1); - assign_value_set(data.l_04_i_gdcomac_reset_tirepress_l1(), model_data->l_04_i_gdcomac_reset_tirepress_l1); - assign_value_set(data.l_04_i_gdcomac_temp_c_f8(), model_data->l_04_i_gdcomac_temp_c_f8); - assign_value_set(data.l_04_i_gdcomac_brake_temp_f8(), model_data->l_04_i_gdcomac_brake_temp_f8); - assign_value_set(data.l_04_i_gdcomac_tire_tburst_l1(), model_data->l_04_i_gdcomac_tire_tburst_l1); - assign_value_set(data.l_04_i_gdcomac_tire_tflat_l1(), model_data->l_04_i_gdcomac_tire_tflat_l1); - assign_value_set(data.l_04_i_gdcomac_brk_reset_tpres_l1(), model_data->l_04_i_gdcomac_brk_reset_tpres_l1); - assign_value_set(data.l_04_i_gdcomac_rcon_ci_f8(), model_data->l_04_i_gdcomac_rcon_ci_f8); - assign_value_set(data.l_04_i_gdcomac_pb_towforce_f8(), model_data->l_04_i_gdcomac_pb_towforce_f8); - assign_value_set(data.l_04_i_gdcomac_gsteer_state_i4(), model_data->l_04_i_gdcomac_gsteer_state_i4); - assign_value_set(data.l_04_i_gdcomac_trim_active_l1(), model_data->l_04_i_gdcomac_trim_active_l1); - assign_value_set(data.l_04_i_gdcomac_phi_deg_f8(), model_data->l_04_i_gdcomac_phi_deg_f8); - assign_value_set(data.l_04_i_gdcomac_theta_deg_f8(), model_data->l_04_i_gdcomac_theta_deg_f8); - assign_value_set(data.l_04_i_gdcomac_psi_deg_f8(), model_data->l_04_i_gdcomac_psi_deg_f8); - assign_value_set(data.l_04_i_gdcomac_resetint_l1(), model_data->l_04_i_gdcomac_resetint_l1); + assign_value_set(out_data.l_04_i_gdcomac_frz_l1(), model_data->l_04_i_gdcomac_frz_l1); + assign_value_set(out_data.l_04_i_gdcomac_chocks_l1(), model_data->l_04_i_gdcomac_chocks_l1); + assign_value_set(out_data.l_04_i_gdcomac_alt_agl_f8(), model_data->l_04_i_gdcomac_alt_agl_f8); + assign_value_set(out_data.l_04_i_gdcomac_frzflt_l1(), model_data->l_04_i_gdcomac_frzflt_l1); + assign_value_set(out_data.l_04_i_gdcomac_p_f8(), model_data->l_04_i_gdcomac_p_f8); + assign_value_set(out_data.l_04_i_gdcomac_q_f8(), model_data->l_04_i_gdcomac_q_f8); + assign_value_set(out_data.l_04_i_gdcomac_r_f8(), model_data->l_04_i_gdcomac_r_f8); + assign_value_set(out_data.l_04_i_gdcomac_ug_f8(), model_data->l_04_i_gdcomac_ug_f8); + assign_value_set(out_data.l_04_i_gdcomac_vg_f8(), model_data->l_04_i_gdcomac_vg_f8); + assign_value_set(out_data.l_04_i_gdcomac_wg_f8(), model_data->l_04_i_gdcomac_wg_f8); + assign_value_set(out_data.l_04_i_gdcomac_blcg_f8(), model_data->l_04_i_gdcomac_blcg_f8); + assign_value_set(out_data.l_04_i_gdcomac_bscg_f8(), model_data->l_04_i_gdcomac_bscg_f8); + assign_value_set(out_data.l_04_i_gdcomac_wlcg_f8(), model_data->l_04_i_gdcomac_wlcg_f8); + assign_value_set(out_data.l_04_i_gdcomac_pb_active_l1(), model_data->l_04_i_gdcomac_pb_active_l1); + assign_value_set(out_data.l_04_i_gdcomac_brake_torq_f8(), model_data->l_04_i_gdcomac_brake_torq_f8); + assign_value_set(out_data.l_04_i_gdcomac_gear_f8(), model_data->l_04_i_gdcomac_gear_f8); + assign_value_set(out_data.l_04_i_gdcomac_gsteer_f8(), model_data->l_04_i_gdcomac_gsteer_f8); + assign_value_set(out_data.l_04_i_gdcomac_tire_pres_f8(), model_data->l_04_i_gdcomac_tire_pres_f8); + assign_value_set(out_data.l_04_i_gdcomac_onjax_l1(), model_data->l_04_i_gdcomac_onjax_l1); + assign_value_set(out_data.l_04_i_gdcomac_contdep_f8(), model_data->l_04_i_gdcomac_contdep_f8); + assign_value_set(out_data.l_04_i_gdcomac_thetag_f8(), model_data->l_04_i_gdcomac_thetag_f8); + assign_value_set(out_data.l_04_i_gdcomac_phig_f8(), model_data->l_04_i_gdcomac_phig_f8); + assign_value_set(out_data.l_04_i_gdcomac_rwyrgh_i2(), model_data->l_04_i_gdcomac_rwyrgh_i2); + assign_value_set(out_data.l_04_i_gdcomac_rwyhdg_f8(), model_data->l_04_i_gdcomac_rwyhdg_f8); + assign_value_set(out_data.l_04_i_gdcomac_reset_braketemp_l1(), model_data->l_04_i_gdcomac_reset_braketemp_l1); + assign_value_set(out_data.l_04_i_gdcomac_reset_tirepress_l1(), model_data->l_04_i_gdcomac_reset_tirepress_l1); + assign_value_set(out_data.l_04_i_gdcomac_temp_c_f8(), model_data->l_04_i_gdcomac_temp_c_f8); + assign_value_set(out_data.l_04_i_gdcomac_brake_temp_f8(), model_data->l_04_i_gdcomac_brake_temp_f8); + assign_value_set(out_data.l_04_i_gdcomac_tire_tburst_l1(), model_data->l_04_i_gdcomac_tire_tburst_l1); + assign_value_set(out_data.l_04_i_gdcomac_tire_tflat_l1(), model_data->l_04_i_gdcomac_tire_tflat_l1); + assign_value_set(out_data.l_04_i_gdcomac_brk_reset_tpres_l1(), model_data->l_04_i_gdcomac_brk_reset_tpres_l1); + assign_value_set(out_data.l_04_i_gdcomac_rcon_ci_f8(), model_data->l_04_i_gdcomac_rcon_ci_f8); + assign_value_set(out_data.l_04_i_gdcomac_pb_towforce_f8(), model_data->l_04_i_gdcomac_pb_towforce_f8); + assign_value_set(out_data.l_04_i_gdcomac_gsteer_state_i4(), model_data->l_04_i_gdcomac_gsteer_state_i4); + assign_value_set(out_data.l_04_i_gdcomac_trim_active_l1(), model_data->l_04_i_gdcomac_trim_active_l1); + assign_value_set(out_data.l_04_i_gdcomac_phi_deg_f8(), model_data->l_04_i_gdcomac_phi_deg_f8); + assign_value_set(out_data.l_04_i_gdcomac_theta_deg_f8(), model_data->l_04_i_gdcomac_theta_deg_f8); + assign_value_set(out_data.l_04_i_gdcomac_psi_deg_f8(), model_data->l_04_i_gdcomac_psi_deg_f8); + assign_value_set(out_data.l_04_i_gdcomac_resetint_l1(), model_data->l_04_i_gdcomac_resetint_l1); + sendOutData(); } protected: DDSType data; diff --git a/Release/IDL/C909_V1/ATA04/GroundHandling_output.hpp b/Release/IDL/C909_V1/ATA04/GroundHandling_output.hpp index e3e78cd..77ec560 100644 --- a/Release/IDL/C909_V1/ATA04/GroundHandling_output.hpp +++ b/Release/IDL/C909_V1/ATA04/GroundHandling_output.hpp @@ -63,40 +63,41 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.l_04_o_gdcomac_frz_l1(), model_data->l_04_o_gdcomac_frz_l1); - assign_value_set(data.l_04_o_gdcomac_ac_on_ground_l1(), model_data->l_04_o_gdcomac_ac_on_ground_l1); - assign_value_set(data.l_04_o_gdcomac_ac_stationary_f8(), model_data->l_04_o_gdcomac_ac_stationary_f8); - assign_value_set(data.l_04_o_gdcomac_alt_tire_f8(), model_data->l_04_o_gdcomac_alt_tire_f8); - assign_value_set(data.l_04_o_gdcomac_zcg_to_tire_f8(), model_data->l_04_o_gdcomac_zcg_to_tire_f8); - assign_value_set(data.l_04_o_gdcomac_fxb_f8(), model_data->l_04_o_gdcomac_fxb_f8); - assign_value_set(data.l_04_o_gdcomac_fyb_f8(), model_data->l_04_o_gdcomac_fyb_f8); - assign_value_set(data.l_04_o_gdcomac_fzb_f8(), model_data->l_04_o_gdcomac_fzb_f8); - assign_value_set(data.l_04_o_gdcomac_mxb_f8(), model_data->l_04_o_gdcomac_mxb_f8); - assign_value_set(data.l_04_o_gdcomac_myb_f8(), model_data->l_04_o_gdcomac_myb_f8); - assign_value_set(data.l_04_o_gdcomac_mzb_f8(), model_data->l_04_o_gdcomac_mzb_f8); - assign_value_set(data.l_04_o_gdcomac_fygs_f8(), model_data->l_04_o_gdcomac_fygs_f8); - assign_value_set(data.l_04_o_gdcomac_mzgs_f8(), model_data->l_04_o_gdcomac_mzgs_f8); - assign_value_set(data.l_04_o_gdcomac_mu_f8(), model_data->l_04_o_gdcomac_mu_f8); - assign_value_set(data.l_04_o_gdcomac_dstroke_f8(), model_data->l_04_o_gdcomac_dstroke_f8); - assign_value_set(data.l_04_o_gdcomac_sr_f8(), model_data->l_04_o_gdcomac_sr_f8); - assign_value_set(data.l_04_o_gdcomac_sy_f8(), model_data->l_04_o_gdcomac_sy_f8); - assign_value_set(data.l_04_o_gdcomac_sx_f8(), model_data->l_04_o_gdcomac_sx_f8); - assign_value_set(data.l_04_o_gdcomac_xft_f8(), model_data->l_04_o_gdcomac_xft_f8); - assign_value_set(data.l_04_o_gdcomac_yft_f8(), model_data->l_04_o_gdcomac_yft_f8); - assign_value_set(data.l_04_o_gdcomac_zft_f8(), model_data->l_04_o_gdcomac_zft_f8); - assign_value_set(data.l_04_o_gdcomac_distngrxcg_f8(), model_data->l_04_o_gdcomac_distngrxcg_f8); - assign_value_set(data.l_04_o_gdcomac_distmgrxcg_f8(), model_data->l_04_o_gdcomac_distmgrxcg_f8); - assign_value_set(data.l_04_o_gdcomac_distmgrzcg_f8(), model_data->l_04_o_gdcomac_distmgrzcg_f8); - assign_value_set(data.l_04_o_gdcomac_tire_vel_f8(), model_data->l_04_o_gdcomac_tire_vel_f8); - assign_value_set(data.l_04_o_gdcomac_tire_burst_l1(), model_data->l_04_o_gdcomac_tire_burst_l1); - assign_value_set(data.l_04_o_gdcomac_tire_temp_f8(), model_data->l_04_o_gdcomac_tire_temp_f8); - assign_value_set(data.l_04_o_gdcomac_wow_l1(), model_data->l_04_o_gdcomac_wow_l1); - assign_value_set(data.l_04_o_gdcomac_utirew_f8(), model_data->l_04_o_gdcomac_utirew_f8); - assign_value_set(data.l_04_o_gdcomac_vtirew_f8(), model_data->l_04_o_gdcomac_vtirew_f8); - assign_value_set(data.l_04_o_gdcomac_whl_omega_f8(), model_data->l_04_o_gdcomac_whl_omega_f8); - assign_value_set(data.l_04_o_gdcomac_dstruc_f8(), model_data->l_04_o_gdcomac_dstruc_f8); - assign_value_set(data.l_04_o_gdcomac_wor_par_f8(), model_data->l_04_o_gdcomac_wor_par_f8); - assign_value_set(data.l_04_o_gdcomac_nd_f8(), model_data->l_04_o_gdcomac_nd_f8); + assign_value_set(out_data.l_04_o_gdcomac_frz_l1(), model_data->l_04_o_gdcomac_frz_l1); + assign_value_set(out_data.l_04_o_gdcomac_ac_on_ground_l1(), model_data->l_04_o_gdcomac_ac_on_ground_l1); + assign_value_set(out_data.l_04_o_gdcomac_ac_stationary_f8(), model_data->l_04_o_gdcomac_ac_stationary_f8); + assign_value_set(out_data.l_04_o_gdcomac_alt_tire_f8(), model_data->l_04_o_gdcomac_alt_tire_f8); + assign_value_set(out_data.l_04_o_gdcomac_zcg_to_tire_f8(), model_data->l_04_o_gdcomac_zcg_to_tire_f8); + assign_value_set(out_data.l_04_o_gdcomac_fxb_f8(), model_data->l_04_o_gdcomac_fxb_f8); + assign_value_set(out_data.l_04_o_gdcomac_fyb_f8(), model_data->l_04_o_gdcomac_fyb_f8); + assign_value_set(out_data.l_04_o_gdcomac_fzb_f8(), model_data->l_04_o_gdcomac_fzb_f8); + assign_value_set(out_data.l_04_o_gdcomac_mxb_f8(), model_data->l_04_o_gdcomac_mxb_f8); + assign_value_set(out_data.l_04_o_gdcomac_myb_f8(), model_data->l_04_o_gdcomac_myb_f8); + assign_value_set(out_data.l_04_o_gdcomac_mzb_f8(), model_data->l_04_o_gdcomac_mzb_f8); + assign_value_set(out_data.l_04_o_gdcomac_fygs_f8(), model_data->l_04_o_gdcomac_fygs_f8); + assign_value_set(out_data.l_04_o_gdcomac_mzgs_f8(), model_data->l_04_o_gdcomac_mzgs_f8); + assign_value_set(out_data.l_04_o_gdcomac_mu_f8(), model_data->l_04_o_gdcomac_mu_f8); + assign_value_set(out_data.l_04_o_gdcomac_dstroke_f8(), model_data->l_04_o_gdcomac_dstroke_f8); + assign_value_set(out_data.l_04_o_gdcomac_sr_f8(), model_data->l_04_o_gdcomac_sr_f8); + assign_value_set(out_data.l_04_o_gdcomac_sy_f8(), model_data->l_04_o_gdcomac_sy_f8); + assign_value_set(out_data.l_04_o_gdcomac_sx_f8(), model_data->l_04_o_gdcomac_sx_f8); + assign_value_set(out_data.l_04_o_gdcomac_xft_f8(), model_data->l_04_o_gdcomac_xft_f8); + assign_value_set(out_data.l_04_o_gdcomac_yft_f8(), model_data->l_04_o_gdcomac_yft_f8); + assign_value_set(out_data.l_04_o_gdcomac_zft_f8(), model_data->l_04_o_gdcomac_zft_f8); + assign_value_set(out_data.l_04_o_gdcomac_distngrxcg_f8(), model_data->l_04_o_gdcomac_distngrxcg_f8); + assign_value_set(out_data.l_04_o_gdcomac_distmgrxcg_f8(), model_data->l_04_o_gdcomac_distmgrxcg_f8); + assign_value_set(out_data.l_04_o_gdcomac_distmgrzcg_f8(), model_data->l_04_o_gdcomac_distmgrzcg_f8); + assign_value_set(out_data.l_04_o_gdcomac_tire_vel_f8(), model_data->l_04_o_gdcomac_tire_vel_f8); + assign_value_set(out_data.l_04_o_gdcomac_tire_burst_l1(), model_data->l_04_o_gdcomac_tire_burst_l1); + assign_value_set(out_data.l_04_o_gdcomac_tire_temp_f8(), model_data->l_04_o_gdcomac_tire_temp_f8); + assign_value_set(out_data.l_04_o_gdcomac_wow_l1(), model_data->l_04_o_gdcomac_wow_l1); + assign_value_set(out_data.l_04_o_gdcomac_utirew_f8(), model_data->l_04_o_gdcomac_utirew_f8); + assign_value_set(out_data.l_04_o_gdcomac_vtirew_f8(), model_data->l_04_o_gdcomac_vtirew_f8); + assign_value_set(out_data.l_04_o_gdcomac_whl_omega_f8(), model_data->l_04_o_gdcomac_whl_omega_f8); + assign_value_set(out_data.l_04_o_gdcomac_dstruc_f8(), model_data->l_04_o_gdcomac_dstruc_f8); + assign_value_set(out_data.l_04_o_gdcomac_wor_par_f8(), model_data->l_04_o_gdcomac_wor_par_f8); + assign_value_set(out_data.l_04_o_gdcomac_nd_f8(), model_data->l_04_o_gdcomac_nd_f8); + sendOutData(); } protected: DDSType data; diff --git a/Release/IDL/C909_V1/ATA04/WeightBalance_heartbeat.hpp b/Release/IDL/C909_V1/ATA04/WeightBalance_heartbeat.hpp index 833306c..98969f1 100644 --- a/Release/IDL/C909_V1/ATA04/WeightBalance_heartbeat.hpp +++ b/Release/IDL/C909_V1/ATA04/WeightBalance_heartbeat.hpp @@ -30,7 +30,8 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.weightbody_model_heartbeat(), model_data->weightbody_model_heartbeat); + assign_value_set(out_data.weightbody_model_heartbeat(), model_data->weightbody_model_heartbeat); + sendOutData(); } protected: DDSType data; diff --git a/Release/IDL/C909_V1/ATA04/WeightBalance_input.hpp b/Release/IDL/C909_V1/ATA04/WeightBalance_input.hpp index 4848025..b5c0651 100644 --- a/Release/IDL/C909_V1/ATA04/WeightBalance_input.hpp +++ b/Release/IDL/C909_V1/ATA04/WeightBalance_input.hpp @@ -52,29 +52,30 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.l_04_i_wbcomac_theta_deg_f8(), model_data->l_04_i_wbcomac_theta_deg_f8); - assign_value_set(data.l_04_i_wbcomac_gear_mode_l1(), model_data->l_04_i_wbcomac_gear_mode_l1); - assign_value_set(data.l_04_i_wbcomac_acset_gw_f8(), model_data->l_04_i_wbcomac_acset_gw_f8); - assign_value_set(data.l_04_i_wbcomac_acset_cg_f8(), model_data->l_04_i_wbcomac_acset_cg_f8); - assign_value_set(data.l_04_i_wbcomac_acset_tankfuel_f4(), model_data->l_04_i_wbcomac_acset_tankfuel_f4); - assign_value_set(data.l_04_i_wbcomac_acset_totfuel_f8(), model_data->l_04_i_wbcomac_acset_totfuel_f8); - assign_value_set(data.l_04_i_wbcomac_acset_zfw_f8(), model_data->l_04_i_wbcomac_acset_zfw_f8); - assign_value_set(data.l_04_i_wbcomac_acset_zfwcg_f8(), model_data->l_04_i_wbcomac_acset_zfwcg_f8); - assign_value_set(data.l_04_i_wbcomac_eng_efsep_l1(), model_data->l_04_i_wbcomac_eng_efsep_l1); - assign_value_set(data.l_04_i_wbcomac_fuel_f8(), model_data->l_04_i_wbcomac_fuel_f8); - assign_value_set(data.l_04_i_wbcomac_gear_avg_f8(), model_data->l_04_i_wbcomac_gear_avg_f8); - assign_value_set(data.l_04_i_wbcomac_kice_f8(), model_data->l_04_i_wbcomac_kice_f8); - assign_value_set(data.l_04_i_wbcomac_bycglim_l1(), model_data->l_04_i_wbcomac_bycglim_l1); - assign_value_set(data.l_04_i_wbcomac_bygwlim_l1(), model_data->l_04_i_wbcomac_bygwlim_l1); - assign_value_set(data.l_04_i_wbcomac_frz_l1(), model_data->l_04_i_wbcomac_frz_l1); - assign_value_set(data.l_04_i_wbcomac_zcgfrz_l1(), model_data->l_04_i_wbcomac_zcgfrz_l1); - assign_value_set(data.l_04_i_wbcomac_zcgfrz_grfx_l1(), model_data->l_04_i_wbcomac_zcgfrz_grfx_l1); - assign_value_set(data.l_04_i_wbcomac_ycgfrz_l1(), model_data->l_04_i_wbcomac_ycgfrz_l1); - assign_value_set(data.l_04_i_wbcomac_inertfrz_l1(), model_data->l_04_i_wbcomac_inertfrz_l1); - assign_value_set(data.l_04_i_wbcomac_potreq_gw_f8(), model_data->l_04_i_wbcomac_potreq_gw_f8); - assign_value_set(data.l_04_i_wbcomac_potreq_gwcg_f8(), model_data->l_04_i_wbcomac_potreq_gwcg_f8); - assign_value_set(data.l_04_i_wbcomac_phi_deg_f8(), model_data->l_04_i_wbcomac_phi_deg_f8); - assign_value_set(data.l_04_i_wbcomac_psi_deg_f8(), model_data->l_04_i_wbcomac_psi_deg_f8); + assign_value_set(out_data.l_04_i_wbcomac_theta_deg_f8(), model_data->l_04_i_wbcomac_theta_deg_f8); + assign_value_set(out_data.l_04_i_wbcomac_gear_mode_l1(), model_data->l_04_i_wbcomac_gear_mode_l1); + assign_value_set(out_data.l_04_i_wbcomac_acset_gw_f8(), model_data->l_04_i_wbcomac_acset_gw_f8); + assign_value_set(out_data.l_04_i_wbcomac_acset_cg_f8(), model_data->l_04_i_wbcomac_acset_cg_f8); + assign_value_set(out_data.l_04_i_wbcomac_acset_tankfuel_f4(), model_data->l_04_i_wbcomac_acset_tankfuel_f4); + assign_value_set(out_data.l_04_i_wbcomac_acset_totfuel_f8(), model_data->l_04_i_wbcomac_acset_totfuel_f8); + assign_value_set(out_data.l_04_i_wbcomac_acset_zfw_f8(), model_data->l_04_i_wbcomac_acset_zfw_f8); + assign_value_set(out_data.l_04_i_wbcomac_acset_zfwcg_f8(), model_data->l_04_i_wbcomac_acset_zfwcg_f8); + assign_value_set(out_data.l_04_i_wbcomac_eng_efsep_l1(), model_data->l_04_i_wbcomac_eng_efsep_l1); + assign_value_set(out_data.l_04_i_wbcomac_fuel_f8(), model_data->l_04_i_wbcomac_fuel_f8); + assign_value_set(out_data.l_04_i_wbcomac_gear_avg_f8(), model_data->l_04_i_wbcomac_gear_avg_f8); + assign_value_set(out_data.l_04_i_wbcomac_kice_f8(), model_data->l_04_i_wbcomac_kice_f8); + assign_value_set(out_data.l_04_i_wbcomac_bycglim_l1(), model_data->l_04_i_wbcomac_bycglim_l1); + assign_value_set(out_data.l_04_i_wbcomac_bygwlim_l1(), model_data->l_04_i_wbcomac_bygwlim_l1); + assign_value_set(out_data.l_04_i_wbcomac_frz_l1(), model_data->l_04_i_wbcomac_frz_l1); + assign_value_set(out_data.l_04_i_wbcomac_zcgfrz_l1(), model_data->l_04_i_wbcomac_zcgfrz_l1); + assign_value_set(out_data.l_04_i_wbcomac_zcgfrz_grfx_l1(), model_data->l_04_i_wbcomac_zcgfrz_grfx_l1); + assign_value_set(out_data.l_04_i_wbcomac_ycgfrz_l1(), model_data->l_04_i_wbcomac_ycgfrz_l1); + assign_value_set(out_data.l_04_i_wbcomac_inertfrz_l1(), model_data->l_04_i_wbcomac_inertfrz_l1); + assign_value_set(out_data.l_04_i_wbcomac_potreq_gw_f8(), model_data->l_04_i_wbcomac_potreq_gw_f8); + assign_value_set(out_data.l_04_i_wbcomac_potreq_gwcg_f8(), model_data->l_04_i_wbcomac_potreq_gwcg_f8); + assign_value_set(out_data.l_04_i_wbcomac_phi_deg_f8(), model_data->l_04_i_wbcomac_phi_deg_f8); + assign_value_set(out_data.l_04_i_wbcomac_psi_deg_f8(), model_data->l_04_i_wbcomac_psi_deg_f8); + sendOutData(); } protected: DDSType data; diff --git a/Release/IDL/C909_V1/ATA04/WeightBalance_output.hpp b/Release/IDL/C909_V1/ATA04/WeightBalance_output.hpp index 1f9a580..674d9b0 100644 --- a/Release/IDL/C909_V1/ATA04/WeightBalance_output.hpp +++ b/Release/IDL/C909_V1/ATA04/WeightBalance_output.hpp @@ -85,62 +85,63 @@ public: return; std::lock_guard lock(outDataMutex); clearOutData(); - assign_value_set(data.l_04_o_wbcomac_frz_l1(), model_data->l_04_o_wbcomac_frz_l1); - assign_value_set(data.l_04_o_wbcomac_zcgfrz_l1(), model_data->l_04_o_wbcomac_zcgfrz_l1); - assign_value_set(data.l_04_o_wbcomac_zcgfrz_grfx_l1(), model_data->l_04_o_wbcomac_zcgfrz_grfx_l1); - assign_value_set(data.l_04_o_wbcomac_ycgfrz_l1(), model_data->l_04_o_wbcomac_ycgfrz_l1); - assign_value_set(data.l_04_o_wbcomac_inertfrz_l1(), model_data->l_04_o_wbcomac_inertfrz_l1); - assign_value_set(data.l_04_o_wbcomac_gw_f4(), model_data->l_04_o_wbcomac_gw_f4); - assign_value_set(data.l_04_o_wbcomac_cg_f4(), model_data->l_04_o_wbcomac_cg_f4); - assign_value_set(data.l_04_o_wbcomac_blcg_f8(), model_data->l_04_o_wbcomac_blcg_f8); - assign_value_set(data.l_04_o_wbcomac_bscg_f8(), model_data->l_04_o_wbcomac_bscg_f8); - assign_value_set(data.l_04_o_wbcomac_wlcg_f8(), model_data->l_04_o_wbcomac_wlcg_f8); - assign_value_set(data.l_04_o_wbcomac_xcg_f8(), model_data->l_04_o_wbcomac_xcg_f8); - assign_value_set(data.l_04_o_wbcomac_ixx_f8(), model_data->l_04_o_wbcomac_ixx_f8); - assign_value_set(data.l_04_o_wbcomac_ixy_f8(), model_data->l_04_o_wbcomac_ixy_f8); - assign_value_set(data.l_04_o_wbcomac_ixz_f8(), model_data->l_04_o_wbcomac_ixz_f8); - assign_value_set(data.l_04_o_wbcomac_iyy_f8(), model_data->l_04_o_wbcomac_iyy_f8); - assign_value_set(data.l_04_o_wbcomac_iyz_f8(), model_data->l_04_o_wbcomac_iyz_f8); - assign_value_set(data.l_04_o_wbcomac_izz_f8(), model_data->l_04_o_wbcomac_izz_f8); - assign_value_set(data.l_04_o_wbcomac_zfw_f4(), model_data->l_04_o_wbcomac_zfw_f4); - assign_value_set(data.l_04_o_wbcomac_zfwcg_f4(), model_data->l_04_o_wbcomac_zfwcg_f4); - assign_value_set(data.l_04_o_wbcomac_zfw_blcg_f4(), model_data->l_04_o_wbcomac_zfw_blcg_f4); - assign_value_set(data.l_04_o_wbcomac_zfw_wlcg_f4(), model_data->l_04_o_wbcomac_zfw_wlcg_f4); - assign_value_set(data.l_04_o_wbcomac_fuel_cmd_f8(), model_data->l_04_o_wbcomac_fuel_cmd_f8); - assign_value_set(data.l_04_o_wbcomac_fuel_mode_i4(), model_data->l_04_o_wbcomac_fuel_mode_i4); - assign_value_set(data.l_04_o_wbcomac_fuel_ixx_f8(), model_data->l_04_o_wbcomac_fuel_ixx_f8); - assign_value_set(data.l_04_o_wbcomac_fuel_ixy_f8(), model_data->l_04_o_wbcomac_fuel_ixy_f8); - assign_value_set(data.l_04_o_wbcomac_fuel_ixz_f8(), model_data->l_04_o_wbcomac_fuel_ixz_f8); - assign_value_set(data.l_04_o_wbcomac_fuel_iyy_f8(), model_data->l_04_o_wbcomac_fuel_iyy_f8); - assign_value_set(data.l_04_o_wbcomac_fuel_iyz_f8(), model_data->l_04_o_wbcomac_fuel_iyz_f8); - assign_value_set(data.l_04_o_wbcomac_fuel_izz_f8(), model_data->l_04_o_wbcomac_fuel_izz_f8); - assign_value_set(data.l_04_o_wbcomac_l_wt_fuel_f8(), model_data->l_04_o_wbcomac_l_wt_fuel_f8); - assign_value_set(data.l_04_o_wbcomac_ice_airframe_total_f8(), model_data->l_04_o_wbcomac_ice_airframe_total_f8); - assign_value_set(data.l_04_o_wbcomac_ice_eng_f8(), model_data->l_04_o_wbcomac_ice_eng_f8); - assign_value_set(data.l_04_o_wbcomac_ice_eng_total_f8(), model_data->l_04_o_wbcomac_ice_eng_total_f8); - assign_value_set(data.l_04_o_wbcomac_ice_fuselage_f8(), model_data->l_04_o_wbcomac_ice_fuselage_f8); - assign_value_set(data.l_04_o_wbcomac_ice_stab_left_f8(), model_data->l_04_o_wbcomac_ice_stab_left_f8); - assign_value_set(data.l_04_o_wbcomac_ice_stab_right_f8(), model_data->l_04_o_wbcomac_ice_stab_right_f8); - assign_value_set(data.l_04_o_wbcomac_ice_stab_total_f8(), model_data->l_04_o_wbcomac_ice_stab_total_f8); - assign_value_set(data.l_04_o_wbcomac_ice_total_f8(), model_data->l_04_o_wbcomac_ice_total_f8); - assign_value_set(data.l_04_o_wbcomac_ice_total_frac_f8(), model_data->l_04_o_wbcomac_ice_total_frac_f8); - assign_value_set(data.l_04_o_wbcomac_ice_vert_tail_f8(), model_data->l_04_o_wbcomac_ice_vert_tail_f8); - assign_value_set(data.l_04_o_wbcomac_ice_wing_left_f8(), model_data->l_04_o_wbcomac_ice_wing_left_f8); - assign_value_set(data.l_04_o_wbcomac_ice_wing_right_f8(), model_data->l_04_o_wbcomac_ice_wing_right_f8); - assign_value_set(data.l_04_o_wbcomac_ice_wing_total_f8(), model_data->l_04_o_wbcomac_ice_wing_total_f8); - assign_value_set(data.l_04_o_wbcomac_init_l1(), model_data->l_04_o_wbcomac_init_l1); - assign_value_set(data.l_04_o_wbcomac_potmin_gw_f8(), model_data->l_04_o_wbcomac_potmin_gw_f8); - assign_value_set(data.l_04_o_wbcomac_potmax_gw_f8(), model_data->l_04_o_wbcomac_potmax_gw_f8); - assign_value_set(data.l_04_o_wbcomac_potmin_gwcg_f8(), model_data->l_04_o_wbcomac_potmin_gwcg_f8); - assign_value_set(data.l_04_o_wbcomac_potmax_gwcg_f8(), model_data->l_04_o_wbcomac_potmax_gwcg_f8); - assign_value_set(data.l_04_o_wbcomac_min_cg_f4(), model_data->l_04_o_wbcomac_min_cg_f4); - assign_value_set(data.l_04_o_wbcomac_min_gw_f4(), model_data->l_04_o_wbcomac_min_gw_f4); - assign_value_set(data.l_04_o_wbcomac_min_zfw_f4(), model_data->l_04_o_wbcomac_min_zfw_f4); - assign_value_set(data.l_04_o_wbcomac_min_zfwcg_f4(), model_data->l_04_o_wbcomac_min_zfwcg_f4); - assign_value_set(data.l_04_o_wbcomac_max_cg_f4(), model_data->l_04_o_wbcomac_max_cg_f4); - assign_value_set(data.l_04_o_wbcomac_max_gw_f4(), model_data->l_04_o_wbcomac_max_gw_f4); - assign_value_set(data.l_04_o_wbcomac_max_zfw_f4(), model_data->l_04_o_wbcomac_max_zfw_f4); - assign_value_set(data.l_04_o_wbcomac_max_zfwcg_f4(), model_data->l_04_o_wbcomac_max_zfwcg_f4); + assign_value_set(out_data.l_04_o_wbcomac_frz_l1(), model_data->l_04_o_wbcomac_frz_l1); + assign_value_set(out_data.l_04_o_wbcomac_zcgfrz_l1(), model_data->l_04_o_wbcomac_zcgfrz_l1); + assign_value_set(out_data.l_04_o_wbcomac_zcgfrz_grfx_l1(), model_data->l_04_o_wbcomac_zcgfrz_grfx_l1); + assign_value_set(out_data.l_04_o_wbcomac_ycgfrz_l1(), model_data->l_04_o_wbcomac_ycgfrz_l1); + assign_value_set(out_data.l_04_o_wbcomac_inertfrz_l1(), model_data->l_04_o_wbcomac_inertfrz_l1); + assign_value_set(out_data.l_04_o_wbcomac_gw_f4(), model_data->l_04_o_wbcomac_gw_f4); + assign_value_set(out_data.l_04_o_wbcomac_cg_f4(), model_data->l_04_o_wbcomac_cg_f4); + assign_value_set(out_data.l_04_o_wbcomac_blcg_f8(), model_data->l_04_o_wbcomac_blcg_f8); + assign_value_set(out_data.l_04_o_wbcomac_bscg_f8(), model_data->l_04_o_wbcomac_bscg_f8); + assign_value_set(out_data.l_04_o_wbcomac_wlcg_f8(), model_data->l_04_o_wbcomac_wlcg_f8); + assign_value_set(out_data.l_04_o_wbcomac_xcg_f8(), model_data->l_04_o_wbcomac_xcg_f8); + assign_value_set(out_data.l_04_o_wbcomac_ixx_f8(), model_data->l_04_o_wbcomac_ixx_f8); + assign_value_set(out_data.l_04_o_wbcomac_ixy_f8(), model_data->l_04_o_wbcomac_ixy_f8); + assign_value_set(out_data.l_04_o_wbcomac_ixz_f8(), model_data->l_04_o_wbcomac_ixz_f8); + assign_value_set(out_data.l_04_o_wbcomac_iyy_f8(), model_data->l_04_o_wbcomac_iyy_f8); + assign_value_set(out_data.l_04_o_wbcomac_iyz_f8(), model_data->l_04_o_wbcomac_iyz_f8); + assign_value_set(out_data.l_04_o_wbcomac_izz_f8(), model_data->l_04_o_wbcomac_izz_f8); + assign_value_set(out_data.l_04_o_wbcomac_zfw_f4(), model_data->l_04_o_wbcomac_zfw_f4); + assign_value_set(out_data.l_04_o_wbcomac_zfwcg_f4(), model_data->l_04_o_wbcomac_zfwcg_f4); + assign_value_set(out_data.l_04_o_wbcomac_zfw_blcg_f4(), model_data->l_04_o_wbcomac_zfw_blcg_f4); + assign_value_set(out_data.l_04_o_wbcomac_zfw_wlcg_f4(), model_data->l_04_o_wbcomac_zfw_wlcg_f4); + assign_value_set(out_data.l_04_o_wbcomac_fuel_cmd_f8(), model_data->l_04_o_wbcomac_fuel_cmd_f8); + assign_value_set(out_data.l_04_o_wbcomac_fuel_mode_i4(), model_data->l_04_o_wbcomac_fuel_mode_i4); + assign_value_set(out_data.l_04_o_wbcomac_fuel_ixx_f8(), model_data->l_04_o_wbcomac_fuel_ixx_f8); + assign_value_set(out_data.l_04_o_wbcomac_fuel_ixy_f8(), model_data->l_04_o_wbcomac_fuel_ixy_f8); + assign_value_set(out_data.l_04_o_wbcomac_fuel_ixz_f8(), model_data->l_04_o_wbcomac_fuel_ixz_f8); + assign_value_set(out_data.l_04_o_wbcomac_fuel_iyy_f8(), model_data->l_04_o_wbcomac_fuel_iyy_f8); + assign_value_set(out_data.l_04_o_wbcomac_fuel_iyz_f8(), model_data->l_04_o_wbcomac_fuel_iyz_f8); + assign_value_set(out_data.l_04_o_wbcomac_fuel_izz_f8(), model_data->l_04_o_wbcomac_fuel_izz_f8); + assign_value_set(out_data.l_04_o_wbcomac_l_wt_fuel_f8(), model_data->l_04_o_wbcomac_l_wt_fuel_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_airframe_total_f8(), model_data->l_04_o_wbcomac_ice_airframe_total_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_eng_f8(), model_data->l_04_o_wbcomac_ice_eng_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_eng_total_f8(), model_data->l_04_o_wbcomac_ice_eng_total_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_fuselage_f8(), model_data->l_04_o_wbcomac_ice_fuselage_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_stab_left_f8(), model_data->l_04_o_wbcomac_ice_stab_left_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_stab_right_f8(), model_data->l_04_o_wbcomac_ice_stab_right_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_stab_total_f8(), model_data->l_04_o_wbcomac_ice_stab_total_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_total_f8(), model_data->l_04_o_wbcomac_ice_total_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_total_frac_f8(), model_data->l_04_o_wbcomac_ice_total_frac_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_vert_tail_f8(), model_data->l_04_o_wbcomac_ice_vert_tail_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_wing_left_f8(), model_data->l_04_o_wbcomac_ice_wing_left_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_wing_right_f8(), model_data->l_04_o_wbcomac_ice_wing_right_f8); + assign_value_set(out_data.l_04_o_wbcomac_ice_wing_total_f8(), model_data->l_04_o_wbcomac_ice_wing_total_f8); + assign_value_set(out_data.l_04_o_wbcomac_init_l1(), model_data->l_04_o_wbcomac_init_l1); + assign_value_set(out_data.l_04_o_wbcomac_potmin_gw_f8(), model_data->l_04_o_wbcomac_potmin_gw_f8); + assign_value_set(out_data.l_04_o_wbcomac_potmax_gw_f8(), model_data->l_04_o_wbcomac_potmax_gw_f8); + assign_value_set(out_data.l_04_o_wbcomac_potmin_gwcg_f8(), model_data->l_04_o_wbcomac_potmin_gwcg_f8); + assign_value_set(out_data.l_04_o_wbcomac_potmax_gwcg_f8(), model_data->l_04_o_wbcomac_potmax_gwcg_f8); + assign_value_set(out_data.l_04_o_wbcomac_min_cg_f4(), model_data->l_04_o_wbcomac_min_cg_f4); + assign_value_set(out_data.l_04_o_wbcomac_min_gw_f4(), model_data->l_04_o_wbcomac_min_gw_f4); + assign_value_set(out_data.l_04_o_wbcomac_min_zfw_f4(), model_data->l_04_o_wbcomac_min_zfw_f4); + assign_value_set(out_data.l_04_o_wbcomac_min_zfwcg_f4(), model_data->l_04_o_wbcomac_min_zfwcg_f4); + assign_value_set(out_data.l_04_o_wbcomac_max_cg_f4(), model_data->l_04_o_wbcomac_max_cg_f4); + assign_value_set(out_data.l_04_o_wbcomac_max_gw_f4(), model_data->l_04_o_wbcomac_max_gw_f4); + assign_value_set(out_data.l_04_o_wbcomac_max_zfw_f4(), model_data->l_04_o_wbcomac_max_zfw_f4); + assign_value_set(out_data.l_04_o_wbcomac_max_zfwcg_f4(), model_data->l_04_o_wbcomac_max_zfwcg_f4); + sendOutData(); } protected: DDSType data; diff --git a/Release/Models/libXNAerodynamics.so.1.0.0.0 b/Release/Models/libXNAerodynamics.so.1.0.0.0 index cf44956..7716a43 100644 Binary files a/Release/Models/libXNAerodynamics.so.1.0.0.0 and b/Release/Models/libXNAerodynamics.so.1.0.0.0 differ diff --git a/Release/Models/libXNGroundHandling.so.2.0.143.1 b/Release/Models/libXNGroundHandling.so.2.0.143.1 index 4a11400..2704ceb 100644 Binary files a/Release/Models/libXNGroundHandling.so.2.0.143.1 and b/Release/Models/libXNGroundHandling.so.2.0.143.1 differ diff --git a/Release/Models/libXNWeightBalance.so.1.0.0.0 b/Release/Models/libXNWeightBalance.so.1.0.0.0 index ffacb34..0395e4f 100644 Binary files a/Release/Models/libXNWeightBalance.so.1.0.0.0 and b/Release/Models/libXNWeightBalance.so.1.0.0.0 differ diff --git a/Release/database/XNSim.db b/Release/database/XNSim.db index 6e5bd2c..308d816 100644 Binary files a/Release/database/XNSim.db and b/Release/database/XNSim.db differ diff --git a/Release/include/XNCore/XNDDSInterface.h b/Release/include/XNCore/XNDDSInterface.h index 22f3dde..416640e 100644 --- a/Release/include/XNCore/XNDDSInterface.h +++ b/Release/include/XNCore/XNDDSInterface.h @@ -39,13 +39,14 @@ public: * @param varNames: 变量名列表 * @return: 变量名到数据的映射 */ - std::unordered_map getStringData(std::vector varNames); + std::unordered_map + getStringData(const std::vector &varNames); /** * @brief 批量设置指定变量的数据 * @param data: 变量名到数据的映射 */ - void setDataByString(std::unordered_map data); + void setDataByString(const std::unordered_map &data); protected: /** @@ -54,7 +55,7 @@ protected: * @return 字节数组 */ template - XNByteArray getByteArray(eprosima::fastcdr::optional data) + XNByteArray getByteArray(const eprosima::fastcdr::optional &data) { XNByteArray result(getTypeSize()); @@ -74,7 +75,7 @@ protected: } } else { static_assert(std::is_arithmetic_v || is_std_array_v, - "Type must be arithmetic or std::array"); + "T 必须是算术类型或std::array类型"); } return result; @@ -108,7 +109,7 @@ protected: setByteArrayFromStdArray(data.value(), thisArray); } else { static_assert(std::is_arithmetic_v || is_std_array_v, - "Type must be arithmetic or std::array"); + "T 必须是算术类型或std::array类型"); } } @@ -125,10 +126,13 @@ protected: for (std::size_t i = 0; i < N; ++i) { if constexpr (std::is_arithmetic_v) { std::memcpy(result.data() + i * getTypeSize(), &data[i], getTypeSize()); - } else { + } else if constexpr (is_std_array_v) { XNByteArray subArray = getByteArrayFromStdArray(data[i]); std::memcpy(result.data() + i * getTypeSize(), subArray.data(), getTypeSize()); + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } } @@ -149,9 +153,12 @@ protected: for (std::size_t i = 0; i < N; ++i) { if constexpr (std::is_arithmetic_v) { std::memcpy(&data[i], byteArray.data() + i * getTypeSize(), getTypeSize()); - } else { + } else if constexpr (is_std_array_v) { XNByteArray subArray(byteArray.data() + i * getTypeSize(), getTypeSize()); setByteArrayFromStdArray(data[i], subArray); + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } } } @@ -162,7 +169,7 @@ protected: * @return: 数据(字符串格式) */ template - std::string getString(eprosima::fastcdr::optional data) + std::string getString(const eprosima::fastcdr::optional &data) { if constexpr (std::is_arithmetic_v) { if (data) { @@ -177,6 +184,9 @@ protected: T zero = {}; return getStringFromStdArray(zero); } + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } return std::string(); } @@ -206,6 +216,9 @@ protected: T temp; setStdArrayFromString(temp, items, 0); data = temp; + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } } @@ -215,7 +228,7 @@ protected: * @return: 数据(字符串格式) */ template - std::string getStringFromStdArray(std::array data) + std::string getStringFromStdArray(const std::array &data) { std::stringstream ss; for (std::size_t i = 0; i < N; ++i) { @@ -223,8 +236,11 @@ protected: ss << ","; if constexpr (std::is_arithmetic_v) { ss << data[i]; - } else { + } else if constexpr (is_std_array_v) { ss << getStringFromStdArray(data[i]); + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } } return ss.str(); @@ -257,59 +273,92 @@ protected: start_pos = setStdArrayFromString(data[i], value, start_pos + i); } else { static_assert(std::is_arithmetic_v || is_std_array_v, - "Type must be arithmetic or std::array"); + "T 必须是算术类型或std::array类型"); } } catch (const std::exception &e) { - throw std::runtime_error("Error parsing element " + std::to_string(i) + ": " - + e.what()); + throw std::runtime_error("无法解析第 " + std::to_string(i) + + " 个元素: " + e.what()); } } return start_pos + N; } template - void assign_value_get(eprosima::fastcdr::optional &data, T2 &model_data) + void assign_value_get(const eprosima::fastcdr::optional &data, T2 &model_data) { if (data) { auto temp = data.value(); if constexpr (std::is_arithmetic_v) { + static_assert(std::is_arithmetic_v, "模板参数T2必须是算术类型"); + static_assert(std::is_convertible_v, "模板参数T1必须可以转换为T2类型"); model_data = temp; } else if constexpr (is_std_array_v) { size_t arraySize = array_size_v; for (size_t i = 0; i < arraySize; ++i) { - auto temp2 = temp[i]; - if constexpr (std::is_arithmetic_v) { + auto temp2 = temp[i]; + using array_type = typename T1::value_type; + if constexpr (std::is_arithmetic_v) { model_data[i] = temp2; - } else if constexpr (is_std_array_v) { - size_t arraySize2 = array_size_v; - for (size_t j = 0; j < arraySize2; ++j) { - model_data[i][j] = temp2[j]; + } else if constexpr (is_std_array_v) { + size_t arraySize2 = array_size_v; + using sub_array_type = typename array_type::value_type; + if constexpr (std::is_arithmetic_v) { + for (size_t j = 0; j < arraySize2; ++j) { + model_data[i][j] = temp2[j]; + } + } else { + static_assert(std::is_arithmetic_v, + "模板参数T1是std::array类型时,它的数组嵌套不能超过两层"); } + } else { + static_assert(std::is_arithmetic_v + || is_std_array_v, + "模板参数T1是std::array类型时,它的value_" + "type必须是算术类型或std::array类型"); } } + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "模板参数T1必须是算术类型或std::array类型"); } } } template - void assign_value_set(eprosima::fastcdr::optional &data, T2 &model_data) + void assign_value_set(eprosima::fastcdr::optional &data, const T2 &model_data) { if constexpr (std::is_arithmetic_v) { + static_assert(std::is_arithmetic_v, "模板参数T2必须是算术类型"); + static_assert(std::is_convertible_v, "模板参数T2必须可以转换为T1类型"); data = model_data; } else if constexpr (is_std_array_v) { T1 temp; size_t arraySize = array_size_v; + using array_type = typename T1::value_type; for (size_t i = 0; i < arraySize; ++i) { - if constexpr (std::is_arithmetic_v) { + if constexpr (std::is_arithmetic_v) { temp[i] = model_data[i]; - } else if constexpr (is_std_array_v) { - size_t arraySize2 = array_size_v; - for (size_t j = 0; j < arraySize2; ++j) { - temp[i][j] = model_data[i][j]; + } else if constexpr (is_std_array_v) { + size_t arraySize2 = array_size_v; + using sub_array_type = typename array_type::value_type; + if constexpr (std::is_arithmetic_v) { + for (size_t j = 0; j < arraySize2; ++j) { + temp[i][j] = model_data[i][j]; + } + } else { + static_assert(std::is_arithmetic_v, + "模板参数T1是std::array类型时,它的数组嵌套不能超过两层"); } + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "模板参数T1是std::array类型时,它的value_" + "type必须是算术类型或std::array类型"); } } data = temp; + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "模板参数T1必须是算术类型或std::array类型"); } } @@ -330,10 +379,10 @@ protected: #define MAP_DATA_FUNC(NAME) \ getDataFunction[#NAME] = [this]() { return getString(data.NAME()); }; \ - setDataFunction[#NAME] = [this](std::string value) { \ + setDataFunction[#NAME] = [this](const std::string &value) { \ setDataFromString(out_data.NAME(), value); \ }; \ getByteArrayFunction.push_back([this]() { return getByteArray(data.NAME()); }); \ - setByteArrayFunction.push_back([this](XNByteArray byteArray, uint32_t &pos) { \ + setByteArrayFunction.push_back([this](const XNByteArray &byteArray, uint32_t &pos) { \ setByteArray(out_data.NAME(), byteArray, pos); \ }); diff --git a/XNCore/XNDDSInterface.cpp b/XNCore/XNDDSInterface.cpp index 4ee56aa..1f58b51 100644 --- a/XNCore/XNDDSInterface.cpp +++ b/XNCore/XNDDSInterface.cpp @@ -64,7 +64,7 @@ void XNDDSInterface::setDataByUDPPackage(const XNByteArray &package) } std::unordered_map -XNDDSInterface::getStringData(std::vector varNames) +XNDDSInterface::getStringData(const std::vector &varNames) { std::unordered_map result; @@ -82,7 +82,7 @@ XNDDSInterface::getStringData(std::vector varNames) return result; } -void XNDDSInterface::setDataByString(std::unordered_map data) +void XNDDSInterface::setDataByString(const std::unordered_map &data) { std::lock_guard lock(outDataMutex); clearOutData(); diff --git a/XNCore/XNDDSInterface.h b/XNCore/XNDDSInterface.h index 22f3dde..571e108 100644 --- a/XNCore/XNDDSInterface.h +++ b/XNCore/XNDDSInterface.h @@ -39,13 +39,14 @@ public: * @param varNames: 变量名列表 * @return: 变量名到数据的映射 */ - std::unordered_map getStringData(std::vector varNames); + std::unordered_map + getStringData(const std::vector &varNames); /** * @brief 批量设置指定变量的数据 * @param data: 变量名到数据的映射 */ - void setDataByString(std::unordered_map data); + void setDataByString(const std::unordered_map &data); protected: /** @@ -54,7 +55,7 @@ protected: * @return 字节数组 */ template - XNByteArray getByteArray(eprosima::fastcdr::optional data) + XNByteArray getByteArray(const eprosima::fastcdr::optional &data) { XNByteArray result(getTypeSize()); @@ -74,7 +75,7 @@ protected: } } else { static_assert(std::is_arithmetic_v || is_std_array_v, - "Type must be arithmetic or std::array"); + "T 必须是算术类型或std::array类型"); } return result; @@ -108,7 +109,7 @@ protected: setByteArrayFromStdArray(data.value(), thisArray); } else { static_assert(std::is_arithmetic_v || is_std_array_v, - "Type must be arithmetic or std::array"); + "T 必须是算术类型或std::array类型"); } } @@ -125,10 +126,13 @@ protected: for (std::size_t i = 0; i < N; ++i) { if constexpr (std::is_arithmetic_v) { std::memcpy(result.data() + i * getTypeSize(), &data[i], getTypeSize()); - } else { + } else if constexpr (is_std_array_v) { XNByteArray subArray = getByteArrayFromStdArray(data[i]); std::memcpy(result.data() + i * getTypeSize(), subArray.data(), getTypeSize()); + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } } @@ -149,9 +153,12 @@ protected: for (std::size_t i = 0; i < N; ++i) { if constexpr (std::is_arithmetic_v) { std::memcpy(&data[i], byteArray.data() + i * getTypeSize(), getTypeSize()); - } else { + } else if constexpr (is_std_array_v) { XNByteArray subArray(byteArray.data() + i * getTypeSize(), getTypeSize()); setByteArrayFromStdArray(data[i], subArray); + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } } } @@ -162,13 +169,13 @@ protected: * @return: 数据(字符串格式) */ template - std::string getString(eprosima::fastcdr::optional data) + std::string getString(const eprosima::fastcdr::optional &data) { if constexpr (std::is_arithmetic_v) { if (data) { return std::to_string(data.value()); } else { - return std::to_string(0); + return "Unknown"; } } else if constexpr (is_std_array_v) { if (data) { @@ -177,6 +184,9 @@ protected: T zero = {}; return getStringFromStdArray(zero); } + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } return std::string(); } @@ -206,6 +216,9 @@ protected: T temp; setStdArrayFromString(temp, items, 0); data = temp; + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } } @@ -215,7 +228,7 @@ protected: * @return: 数据(字符串格式) */ template - std::string getStringFromStdArray(std::array data) + std::string getStringFromStdArray(const std::array &data) { std::stringstream ss; for (std::size_t i = 0; i < N; ++i) { @@ -223,8 +236,11 @@ protected: ss << ","; if constexpr (std::is_arithmetic_v) { ss << data[i]; - } else { + } else if constexpr (is_std_array_v) { ss << getStringFromStdArray(data[i]); + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "T 必须是算术类型或std::array类型"); } } return ss.str(); @@ -257,59 +273,92 @@ protected: start_pos = setStdArrayFromString(data[i], value, start_pos + i); } else { static_assert(std::is_arithmetic_v || is_std_array_v, - "Type must be arithmetic or std::array"); + "T 必须是算术类型或std::array类型"); } } catch (const std::exception &e) { - throw std::runtime_error("Error parsing element " + std::to_string(i) + ": " - + e.what()); + throw std::runtime_error("无法解析第 " + std::to_string(i) + + " 个元素: " + e.what()); } } return start_pos + N; } template - void assign_value_get(eprosima::fastcdr::optional &data, T2 &model_data) + void assign_value_get(const eprosima::fastcdr::optional &data, T2 &model_data) { if (data) { auto temp = data.value(); if constexpr (std::is_arithmetic_v) { + static_assert(std::is_arithmetic_v, "模板参数T2必须是算术类型"); + static_assert(std::is_convertible_v, "模板参数T1必须可以转换为T2类型"); model_data = temp; } else if constexpr (is_std_array_v) { size_t arraySize = array_size_v; for (size_t i = 0; i < arraySize; ++i) { - auto temp2 = temp[i]; - if constexpr (std::is_arithmetic_v) { + auto temp2 = temp[i]; + using array_type = typename T1::value_type; + if constexpr (std::is_arithmetic_v) { model_data[i] = temp2; - } else if constexpr (is_std_array_v) { - size_t arraySize2 = array_size_v; - for (size_t j = 0; j < arraySize2; ++j) { - model_data[i][j] = temp2[j]; + } else if constexpr (is_std_array_v) { + size_t arraySize2 = array_size_v; + using sub_array_type = typename array_type::value_type; + if constexpr (std::is_arithmetic_v) { + for (size_t j = 0; j < arraySize2; ++j) { + model_data[i][j] = temp2[j]; + } + } else { + static_assert(std::is_arithmetic_v, + "模板参数T1是std::array类型时,它的数组嵌套不能超过两层"); } + } else { + static_assert(std::is_arithmetic_v + || is_std_array_v, + "模板参数T1是std::array类型时,它的value_" + "type必须是算术类型或std::array类型"); } } + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "模板参数T1必须是算术类型或std::array类型"); } } } template - void assign_value_set(eprosima::fastcdr::optional &data, T2 &model_data) + void assign_value_set(eprosima::fastcdr::optional &data, const T2 &model_data) { if constexpr (std::is_arithmetic_v) { + static_assert(std::is_arithmetic_v, "模板参数T2必须是算术类型"); + static_assert(std::is_convertible_v, "模板参数T2必须可以转换为T1类型"); data = model_data; } else if constexpr (is_std_array_v) { T1 temp; size_t arraySize = array_size_v; + using array_type = typename T1::value_type; for (size_t i = 0; i < arraySize; ++i) { - if constexpr (std::is_arithmetic_v) { + if constexpr (std::is_arithmetic_v) { temp[i] = model_data[i]; - } else if constexpr (is_std_array_v) { - size_t arraySize2 = array_size_v; - for (size_t j = 0; j < arraySize2; ++j) { - temp[i][j] = model_data[i][j]; + } else if constexpr (is_std_array_v) { + size_t arraySize2 = array_size_v; + using sub_array_type = typename array_type::value_type; + if constexpr (std::is_arithmetic_v) { + for (size_t j = 0; j < arraySize2; ++j) { + temp[i][j] = model_data[i][j]; + } + } else { + static_assert(std::is_arithmetic_v, + "模板参数T1是std::array类型时,它的数组嵌套不能超过两层"); } + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "模板参数T1是std::array类型时,它的value_" + "type必须是算术类型或std::array类型"); } } data = temp; + } else { + static_assert(std::is_arithmetic_v || is_std_array_v, + "模板参数T1必须是算术类型或std::array类型"); } } @@ -330,10 +379,10 @@ protected: #define MAP_DATA_FUNC(NAME) \ getDataFunction[#NAME] = [this]() { return getString(data.NAME()); }; \ - setDataFunction[#NAME] = [this](std::string value) { \ + setDataFunction[#NAME] = [this](const std::string &value) { \ setDataFromString(out_data.NAME(), value); \ }; \ getByteArrayFunction.push_back([this]() { return getByteArray(data.NAME()); }); \ - setByteArrayFunction.push_back([this](XNByteArray byteArray, uint32_t &pos) { \ + setByteArrayFunction.push_back([this](const XNByteArray &byteArray, uint32_t &pos) { \ setByteArray(out_data.NAME(), byteArray, pos); \ }); diff --git a/XNInterfaceGenServer/DDSInterfaceGen.cpp b/XNInterfaceGenServer/DDSInterfaceGen.cpp index 142aa1a..ddf3e53 100644 --- a/XNInterfaceGenServer/DDSInterfaceGen.cpp +++ b/XNInterfaceGenServer/DDSInterfaceGen.cpp @@ -85,9 +85,10 @@ bool DDSInterfaceGen::generateDDSInterfaceHpp(const std::string &nameSpace, hppFile << "\t\t" << "std::lock_guard lock(outDataMutex);" << std::endl; hppFile << "\t\t" << "clearOutData();" << std::endl; for (const auto &interface : interfaceData) { - hppFile << "\t\t" << "assign_value_set(data." << interface.interfaceName + hppFile << "\t\t" << "assign_value_set(out_data." << interface.interfaceName << "(), model_data->" << interface.interfaceName << ");" << std::endl; } + hppFile << "\t\t" << "sendOutData();" << std::endl; hppFile << "\t" << "}" << std::endl; // 11. 写入私有成员变量 hppFile << "" << "protected:" << std::endl; diff --git a/XNModels/CMakeLists.txt b/XNModels/CMakeLists.txt new file mode 100755 index 0000000..9ba1279 --- /dev/null +++ b/XNModels/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.16) + +project(XNModels) + +add_subdirectory(XNATA04DataProcessor) +add_subdirectory(XNAerodynamics) +add_subdirectory(XNGroundHandling) +add_subdirectory(XNWeightBalance) \ No newline at end of file diff --git a/XNMonitorServer/XNMonitorInterface.cpp b/XNMonitorServer/XNMonitorInterface.cpp index a9c8acc..8bf231d 100644 --- a/XNMonitorServer/XNMonitorInterface.cpp +++ b/XNMonitorServer/XNMonitorInterface.cpp @@ -392,10 +392,6 @@ void XN_StopDataMonitor(const char *structName, const int structNameLen, char *e } std::string structNameStr(structName, structNameLen); DataMonitorFactory::ReleaseInstance(structNameStr); - if (errorMsg && errorMsgSize > 0) { - strncpy(errorMsg, "Data Monitor Stopped Successfully", errorMsgSize - 1); - errorMsg[errorMsgSize - 1] = '\0'; - } return; } diff --git a/XNSimHtml/components/data-monitor.js b/XNSimHtml/components/data-monitor.js index 2e2b89a..a510390 100644 --- a/XNSimHtml/components/data-monitor.js +++ b/XNSimHtml/components/data-monitor.js @@ -26,6 +26,8 @@ class DataMonitor extends HTMLElement { this.dragStartWidth = 0; this._colWidthInited = false; this._resizeEventBinded = false; + this.monitorId = `data_monitor_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; // 添加监控器ID + this.dataUpdateTimer = null; // 数据更新定时器 } connectedCallback() { @@ -73,11 +75,25 @@ class DataMonitor extends HTMLElement { /** * @description 从localStorage获取当前选择的配置 - * @returns {Object} 包含plane和configurationId的对象 + * @returns {Object} 包含plane、configurationId和domainId的对象 */ getCurrentSelection() { const selection = localStorage.getItem('xnsim-selection'); - return selection ? JSON.parse(selection) : { plane: '', configurationId: '' }; + + if (!selection) { + return { plane: '', configurationId: '', domainId: '' }; + } + + try { + const parsedSelection = JSON.parse(selection); + return { + plane: parsedSelection.plane || '', + configurationId: parsedSelection.configurationId || '', + domainId: parsedSelection.domainId || '' + }; + } catch (error) { + return { plane: '', configurationId: '', domainId: '' }; + } } /** @@ -156,12 +172,231 @@ class DataMonitor extends HTMLElement { ModelStructName: item.ModelStructName, InjectValue: '', Drawing: false, + isMonitoring: false, color: this.getRandomColor() }); this.renderTable(); } } + /** + * @description 初始化DDS监控服务 + * @returns {Promise} 初始化是否成功 + */ + async initializeDDSMonitor() { + try { + // 获取当前选择的配置 + const selection = this.getCurrentSelection(); + const { domainId } = selection; + if (!domainId) { + throw new Error('未找到有效的域ID,请确保已选择构型并等待构型加载完成'); + } + + // 检查DDS监控状态 + const statusResponse = await fetch('/api/dds-monitor/status'); + if (!statusResponse.ok) { + throw new Error(`获取DDS监控状态失败: ${statusResponse.status} ${statusResponse.statusText}`); + } + const statusData = await statusResponse.json(); + + // 如果未初始化,则初始化 + if (!statusData.isInitialized) { + const initResponse = await fetch('/api/dds-monitor/initialize', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + domainId, + monitorId: this.monitorId + }) + }); + + if (!initResponse.ok) { + const errorData = await initResponse.json(); + throw new Error(`初始化DDS监控失败: ${errorData.error || initResponse.statusText}`); + } + } + + return true; + } catch (error) { + throw error; + } + } + + /** + * @description 按结构体名称分组获取接口数据 + * @returns {Object} 按结构体名称分组的接口数据 + */ + getGroupedInterfaces() { + return this.tableData.reduce((groups, row) => { + if (!groups[row.ModelStructName]) { + groups[row.ModelStructName] = []; + } + groups[row.ModelStructName].push(row.InterfaceName); + return groups; + }, {}); + } + + /** + * @description 估算数据缓冲区大小 + * @param {Array} interfaceNames - 接口名称数组 + * @returns {number} 估算的缓冲区大小(字节) + */ + estimateBufferSize(interfaceNames) { + // 基础开销:JSON格式的开销(括号、引号、逗号等) + const baseOverhead = 100; + + // 每个接口的估算大小 + const interfaceSize = interfaceNames.reduce((total, name) => { + // 接口名称长度 + 引号 + 冒号 + const nameOverhead = name.length + 4; + // 假设每个数据值平均长度为50字节(包括数字、字符串等) + const estimatedValueSize = 50; + // 逗号分隔符 + const separatorSize = 1; + + return total + nameOverhead + estimatedValueSize + separatorSize; + }, 0); + + // 添加一些额外的缓冲空间(20%) + const safetyMargin = Math.ceil((baseOverhead + interfaceSize) * 0.2); + + // 确保返回的大小是4KB的倍数,并设置最小值为8KB + const minSize = 8192; + const size = Math.max(minSize, Math.ceil((baseOverhead + interfaceSize + safetyMargin) / 4096) * 4096); + + return size; + } + + /** + * @description 启动数据更新定时器 + */ + startDataUpdateTimer() { + if (this.dataUpdateTimer) { + clearInterval(this.dataUpdateTimer); + } + + this.dataUpdateTimer = setInterval(async () => { + try { + const groupedInterfaces = this.getGroupedInterfaces(); + + // 对每个结构体启动监控并获取数据 + for (const [structName, interfaceNames] of Object.entries(groupedInterfaces)) { + try { + // 启动数据监控 + const startResponse = await fetch('/api/data-monitor/start', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ structName }) + }); + + if (!startResponse.ok) { + throw new Error(`启动数据监控失败: ${structName}`); + } + + // 获取监控数据 + const interfaceNamesStr = JSON.stringify(interfaceNames); + // 估算所需的缓冲区大小 + const bufferSize = this.estimateBufferSize(interfaceNames); + + const infoResponse = await fetch(`/api/data-monitor/info?structName=${encodeURIComponent(structName)}&interfaceName=${encodeURIComponent(interfaceNamesStr)}&bufferSize=${bufferSize}`); + + if (!infoResponse.ok) { + throw new Error(`获取监控数据失败: ${structName}`); + } + + const responseData = await infoResponse.json(); + + if (!responseData.success) { + throw new Error(`获取监控数据失败: ${responseData.message || '未知错误'}`); + } + + if (!responseData.data) { + throw new Error(`获取监控数据失败: 返回数据为空`); + } + + // 更新表格数据 + this.tableData.forEach(row => { + if (row.ModelStructName === structName && responseData.data[row.InterfaceName]) { + row.monitorData = responseData.data[row.InterfaceName]; + } + }); + } catch (structError) { + console.error(`处理结构体 ${structName} 时出错:`, structError); + // 继续处理其他结构体 + continue; + } + } + + // 更新表格显示 + this.renderTable(); + } catch (error) { + console.error('数据更新失败:', error); + // 如果发生错误,停止定时器 + this.stopDataUpdateTimer(); + // 更新UI状态 + const globalMonitorBtn = this.shadowRoot.getElementById('globalMonitorBtn'); + const statusIndicator = this.shadowRoot.getElementById('statusIndicator'); + const statusText = this.shadowRoot.getElementById('statusText'); + + if (globalMonitorBtn) { + globalMonitorBtn.textContent = '开始监控'; + globalMonitorBtn.classList.remove('monitoring'); + } + if (statusIndicator) { + statusIndicator.classList.remove('active'); + statusIndicator.classList.add('error'); + } + if (statusText) { + statusText.textContent = '监控错误'; + } + + // 清空所有监控数据 + this.tableData.forEach(row => { + row.isMonitoring = false; + row.monitorData = ''; + }); + + this.renderTable(); + alert(`数据监控发生错误: ${error.message}`); + } + }, 1000); // 每秒更新一次 + } + + /** + * @description 停止数据更新定时器,并通知后端停止监控所有相关结构体 + */ + async stopDataUpdateTimer() { + // 先清理前端定时器 + if (this.dataUpdateTimer) { + clearInterval(this.dataUpdateTimer); + this.dataUpdateTimer = null; + } + // 收集所有正在监控的结构体名(去重) + const monitoringStructs = Array.from(new Set( + this.tableData + .filter(row => row.isMonitoring) + .map(row => row.ModelStructName) + )); + // 并发调用后端接口,通知停止监控 + try { + await Promise.all( + monitoringStructs.map(structName => + fetch('/api/data-monitor/stop', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ structName }) + }) + ) + ); + } catch (error) { + console.error('停止后端监控时发生错误:', error); + } + } + /** * @description 渲染表格内容 */ @@ -172,15 +407,14 @@ class DataMonitor extends HTMLElement { ${row.InterfaceName} ${row.ModelStructName} - + ${row.monitorData || ''} - - - - + + + @@ -214,6 +448,7 @@ class DataMonitor extends HTMLElement { this.updateChart(); }; }); + this.shadowRoot.querySelectorAll('.delete-btn').forEach(btn => { btn.onclick = (e) => { const idx = parseInt(btn.getAttribute('data-index')); @@ -329,12 +564,81 @@ class DataMonitor extends HTMLElement { box-sizing: border-box; } + .toolbar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 8px 16px; + background: #fff; + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0,0,0,0.06); + margin-bottom: 16px; + } + + .toolbar-left { + display: flex; + align-items: center; + gap: 12px; + } + + .toolbar-right { + display: flex; + align-items: center; + gap: 12px; + } + + .monitor-status { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: #666; + } + + .status-indicator { + width: 8px; + height: 8px; + border-radius: 50%; + background: #ccc; + } + + .status-indicator.active { + background: #52c41a; + } + + .status-indicator.error { + background: #ff4d4f; + } + + .global-monitor-btn { + padding: 6px 16px; + border: none; + border-radius: 4px; + background: #1890ff; + color: white; + cursor: pointer; + font-size: 14px; + transition: all 0.3s; + } + + .global-monitor-btn:hover { + background: #40a9ff; + } + + .global-monitor-btn.monitoring { + background: #ff4d4f; + } + + .global-monitor-btn.monitoring:hover { + background: #ff7875; + } + .monitor-container { background-color: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 16px; - height: 100%; + height: calc(100% - 72px); box-sizing: border-box; display: flex; gap: 16px; @@ -611,7 +915,26 @@ class DataMonitor extends HTMLElement { .th-resize.active::after { background: #1890ff; } + .monitor-btn.monitoring { + background: #ff4d4f; + color: #fff; + } + .action-btn:disabled { + opacity: 0.5; + cursor: not-allowed; + } +
+
+ +
+
+
+
+ 未监控 +
+
+