Skip to content

Commit

Permalink
add Express v1.2 options
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielburnworth committed Nov 3, 2023
1 parent da987b9 commit 25c250c
Show file tree
Hide file tree
Showing 26 changed files with 236 additions and 20 deletions.
1 change: 1 addition & 0 deletions app/models/fbos_config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@ class MissingSerial < StandardError; end
FARMDUINO_K17 = "farmduino_k17",
EXPRESS_K10 = "express_k10",
EXPRESS_K11 = "express_k11",
EXPRESS_K12 = "express_k12",
]
end
2 changes: 2 additions & 0 deletions app/mutations/devices/create_seed_data.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ class CreateSeedData < Mutations::Command
PRODUCT_LINES = {
"express_1.0" => Devices::Seeders::ExpressOneZero,
"express_1.1" => Devices::Seeders::ExpressOneOne,
"express_1.2" => Devices::Seeders::ExpressOneTwo,
"express_xl_1.0" => Devices::Seeders::ExpressXlOneZero,
"express_xl_1.1" => Devices::Seeders::ExpressXlOneOne,
"express_xl_1.2" => Devices::Seeders::ExpressXlOneTwo,

"genesis_1.2" => Devices::Seeders::GenesisOneTwo,
"genesis_1.3" => Devices::Seeders::GenesisOneThree,
Expand Down
11 changes: 11 additions & 0 deletions app/mutations/devices/seeders/express_one_two.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module Devices
module Seeders
class ExpressOneTwo < AbstractExpress
def settings_firmware
device
.fbos_config
.update!(firmware_hardware: FbosConfig::EXPRESS_K12)
end
end
end
end
23 changes: 23 additions & 0 deletions app/mutations/devices/seeders/express_xl_one_two.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module Devices
module Seeders
class ExpressXlOneTwo < AbstractExpress
def settings_device_name
device.update!(name: Names::EXPRESS_XL)
end

def settings_firmware
device
.fbos_config
.update!(firmware_hardware: FbosConfig::EXPRESS_K12)
end

def settings_default_map_size_x
device.web_app_config.update!(map_size_x: 6_000)
end

def settings_default_map_size_y
device.web_app_config.update!(map_size_y: 2_400)
end
end
end
end
2 changes: 1 addition & 1 deletion frontend/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1919,7 +1919,7 @@ export namespace SetupWizardContent {
export const CHECK_CAMERA_CABLE =
trim(`Check that the camera is plugged in correctly to either a
Raspberry Pi USB port (Express v1.0 kits and all Genesis kits) or into
one of the vertically oriented USB ports on the Farmduino (Express v1.1
one of the vertically oriented USB ports on the Farmduino (Express v1.1+
kits). For cameras with a 90 degree intermediary connector at the
cross-slide, ensure the connectors are fully connected.`);

Expand Down
1 change: 1 addition & 0 deletions frontend/controls/peripherals/__tests__/index_test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ describe("<Peripherals />", () => {
["farmduino_k17", 7],
["express_k10", 3],
["express_k11", 3],
["express_k12", 3],
])("adds peripherals: %s", (firmware, expectedAdds) => {
const p = fakeProps();
p.firmwareHardware = firmware;
Expand Down
1 change: 1 addition & 0 deletions frontend/controls/peripherals/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ export class Peripherals
];
case "express_k10":
case "express_k11":
case "express_k12":
return BASE_PERIPHERALS;
}
}
Expand Down
1 change: 1 addition & 0 deletions frontend/devices/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export enum Feature {
endstop_invert = "endstop_invert",
express_k10 = "express_k10",
express_k11 = "express_k11",
express_k12 = "express_k12",
express_stall_detection = "express_stall_detection",
farmduino_k14 = "farmduino_k14",
farmduino_k15 = "farmduino_k15",
Expand Down
5 changes: 5 additions & 0 deletions frontend/messages/cards.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,11 @@ const FirmwareChoiceTable = () =>
<td>{"Farmduino"}</td>
<td><code>{FIRMWARE_CHOICES_DDI["express_k11"].label}</code></td>
</tr>
<tr>
<td>{"Express v1.2"}</td>
<td>{"Farmduino"}</td>
<td><code>{FIRMWARE_CHOICES_DDI["express_k12"].label}</code></td>
</tr>
</tbody>
</table>;

Expand Down
2 changes: 1 addition & 1 deletion frontend/os_download/__tests__/content_test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ describe("<OsDownloadPage />", () => {
it("runs the wizard: express", () => {
const wrapper = mount(<OsDownloadPage />);
clickButton(wrapper, 1, "express", { partial_match: true });
clickButton(wrapper, 0, "express v1.0");
clickButton(wrapper, 1, "express v1.0");
expect(wrapper.text().toLowerCase()).toContain("zero");
});

Expand Down
8 changes: 7 additions & 1 deletion frontend/os_download/content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,9 @@ const PLATFORM_DATA = (): PlatformContent[] => [
"Genesis XL v1.5",
"Genesis XL v1.6 (black cable)",
"Express v1.1 (USB)",
"Express v1.2 (USB)",
"Express XL v1.1 (USB)",
"Express XL v1.2 (USB)",
],
},
{
Expand Down Expand Up @@ -142,8 +144,9 @@ enum Version {

const VERSIONS = () => ({
[Model.Express]: [
Version["v1.0"],
// Version["v1.2"],
Version["v1.1"],
Version["v1.0"],
],
[Model.Genesis]: [
// Version["v1.7"],
Expand Down Expand Up @@ -208,6 +211,9 @@ const DOWNLOADS = (): Downloads => ({
[Version["v1.1"]]: {
[Run.first]: RPIZ2(),
},
[Version["v1.2"]]: {
[Run.first]: RPIZ2(),
},
},
[Model.Genesis]: {
[Version["v1.2"]]: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ describe("<PiDisplay />", () => {
["Zero W", "rpi", "arduino"],
["3", "rpi3", "arduino"],
["Zero 2 W", "rpi3", "express_k11"],
["Zero 2 W", "rpi3", "express_k12"],
["4", "rpi4", "arduino"],
["Unknown", "", undefined],
])("returns correct pi model: %s", (expected, chip, firmware) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const TEST_CASES: TestCase[] = [
["4", "rpi4", "farmduino_k17", "pi 4"],
["01", "rpi", "express_k10", "zero w"],
["02", "rpi3", "express_k11", "zero 2 w"],
["02", "rpi3", "express_k12", "zero 2 w"],
];

describe("<RpiModel />", () => {
Expand Down
4 changes: 2 additions & 2 deletions frontend/settings/fbos_settings/fbos_details.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { LastSeen } from "./last_seen_row";
import moment from "moment";
import { formatTime } from "../../util";
import {
boardType, FIRMWARE_CHOICES_DDI, validFirmwareHardware,
boardType, FIRMWARE_CHOICES_DDI, hasZero2, validFirmwareHardware,
} from "../firmware/firmware_hardware_support";
import { ExternalUrl, FarmBotRepo } from "../../external_urls";
import { DeviceAccountSettings } from "farmbot/dist/resources/api_resources";
Expand Down Expand Up @@ -63,7 +63,7 @@ export const PiDisplay = ({ chip, firmware }: PiDisplayProps): JSX.Element => {
const pi = () => {
switch (chip) {
case "rpi": return "Zero W";
case "rpi3": return firmware == "express_k11" ? "Zero 2 W" : "3";
case "rpi3": return hasZero2(firmware) ? "Zero 2 W" : "3";
case "rpi4": return "4";
default: return t("Unknown");
}
Expand Down
19 changes: 10 additions & 9 deletions frontend/settings/fbos_settings/rpi_model.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { FirmwareHardware, TaggedDevice } from "farmbot";
import { BotState } from "../../devices/interfaces";
import { StatusIcon } from "../firmware/firmware_hardware_status";
import { Position } from "@blueprintjs/core";
import { hasZero2 } from "../firmware/firmware_hardware_support";

export const RPI_OPTIONS: Record<string, DropDownItem> = {
"3": { label: "Raspberry Pi 3", value: "3" },
Expand All @@ -16,13 +17,14 @@ export const RPI_OPTIONS: Record<string, DropDownItem> = {
"02": { label: "Raspberry Pi Zero 2 W", value: "02" },
};

const TARGETS = (firmwareHardware: string): { [x: string]: string } => ({
"rpi3": firmwareHardware == "express_k11"
? "Raspberry Pi Zero 2 W"
: "Raspberry Pi 3",
"rpi4": "Raspberry Pi 4",
"rpi": "Raspberry Pi Zero W",
});
const TARGETS =
(firmwareHardware: FirmwareHardware | undefined): { [x: string]: string } => ({
"rpi3": hasZero2(firmwareHardware)
? "Raspberry Pi Zero 2 W"
: "Raspberry Pi 3",
"rpi4": "Raspberry Pi 4",
"rpi": "Raspberry Pi Zero W",
});

export interface RpiModelProps {
dispatch: Function;
Expand Down Expand Up @@ -89,7 +91,6 @@ export const StatusDetails = (props: StatusDetailsProps) => {
<p>{selection ? RPI_OPTIONS[selection].label : t("none")}</p>
<label>{t("FarmBot OS")}</label>
<Help text={ToolTips.RPI_VALUE_FBOS} />
<p>{TARGETS("" + firmwareHardware)["" + target]
|| t("unknown")}</p>
<p>{TARGETS(firmwareHardware)["" + target] || t("unknown")}</p>
</div>;
};
2 changes: 1 addition & 1 deletion frontend/settings/firmware/__tests__/board_type_test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,6 @@ describe("<BoardType/>", () => {
mockFeatureBoolean = true;
const wrapper = mount(<BoardType {...fakeProps()} />);
const { list } = wrapper.find("FBSelect").props();
expect(list?.length).toEqual(9);
expect(list?.length).toEqual(10);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ describe("boardType()", () => {
expect(boardType("5.0.3.D")).toEqual("express_k11");
});

it("returns Farmduino Express k1.2", () => {
expect(boardType("5.0.3.C")).toEqual("express_k12");
});

it("returns Arduino/RAMPS", () => {
expect(boardType("5.0.3.R")).toEqual("arduino");
});
Expand Down
17 changes: 15 additions & 2 deletions frontend/settings/firmware/firmware_hardware_support.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export const isFwHardwareValue = (x?: unknown): x is FirmwareHardware => {
const values: FirmwareHardware[] = [
"arduino",
"farmduino", "farmduino_k14", "farmduino_k15", "farmduino_k16", "farmduino_k17",
"express_k10", "express_k11",
"express_k10", "express_k11", "express_k12",
"none",
];
return !!values.includes(x as FirmwareHardware);
Expand All @@ -15,6 +15,7 @@ export const isFwHardwareValue = (x?: unknown): x is FirmwareHardware => {
const ordered: FirmwareHardware[] = [
"express_k10",
"express_k11",
"express_k12",
"arduino",
"farmduino",
"farmduino_k14",
Expand All @@ -38,11 +39,12 @@ export const getFwHardwareValue =
};

const NO_BUTTONS = ["arduino", "farmduino", "none"];
const EXPRESS_BOARDS = ["express_k10", "express_k11"];
const EXPRESS_BOARDS = ["express_k10", "express_k11", "express_k12"];
const NO_SENSORS = [...EXPRESS_BOARDS];
const NO_ENCODERS = [...EXPRESS_BOARDS];
const NO_TOOLS = [...EXPRESS_BOARDS];
const NO_ETHERNET = ["express_k10"];
const NO_ZERO_2 = ["express_k10"];
const NO_EXTRA_BUTTONS = [...EXPRESS_BOARDS];
const NO_TMC = ["arduino", "farmduino", "farmduino_k14"];
const NO_ROTARY = ["arduino", "farmduino", "farmduino_k14", "farmduino_k15"]
Expand Down Expand Up @@ -75,6 +77,10 @@ export const hasRotaryTool = (firmwareHardware: FirmwareHardware | undefined) =>
export const hasEthernet = (firmwareHardware: FirmwareHardware | undefined) =>
!firmwareHardware || !NO_ETHERNET.includes(firmwareHardware);

export const hasZero2 = (firmwareHardware: FirmwareHardware | undefined) =>
isExpress(firmwareHardware)
&& !NO_ZERO_2.includes(firmwareHardware as FirmwareHardware);

const getBoardIdentifier =
(firmwareVersion: string | undefined): string =>
firmwareVersion ? firmwareVersion.split(".")[3] : "undefined";
Expand Down Expand Up @@ -118,6 +124,7 @@ const FIRMWARE_LOOKUP: { [id: string]: FirmwareHardware } = {
J: "farmduino_k17",
E: "express_k10",
D: "express_k11",
C: "express_k12",
};

enum BoardLabels {
Expand All @@ -129,6 +136,7 @@ enum BoardLabels {
farmduino_k17 = "Farmduino (Genesis v1.7)",
express_k10 = "Farmduino (Express v1.0)",
express_k11 = "Farmduino (Express v1.1)",
express_k12 = "Farmduino (Express v1.2)",
none = "None",
}

Expand All @@ -141,6 +149,7 @@ enum KitLabels {
farmduino_k17 = "Genesis v1.7",
express_k10 = "Express v1.0",
express_k11 = "Express v1.1",
express_k12 = "Express v1.2",
none = "None",
unknown = "Farmduino",
}
Expand All @@ -154,6 +163,7 @@ const KIT_LOOKUP = {
farmduino_k17: KitLabels.farmduino_k17,
express_k10: KitLabels.express_k10,
express_k11: KitLabels.express_k11,
express_k12: KitLabels.express_k12,
none: KitLabels.none,
unknown: KitLabels.unknown,
};
Expand All @@ -166,6 +176,7 @@ const FARMDUINO_K16 = { label: BoardLabels.farmduino_k16, value: "farmduino_k16"
const FARMDUINO_K17 = { label: BoardLabels.farmduino_k17, value: "farmduino_k17" };
const EXPRESS_K10 = { label: BoardLabels.express_k10, value: "express_k10" };
const EXPRESS_K11 = { label: BoardLabels.express_k11, value: "express_k11" };
const EXPRESS_K12 = { label: BoardLabels.express_k12, value: "express_k12" };
const NONE = { label: BoardLabels.none, value: "none" };

export const FIRMWARE_CHOICES_DDI = {
Expand All @@ -177,6 +188,7 @@ export const FIRMWARE_CHOICES_DDI = {
[FARMDUINO_K17.value]: FARMDUINO_K17,
[EXPRESS_K10.value]: EXPRESS_K10,
[EXPRESS_K11.value]: EXPRESS_K11,
[EXPRESS_K12.value]: EXPRESS_K12,
[NONE.value]: NONE,
};

Expand All @@ -189,5 +201,6 @@ export const getFirmwareChoices = () => ([
...(shouldDisplayFeature(Feature.farmduino_k17) ? [FARMDUINO_K17] : []),
EXPRESS_K10,
EXPRESS_K11,
...(shouldDisplayFeature(Feature.express_k12) ? [EXPRESS_K12] : []),
NONE,
]);
2 changes: 1 addition & 1 deletion frontend/settings/firmware/firmware_path.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export const ChangeFirmwarePath = (props: ChangeFirmwarePathProps) => {
label: t("ttyAMA0 (recommended for Express v1.0)"), value: "ttyAMA0",
},
ttyUSB0: {
label: t("ttyUSB0 (recommended for Express v1.1)"), value: "ttyUSB0",
label: t("ttyUSB0 (recommended for Express v1.1+)"), value: "ttyUSB0",
},
manual: { label: t("Manual input"), value: "manual" },
};
Expand Down
1 change: 1 addition & 0 deletions frontend/settings/hardware_settings/default_values.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ export const getDefaultFwConfigValue =
return DEFAULT_GENESIS_FIRMWARE_CONFIG_VALUES[key];
case "express_k10":
case "express_k11":
case "express_k12":
return DEFAULT_EXPRESS_FIRMWARE_CONFIG_VALUES[key];
default:
return DEFAULT_FIRMWARE_CONFIG_VALUES[key];
Expand Down
1 change: 1 addition & 0 deletions frontend/tools/__tests__/add_tool_test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ describe("<AddTool />", () => {
["farmduino_k17", 9],
["express_k10", 3],
["express_k11", 3],
["express_k12", 3],
])("adds peripherals: %s", (firmware, expectedAdds) => {
const p = fakeProps();
p.firmwareHardware = firmware;
Expand Down
1 change: 1 addition & 0 deletions frontend/tools/add_tool.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ export class RawAddTool extends React.Component<AddToolProps, AddToolState> {
];
case "express_k10":
case "express_k11":
case "express_k12":
return [
...BASE_TOOLS,
...TROUGHS,
Expand Down
3 changes: 2 additions & 1 deletion frontend/util/version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ export enum FbosVersionFallback {
}

const fallbackData: MinOsFeatureLookup = {
[Feature.farmduino_k17]: MinVersionOverride.NEVER,
[Feature.express_k12]: "15.4.6",
[Feature.farmduino_k17]: "15.4.6",
[Feature.planted_at_now]: MinVersionOverride.NEVER,
};

Expand Down
3 changes: 3 additions & 0 deletions frontend/wizard/checks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -340,8 +340,10 @@ const SEED_DATA_OPTION_TO_FW_HARDWARE: Record<string, FirmwareHardware> = {
"genesis_xl_1.7": "farmduino_k17",
"express_1.0": "express_k10",
"express_1.1": "express_k11",
"express_1.2": "express_k12",
"express_xl_1.0": "express_k10",
"express_xl_1.1": "express_k11",
"express_xl_1.2": "express_k12",
"none": "none",
};

Expand All @@ -354,6 +356,7 @@ const FW_HARDWARE_TO_RPI: Record<FirmwareHardware, string | undefined> = {
"farmduino_k17": "4",
"express_k10": "01",
"express_k11": "02",
"express_k12": "02",
"none": "3",
};

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"bowser": "2.11.0",
"browser-speech": "1.1.1",
"events": "3.3.0",
"farmbot": "15.8.3",
"farmbot": "15.8.4",
"i18next": "23.6.0",
"lodash": "4.17.21",
"markdown-it": "13.0.2",
Expand Down

0 comments on commit 25c250c

Please sign in to comment.