@betaflight/api
Version:
A high-level API to read data from betaflight flight controllers
58 lines • 2.11 kB
JavaScript
import { apiVersion, execute, WriteBuffer } from "@betaflight/msp";
import semver from "semver";
import codes from "../codes";
import { partialWriteFunc } from "../utils";
export const readMotorConfig = async (port) => {
const api = apiVersion(port);
const data = await execute(port, { code: codes.MSP_MOTOR_CONFIG });
return {
minThrottle: data.readU16(),
maxThrottle: data.readU16(),
minCommand: data.readU16(),
...(semver.gte(api, "1.42.0")
? {
motorCount: data.readU8(),
motorPoles: data.readU8(),
useDshotTelemetry: data.readU8() !== 0,
useEscSensor: data.readU8() !== 0,
}
: {
motorCount: 0,
motorPoles: 0,
useDshotTelemetry: false,
useEscSensor: false,
}),
};
};
export const writeMotorConfig = async (port, config) => {
const api = apiVersion(port);
const buffer = new WriteBuffer();
buffer
.push16(config.minThrottle)
.push16(config.maxThrottle)
.push16(config.minCommand);
if (semver.gte(api, "1.42.0")) {
buffer.push8(config.motorPoles);
buffer.push8(config.useDshotTelemetry ? 1 : 0);
}
await execute(port, { code: codes.MSP_SET_MOTOR_CONFIG, data: buffer });
};
export const readMixerConfig = async (port) => {
const data = await execute(port, { code: codes.MSP_MIXER_CONFIG });
const api = apiVersion(port);
return {
mixer: data.readU8(),
reversedMotors: !!(semver.gte(api, "1.36.0") ? data.readU8() : 0),
};
};
export const writeMixerConfig = async (port, config) => {
const buffer = new WriteBuffer();
const api = apiVersion(port);
buffer.push8(config.mixer);
if (semver.gte(api, "1.36.0")) {
buffer.push8(config.reversedMotors ? 1 : 0);
}
await execute(port, { code: codes.MSP_SET_MIXER_CONFIG, data: buffer });
};
export const writePartialMixerConfig = partialWriteFunc(readMixerConfig, writeMixerConfig);
//# sourceMappingURL=index.js.map