diff --git a/include/dto/guidance_command.h b/include/dto/guidance_command.h new file mode 100644 index 0000000..ee62ca5 --- /dev/null +++ b/include/dto/guidance_command.h @@ -0,0 +1,19 @@ +#ifndef GUIDANCE_COMMAND_H +#define GUIDANCE_COMMAND_H + +#include + +#include "../enum/icd_id.h" + +// ICD-25: 유도 명령 (GCU -> UI, 10ms) +// NED 가속도 명령, 스케일 0.001 m/s², 범위 ±400 m/s² (±40G) +#pragma pack(push, 1) +struct GuidanceCommand { + IcdId message_id; + int32_t a_cmd_n; // 북쪽 방향 가속도 (0.001 m/s²) + int32_t a_cmd_e; // 동쪽 방향 가속도 (0.001 m/s²) + int32_t a_cmd_d; // 아래쪽 방향 가속도 (0.001 m/s²) +}; +#pragma pack(pop) + +#endif // GUIDANCE_COMMAND_H diff --git a/include/dto/missile_target_state.h b/include/dto/missile_target_state.h new file mode 100644 index 0000000..4f3b986 --- /dev/null +++ b/include/dto/missile_target_state.h @@ -0,0 +1,38 @@ +#ifndef MISSILE_TARGET_STATE_H +#define MISSILE_TARGET_STATE_H + +#include + +#include "../enum/icd_id.h" + +// ICD-26: 미사일/표적 참값 상태 (UI -> GCU, 100ms) +// SILS 1단계 UI-GCU 통합 ICD — 미사일(6필드) + 표적(6필드) 참값 전달 +// 좌표계: NED (발사점 원점) +// 위치 스케일 0.01 m (cm), 속도 스케일 0.001 m/s (mm/s) +#pragma pack(push, 1) +struct MissileTargetState { + IcdId message_id; + + // 미사일 위치 (발사점 기준 NED, 0.01 m) + int32_t missile_pos_n; + int32_t missile_pos_e; + int32_t missile_pos_d; + + // 미사일 속도 (NED, 0.001 m/s) + int32_t missile_vel_n; + int32_t missile_vel_e; + int32_t missile_vel_d; + + // 표적 위치 (발사점 기준 NED, 0.01 m) + int32_t target_pos_n; + int32_t target_pos_e; + int32_t target_pos_d; + + // 표적 속도 (NED, 0.001 m/s) + int32_t target_vel_n; + int32_t target_vel_e; + int32_t target_vel_d; +}; +#pragma pack(pop) + +#endif // MISSILE_TARGET_STATE_H diff --git a/include/enum/icd_id.h b/include/enum/icd_id.h index 1666046..b4f4358 100644 --- a/include/enum/icd_id.h +++ b/include/enum/icd_id.h @@ -28,7 +28,10 @@ enum class IcdId : uint16_t { INS_MAIN_DATA = 0x0015, // INS실제값(ins_main_data) SKR_MAIN_DATA = 0x0016, // SKR실제값(skr_main_data) PIN_CONTROL_MAIN_COMMAND = 0x0017, // 핀제어실제명령(pin_control_main_command) - RESET_CUR_POSITION_COMMAND = 0x0018 // 현재위치 초기화 명령(reset_cur_position_command) + + // SILS 1단계 (SRS-GCU-05 항법유도) 신규 + GUIDANCE_COMMAND = 0x0018, // 유도 명령 (guidance_command) + MISSILE_TARGET_STATE = 0x0019 // 미사일/표적 참값 상태 (missile_target_state) }; #endif // ICD_ID_H