@iotile/iotile-device
Version:
A typescript library for interfacing with IOTile BLE devices
126 lines (125 loc) • 3.8 kB
TypeScript
/// <reference path="../../../typings/cordova_plugins.d.ts" />
export declare class RawReading {
private _raw_timestamp;
private _value;
private _time;
private _stream;
private _id;
constructor(stream: number, value: number, timestamp: number, timebase: Date, id?: number);
readonly timestamp: number;
readonly value: number;
readonly stream: number;
readonly id: number;
readonly time: Date;
readonly variable: string;
}
export declare class IOTileReport {
}
export declare class IndividualReport extends IOTileReport {
private _uuid;
private _reading;
private _sentTimestamp;
constructor(uuid: number, sentTime: number, reading: RawReading);
/**
* Update the IndividualReport using formatting data from the cloud to be able to show
* accurate realtime data about the device stream.
*
* @param fmt: a raw_value_format code from the cloud that indicates what format
* the binary device data should be interpreted as.
*/
decodeUsingFormat(fmt: string): void;
readonly deviceID: number;
readonly reading: RawReading;
readonly sentTimestamp: number;
}
export declare const USER_REPORT_STREAMER: number;
export declare const SYSTEM_REPORT_STREAMER: number;
export declare const COMBINED_REPORT_STREAMER: number;
export interface SignedReportHeader {
format: number;
lengthLow: number;
lengthHigh: number;
uuid: number;
reportID: number;
sentTime: number;
signatureFlags: number;
streamer: number;
selector: number;
decodedSelector: StreamSelector;
}
export interface SignedReportFooter {
lowestID: number;
highestID: number;
signature: ArrayBuffer;
}
export declare enum SignedReportSelectors {
UserOutputs = 22527,
SystemOutputs = 24575,
CombinedOutputs = 55295
}
export declare enum SignatureFlags {
HashOnly = 0,
SignedUserKey = 1,
SignedDeviceKey = 2
}
export declare enum SignatureStatus {
Valid = 0,
Invalid = 1,
Unknown = 2
}
export declare enum StreamMatchOperator {
UserOnly = 0,
SystemOnly = 1,
UserAndBreaks = 2,
UserAndSystem = 3
}
export declare enum StreamType {
Storage = 0,
Unbuffered = 1,
Constant = 2,
Input = 3,
Count = 4,
Output = 5,
Realtime = 6
}
export declare class StreamSelector {
static readonly WILDCARD: number;
static readonly REBOOT_STREAM: number;
readonly type: StreamType;
readonly code: number;
readonly match_op: StreamMatchOperator;
readonly isWildcard: boolean;
constructor(encodedSelector: number);
matches(streamID: number): boolean;
static decode(encodedSelector: number): [StreamType, number, StreamMatchOperator];
private static getOperator;
}
export declare class SignedListReport extends IOTileReport {
private _uuid;
private _readings;
private _rawData;
private _receivedTime;
private _lowestID;
private _highestID;
private _streamer;
private _header;
private _valid;
static extractHeader(data: ArrayBuffer): SignedReportHeader;
constructor(uuid: number, streamer: number, rawData: ArrayBuffer, receivedTime: Date);
readonly deviceID: number;
readonly readings: RawReading[];
readonly validity: SignatureStatus;
readonly rawData: ArrayBuffer;
readonly streamer: number;
readonly receivedTime: Date;
readonly readingIDRange: number[];
readonly header: SignedReportHeader;
private updateReadingRange;
private updateReadings;
/**
* Note that this method is designed to be called from the constructor
* only. It needs to be followed by calls to updateReadings() and updateReadingRange()
* since it may modify the raw report data.
*/
private validateSignature;
}