import commander from "../exchanger"
import { CommandType } from "../types"
import {
    parseBattery,
    parseHeight,
    parseTemperature,
    parseSpeed,
    parseTime,
    parseWifi,
    parseAttitude,
    parseBarometer,
    parseAcceleration,
    parseTof
} from "../parsers"
import type {
    BatteryResponse,
    HeightResponse,
    TemperatureResponse,
    SpeedResponse,
    TimeResponse,
    WifiResponse,
    AttitudeResponse,
    BarometerResponse,
    AccelerationResponse,
    TofResponse
} from "../types"

const speed = (): Promise<SpeedResponse> => 
    commander.send('speed?', parseSpeed, CommandType.READ)

const battery = (): Promise<BatteryResponse> => 
    commander.send('battery?', parseBattery, CommandType.READ)

const time = (): Promise<TimeResponse> => 
    commander.send('time?', parseTime, CommandType.READ)

const height = (): Promise<HeightResponse> => 
    commander.send('height?', parseHeight, CommandType.READ)

const temperature = (): Promise<TemperatureResponse> => 
    commander.send('temp?', parseTemperature, CommandType.READ)

const attitude = (): Promise<AttitudeResponse> => 
    commander.send('attitude?', parseAttitude, CommandType.READ)

const barometer = (): Promise<BarometerResponse> => 
    commander.send('baro?', parseBarometer, CommandType.READ)

const acceleration = (): Promise<AccelerationResponse> => 
    commander.send('acceleration?', parseAcceleration, CommandType.READ)

const tof = (): Promise<TofResponse> => 
    commander.send('tof?', parseTof, CommandType.READ)

const wifi = (): Promise<WifiResponse> => 
    commander.send('wifi?', parseWifi, CommandType.READ)

export const read = { speed, battery, time, wifi, height, temperature, attitude, barometer, tof, acceleration }
export default read
