Skip to content

Commit

Permalink
✨ implement computational layer in Rust
Browse files Browse the repository at this point in the history
- limit diameter to 255 by utilize u8 overflow error
- use async modifier to load led.rs in createBefore
- bind private member to wasm instance
  • Loading branch information
DrSensor committed Jun 1, 2018
1 parent f6e76ad commit 6b1f934
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
23 changes: 21 additions & 2 deletions src/components/Led/Led.vue
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -26,9 +26,28 @@ export default class Led extends Vue {
broken: boolean = false broken: boolean = false
get height(): number { return 1.3 * unit(this.size).toNumber('mm') * unit(this.scale).toNumber('px/mm') } private led: any = {
brightness: (Vin: number, Iin: number, Pmax: number) => Number(),
diameter: (size: number, scale: number) => Number(),
}
async beforeCreate() {
const loadWasm = await import('./led.rs')
const wasm = await loadWasm.default()
this.led = wasm.instance.exports
}
get height(): number { return this.led.diameter(
unit(this.size).toNumber('millimeter'),
unit(this.scale).toNumber('pixel/millimeter') * 1.3
) }
get brightness(): number { get brightness(): number {
const result = unit(this.inputVoltage).toNumber('volt') * unit(this.inputCurrent).toNumber('ampere') / unit(this.maxPower).toNumber('watt') const result = this.led.brightness(
unit(this.inputVoltage).toNumber('volt'),
unit(this.inputCurrent).toNumber('ampere'),
unit(this.maxPower).toNumber('watt')
)
this.broken = (result > 1.00) this.broken = (result > 1.00)
return this.broken ? 0 : result return this.broken ? 0 : result
} }
Expand Down
9 changes: 9 additions & 0 deletions src/components/Led/led.rs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,9 @@
#[no_mangle]
pub fn diameter(size: u8, scale: u8) -> u8 {
size * scale
}

#[no_mangle]
pub fn brightness(v_in: f32, i_in: f32, p_max: f32) -> f32 {
v_in * i_in / p_max
}

0 comments on commit 6b1f934

Please sign in to comment.