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

#pragma once

#include "IForceSeatMI_API.h"
#include "ForceSeatMI_Functions.h"

class ForceSeatMI_API : public IForceSeatMI_API
{
public:
	explicit ForceSeatMI_API(FSMI_Handle handle);

public:
	virtual bool BeginMotionControl    () override;
	virtual bool EndMotionControl      () override;
	virtual bool GetPlatformInfoEx     (FSMI_PlatformInfo* platformInfo, unsigned int platformInfoStructSize, unsigned int timeout) override;
	virtual bool SendTelemetryACE      (const FSMI_TelemetryACE* telemetry) override;
	virtual bool SendTelemetryACE3     (const FSMI_TelemetryACE* telemetry, const FSMI_SFX* sfx, const FSMI_TactileAudioBasedFeedbackEffects* audioEffects, const FSMI_SbtData* sbt) override;
	virtual bool SendTopTablePosPhy    (const FSMI_TopTablePositionPhysical* position) override;
	virtual bool SendTopTablePosPhy3   (const FSMI_TopTablePositionPhysical* position, const FSMI_SFX* sfx, const FSMI_TactileAudioBasedFeedbackEffects* audioEffects, const FSMI_SbtData* sbt) override;
	virtual bool SendTopTableMatrixPhy (const FSMI_TopTableMatrixPhysical* matrix) override;
	virtual bool SendTopTableMatrixPhy3(const FSMI_TopTableMatrixPhysical* matrix, const FSMI_SFX* sfx, const FSMI_TactileAudioBasedFeedbackEffects* audioEffects, const FSMI_SbtData* sbt) override;
private:
	FSMI_Handle m_handle;
};
