Add Buffer.get/setNumber and i2c methods

This commit is contained in:
Michal Moskal
2016-04-04 19:02:40 -07:00
parent 61fd28d840
commit bd7430b642
6 changed files with 174 additions and 18 deletions

View File

@ -13,4 +13,43 @@ namespace pins {
export function map(value: number, fromLow: number, fromHigh: number, toLow: number, toHigh: number): number {
return ((value - fromLow) * (toHigh - toLow)) / (fromHigh - fromLow) + toLow;
}
/**
* Read one number from 7-bit I2C address.
*/
export function i2cReadNumber(address: number, format: NumberFormat): number {
let buf = pins.i2cReadBuffer(address, pins.sizeOf(format), false)
return buf.getNumber(format, 0)
}
/**
* Write one number to a 7-bit I2C address.
*/
export function i2cWriteNumber(address: number, value: number, format: NumberFormat): void {
let buf = createBuffer(pins.sizeOf(format))
buf.setNumber(format, 0, value)
pins.i2cWriteBuffer(address, buf, false)
}
/**
* Get the size in bytes of specified number format.
*/
export function sizeOf(format: NumberFormat) {
switch (format) {
case NumberFormat.Int8LE:
case NumberFormat.UInt8LE:
case NumberFormat.Int8BE:
case NumberFormat.UInt8BE:
return 1;
case NumberFormat.Int16LE:
case NumberFormat.UInt16LE:
case NumberFormat.Int16BE:
case NumberFormat.UInt16BE:
return 2;
case NumberFormat.Int32LE:
case NumberFormat.Int32BE:
return 4;
}
return 0;
}
}