/**
 ********************************************************************
 * @file   GIMBAL.h
 *         GIMBAL.h 的头文件
 *
 *********************************************************************
 */

/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef GIMBAL_H
#define GIMBAL_H

/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
typedef struct T_GimbalInfo{
    int PitchLimitMax;
    int PitchLimitMin;
    int DebugPitch_Left;
    int DebugPitch_Right;
}T_GimbalInfo;

/* Exported types ------------------------------------------------------------*/

/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode Gimbal_Init(enum JZ_MODULE_CONTROL_WAY Mode);

T_JZsdkReturnCode Get_JZsdk_GimbalStatusFlag();


T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle);
T_JZsdkReturnCode Gimbal_Set_YawAngle(int angle);
T_JZsdkReturnCode Gimbal_Set_RollAngle(int angle);

T_JZsdkReturnCode Gimbal_SetGimbalRange(int flag, int value);
T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTuningPitch, int *FineTuningYaw, int *FineTuningRoll);
T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch, int yaw, int roll);
T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch);
T_JZsdkReturnCode Gimbal_Set_YawFineTuning(int yaw);
T_JZsdkReturnCode Gimbal_Set_RollFineTuning(int pitch, int yaw, int roll);
T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value);
T_JZsdkReturnCode Gimbal_Set_DebugPitch(int pitch, int flag, int direction);

T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value);
T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage);
T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle);
T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch);

T_JZsdkReturnCode Gimbal_Set_SingleCompensation(int Mode, int Value);


T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch);
int Gimbal_PitchScaleMode(int value);
T_JZsdkReturnCode Gimbal_PitchRotationMode(int value);
int Gimbal_ReplyPitchToUAVScale(int angle);

T_JZsdkReturnCode Gimbal_Set_GimbalSingleCalibration(E_JZ_GimbalSingleCalibrationMode Mode);

int Gimbal_Get_PitchAngle();
int Gimbal_Get_PitchFineTuning();
int Gimbal_Get_PitchRealPitchAngle();
T_JZsdkReturnCode Gimbal_Get_GimbalInfo(T_GimbalInfo *GimbalInfo);

T_JZsdkReturnCode Gimbal_Flush_Pitch();
T_JZsdkReturnCode Gimbal_LimitAngleFlush();


#ifdef __cplusplus
}
#endif

#endif