@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
1 lines • 17.1 kB
Source Map (JSON)
{"version":3,"file":"iotize-ionic-gpio.mjs","sources":["../../../../projects/iotize-ionic/gpio/src/lib/definitions.ts","../../../../projects/iotize-ionic/gpio/src/lib/tap-extension.ts","../../../../projects/iotize-ionic/gpio/src/lib/tap-gpio.component.ts","../../../../projects/iotize-ionic/gpio/src/lib/tap-gpio.component.html","../../../../projects/iotize-ionic/gpio/src/lib/tap-gpio.module.ts","../../../../projects/iotize-ionic/gpio/src/lib/pinschema.ts","../../../../projects/iotize-ionic/gpio/src/iotize-ionic-gpio.ts"],"sourcesContent":["export interface PowerPin {\n type: 'POWER';\n power: number;\n}\n\nexport interface GPIOPin {\n type: 'GPIO';\n num: number;\n}\n\nexport interface GroundPin {\n type: 'GROUND';\n}\n\nexport interface DisabledPin {\n type: 'DISABLED';\n}\n\nexport type PinType = PowerPin | GPIOPin | GroundPin | DisabledPin;\n\nexport interface PinEntry {\n num: number;\n pin: PinType;\n}\n\nexport namespace GPIO {\n export enum Mode {\n IN = 'IN',\n OUT = 'OUT',\n }\n export enum Signal {\n HIGH = 'HIGH',\n LOW = 'LOW',\n }\n}\n\nexport type PinSchema = (PinEntry & { title: string })[];\n\nexport interface IGPIOController {\n conf: GPIOPin;\n\n low(): Promise<void> | void;\n high(): Promise<void> | void;\n\n setup(direction: GPIO.Mode, initial: GPIO.Signal): void;\n}\n","import { IGPIOController, GPIOPin, GPIO } from './definitions';\nimport { Tap } from '@iotize/tap';\n\nexport enum GPIO_MODE {\n INPUT_FLOATING = 0,\n OUTPUT_OPENDRAIN = 1,\n OUTPUT_PUSHPULL = 3,\n INPUT_PULLUP = 4,\n OUTPUT_OPENDRAIN_PULLUP = 5,\n INPUT_PULLDOWN = 8,\n INPUT_ANALOG_FLOATING = 0x80,\n OUTPUT_ANALOG_PWM = 0x83,\n}\n\nexport class TapGPIOController implements IGPIOController {\n _state?: GPIO.Signal;\n _mode?: GPIO.Mode;\n\n constructor(public tap: Tap, public conf: GPIOPin) {}\n\n toggle() {\n if (this._state == GPIO.Signal.HIGH) {\n return this.low();\n } else {\n return this.high();\n }\n }\n\n low(): void | Promise<void> {\n return this.tap.lwm2m\n .post(`/1029/${this.conf.num}/5`, Uint8Array.from([0]))\n .then((response) => {\n response.successful();\n this._state = GPIO.Signal.LOW;\n });\n }\n\n high(): void | Promise<void> {\n // let value = 0xFF & this.conf.num;\n // let value = 0b00011101;\n const value = 1;\n return this.tap.lwm2m\n .post(`/1029/${this.conf.num}/5`, Uint8Array.from([value]))\n .then((response) => {\n response.successful();\n this._state = GPIO.Signal.HIGH;\n });\n }\n\n read(): GPIO.Signal | Promise<GPIO.Signal> {\n return this.tap.lwm2m.get(`/1029/${this.conf.num}/4`).then((response) => {\n const result = response.body()[0];\n const decoded = result == 1 ? GPIO.Signal.HIGH : GPIO.Signal.LOW;\n console.log('READ RESULT', decoded);\n return decoded;\n });\n }\n\n setup(\n direction: GPIO.Mode = GPIO.Mode.OUT,\n initial: GPIO.Signal = GPIO.Signal.LOW\n ) {\n // let value = 0xFF & this.conf.num;\n // let value = 0b00011101;\n const value = 1;\n switch (direction) {\n case GPIO.Mode.IN:\n return this.tap.lwm2m\n .post(`/1029/${this.conf.num + 10}/5`, Uint8Array.from([value]))\n .then((response) => {\n response.successful();\n this._mode = GPIO.Mode.IN;\n });\n case GPIO.Mode.OUT:\n return this.tap.lwm2m\n .post(`/1029/${this.conf.num + 10}/5`, Uint8Array.from([0x00]))\n .then((response) => {\n response.successful();\n this._mode = GPIO.Mode.OUT;\n });\n default:\n throw new Error('Invalid setup');\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CurrentDeviceService } from '@iotize/ionic';\n\nimport { PinSchema } from './definitions';\nimport { TapGPIOController } from './tap-extension';\n\n@Component({\n selector: 'tap-gpio',\n templateUrl: './tap-gpio.component.html',\n styleUrls: ['./tap-gpio.component.scss'],\n})\nexport class TapGpioComponent {\n @Input() public schema: PinSchema = [];\n\n @Input() lines = 'full';\n\n public pins: PinSchema;\n\n constructor(public tapService: CurrentDeviceService) {\n this.pins = this.schema.map((entry) => {\n if (entry.pin.type === 'GPIO') {\n (entry as any).controller = new TapGPIOController(this.tap, entry.pin);\n }\n return entry as any;\n });\n }\n\n get tap() {\n return this.tapService.tap;\n }\n}\n","<ion-list [lines]=\"lines\">\n <ion-item *ngFor=\"let config of pins\">\n <ng-template [ngIf]=\"config.pin.type == 'GROUND'\" #ground>\n <span slot=\"start\">{{ config.num }}</span>\n <ion-label>\n <span slot=\"start\">{{ config.pin.type }}</span>\n </ion-label>\n </ng-template>\n <ng-template [ngIf]=\"config.pin.type == 'POWER'\" #power>\n <span slot=\"start\">{{ config.num }}</span>\n <span slot=\"start\">{{ config.pin.type }}</span>\n <ion-label>\n <span slot=\"start\">{{ config.power }}V</span>\n </ion-label>\n </ng-template>\n <ng-template [ngIf]=\"config.pin.type == 'DISABLED'\" #disabledpin>\n <span slot=\"start\">{{ config.num }}</span>\n <ion-label>\n <span slot=\"start\">{{ config.pin.type }}</span>\n </ion-label>\n </ng-template>\n <ng-template [ngIf]=\"config.pin.type == 'GPIO'\" #gpio>\n <span slot=\"start\">{{ config.num }}</span>\n <span slot=\"start\">{{ config.pin.type }} {{ config.pin.num }}</span>\n <ion-label>\n {{ config.title }}\n </ion-label>\n <ion-buttons slot=\"end\">\n <ion-button\n [color]=\"config.controller._mode == 'OUT' ? 'primary' : ''\"\n (click)=\"config.controller.setup('OUT')\"\n >OUT</ion-button\n >\n <ion-button (click)=\"config.controller.read()\">READ</ion-button>\n </ion-buttons>\n <ion-buttons slot=\"end\">\n <ion-button\n [color]=\"config.controller._mode == 'IN' ? 'primary' : ''\"\n (click)=\"config.controller.setup('IN')\"\n >IN</ion-button\n >\n <!-- <ion-toggle (click)=\"config.controller.toggle()\"></ion-toggle> -->\n <ion-button\n [color]=\"config.controller._state == 'LOW' ? 'primary' : ''\"\n (click)=\"config.controller.low()\"\n >LOW</ion-button\n >\n <ion-button\n [color]=\"config.controller._state == 'HIGH' ? 'primary' : ''\"\n (click)=\"config.controller.high()\"\n >HIGH</ion-button\n >\n </ion-buttons>\n </ng-template>\n </ion-item>\n</ion-list>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@ionic/angular';\nimport { TapGpioComponent } from './tap-gpio.component';\n\n@NgModule({\n declarations: [TapGpioComponent],\n exports: [TapGpioComponent],\n imports: [CommonModule, IonicModule],\n})\nexport class TapGpioModule {}\n","import { PinSchema } from './definitions';\n\nexport const J1PinSchema: PinSchema = [\n {\n num: 1,\n pin: {\n power: 3.3,\n type: 'POWER',\n },\n title: 'Vcc',\n },\n {\n num: 2,\n pin: {\n num: 4, // ???\n type: 'GPIO',\n },\n title: 'SP3PIO/SWDIO (TMS)',\n },\n {\n num: 3,\n pin: {\n type: 'GROUND',\n },\n title: 'Gnd',\n },\n {\n num: 4,\n pin: {\n num: 2,\n type: 'GPIO',\n },\n title: 'S3PCLK/SWDCLK (TCK)',\n },\n {\n num: 5,\n pin: {\n type: 'GROUND',\n },\n title: 'Gnd',\n },\n {\n num: 6,\n pin: {\n num: 3,\n type: 'GPIO',\n },\n title: 'SWO (TDO)',\n },\n {\n num: 7,\n pin: {\n type: 'DISABLED',\n },\n title: 'Not connected',\n },\n {\n num: 8,\n pin: {\n num: 4,\n type: 'GPIO',\n },\n title: 'TDI',\n },\n {\n num: 9,\n pin: {\n type: 'GROUND',\n },\n title: 'Gnd',\n },\n {\n num: 10,\n pin: {\n num: 0,\n type: 'GPIO',\n },\n title: 'RST',\n },\n];\n\nexport const J3PinSchema: PinSchema = [\n {\n num: 1,\n pin: {\n power: 3.3,\n type: 'POWER',\n },\n title: 'Vcc',\n },\n {\n num: 2,\n pin: {\n type: 'GROUND',\n },\n title: 'Gnd',\n },\n {\n num: 2,\n pin: {\n num: 4,\n type: 'GPIO',\n },\n title: 'SP3PIO/SWDIO (TMS)',\n },\n {\n num: 4,\n pin: {\n num: 2,\n type: 'GPIO',\n },\n title: 'S3PCLK/SWDCLK (TCK)',\n },\n {\n num: 10,\n pin: {\n num: 0,\n type: 'GPIO',\n },\n title: 'RST',\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}