Upgrade frontend to experimental USDPL next
This commit is contained in:
parent
c88402e580
commit
3d744f31aa
8 changed files with 375 additions and 325 deletions
|
@ -99,7 +99,7 @@ message VersionStr {
|
||||||
}
|
}
|
||||||
|
|
||||||
message RpmMessage {
|
message RpmMessage {
|
||||||
uint64 rpm = 1;
|
uint32 rpm = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message TemperatureMessage {
|
message TemperatureMessage {
|
||||||
|
@ -132,5 +132,5 @@ message CurveMessageY {
|
||||||
}
|
}
|
||||||
|
|
||||||
message IndexMessage {
|
message IndexMessage {
|
||||||
uint64 index = 1;
|
uint32 index = 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ impl IFan for FanService {
|
||||||
) -> Result<RpmMessage, Box<dyn std::error::Error>> {
|
) -> Result<RpmMessage, Box<dyn std::error::Error>> {
|
||||||
if let Some(rpm) = crate::sys::read_fan() {
|
if let Some(rpm) = crate::sys::read_fan() {
|
||||||
log::debug!("get_fan_rpm() success: {}", rpm);
|
log::debug!("get_fan_rpm() success: {}", rpm);
|
||||||
Ok(RpmMessage { rpm })
|
Ok(RpmMessage { rpm: rpm as u32 })
|
||||||
} else {
|
} else {
|
||||||
Err("Failed to read fan speed".into())
|
Err("Failed to read fan speed".into())
|
||||||
}
|
}
|
||||||
|
|
12
package.json
12
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Fantastic",
|
"name": "Fantastic",
|
||||||
"version": "0.4.0",
|
"version": "0.5.0",
|
||||||
"description": "A template to quickly create decky plugins from scratch, based on TypeScript and webpack",
|
"description": "A template to quickly create decky plugins from scratch, based on TypeScript and webpack",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "shx rm -rf dist && rollup -c",
|
"build": "shx rm -rf dist && rollup -c",
|
||||||
|
@ -32,17 +32,17 @@
|
||||||
"@rollup/plugin-replace": "^4.0.0",
|
"@rollup/plugin-replace": "^4.0.0",
|
||||||
"@rollup/plugin-typescript": "^8.5.0",
|
"@rollup/plugin-typescript": "^8.5.0",
|
||||||
"@types/react": "16.14.0",
|
"@types/react": "16.14.0",
|
||||||
"@types/webpack": "^5.28.0",
|
"@types/webpack": "^5.28.1",
|
||||||
"rollup": "^2.79.1",
|
"rollup": "^2.79.1",
|
||||||
"rollup-plugin-import-assets": "^1.1.1",
|
"rollup-plugin-import-assets": "^1.1.1",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"tslib": "^2.5.0",
|
"tslib": "^2.5.3",
|
||||||
"typescript": "^4.9.5"
|
"typescript": "^4.9.5"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"decky-frontend-lib": "~3.19.1",
|
"decky-frontend-lib": "~3.21.1",
|
||||||
"react-icons": "^4.7.1",
|
"fantastic-wasm": "file:src/rust/pkg",
|
||||||
"fantastic-wasm": "file:src/rust/pkg"
|
"react-icons": "^4.9.0"
|
||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"peerDependencyRules": {
|
"peerDependencyRules": {
|
||||||
|
|
613
pnpm-lock.yaml
613
pnpm-lock.yaml
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,11 @@
|
||||||
import {init_usdpl, target_usdpl, init_embedded, call_backend} from "usdpl-front";
|
//import {init_usdpl, target_usdpl, init_embedded, call_backend} from "usdpl-front";
|
||||||
|
|
||||||
|
import { Fan, init_embedded, target_usdpl } from "fantastic-wasm";
|
||||||
|
|
||||||
const USDPL_PORT: number = 44444;
|
const USDPL_PORT: number = 44444;
|
||||||
|
|
||||||
|
var FAN_CLIENT: Fan | undefined = undefined;
|
||||||
|
|
||||||
// Utility
|
// Utility
|
||||||
|
|
||||||
export function resolve(promise: Promise<any>, setter: any) {
|
export function resolve(promise: Promise<any>, setter: any) {
|
||||||
|
@ -26,7 +30,7 @@ export function execute(promise: Promise<any[]>) {
|
||||||
export async function initBackend() {
|
export async function initBackend() {
|
||||||
// init usdpl
|
// init usdpl
|
||||||
await init_embedded();
|
await init_embedded();
|
||||||
init_usdpl(USDPL_PORT);
|
FAN_CLIENT = new Fan(USDPL_PORT);
|
||||||
console.log("FANTASTIC: USDPL started for framework: " + target_usdpl());
|
console.log("FANTASTIC: USDPL started for framework: " + target_usdpl());
|
||||||
//setReady(true);
|
//setReady(true);
|
||||||
}
|
}
|
||||||
|
@ -34,45 +38,66 @@ export async function initBackend() {
|
||||||
// Back-end functions
|
// Back-end functions
|
||||||
|
|
||||||
export async function setEnabled(value: boolean): Promise<boolean> {
|
export async function setEnabled(value: boolean): Promise<boolean> {
|
||||||
return (await call_backend("set_enable", [value]))[0];
|
return (await FAN_CLIENT!.set_enable(value))?? value;
|
||||||
|
//return (await call_backend("set_enable", [value]))[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getEnabled(): Promise<boolean> {
|
export async function getEnabled(): Promise<boolean> {
|
||||||
return (await call_backend("get_enable", []))[0];
|
return (await FAN_CLIENT!.get_enable(true)) ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function setInterpolate(value: boolean): Promise<boolean> {
|
export async function setInterpolate(value: boolean): Promise<boolean> {
|
||||||
return (await call_backend("set_interpolate", [value]))[0];
|
return (await FAN_CLIENT!.set_interpolate(value)) ?? value;
|
||||||
|
//return (await call_backend("set_interpolate", [value]))[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getInterpolate(): Promise<boolean> {
|
export async function getInterpolate(): Promise<boolean> {
|
||||||
return (await call_backend("get_interpolate", []))[0];
|
return (await FAN_CLIENT!.get_interpolate(true)) ?? false;
|
||||||
|
//return (await call_backend("get_interpolate", []))[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getVersion(): Promise<string> {
|
export async function getVersion(): Promise<string> {
|
||||||
return (await call_backend("version", []))[0];
|
return (await FAN_CLIENT!.version_str(true)) ?? "version";
|
||||||
|
//return (await call_backend("version", []))[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getName(): Promise<string> {
|
export async function getName(): Promise<string> {
|
||||||
return (await call_backend("name", []))[0];
|
return (await FAN_CLIENT!.name(true))?? "broken";
|
||||||
|
//return (await call_backend("name", []))[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getCurve(): Promise<{"x": number, "y": number}[]> {
|
export async function getCurve(): Promise<{"x": number, "y": number}[]> {
|
||||||
return (await call_backend("get_curve", []))[0];
|
var x_s = (await FAN_CLIENT!.get_curve_x(true))?? [];
|
||||||
|
var y_s = (await FAN_CLIENT!.get_curve_y(true))?? [];
|
||||||
|
let result: {"x": number, "y": number}[] = [];
|
||||||
|
for (let i = 0; i < x_s.length && i < y_s.length; i++) {
|
||||||
|
result.push({
|
||||||
|
x: x_s[i],
|
||||||
|
y: y_s[i],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function addCurvePoint(point: {"x": number, "y": number}): Promise<{"x": number, "y": number}[]> {
|
export async function addCurvePoint(point: {"x": number, "y": number}): Promise<{"x": number, "y": number}[]> {
|
||||||
return (await call_backend("add_curve_point", [point]))[0];
|
await FAN_CLIENT!.add_curve_point(point.x, point.y);
|
||||||
|
return getCurve();
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function removeCurvePoint(index: number): Promise<{"x": number, "y": number}[]> {
|
export async function removeCurvePoint(index: number): Promise<{"x": number, "y": number}[]> {
|
||||||
return (await call_backend("remove_curve_point", [index]))[0];
|
await FAN_CLIENT!.remove_curve_point(index);
|
||||||
|
return getCurve();
|
||||||
|
//return (await call_backend("remove_curve_point", [index]))[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getFanRpm(): Promise<number> {
|
export async function getFanRpm(): Promise<number> {
|
||||||
return (await call_backend("get_fan_rpm", []))[0];
|
return (await FAN_CLIENT!.get_fan_rpm(true))?? 1337;
|
||||||
|
//return (await call_backend("get_fan_rpm", []))[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getTemperature(): Promise<number> {
|
export async function getTemperature(): Promise<number> {
|
||||||
return (await call_backend("get_temperature", []))[0];
|
return (await FAN_CLIENT!.get_temperature(true))?? -273;
|
||||||
|
//return (await call_backend("get_temperature", []))[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initBackend();
|
||||||
|
|
2
src/rust/Cargo.lock
generated
2
src/rust/Cargo.lock
generated
|
@ -141,7 +141,7 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fantastic-wasm"
|
name = "fantastic-wasm"
|
||||||
version = "0.1.0"
|
version = "0.5.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"nrpc 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nrpc 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"prost",
|
"prost",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "fantastic-wasm"
|
name = "fantastic-wasm"
|
||||||
version = "0.1.0"
|
version = "0.5.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
@ -17,3 +17,11 @@ usdpl-build = { version = "0.11", path = "../../../usdpl-rs/usdpl-build" }
|
||||||
[features]
|
[features]
|
||||||
debug = ["usdpl-front/debug"]
|
debug = ["usdpl-front/debug"]
|
||||||
decky = ["usdpl-front/decky"]
|
decky = ["usdpl-front/decky"]
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
# Tell `rustc` to optimize for small code size.
|
||||||
|
opt-level = "s"
|
||||||
|
debug = false
|
||||||
|
strip = true
|
||||||
|
lto = true
|
||||||
|
codegen-units = 4
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print("Embedding WASM into udspl_front.js")
|
print("Embedding WASM into js")
|
||||||
# assumption: current working directory (relative to this script) is ../
|
# assumption: current working directory (relative to this script) is ../
|
||||||
# assumption: release wasm binary at ./pkg/usdpl_bg.wasm
|
# assumption: release wasm binary at ./pkg/usdpl_bg.wasm
|
||||||
with open("./pkg/fantastic_wasm_bg.wasm", mode="rb") as infile:
|
with open("./pkg/fantastic_wasm_bg.wasm", mode="rb") as infile:
|
||||||
|
@ -40,6 +40,6 @@ export function init_embedded() {
|
||||||
return init(decode())
|
return init(decode())
|
||||||
}
|
}
|
||||||
""".encode())
|
""".encode())
|
||||||
with open("./pkg/usdpl_front.d.ts", "a") as outfile:
|
with open("./pkg/fantastic_wasm.d.ts", "a") as outfile:
|
||||||
outfile.write("\n\n// USDPL customization\nexport function init_embedded();\n")
|
outfile.write("\n\n// USDPL customization\nexport function init_embedded();\n")
|
||||||
print("Done: Embedded WASM into udspl_front.js")
|
print("Done: Embedded WASM into js")
|
||||||
|
|
Loading…
Reference in a new issue