tello-custom-ip
Version:
Tello drone client with custom IP address support, forked from @0x77/tellots
72 lines (53 loc) • 2.79 kB
text/typescript
import commander from "../exchanger"
import { CommandType } from "../types"
import { parseCommandResponse } from "../parsers"
const connect = (): Promise<boolean> =>
commander.send('command', parseCommandResponse, CommandType.CONTROL)
const takeOff = (): Promise<boolean> =>
commander.send('takeoff', parseCommandResponse, CommandType.CONTROL)
const land = (): Promise<boolean> =>
commander.send('land', parseCommandResponse, CommandType.CONTROL)
const emergency = (): Promise<boolean> =>
commander.send('emergency', parseCommandResponse, CommandType.CONTROL)
const stop = (): Promise<boolean> =>
commander.send('stop', parseCommandResponse, CommandType.CONTROL)
const flip = (side: "l" | "r" | "b" | "f"): Promise<boolean> =>
commander.send(`flip ${side}`, parseCommandResponse, CommandType.CONTROL)
const up = (distance: number): Promise<boolean> =>
commander.send(`up ${distance}`, parseCommandResponse, CommandType.CONTROL)
const down = (distance: number): Promise<boolean> =>
commander.send(`down ${distance}`, parseCommandResponse, CommandType.CONTROL)
const left = (distance: number): Promise<boolean> =>
commander.send(`left ${distance}`, parseCommandResponse, CommandType.CONTROL)
const right = (distance: number): Promise<boolean> =>
commander.send(`right ${distance}`, parseCommandResponse, CommandType.CONTROL)
const front = (distance: number): Promise<boolean> =>
commander.send(`forward ${distance}`, parseCommandResponse, CommandType.CONTROL)
const back = (distance: number): Promise<boolean> =>
commander.send(`back ${distance}`, parseCommandResponse, CommandType.CONTROL)
const clockwise = (angle: number): Promise<boolean> =>
commander.send(`cw ${angle}`, parseCommandResponse, CommandType.CONTROL)
const counterClockwise = (angle: number): Promise<boolean> =>
commander.send(`ccw ${angle}`, parseCommandResponse, CommandType.CONTROL)
const go = (end: { x: number, y: number, z: number }, speed: number): Promise<boolean> =>
commander.send(`go ${end.x} ${end.y} ${end.z} ${speed}`, parseCommandResponse, CommandType.CONTROL)
const curve = (start: { x: number, y: number, z: number }, end: { x: number, y: number, z: number }, speed: number): Promise<boolean> =>
commander.send(`curve ${start.x} ${start.y} ${start.z} ${end.x} ${end.y} ${end.z} ${speed}`, parseCommandResponse, CommandType.CONTROL)
export const control = {
connect,
takeOff,
land,
emergency,
stop,
go,
curve,
move: { up, down, left, right, back, front },
rotate: { clockwise, counterClockwise },
flip: {
left: () => flip('l'),
right: () => flip('r'),
back: () => flip('b'),
front: () => flip('f'),
}
};
export default control;