import { message } from 'ant-design-vue' import { postPayloadAuth, postPayloadCommands, PayloadCommandsEnum, PostCameraModeBody, PostCameraFocalLengthBody, PostGimbalResetBody, PostCameraAimBody, } from '/@/api/drone-control/payload' import { ControlSource } from '/@/types/device' export function usePayloadControl () { function checkPayloadAuth (controlSource?: ControlSource) { if (controlSource !== ControlSource.A) { message.error('Get Payload Control first') return false } return true } async function authPayload (sn: string, payloadIndx: string) { const { code } = await postPayloadAuth(sn, { payload_index: payloadIndx }) if (code === 0) { message.success('获取负载控制成功') return true } return false } async function resetGimbal (sn: string, data: PostGimbalResetBody) { const { code } = await postPayloadCommands(sn, { cmd: PayloadCommandsEnum.GimbalReset, data: data }) if (code === 0) { message.success('重置云台成功') } } async function switchCameraMode (sn: string, data: PostCameraModeBody) { const { code } = await postPayloadCommands(sn, { cmd: PayloadCommandsEnum.CameraModeSwitch, data: data }) if (code === 0) { message.success('切换相机模式成功') } } async function takeCameraPhoto (sn: string, payloadIndx: string) { const { code } = await postPayloadCommands(sn, { cmd: PayloadCommandsEnum.CameraPhotoTake, data: { payload_index: payloadIndx } }) if (code === 0) { message.success('拍照成功') } } async function startCameraRecording (sn: string, payloadIndx: string) { const { code } = await postPayloadCommands(sn, { cmd: PayloadCommandsEnum.CameraRecordingStart, data: { payload_index: payloadIndx } }) if (code === 0) { message.success('开始录像') } } async function stopCameraRecording (sn: string, payloadIndx: string) { const { code } = await postPayloadCommands(sn, { cmd: PayloadCommandsEnum.CameraRecordingStop, data: { payload_index: payloadIndx } }) if (code === 0) { message.success('结束录像') } } async function changeCameraFocalLength (sn: string, data: PostCameraFocalLengthBody) { const { code } = await postPayloadCommands(sn, { cmd: PayloadCommandsEnum.CameraFocalLengthSet, data: data, }) if (code === 0) { message.success('变焦相机切换成功') } } async function cameraAim (sn: string, data: PostCameraAimBody) { const { code } = await postPayloadCommands(sn, { cmd: PayloadCommandsEnum.CameraAim, data: data, }) if (code === 0) { message.success('Zoom Aim successfully') } } return { checkPayloadAuth, authPayload, resetGimbal, switchCameraMode, takeCameraPhoto, startCameraRecording, stopCameraRecording, changeCameraFocalLength, cameraAim, } }