@betaflight/api
Version:
A high-level API to read data from betaflight flight controllers
240 lines • 10.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OSD_VALUE_VISIBLE = exports.OSD_PRECISION_VALUE_TO_TYPE = exports.OSD_VIDEO_VALUE_TO_TYPE = exports.OSD_UNIT_VALUE_TO_TYPE = exports.osdAlarms = exports.osdTimerSources = exports.osdWarnings = exports.osdStatisticFields = exports.osdFields = void 0;
const semver_1 = __importDefault(require("semver"));
const types_1 = require("./types");
/**
* Return the OSD fields in their data read order
* based on the given api version
*/
const osdFields = (apiVersion) => {
// version 3.0.1
if (semver_1.default.gte(apiVersion, "1.21.0")) {
return [
types_1.OSDFields.RSSI_VALUE,
types_1.OSDFields.MAIN_BATT_VOLTAGE,
types_1.OSDFields.CROSSHAIRS,
types_1.OSDFields.ARTIFICIAL_HORIZON,
types_1.OSDFields.HORIZON_SIDEBARS,
...(semver_1.default.lt(apiVersion, "1.36.0")
? [types_1.OSDFields.ONTIME, types_1.OSDFields.FLYTIME]
: [types_1.OSDFields.TIMER_1, types_1.OSDFields.TIMER_2]),
types_1.OSDFields.FLYMODE,
types_1.OSDFields.CRAFT_NAME,
types_1.OSDFields.THROTTLE_POSITION,
types_1.OSDFields.VTX_CHANNEL,
types_1.OSDFields.CURRENT_DRAW,
types_1.OSDFields.MAH_DRAWN,
types_1.OSDFields.GPS_SPEED,
types_1.OSDFields.GPS_SATS,
types_1.OSDFields.ALTITUDE,
...(semver_1.default.gte(apiVersion, "1.31.0")
? [
types_1.OSDFields.PID_ROLL,
types_1.OSDFields.PID_PITCH,
types_1.OSDFields.PID_YAW,
types_1.OSDFields.POWER,
]
: []),
...(semver_1.default.gte(apiVersion, "1.32.0")
? [
types_1.OSDFields.PID_RATE_PROFILE,
semver_1.default.gte(apiVersion, "1.36.0")
? types_1.OSDFields.WARNINGS
: types_1.OSDFields.BATTERY_WARNING,
types_1.OSDFields.AVG_CELL_VOLTAGE,
]
: []),
...(semver_1.default.gte(apiVersion, "1.34.0")
? [types_1.OSDFields.GPS_LON, types_1.OSDFields.GPS_LAT, types_1.OSDFields.DEBUG]
: []),
...(semver_1.default.gte(apiVersion, "1.35.0")
? [types_1.OSDFields.PITCH_ANGLE, types_1.OSDFields.ROLL_ANGLE]
: []),
...(semver_1.default.gte(apiVersion, "1.36.0")
? [
types_1.OSDFields.MAIN_BATT_USAGE,
types_1.OSDFields.DISARMED,
types_1.OSDFields.HOME_DIR,
types_1.OSDFields.HOME_DIST,
types_1.OSDFields.NUMERICAL_HEADING,
types_1.OSDFields.NUMERICAL_VARIO,
types_1.OSDFields.COMPASS_BAR,
types_1.OSDFields.ESC_TEMPERATURE,
types_1.OSDFields.ESC_RPM,
]
: []),
...(semver_1.default.gte(apiVersion, "1.37.0")
? [
types_1.OSDFields.REMAINING_TIME_ESTIMATE,
types_1.OSDFields.RTC_DATE_TIME,
types_1.OSDFields.ADJUSTMENT_RANGE,
types_1.OSDFields.CORE_TEMPERATURE,
]
: []),
...(semver_1.default.gte(apiVersion, "1.39.0") ? [types_1.OSDFields.ANTI_GRAVITY] : []),
...(semver_1.default.gte(apiVersion, "1.40.0") ? [types_1.OSDFields.G_FORCE] : []),
...(semver_1.default.gte(apiVersion, "1.41.0")
? [
types_1.OSDFields.MOTOR_DIAG,
types_1.OSDFields.LOG_STATUS,
types_1.OSDFields.FLIP_ARROW,
types_1.OSDFields.LINK_QUALITY,
types_1.OSDFields.FLIGHT_DIST,
types_1.OSDFields.STICK_OVERLAY_LEFT,
types_1.OSDFields.STICK_OVERLAY_RIGHT,
types_1.OSDFields.DISPLAY_NAME,
types_1.OSDFields.ESC_RPM_FREQ,
]
: []),
...(semver_1.default.gte(apiVersion, "1.42.0")
? [
types_1.OSDFields.RATE_PROFILE_NAME,
types_1.OSDFields.PID_PROFILE_NAME,
types_1.OSDFields.OSD_PROFILE_NAME,
types_1.OSDFields.RSSI_DBM_VALUE,
]
: []),
...(semver_1.default.gte(apiVersion, "1.43.0")
? [types_1.OSDFields.RC_CHANNELS, types_1.OSDFields.CAMERA_FRAME]
: []),
];
}
// version 3.0.0
return [
types_1.OSDFields.MAIN_BATT_VOLTAGE,
types_1.OSDFields.RSSI_VALUE,
types_1.OSDFields.TIMER,
types_1.OSDFields.THROTTLE_POSITION,
types_1.OSDFields.CPU_LOAD,
types_1.OSDFields.VTX_CHANNEL,
types_1.OSDFields.VOLTAGE_WARNING,
types_1.OSDFields.ARMED,
types_1.OSDFields.DISARMED,
types_1.OSDFields.ARTIFICIAL_HORIZON,
types_1.OSDFields.HORIZON_SIDEBARS,
types_1.OSDFields.CURRENT_DRAW,
types_1.OSDFields.MAH_DRAWN,
types_1.OSDFields.CRAFT_NAME,
types_1.OSDFields.ALTITUDE,
];
};
exports.osdFields = osdFields;
const osdStatisticFields = (apiVersion) => {
if (semver_1.default.lt(apiVersion, "1.39.0")) {
return [
types_1.OSDStatisticFields.MAX_SPEED,
types_1.OSDStatisticFields.MIN_BATTERY,
types_1.OSDStatisticFields.MIN_RSSI,
types_1.OSDStatisticFields.MAX_CURRENT,
types_1.OSDStatisticFields.USED_MAH,
types_1.OSDStatisticFields.MAX_ALTITUDE,
types_1.OSDStatisticFields.BLACKBOX,
types_1.OSDStatisticFields.END_BATTERY,
types_1.OSDStatisticFields.TIMER_1,
types_1.OSDStatisticFields.TIMER_2,
types_1.OSDStatisticFields.MAX_DISTANCE,
types_1.OSDStatisticFields.BLACKBOX_LOG_NUMBER,
...(semver_1.default.gte(apiVersion, "1.37.0")
? [types_1.OSDStatisticFields.RTC_DATE_TIME]
: []),
];
}
// Starting with 1.39.0 OSD stats are reordered to match how they're presented on screen
return [
types_1.OSDStatisticFields.RTC_DATE_TIME,
types_1.OSDStatisticFields.TIMER_1,
types_1.OSDStatisticFields.TIMER_2,
types_1.OSDStatisticFields.MAX_SPEED,
types_1.OSDStatisticFields.MAX_DISTANCE,
types_1.OSDStatisticFields.MIN_BATTERY,
types_1.OSDStatisticFields.END_BATTERY,
types_1.OSDStatisticFields.STAT_BATTERY,
types_1.OSDStatisticFields.MIN_RSSI,
types_1.OSDStatisticFields.MAX_CURRENT,
types_1.OSDStatisticFields.USED_MAH,
types_1.OSDStatisticFields.MAX_ALTITUDE,
types_1.OSDStatisticFields.BLACKBOX,
types_1.OSDStatisticFields.BLACKBOX_LOG_NUMBER,
...(semver_1.default.gte(apiVersion, "1.41.0")
? [
types_1.OSDStatisticFields.MAX_G_FORCE,
types_1.OSDStatisticFields.MAX_ESC_TEMP,
types_1.OSDStatisticFields.MAX_ESC_RPM,
types_1.OSDStatisticFields.MIN_LINK_QUALITY,
types_1.OSDStatisticFields.FLIGHT_DISTANCE,
types_1.OSDStatisticFields.MAX_FFT,
]
: []),
...(semver_1.default.gte(apiVersion, "1.42.0")
? [
types_1.OSDStatisticFields.TOTAL_FLIGHTS,
types_1.OSDStatisticFields.TOTAL_FLIGHT_TIME,
types_1.OSDStatisticFields.TOTAL_FLIGHT_DIST,
types_1.OSDStatisticFields.MIN_RSSI_DBM,
]
: []),
];
};
exports.osdStatisticFields = osdStatisticFields;
const osdWarnings = (apiVersion) => [
types_1.OSDWarnings.ARMING_DISABLED,
types_1.OSDWarnings.BATTERY_NOT_FULL,
types_1.OSDWarnings.BATTERY_WARNING,
types_1.OSDWarnings.BATTERY_CRITICAL,
types_1.OSDWarnings.VISUAL_BEEPER,
types_1.OSDWarnings.CRASH_FLIP_MODE,
...(semver_1.default.gte(apiVersion, "1.39.0")
? [
types_1.OSDWarnings.ESC_FAIL,
types_1.OSDWarnings.CORE_TEMPERATURE,
types_1.OSDWarnings.RC_SMOOTHING_FAILURE,
]
: []),
...(semver_1.default.gte(apiVersion, "1.41.0")
? [
types_1.OSDWarnings.FAILSAFE,
types_1.OSDWarnings.LAUNCH_CONTROL,
types_1.OSDWarnings.GPS_RESCUE_UNAVAILABLE,
types_1.OSDWarnings.GPS_RESCUE_DISABLED,
]
: []),
...(semver_1.default.gte(apiVersion, "1.42.0")
? [types_1.OSDWarnings.RSSI, types_1.OSDWarnings.LINK_QUALITY, types_1.OSDWarnings.RSSI_DBM]
: []),
...(semver_1.default.gte(apiVersion, "1.43.0") ? [types_1.OSDWarnings.OVER_CAP] : []),
];
exports.osdWarnings = osdWarnings;
const osdTimerSources = (apiVersion) => [
types_1.OSDTimerSources.ON_TIME,
types_1.OSDTimerSources.TOTAL_ARMED_TIME,
types_1.OSDTimerSources.LAST_ARMED_TIME,
...(semver_1.default.gte(apiVersion, "1.42.0") ? [types_1.OSDTimerSources.ON_ARM_TIME] : []),
];
exports.osdTimerSources = osdTimerSources;
const osdAlarms = () => [
types_1.OSDAlarms.RSSI,
types_1.OSDAlarms.CAP,
types_1.OSDAlarms.TIME,
types_1.OSDAlarms.ALT,
];
exports.osdAlarms = osdAlarms;
exports.OSD_UNIT_VALUE_TO_TYPE = [
types_1.OSDUnitTypes.IMPERIAL,
types_1.OSDUnitTypes.METRIC,
];
exports.OSD_VIDEO_VALUE_TO_TYPE = [
types_1.OSDVideoTypes.AUTO,
types_1.OSDVideoTypes.PAL,
types_1.OSDVideoTypes.NTSC,
];
exports.OSD_PRECISION_VALUE_TO_TYPE = [
types_1.OSDPrecisionTypes.SECOND,
types_1.OSDPrecisionTypes.HUNDREDTH,
types_1.OSDPrecisionTypes.TENTH,
];
exports.OSD_VALUE_VISIBLE = 0x0800;
//# sourceMappingURL=constants.js.map