drc.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import request, { IWorkspaceResponse } from '/@/api/http/request'
  2. import { getWorkspaceId } from '/@/utils/index';
  3. // DRC 链路
  4. const DRC_API_PREFIX = '/control/api/v1'
  5. export interface PostDrcBody {
  6. client_id?: string // token过期时,用于续期则必填
  7. expire_sec?: number // 过期时间,单位秒,默认3600
  8. }
  9. export interface DrcParams {
  10. address: string
  11. username: string
  12. password: string
  13. client_id: string
  14. expire_time: number // 过期时间
  15. enable_tls: boolean // 是否开启tls
  16. }
  17. // 获取 mqtt 连接认证
  18. export async function postDrc(body: PostDrcBody): Promise<IWorkspaceResponse<DrcParams>> {
  19. const resp = await request.post(`${DRC_API_PREFIX}/workspaces/${getWorkspaceId()}/drc/connect`, body)
  20. return resp.data
  21. }
  22. export interface DrcEnterBody {
  23. client_id: string
  24. dock_sn: string
  25. expire_sec?: number // 过期时间,单位秒,默认3600
  26. device_info?: {
  27. osd_frequency?: number
  28. hsi_frequency?: number
  29. }
  30. }
  31. export interface DrcEnterResp {
  32. sub: string[] // 需要订阅接收的topic
  33. pub: string[] // 推送的topic地址
  34. }
  35. // 进入飞行控制 (建立drc连接&获取云控控制权)
  36. export async function postDrcEnter(body: DrcEnterBody): Promise<IWorkspaceResponse<DrcEnterResp>> {
  37. const resp = await request.post(`${DRC_API_PREFIX}/workspaces/${getWorkspaceId()}/drc/enter`, body)
  38. return resp.data
  39. }
  40. export interface DrcExitBody {
  41. client_id: string
  42. dock_sn: string
  43. }
  44. // 退出飞行控制 (退出drc连接&退出云控控制权)
  45. export async function postDrcExit(body: DrcExitBody): Promise<IWorkspaceResponse<null>> {
  46. const resp = await request.post(`${DRC_API_PREFIX}/workspaces/${getWorkspaceId()}/drc/exit`, body)
  47. return resp.data
  48. }