UNPKG

@isimnz/gpiox

Version:

Raspberry Pi gpiox library - Now with TypeScript! Thank you so much to Derya Y.(AKA iiot2k) for creating the base javascript package

179 lines (173 loc) 4.81 kB
/** * Copyright 2024 Derya Y. (iiot2k@gmail.com). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use node file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ type NonEmptyArray<T> = [T, ...T[]]; ("use strict"); type Enumerate< N extends number, Acc extends number[] = [] > = Acc["length"] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc["length"]]>; type IntRange<F extends number, T extends number> = Exclude< Enumerate<T>, Enumerate<F> >; declare module "@isimnz/gpiox" { function error_test(): string; type pin = IntRange<2, 28>; type numOrBool = number | boolean; type state = 0 | 1 | undefined; type boolState = boolean | undefined; type pwmFreq = number; type dutyCycle = IntRange<0, 101>; enum COUNTER { MIN, MIN_HIGH, MAX = 4294967294, } type counterRange = number; const enum GPIO_MODE { INPUT_NOPULL, INPUT_PULLDOWN, INPUT_PULLUP, OUTPUT, OUTPUT_SOURCE, OUTPUT_SINK, PWM, PWM_REALTIME, COUNTER_NOPULL, COUNTER_PULLDOWN, COUNTER_PULLUP, SENSOR, } function init_gpio(pin: pin, mode: GPIO_MODE, setval: numOrBool): boolean; function change_gpio(pin: pin, mode: GPIO_MODE, setval: numOrBool): boolean; function deinit_gpio(pin: pin): boolean; const enum GPIO_EDGE { RISING, FALLING, BOTH, } function watch_gpio( pin: pin, mode: GPIO_MODE, debounce: number, edge: GPIO_EDGE, callback: ( state: number, edge: Exclude<GPIO_EDGE, GPIO_EDGE.BOTH>, pin: pin ) => void ): state; function get_gpio(pin: pin): boolState; function get_gpio_num(pin: pin): state; function set_gpio(pin: pin, value: state): boolState; function toggle_gpio(pin: pin): boolean; function blink_gpio(pin: pin, period: number): boolean; function stop_blink_gpio(pin: pin): boolean; function init_pwn( pin: pin, mode: GPIO_MODE, frequency_hz: pwmFreq, dutycycle: dutyCycle ): boolean; function set_pwn( pin: pin, frequency_hz: pwmFreq, dutycycle: dutyCycle ): boolean; function get_pwn_frequency(pin: pin): pwmFreq; function get_pwm_dutycycle(pin: pin): dutyCycle | undefined; enum CNT_MODE { C_UP, C_DOWN, } function init_counter_pin( pin: pin, mode: GPIO_MODE, debounce: number, edge: GPIO_EDGE ): boolean; function init_counter_reset_pin( pin: pin, pin_reset: pin, mode: GPIO_MODE, debounce: number, edge: GPIO_EDGE ): boolean; function init_counter_output_pin( pin: pin, pin_output: pin, mode: GPIO_MODE ): boolean; function init_counter( pin: pin, counter_high: counterRange, cnt_mode: CNT_MODE, callback: ( counter: counterRange, on_limit: boolean, cnt_mode: CNT_MODE, counter_high: counterRange, pin: pin ) => void ): boolean; function set_counter( pin: pin, counter_high: counterRange, cnt_mode: CNT_MODE ): boolean; function reset_counter(pin: pin): boolean; function get_counter(pin: pin): counterRange | undefined; function get_counter_high(pin: pin): counterRange | undefined; function get_counter_mode(pin: pin): CNT_MODE | undefined; function is_counter_onlimit(pin: pin): boolState; const enum RES_SENSOR { SENSOR_9, SENSOR_10, SENSOR_11, SENSOR_12, } function init_sensor(pin: pin, res: RES_SENSOR): boolean; function scan_sensor(pin: pin, callback: () => boolean): void; function scan_sensor_sync(pin: pin): boolean; function list_sensor(pin: pin): string[] | undefined; function get_sensor_count(pin: pin): number | undefined; function read_sensor( pin: pin, fh: boolean, callback: (data: number[] | undefined) => void ): void; function read_sensor_sync(pin: pin, fh: boolean): number[] | undefined; function read_one_sensor( pin: pin, id: string, fh: boolean, callback: (data: number[] | void) => void ): void; function read_one_sensor_sync( pin: pin, id: string, fh: boolean ): number | undefined; } // Loads driver depends on platform module.exports = require("./gpiox_arm64.node"); // if (process.platform === "linux") { // if (process.arch === "arm64") module.exports = require("./gpiox_arm64.node"); // else if (process.arch === "arm") // module.exports = require("./gpiox_arm32.node"); // }