93 lines
2.8 KiB
TypeScript
93 lines
2.8 KiB
TypeScript
import { FirmwareHardware, TaggedFbosConfig } from "farmbot";
|
|
|
|
export const isFwHardwareValue = (x?: unknown): x is FirmwareHardware => {
|
|
const values: FirmwareHardware[] = [
|
|
"arduino",
|
|
"farmduino", "farmduino_k14", "farmduino_k15",
|
|
"express_k10",
|
|
"none"
|
|
];
|
|
return !!values.includes(x as FirmwareHardware);
|
|
};
|
|
|
|
export const getFwHardwareValue =
|
|
(fbosConfig: TaggedFbosConfig | undefined) => {
|
|
const value = fbosConfig?.body.firmware_hardware;
|
|
return isFwHardwareValue(value) ? value : undefined;
|
|
};
|
|
|
|
const TMC_BOARDS = ["express_k10", "farmduino_k15"];
|
|
const EXPRESS_BOARDS = ["express_k10"];
|
|
|
|
export const isTMCBoard = (firmwareHardware: FirmwareHardware | undefined) =>
|
|
!!(firmwareHardware && TMC_BOARDS.includes(firmwareHardware));
|
|
|
|
export const isExpressBoard = (firmwareHardware: FirmwareHardware | undefined) =>
|
|
!!(firmwareHardware && EXPRESS_BOARDS.includes(firmwareHardware));
|
|
|
|
export const getBoardIdentifier =
|
|
(firmwareVersion: string | undefined): string =>
|
|
firmwareVersion ? firmwareVersion.split(".")[3] : "undefined";
|
|
|
|
export const isKnownBoard = (firmwareVersion: string | undefined): boolean => {
|
|
const boardIdentifier = getBoardIdentifier(firmwareVersion);
|
|
return ["R", "F", "G", "H", "E"].includes(boardIdentifier);
|
|
};
|
|
|
|
export const getBoardCategory =
|
|
(firmwareVersion: string | undefined): "Farmduino" | "Arduino" => {
|
|
const boardIdentifier = getBoardIdentifier(firmwareVersion);
|
|
return boardIdentifier === "R" ? "Arduino" : "Farmduino";
|
|
};
|
|
|
|
export const boardType =
|
|
(firmwareVersion: string | undefined): FirmwareHardware | "unknown" => {
|
|
if (firmwareVersion === "none") { return "none"; }
|
|
const boardIdentifier = getBoardIdentifier(firmwareVersion);
|
|
switch (boardIdentifier) {
|
|
case "R":
|
|
return "arduino";
|
|
case "F":
|
|
return "farmduino";
|
|
case "G":
|
|
return "farmduino_k14";
|
|
case "H":
|
|
return "farmduino_k15";
|
|
case "E":
|
|
return "express_k10";
|
|
default:
|
|
return "unknown";
|
|
}
|
|
};
|
|
|
|
const ARDUINO = { label: "Arduino/RAMPS (Genesis v1.2)", value: "arduino" };
|
|
const FARMDUINO = { label: "Farmduino (Genesis v1.3)", value: "farmduino" };
|
|
const FARMDUINO_K14 = {
|
|
label: "Farmduino (Genesis v1.4)", value: "farmduino_k14"
|
|
};
|
|
const FARMDUINO_K15 = {
|
|
label: "Farmduino (Genesis v1.5)", value: "farmduino_k15"
|
|
};
|
|
const EXPRESS_K10 = {
|
|
label: "Farmduino (Express v1.0)", value: "express_k10"
|
|
};
|
|
const NONE = { label: "None", value: "none" };
|
|
|
|
export const FIRMWARE_CHOICES_DDI = {
|
|
[ARDUINO.value]: ARDUINO,
|
|
[FARMDUINO.value]: FARMDUINO,
|
|
[FARMDUINO_K14.value]: FARMDUINO_K14,
|
|
[FARMDUINO_K15.value]: FARMDUINO_K15,
|
|
[EXPRESS_K10.value]: EXPRESS_K10,
|
|
[NONE.value]: NONE
|
|
};
|
|
|
|
export const getFirmwareChoices = () => ([
|
|
ARDUINO,
|
|
FARMDUINO,
|
|
FARMDUINO_K14,
|
|
FARMDUINO_K15,
|
|
EXPRESS_K10,
|
|
NONE,
|
|
]);
|