UNPKG

@openhps/sphero

Version:

Open Hybrid Positioning System - Sphero component

176 lines (155 loc) 3.64 kB
export enum DeviceId { apiProcessor = 0x10, systemInfo = 0x11, powerInfo = 0x13, driving = 0x16, animatronics = 0x17, sensor = 0x18, userIO = 0x1a, somethingAPI = 0x1f } export enum SomethingApi { something5 = 0x27 } export enum APIProcessCommandIds { echo = 0x00 } export enum SystemInfoCommandIds { mainApplicationVersion = 0x00, bootloaderVersion = 0x01, something = 0x06, something6 = 0x12, something7 = 0x28 } export enum PowerCommandIds { deepSleep = 0x00, sleep = 0x01, batteryVoltage = 0x03, wake = 0x0d, something2 = 0x10, // every x time something3 = 0x04, // every x time something4 = 0x1e } export enum DrivingCommandIds { rawMotor = 0x01, resetYaw = 0x06, driveAsSphero = 0x04, driveAsRc = 0x02, driveWithHeading = 0x07, stabilization = 0x0c } export enum AnimatronicsCommandIds { animationBundle = 0x05, shoulderAction = 0x0d, domePosition = 0x0f, shoulderActionComplete = 0x26, enableShoulderActionCompleteAsync = 0x2a } export enum SensorCommandIds { sensorMask = 0x00, sensorResponse = 0x02, configureCollision = 0x11, collisionDetectedAsync = 0x12, resetLocator = 0x13, enableCollisionAsync = 0x14, sensor1 = 0x0f, sensor2 = 0x17, sensorMaskExtended = 0x0c } export enum UserIOCommandIds { allLEDs = 0x0e, allLEDsV21 = 0x1c, playAudioFile = 0x07, audioVolume = 0x08, stopAudio = 0xa, testSound = 0x18, matrixPixel = 0x2d, matrixColor = 0x2f, clearMatrix = 0x38, matrixRotation = 0x3a, matrixScrollText = 0x3b, matrixLine = 0x3d, matrixFill = 0x3e } export enum Flags { isResponse = 1, requestsResponse = 2, requestsOnlyErrorResponse = 4, resetsInactivityTimeout = 8, commandHasTargetId = 16, commandHasSourceId = 32 } export enum APIConstants { escape = 0xab, startOfPacket = 0x8d, endOfPacket = 0xd8, escapeMask = 0x88, // tslint:disable-next-line:no-bitwise escapedEscape = APIConstants.escape & ~APIConstants.escapeMask, // tslint:disable-next-line:no-bitwise escapedStartOfPacket = APIConstants.startOfPacket & ~APIConstants.escapeMask, // tslint:disable-next-line:no-bitwise escapedEndOfPacket = APIConstants.endOfPacket & ~APIConstants.escapeMask } export enum DriveFlag { reverse = 0x01, boost = 0x02, // tslint:disable-next-line:no-bitwise fastTurnMode = 2 << 1, // tslint:disable-next-line:no-bitwise tankDriveLeftMotorReverse = 2 << 2, // tslint:disable-next-line:no-bitwise tankDriveRightMotorReverse = 2 << 3 } export type CommandId = | UserIOCommandIds | AnimatronicsCommandIds | DrivingCommandIds | PowerCommandIds | SystemInfoCommandIds | APIProcessCommandIds | SensorCommandIds | SomethingApi; export interface ICommandOutput { bytes: number[]; checksum: number; } export interface ICommandPartial { payload?: number[]; commandId: CommandId; targetId?: number; sourceId?: number; } export interface ICommand extends ICommandPartial { deviceId: DeviceId; commandFlags?: Flags[]; sequenceNumber: number; } export interface ICommandWithRaw extends ICommand { raw: Uint8Array; } export type CommandGenerator = ( deviceId: number ) => (part: ICommandPartial) => ICommandWithRaw; export interface IThreeAxisSensor { x: number; y: number; z: number; } export interface ITwoAxisSensor { x: number; y: number; } export interface ISensorResponse { angles?: { pitch: number; roll: number; yaw: number }; accelerometer?: { filtered: IThreeAxisSensor; }; locator?: { position: ITwoAxisSensor; velocity: ITwoAxisSensor; }; gyro?: { filtered: IThreeAxisSensor; }; }