Start auto-generating types
parent
44da6b8f69
commit
805b5026da
|
|
@ -7,10 +7,89 @@
|
||||||
"": {
|
"": {
|
||||||
"name": "Bangle.ts",
|
"name": "Bangle.ts",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
|
"dependencies": {
|
||||||
|
"node-fetch": "^3.2.9"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"typescript": "4.5.2"
|
"typescript": "4.5.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/data-uri-to-buffer": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fetch-blob": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/jimmywarting"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "paypal",
|
||||||
|
"url": "https://paypal.me/jimmywarting"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"node-domexception": "^1.0.0",
|
||||||
|
"web-streams-polyfill": "^3.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^12.20 || >= 14.13"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/formdata-polyfill": {
|
||||||
|
"version": "4.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
|
||||||
|
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
|
||||||
|
"dependencies": {
|
||||||
|
"fetch-blob": "^3.1.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/node-domexception": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/jimmywarting"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://paypal.me/jimmywarting"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/node-fetch": {
|
||||||
|
"version": "3.2.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.9.tgz",
|
||||||
|
"integrity": "sha512-/2lI+DBecVvVm9tDhjziTVjo2wmTsSxSk58saUYP0P/fRJ3xxtfMDY24+CKTkfm0Dlhyn3CSXNL0SoRiCZ8Rzg==",
|
||||||
|
"dependencies": {
|
||||||
|
"data-uri-to-buffer": "^4.0.0",
|
||||||
|
"fetch-blob": "^3.1.4",
|
||||||
|
"formdata-polyfill": "^4.0.10"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/node-fetch"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/typescript": {
|
"node_modules/typescript": {
|
||||||
"version": "4.5.2",
|
"version": "4.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
|
||||||
|
|
@ -23,14 +102,64 @@
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4.2.0"
|
"node": ">=4.2.0"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_modules/web-streams-polyfill": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"data-uri-to-buffer": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA=="
|
||||||
|
},
|
||||||
|
"fetch-blob": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
|
||||||
|
"requires": {
|
||||||
|
"node-domexception": "^1.0.0",
|
||||||
|
"web-streams-polyfill": "^3.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"formdata-polyfill": {
|
||||||
|
"version": "4.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
|
||||||
|
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
|
||||||
|
"requires": {
|
||||||
|
"fetch-blob": "^3.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node-domexception": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
|
||||||
|
},
|
||||||
|
"node-fetch": {
|
||||||
|
"version": "3.2.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.9.tgz",
|
||||||
|
"integrity": "sha512-/2lI+DBecVvVm9tDhjziTVjo2wmTsSxSk58saUYP0P/fRJ3xxtfMDY24+CKTkfm0Dlhyn3CSXNL0SoRiCZ8Rzg==",
|
||||||
|
"requires": {
|
||||||
|
"data-uri-to-buffer": "^4.0.0",
|
||||||
|
"fetch-blob": "^3.1.4",
|
||||||
|
"formdata-polyfill": "^4.0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "4.5.2",
|
"version": "4.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
|
||||||
"integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==",
|
"integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
|
},
|
||||||
|
"web-streams-polyfill": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,5 +9,8 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"build:types": "tsc ./types/main.d.ts"
|
"build:types": "tsc ./types/main.d.ts"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"node-fetch": "^3.2.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,211 +0,0 @@
|
||||||
type Accel = {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
z: number;
|
|
||||||
diff: number;
|
|
||||||
td: number;
|
|
||||||
mag: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
type Mag = {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
z: number;
|
|
||||||
dx: number;
|
|
||||||
dy: number;
|
|
||||||
dz: number;
|
|
||||||
heading: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
type GPS = {
|
|
||||||
lat: number;
|
|
||||||
lon: number;
|
|
||||||
alt: number;
|
|
||||||
speed: number;
|
|
||||||
course: number;
|
|
||||||
time: Date;
|
|
||||||
stallites: number;
|
|
||||||
fix: number;
|
|
||||||
hdop: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
type HealthStatus = {
|
|
||||||
movement: number;
|
|
||||||
steps: number;
|
|
||||||
bpm: number;
|
|
||||||
bpmConfidence: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
type BangleOptions = {
|
|
||||||
wakeOnBTN1: boolean;
|
|
||||||
wakeOnBTN2: boolean;
|
|
||||||
wakeOnBTN3: boolean;
|
|
||||||
wakeOnFaceUp: boolean;
|
|
||||||
wakeOnTouch: boolean;
|
|
||||||
wakeOnTwist: boolean;
|
|
||||||
twistThreshold: number;
|
|
||||||
twistMaxY: number;
|
|
||||||
twistTimeout: number;
|
|
||||||
gestureStartThresh: number;
|
|
||||||
gestureEndThresh: number;
|
|
||||||
gestureInactiveCount: number;
|
|
||||||
gestureMinLength: number;
|
|
||||||
powerSave: boolean;
|
|
||||||
lockTimeout: number;
|
|
||||||
lcdPowerTimeout: number;
|
|
||||||
backlightTimeout: number;
|
|
||||||
hrmPollInterval: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
type Optional<T> = {
|
|
||||||
[key in keyof T]?: T[key];
|
|
||||||
};
|
|
||||||
|
|
||||||
type LCDMode = "direct" | "doublebuffered" | "120x120" | "80x80";
|
|
||||||
|
|
||||||
declare const Bangle: {
|
|
||||||
accelRd: ((register: any, length: number) => number[]) &
|
|
||||||
((register: any) => number);
|
|
||||||
accelWr: (register: any, data: number[] | number) => void;
|
|
||||||
appRect: {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
w: number;
|
|
||||||
h: number;
|
|
||||||
x2: number;
|
|
||||||
y2: number;
|
|
||||||
};
|
|
||||||
beep: (time?: number, frequency?: number) => Promise<void>;
|
|
||||||
buzz: (time?: number, strength?: number) => Promise<void>;
|
|
||||||
compassRd: ((register: any, length: number) => number[]) &
|
|
||||||
((register: any) => number);
|
|
||||||
compassWr: (register: any, data: number[] | number) => void;
|
|
||||||
dbg: () => any;
|
|
||||||
drawWidgets: () => void;
|
|
||||||
F_BEEPSET: boolean;
|
|
||||||
getAccel: () => Accel;
|
|
||||||
getCompass: () => Mag;
|
|
||||||
getGPSFix: () => GPS;
|
|
||||||
getHealthStatus: (range?: "current" | "last" | "day") => HealthStatus;
|
|
||||||
getLCDMode: () => LCDMode;
|
|
||||||
getLogo: () => string;
|
|
||||||
getOptions: () => BangleOptions;
|
|
||||||
getStepCount: () => number;
|
|
||||||
hrmRd: ((register: any, length: number) => number[]) &
|
|
||||||
((register: any) => number);
|
|
||||||
ioWr: (mask: Pin, isOn: boolean) => void;
|
|
||||||
isCharging: () => boolean;
|
|
||||||
isCompassOn: () => boolean;
|
|
||||||
isGPSOn: () => boolean;
|
|
||||||
isHRMOn: () => boolean;
|
|
||||||
isLCDOn: () => boolean;
|
|
||||||
isLocked: () => boolean;
|
|
||||||
lcdWr: (register: any, data: number[] | number) => void;
|
|
||||||
loadWidgets: () => void;
|
|
||||||
off: () => void;
|
|
||||||
on: ((event: "accel", listener: (xyz: Accel) => void) => void) &
|
|
||||||
((
|
|
||||||
event: "aiGesture",
|
|
||||||
listener: (
|
|
||||||
gesture: string | number | undefined,
|
|
||||||
weights: number[]
|
|
||||||
) => void
|
|
||||||
) => void) &
|
|
||||||
((event: "charging", listener: (charging: boolean) => void) => void) &
|
|
||||||
((
|
|
||||||
event: "drag",
|
|
||||||
listener: (event: {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
dx: number;
|
|
||||||
dy: number;
|
|
||||||
b: number;
|
|
||||||
}) => void
|
|
||||||
) => void) &
|
|
||||||
((event: "faceUp", listener: (up: boolean) => void) => void) &
|
|
||||||
((event: "gesture", listener: (xyz: Int8Array) => void) => void) &
|
|
||||||
((event: "GPS", listener: (gps: GPS) => void) => void) &
|
|
||||||
((
|
|
||||||
event: "GPS-raw",
|
|
||||||
listener: (nmea: string, dataLoss: boolean) => void
|
|
||||||
) => void) &
|
|
||||||
((event: "health", listener: (info: HealthStatus) => void) => void) &
|
|
||||||
((
|
|
||||||
event: "HRM",
|
|
||||||
listener: (hrm: {
|
|
||||||
bpm: number;
|
|
||||||
confidence: number;
|
|
||||||
raw: Uint8Array;
|
|
||||||
}) => void
|
|
||||||
) => void) &
|
|
||||||
((
|
|
||||||
event: "HRM-raw",
|
|
||||||
listener: (hrm: {
|
|
||||||
raw: number;
|
|
||||||
filt: number;
|
|
||||||
bpm: number;
|
|
||||||
confidence: number;
|
|
||||||
}) => void
|
|
||||||
) => void) &
|
|
||||||
((event: "lcdPower", listener: (on: boolean) => void) => void) &
|
|
||||||
((event: "lock", listener: (on: boolean) => void) => void) &
|
|
||||||
((event: "mag", listener: (mag: Mag) => void) => void) &
|
|
||||||
((event: "midnight", listener: () => void) => void) &
|
|
||||||
((
|
|
||||||
event: "pressure",
|
|
||||||
listener: (info: {
|
|
||||||
temperature: number;
|
|
||||||
pressure: number;
|
|
||||||
altitude: number;
|
|
||||||
}) => void
|
|
||||||
) => void) &
|
|
||||||
((event: "step", listener: (up: number) => void) => void) &
|
|
||||||
((event: "swipe", listener: (direction: number) => void) => void) &
|
|
||||||
((
|
|
||||||
event: "tap",
|
|
||||||
listener: (data: {
|
|
||||||
dir: string;
|
|
||||||
double: boolean;
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
z: number;
|
|
||||||
}) => void
|
|
||||||
) => void) &
|
|
||||||
((
|
|
||||||
event: "touch",
|
|
||||||
listener: (button: number, xy: { x: number; y: number }) => void
|
|
||||||
) => void) &
|
|
||||||
((event: "twist", listener: () => void) => void);
|
|
||||||
project: (latlon: { lat: number; lon: number }) => { x: number; y: number };
|
|
||||||
resetCompass: () => void;
|
|
||||||
setCompassPower: (isOn: boolean, appID: string) => boolean;
|
|
||||||
setGPSPower: (isOn: boolean, appID: string) => boolean;
|
|
||||||
setHRMPower: (isOn: boolean, appID: string) => boolean;
|
|
||||||
setLCDBrightness: (brightness: number) => void;
|
|
||||||
setLCDMode: (mode?: LCDMode) => void;
|
|
||||||
setLCDOffset: (y: number) => void;
|
|
||||||
setLCDPower: (isOn: boolean, appID: string) => boolean;
|
|
||||||
setLCDTimeout: (timeout: number) => void;
|
|
||||||
setLocked: (isLocked: boolean) => void;
|
|
||||||
setOptions: (options: Optional<BangleOptions>) => void;
|
|
||||||
setPollInterval: (timeout: number) => void;
|
|
||||||
setStepCount: (timeout: number) => void;
|
|
||||||
setUI: (
|
|
||||||
type?:
|
|
||||||
| "updown"
|
|
||||||
| "leftright"
|
|
||||||
| "clock"
|
|
||||||
| "clockupdown"
|
|
||||||
| {
|
|
||||||
mode: "custom";
|
|
||||||
back?: () => void;
|
|
||||||
touch?: (n: number, e: number) => void;
|
|
||||||
swipe?: (dir: number) => void;
|
|
||||||
drag?: (e: number) => void;
|
|
||||||
btn?: (n: number) => void;
|
|
||||||
},
|
|
||||||
callback?: (direction: number) => void
|
|
||||||
) => void;
|
|
||||||
showLauncher: () => void;
|
|
||||||
softOff: () => void;
|
|
||||||
};
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
/*~ This file declares the Espruino utility class.
|
|
||||||
*~ Reference: https://banglejs.com/reference#E
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare const E: {
|
|
||||||
showAlert: (() => Promise<undefined>) &
|
|
||||||
((message: string, title?: string) => Promise<number>);
|
|
||||||
showMenu: (() => undefined) &
|
|
||||||
((menu: {
|
|
||||||
// The "" value includes menu options.
|
|
||||||
""?: {
|
|
||||||
title?: string;
|
|
||||||
back?: () => void;
|
|
||||||
selected?: number;
|
|
||||||
fontHeight?: number;
|
|
||||||
x?: number;
|
|
||||||
y?: number;
|
|
||||||
x2?: number;
|
|
||||||
y2?: number;
|
|
||||||
cB?: number;
|
|
||||||
cF?: number;
|
|
||||||
cHB?: number;
|
|
||||||
cHF?: number;
|
|
||||||
predraw?: (gfx: GraphicsApi) => void;
|
|
||||||
preflip?: (gfx: GraphicsApi, less: boolean, more: boolean) => void;
|
|
||||||
} & {
|
|
||||||
// All the other key-value pairs are menu items.
|
|
||||||
[key: string]:
|
|
||||||
| undefined
|
|
||||||
| (() => void)
|
|
||||||
| {
|
|
||||||
value: boolean;
|
|
||||||
format?: (value: boolean) => string;
|
|
||||||
onchange?: (value: boolean) => void;
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
value: number;
|
|
||||||
min?: number;
|
|
||||||
max?: number;
|
|
||||||
step?: number;
|
|
||||||
format?: (value: number) => string;
|
|
||||||
onchange?: (value: number) => void;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}) => {
|
|
||||||
draw: () => void;
|
|
||||||
move: () => void;
|
|
||||||
select: () => void;
|
|
||||||
});
|
|
||||||
showPrompt: (() => Promise<undefined>) &
|
|
||||||
(<T extends any = boolean>(
|
|
||||||
message: string,
|
|
||||||
options?: {
|
|
||||||
title?: string;
|
|
||||||
buttons?: { [key: string]: T };
|
|
||||||
img?: string;
|
|
||||||
}
|
|
||||||
) => Promise<T>);
|
|
||||||
};
|
|
||||||
|
|
@ -1,216 +0,0 @@
|
||||||
/*~ This file declares the Espruino globals.
|
|
||||||
*~ Reference: https://banglejs.com/reference#_global
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Note: The following don't have to be declared as they are
|
|
||||||
* already part of regular JavaScript:
|
|
||||||
* btoa
|
|
||||||
* clearInterval
|
|
||||||
* clearTimeout
|
|
||||||
* decodeURIComponent
|
|
||||||
* encodeURIComponent
|
|
||||||
* eval
|
|
||||||
* Infinity
|
|
||||||
* isFinite
|
|
||||||
* isNaN
|
|
||||||
* NaN
|
|
||||||
* parseFloat
|
|
||||||
* parseInt
|
|
||||||
* setInterval
|
|
||||||
* setTimeout
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Pins
|
|
||||||
declare type Pin = number;
|
|
||||||
declare type PinMode =
|
|
||||||
| "analog"
|
|
||||||
| "input"
|
|
||||||
| "intupt_pullup"
|
|
||||||
| "intupt_pulldown"
|
|
||||||
| "output"
|
|
||||||
| "opendrain"
|
|
||||||
| "af_output"
|
|
||||||
| "af_opendrain";
|
|
||||||
|
|
||||||
declare const BTN: 24;
|
|
||||||
declare const BTN1: 24;
|
|
||||||
declare const BTN2: 22;
|
|
||||||
declare const BTN3: 23;
|
|
||||||
declare const BTN4: 11;
|
|
||||||
declare const BTN5: 16;
|
|
||||||
declare const VIBRATE: 13;
|
|
||||||
|
|
||||||
declare function getPinMode(pin: Pin): PinMode;
|
|
||||||
declare function pinMode(
|
|
||||||
pin: Pin,
|
|
||||||
mode?: PinMode | "auto",
|
|
||||||
automatic?: boolean
|
|
||||||
): void;
|
|
||||||
|
|
||||||
// Analog pins
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the analog value of the given pin.
|
|
||||||
* This is different to Arduino which only returns an integer between 0 and 1023.
|
|
||||||
* However only pins connected to an ADC will work (see the datasheet).
|
|
||||||
* **Note**: if you didn't call `pinMode` beforehand then this function will also reset pin's state to "analog".
|
|
||||||
* @param {number} pin - The pin to use.
|
|
||||||
* @returns {number} The analog Value of the Pin between 0 and 1.
|
|
||||||
* @url https://banglejs.com/reference#l__global_analogRead
|
|
||||||
*/
|
|
||||||
declare function analogRead(pin: Pin): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the analog Value of a pin. It will be output using PWM.
|
|
||||||
* **Note**: if you didn't call pinMode beforehand then this function will also reset pin's state to "output".
|
|
||||||
* @param {number} pin - The pin to use.
|
|
||||||
* @param {number} value - A value between 0 and 1.
|
|
||||||
* @param {object} [options] - Additonal options.
|
|
||||||
* @param {number} [options.freq] - Pulse frequency in Hz, e.g. 10 - specifying a frequency will force PWM output, even if the pin has a DAC.
|
|
||||||
* @param {boolean} [options.soft] - If true software PWM is used if hardware is not available.
|
|
||||||
* @param {boolean} [options.forceSoft] - If true software PWM is used even if hardware PWM or a DAC is available.
|
|
||||||
*/
|
|
||||||
declare function analogWrite(
|
|
||||||
pin: Pin,
|
|
||||||
value: number,
|
|
||||||
options?: { freq?: number; soft?: boolean; forceSoft?: boolean }
|
|
||||||
): void;
|
|
||||||
|
|
||||||
// Digital pins
|
|
||||||
declare const HIGH: 1;
|
|
||||||
|
|
||||||
declare const LOW: 0;
|
|
||||||
|
|
||||||
declare function digitalPulse(pin: Pin, value: boolean, time: number): void;
|
|
||||||
|
|
||||||
declare function digitalRead(pin: Pin | Pin[]): number;
|
|
||||||
|
|
||||||
declare function digitalWrite(pin: Pin, value: boolean): void;
|
|
||||||
declare function digitalWrite(pin: Pin[], value: number): void;
|
|
||||||
declare function digitalWrite(
|
|
||||||
pin: {
|
|
||||||
write: (value: boolean) => void;
|
|
||||||
},
|
|
||||||
value: boolean
|
|
||||||
): void;
|
|
||||||
|
|
||||||
// Other globals
|
|
||||||
declare function atob(base64Data: string): string;
|
|
||||||
|
|
||||||
declare function btoa(binaryData: string): string;
|
|
||||||
|
|
||||||
declare function changeInterval(id: number, time: number): void;
|
|
||||||
|
|
||||||
declare function dump(): void;
|
|
||||||
|
|
||||||
declare function echo(echoOn: boolean): void;
|
|
||||||
|
|
||||||
declare function edit(funcName: string | Function): void;
|
|
||||||
|
|
||||||
declare function getSerial(): number;
|
|
||||||
|
|
||||||
declare function getTime(): number;
|
|
||||||
|
|
||||||
declare const global: any; //TODO define better
|
|
||||||
|
|
||||||
declare const I2C1: I2C;
|
|
||||||
|
|
||||||
declare function load(file?: string): void;
|
|
||||||
|
|
||||||
declare function peek8(address: number, count?: 1): number;
|
|
||||||
declare function peek8(address: number, count: number): Uint8Array;
|
|
||||||
|
|
||||||
declare function peek16(address: number, count?: 1): number;
|
|
||||||
declare function peek16(address: number, count: number): Uint16Array;
|
|
||||||
|
|
||||||
declare function peek32(address: number, count?: 1): number;
|
|
||||||
declare function peek32(address: number, count: number): Uint32Array;
|
|
||||||
|
|
||||||
declare function poke8(address: number, value: number): void;
|
|
||||||
|
|
||||||
declare function poke16(address: number, value: number): void;
|
|
||||||
|
|
||||||
declare function poke32(address: number, value: number): void;
|
|
||||||
|
|
||||||
declare function print(...args: any[]): void;
|
|
||||||
|
|
||||||
declare const Serial1: Serial;
|
|
||||||
|
|
||||||
declare const Bluetooth: Serial;
|
|
||||||
|
|
||||||
declare const LoopbackA: Serial;
|
|
||||||
|
|
||||||
declare const LoopbackB: Serial;
|
|
||||||
|
|
||||||
declare function require(module: "heatshrink"): {
|
|
||||||
decompress: (compressedString: string) => string;
|
|
||||||
};
|
|
||||||
declare function require(module: "Storage"): Storage;
|
|
||||||
declare type Module = "heatshrink" | "Storage";
|
|
||||||
|
|
||||||
declare function reset(clearFlash?: true): void;
|
|
||||||
|
|
||||||
declare function setInterval(id: any): void;
|
|
||||||
|
|
||||||
declare function setBusyIndicator(pin?: Pin): void;
|
|
||||||
|
|
||||||
declare function setSleepIndicator(pin?: Pin): void;
|
|
||||||
|
|
||||||
declare function setTime(time: number): void;
|
|
||||||
|
|
||||||
type Data =
|
|
||||||
| number
|
|
||||||
| string
|
|
||||||
| Array<Data>
|
|
||||||
| ArrayBuffer
|
|
||||||
| { data: Data; count: number }
|
|
||||||
| { callback: () => Data };
|
|
||||||
|
|
||||||
declare function shiftOut(
|
|
||||||
pins: Pin | Pin[],
|
|
||||||
options: { clk: Pin; repeat?: number },
|
|
||||||
data: Data
|
|
||||||
): void;
|
|
||||||
|
|
||||||
declare const SPI1: SPIInstance;
|
|
||||||
|
|
||||||
declare const Terminal: Serial;
|
|
||||||
|
|
||||||
declare function trace(root?: number): void;
|
|
||||||
|
|
||||||
// Watches
|
|
||||||
declare function clearWatch(id?: number): void;
|
|
||||||
declare const setWatch: ((
|
|
||||||
callback:
|
|
||||||
| ((obj: { state: boolean; time: number; lastTime: number }) => void)
|
|
||||||
| string,
|
|
||||||
pin: number,
|
|
||||||
options?:
|
|
||||||
| boolean
|
|
||||||
| number
|
|
||||||
| {
|
|
||||||
repeat?: boolean;
|
|
||||||
edge?: "rising" | "falling" | "both";
|
|
||||||
debounce?: number;
|
|
||||||
irq?: boolean;
|
|
||||||
}
|
|
||||||
) => number) &
|
|
||||||
// If a data option is specified, the callback will also have one.
|
|
||||||
((
|
|
||||||
callback:
|
|
||||||
| ((obj: {
|
|
||||||
state: boolean;
|
|
||||||
time: number;
|
|
||||||
lastTime: number;
|
|
||||||
data: any; // TODO: Specify data type
|
|
||||||
}) => void)
|
|
||||||
| string,
|
|
||||||
pin: number,
|
|
||||||
options?: {
|
|
||||||
data: number;
|
|
||||||
repeat?: boolean;
|
|
||||||
edge?: "rising" | "falling" | "both";
|
|
||||||
debounce?: number;
|
|
||||||
irq?: boolean;
|
|
||||||
}
|
|
||||||
) => number);
|
|
||||||
|
|
@ -1,266 +0,0 @@
|
||||||
/*~ This file declares the Graphics class.
|
|
||||||
*~ Reference: https://banglejs.com/reference#Graphics
|
|
||||||
*/
|
|
||||||
|
|
||||||
type Image = {
|
|
||||||
width: number;
|
|
||||||
height: number;
|
|
||||||
buffer: ArrayBuffer | string;
|
|
||||||
bpp?: number;
|
|
||||||
transparent?: number;
|
|
||||||
palette?: Uint16Array;
|
|
||||||
};
|
|
||||||
|
|
||||||
type Theme = {
|
|
||||||
fg: number;
|
|
||||||
bg: number;
|
|
||||||
fg2: number;
|
|
||||||
bg2: number;
|
|
||||||
fgH: number;
|
|
||||||
bgH: number;
|
|
||||||
dark: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
type Layer = {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
image: string | Image | ArrayBuffer;
|
|
||||||
scale?: number;
|
|
||||||
rotate?: number;
|
|
||||||
center?: boolean;
|
|
||||||
repeat?: boolean;
|
|
||||||
nobounds?: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
type GraphicsApi = {
|
|
||||||
asBMP: () => string | undefined;
|
|
||||||
|
|
||||||
asImage: ((type: "object" | undefined) => object) &
|
|
||||||
((type: "string") => string);
|
|
||||||
|
|
||||||
asURL: () => string | undefined;
|
|
||||||
|
|
||||||
blit: (options: {
|
|
||||||
x1: number;
|
|
||||||
y1: number;
|
|
||||||
w: number;
|
|
||||||
h: number;
|
|
||||||
x2: number;
|
|
||||||
y2: number;
|
|
||||||
setModified?: boolean;
|
|
||||||
}) => GraphicsApi;
|
|
||||||
|
|
||||||
buffer: ArrayBuffer;
|
|
||||||
|
|
||||||
clear: (reset?: boolean) => GraphicsApi;
|
|
||||||
|
|
||||||
clearRect: ((x1: number, y1: number, x2: number, y2: number) => GraphicsApi) &
|
|
||||||
((options: {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
x2: number;
|
|
||||||
y2: number;
|
|
||||||
}) => GraphicsApi) &
|
|
||||||
((options: { x: number; y: number; w: number; h: number }) => GraphicsApi);
|
|
||||||
|
|
||||||
createArrayBuffer: (
|
|
||||||
width: number,
|
|
||||||
height: number,
|
|
||||||
bpp: number,
|
|
||||||
options?: {
|
|
||||||
zigzag?: boolean;
|
|
||||||
vertical_byte?: boolean;
|
|
||||||
msb?: boolean;
|
|
||||||
interleavex?: boolean;
|
|
||||||
color_order?: "rgb" | "rbg" | "grb" | "gbr" | "brg" | "bgr";
|
|
||||||
}
|
|
||||||
) => GraphicsApi;
|
|
||||||
|
|
||||||
createCallback: (
|
|
||||||
width: number,
|
|
||||||
height: number,
|
|
||||||
bpp: number,
|
|
||||||
callback: ((x: number, y: number, colour: number) => void) & {
|
|
||||||
setPixel: (x: number, y: number, colour: number) => void;
|
|
||||||
fillRect: (
|
|
||||||
x1: number,
|
|
||||||
y1: number,
|
|
||||||
x2: number,
|
|
||||||
y2: number,
|
|
||||||
colour: number
|
|
||||||
) => void;
|
|
||||||
}
|
|
||||||
) => GraphicsApi;
|
|
||||||
|
|
||||||
createImage: (str: string) => Image;
|
|
||||||
|
|
||||||
drawCircle: (x: number, y: number, radius: number) => GraphicsApi;
|
|
||||||
|
|
||||||
drawCircleAA: (x: number, y: number, radius: number) => GraphicsApi;
|
|
||||||
|
|
||||||
drawEllipse: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
|
|
||||||
|
|
||||||
drawImage: (
|
|
||||||
image: string | Image | ArrayBuffer,
|
|
||||||
xOffset: number,
|
|
||||||
yOffset: number,
|
|
||||||
options?: {
|
|
||||||
rotate?: number;
|
|
||||||
scale?: number;
|
|
||||||
frame?: number;
|
|
||||||
}
|
|
||||||
) => GraphicsApi;
|
|
||||||
|
|
||||||
drawImages: (
|
|
||||||
layers: [Layer?, Layer?, Layer?],
|
|
||||||
options?: {
|
|
||||||
x: number;
|
|
||||||
y: number;
|
|
||||||
width: number;
|
|
||||||
height: number;
|
|
||||||
}
|
|
||||||
) => GraphicsApi;
|
|
||||||
|
|
||||||
drawLine: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
|
|
||||||
|
|
||||||
drawLineAA: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
|
|
||||||
|
|
||||||
// TODO: Somehow define that poly must have an even number of items
|
|
||||||
drawPoly: (poly: number[], closed?: boolean) => GraphicsApi;
|
|
||||||
|
|
||||||
drawPolyAA: (poly: number[], closed?: boolean) => GraphicsApi;
|
|
||||||
|
|
||||||
drawRect: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
|
|
||||||
|
|
||||||
drawString: (
|
|
||||||
str: string | number | boolean,
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
solid?: boolean
|
|
||||||
) => GraphicsApi;
|
|
||||||
|
|
||||||
dump: () => void;
|
|
||||||
|
|
||||||
fillCircle: (x: number, y: number, radius: number) => GraphicsApi;
|
|
||||||
|
|
||||||
fillEllipse: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
|
|
||||||
|
|
||||||
fillPoly: (poly: number[], closed?: boolean) => GraphicsApi;
|
|
||||||
|
|
||||||
fillPolyAA: (poly: number[], closed?: boolean) => GraphicsApi;
|
|
||||||
|
|
||||||
fillRect: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
|
|
||||||
|
|
||||||
flip: (all?: boolean) => GraphicsApi;
|
|
||||||
|
|
||||||
getBgColor: () => number;
|
|
||||||
|
|
||||||
getBPP: () => number;
|
|
||||||
|
|
||||||
getColor: () => number;
|
|
||||||
|
|
||||||
getFont: () => string;
|
|
||||||
|
|
||||||
getFontHeight: () => number;
|
|
||||||
|
|
||||||
getFonts: () => string[];
|
|
||||||
|
|
||||||
getHeight: () => number;
|
|
||||||
|
|
||||||
getInstance: () => GraphicsApi | undefined;
|
|
||||||
|
|
||||||
getModified: (
|
|
||||||
reset?: boolean
|
|
||||||
) => { x1: number; y1: number; x2: number; y2: number } | undefined;
|
|
||||||
|
|
||||||
getPixel: (x: number, y: number) => number;
|
|
||||||
|
|
||||||
getWidth: () => number;
|
|
||||||
|
|
||||||
imageMetrics: (image: string | GraphicsApi | Image | ArrayBuffer) =>
|
|
||||||
| {
|
|
||||||
width: number;
|
|
||||||
height: number;
|
|
||||||
bpp: number;
|
|
||||||
transparent: number;
|
|
||||||
}
|
|
||||||
| undefined;
|
|
||||||
|
|
||||||
lineTo: (x: number, y: number) => GraphicsApi;
|
|
||||||
|
|
||||||
moveTo: (x: number, y: number) => GraphicsApi;
|
|
||||||
|
|
||||||
quadraticBezier: (
|
|
||||||
vertices: [
|
|
||||||
x0: number,
|
|
||||||
y0: number,
|
|
||||||
x1: number,
|
|
||||||
y1: number,
|
|
||||||
x2: number,
|
|
||||||
y2: number
|
|
||||||
],
|
|
||||||
points?: number
|
|
||||||
) => number[];
|
|
||||||
|
|
||||||
reset: () => GraphicsApi;
|
|
||||||
|
|
||||||
scroll: (x: number, y: number) => GraphicsApi;
|
|
||||||
|
|
||||||
setBgColor: ((color: string) => GraphicsApi) &
|
|
||||||
((color: number) => GraphicsApi) &
|
|
||||||
((r: number, g: number, b: number) => GraphicsApi);
|
|
||||||
|
|
||||||
setClipRect: (x1: number, y1: number, x2: number, y2: number) => GraphicsApi;
|
|
||||||
|
|
||||||
setColor: ((color: string) => GraphicsApi) &
|
|
||||||
((color: number) => GraphicsApi) &
|
|
||||||
((r: number, g: number, b: number) => GraphicsApi);
|
|
||||||
|
|
||||||
setFont: (name?: string, size?: number) => GraphicsApi;
|
|
||||||
|
|
||||||
setFontAlign: (
|
|
||||||
x: -1 | 0 | 1,
|
|
||||||
y: -1 | 0 | 1,
|
|
||||||
rotation?: 0 | 1 | 2 | 3
|
|
||||||
) => GraphicsApi;
|
|
||||||
|
|
||||||
setFontBitmap: () => GraphicsApi;
|
|
||||||
|
|
||||||
setFontCustom: (
|
|
||||||
bitmap: ArrayBuffer,
|
|
||||||
firstChar: number,
|
|
||||||
width: number | string,
|
|
||||||
height: number
|
|
||||||
) => GraphicsApi;
|
|
||||||
|
|
||||||
setFontVector: (size: number) => GraphicsApi;
|
|
||||||
|
|
||||||
setPixel: (
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
colour: number | string | undefined
|
|
||||||
) => GraphicsApi;
|
|
||||||
|
|
||||||
setRotation: (rotation: 0 | 1 | 2 | 3, reflect?: boolean) => GraphicsApi;
|
|
||||||
|
|
||||||
setTheme: (theme: Theme) => GraphicsApi;
|
|
||||||
|
|
||||||
stringMetrics: (str: string) => { width: number; height: number };
|
|
||||||
|
|
||||||
stringWidth: (str: string) => number;
|
|
||||||
|
|
||||||
theme: Theme;
|
|
||||||
|
|
||||||
toColor: ((color: string) => number) &
|
|
||||||
((color: number) => number) &
|
|
||||||
((r: number, g: number, b: number) => number);
|
|
||||||
|
|
||||||
transformVertices: (
|
|
||||||
verts: number[],
|
|
||||||
transformation:
|
|
||||||
| { x?: number; y?: number; scale?: number; rotate?: number }
|
|
||||||
| [number, number, number, number, number, number] // 2D transformation matrix
|
|
||||||
) => number[];
|
|
||||||
|
|
||||||
wrapString: (str: string, maxWidth: number) => string[];
|
|
||||||
};
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
/*~ This file declares the I2c class.
|
|
||||||
*~ Reference: https://banglejs.com/reference#I2C
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare class I2C {
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1 +0,0 @@
|
||||||
declare type Serial = {};
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
declare type SPI = {
|
|
||||||
find(pin: Pin): SPIInstance | undefined;
|
|
||||||
new (): SPIInstance;
|
|
||||||
};
|
|
||||||
|
|
||||||
type TOrArray<T> = T | TOrArray<T>[];
|
|
||||||
type TArrObj<T> = T | TArrObj<T>[] | { data: TArrObj<T>; count: number };
|
|
||||||
type NumStrArr = TOrArray<number | string>;
|
|
||||||
|
|
||||||
declare type SPIInstance = {
|
|
||||||
send(data: TArrObj<number | string>, nss_pin: number): any;
|
|
||||||
send4bit(data: NumStrArr, bit0: number, bit1: number, nss_pin: number): void;
|
|
||||||
send8bit(data: NumStrArr, bit0: number, bit1: number, nss_pin: number): void;
|
|
||||||
setup(options: {
|
|
||||||
sck?: Pin;
|
|
||||||
miso?: Pin;
|
|
||||||
mosi?: Pin;
|
|
||||||
baud?: number;
|
|
||||||
mode?: 0 | 1 | 2 | 3;
|
|
||||||
order?: "msb" | "lsb";
|
|
||||||
bits?: number;
|
|
||||||
}): void;
|
|
||||||
write(...data: Array<Data | Pin>): void;
|
|
||||||
};
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
type FileData = string | Array<any> | Object;
|
|
||||||
|
|
||||||
declare interface Storage {
|
|
||||||
compact: () => void;
|
|
||||||
erase: (name: string) => void;
|
|
||||||
eraseAll: () => void;
|
|
||||||
getFree: () => number;
|
|
||||||
hash: (regex?: RegExp) => number; // More specifically it returns Uint32
|
|
||||||
list: (regex?: RegExp, filter?: { sf: boolean }) => string[];
|
|
||||||
open: (name: string, mode: "r" | "w" | "a") => StorageFile;
|
|
||||||
read: (name: string, offset?: number, length?: number) => string | undefined;
|
|
||||||
readArrayBuffer: (name: string) => ArrayBuffer | undefined;
|
|
||||||
readJSON: (name: string, noExceptions?: boolean) => any;
|
|
||||||
write: (
|
|
||||||
name: string,
|
|
||||||
data: FileData,
|
|
||||||
offset?: number,
|
|
||||||
size?: number
|
|
||||||
) => boolean;
|
|
||||||
writeJSON: (name: string, data: any) => boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare interface StorageFile {
|
|
||||||
erase: () => void;
|
|
||||||
getLength: () => number;
|
|
||||||
read: (len: number) => string | undefined;
|
|
||||||
readLine: () => string | undefined;
|
|
||||||
write: (data: FileData) => string;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue