import I2CPromisifiedBus from "../../../../device-interfaces/i2c/i2c-connection"; import LSM6Settings, { AccelerometerScale, GyroScale } from "./lsm6-settings"; export interface FIFOFrame { gyroX: number; gyroY: number; gyroZ: number; accelX: number; accelY: number; accelZ: number; } export interface Vector3 { x: number; y: number; z: number; } export interface LSM6Config { accelOffset?: Vector3; gyroOffset?: Vector3; } export default class LSM6 { private _accel; private _gyro; private _accelOffset; private _gyroOffset; private _gyroRuntimeOffset; private _i2cBus; private _i2cAddress; private _isReady; private _settings; private _fifoRunning; private _fifoBuffer; constructor(bus: I2CPromisifiedBus, address: number, config?: LSM6Config); init(): Promise; get settings(): LSM6Settings; get accelerationG(): Vector3; get gyroDPS(): Vector3; get accelOffset(): Vector3; set accelOffset(val: Vector3); get gyroOffset(): Vector3; set gyroOffset(val: Vector3); get gyroRuntimeOffset(): Vector3; setRuntimeOffsetX(val: number): void; setRuntimeOffsetY(val: number): void; setRuntimeOffsetZ(val: number): void; getFIFOPeriod(): number; begin(): Promise; private _fifoBegin; enableDefault(): Promise; setAccelerometerScale(scale: AccelerometerScale): Promise; setGyroScale(scale: GyroScale): Promise; fifoStart(): void; fifoStop(): void; /** * Returns any unprocessed FIFO Frames and clears the internal buffer */ getNewFIFOData(): FIFOFrame[]; private _reset; /** * Perform a read of the FIFO buffer and store any saved frames into our * internal storage. * * A "frame" consists of a snapshot of gyro and accelerometer values. The * time between each "frame" is dependent on the FIFO ODR value * @private */ private _fifoLoop; /** * Read the FIFO status byte */ private _fifoGetStatus; /** * Wrapper function for constantly checking the FIFO buffer */ private _runFifoLoop; private _readByte; private _writeByte; private _readWord; private _sendByte; private _receiveByte; private _waitMS; }