/*
 * Copyright (C) 2012-2026 MotionSystems
 *
 * This file is part of ForceSeatMI SDK.
 *
 * www.motionsystems.eu
 *
 */

#pragma once

#include "ForceSeatMI_Status.h"
#include "ForceSeatMI_Positioning.h"
#include "ForceSeatMI_Telemetry.h"
#include "ForceSeatMI_TelemetryACE.h"
#include "ForceSeatMI_TactileTransducers.h"
#include "ForceSeatMI_SFX.h"
#include "ForceSeatMI_SeatBeltTensioner.h"

class IForceSeatMI_API
{
public:
	virtual ~IForceSeatMI_API() { }
	virtual bool BeginMotionControl    () = 0;
	virtual bool EndMotionControl      () = 0;
	virtual bool GetPlatformInfoEx     (FSMI_PlatformInfo* platformInfo, unsigned int platformInfoStructSize, unsigned int timeout) = 0;
	virtual bool SendTelemetryACE      (const FSMI_TelemetryACE* telemetry) = 0;
	virtual bool SendTelemetryACE3     (const FSMI_TelemetryACE* telemetry, const FSMI_SFX* sfx, const FSMI_TactileAudioBasedFeedbackEffects* audioEffects, const FSMI_SbtData* sbt) = 0;
	virtual bool SendTopTablePosPhy    (const FSMI_TopTablePositionPhysical* position) = 0;
	virtual bool SendTopTablePosPhy3   (const FSMI_TopTablePositionPhysical* position, const FSMI_SFX* sfx, const FSMI_TactileAudioBasedFeedbackEffects* audioEffects, const FSMI_SbtData* sbt) = 0;
	virtual bool SendTopTableMatrixPhy (const FSMI_TopTableMatrixPhysical* matrix) = 0;
	virtual bool SendTopTableMatrixPhy3(const FSMI_TopTableMatrixPhysical* matrix, const FSMI_SFX* sfx, const FSMI_TactileAudioBasedFeedbackEffects* audioEffects, const FSMI_SbtData* sbt) = 0;
};
