@ikalogic/at1000 0.1.26 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{at1000-Du4TawpS.mjs → at1000-COqCU7HR.mjs} +2 -2
- package/build/{at1000-Du4TawpS.mjs.map → at1000-COqCU7HR.mjs.map} +1 -1
- package/build/{at1000-TeP9-fyr.d.mts → at1000-CbtCnc9k.d.mts} +7 -7
- package/build/{at1000-TeP9-fyr.d.mts.map → at1000-CbtCnc9k.d.mts.map} +1 -1
- package/build/{at1000-B0emb4U_.cjs → at1000-Drc2Gwwh.cjs} +2 -2
- package/build/{at1000-B0emb4U_.cjs.map → at1000-Drc2Gwwh.cjs.map} +1 -1
- package/build/{at1000-DIVuASWg.d.cts → at1000-iknorBtT.d.cts} +7 -7
- package/build/{at1000-DIVuASWg.d.cts.map → at1000-iknorBtT.d.cts.map} +1 -1
- package/build/browser.cjs +1 -1
- package/build/browser.d.cts +1 -1
- package/build/browser.d.mts +1 -2
- package/build/browser.d.mts.map +1 -1
- package/build/browser.mjs +1 -1
- package/build/com-BKy7zoOg.d.mts +1348 -0
- package/build/com-BKy7zoOg.d.mts.map +1 -0
- package/build/com-lqsVrnqO.d.cts +1348 -0
- package/build/com-lqsVrnqO.d.cts.map +1 -0
- package/build/com.cjs +1 -1
- package/build/com.cjs.map +1 -1
- package/build/com.d.cts +2 -1155
- package/build/com.d.mts +2 -1155
- package/build/com.mjs +1 -1
- package/build/com.mjs.map +1 -1
- package/build/{common-DJ7WSo1p.d.mts → common-Cc9ZDx5b.d.mts} +1 -1
- package/build/{common-DJ7WSo1p.d.mts.map → common-Cc9ZDx5b.d.mts.map} +1 -1
- package/build/{common-D4tBd_j2.mjs → common-DzTRbz1N.mjs} +1 -1
- package/build/{common-D4tBd_j2.mjs.map → common-DzTRbz1N.mjs.map} +1 -1
- package/build/{common-Bbc8Sixu.cjs → common-PXzrB8CC.cjs} +1 -1
- package/build/{common-Bbc8Sixu.cjs.map → common-PXzrB8CC.cjs.map} +1 -1
- package/build/gpio-B2EhZKM8.d.mts +358 -0
- package/build/gpio-B2EhZKM8.d.mts.map +1 -0
- package/build/gpio-C4wCa4wG.d.cts +358 -0
- package/build/gpio-C4wCa4wG.d.cts.map +1 -0
- package/build/gpio.cjs +1 -1
- package/build/gpio.d.cts +2 -357
- package/build/gpio.d.mts +3 -358
- package/build/gpio.mjs +1 -1
- package/build/hmi-BVhaUdzh.d.cts +135 -0
- package/build/hmi-BVhaUdzh.d.cts.map +1 -0
- package/build/hmi-CiHf34mI.d.mts +135 -0
- package/build/hmi-CiHf34mI.d.mts.map +1 -0
- package/build/hmi.d.cts +2 -135
- package/build/hmi.d.mts +2 -135
- package/build/management-ra61-qUr.d.mts +283 -0
- package/build/management-ra61-qUr.d.mts.map +1 -0
- package/build/management-wQgti8p7.d.cts +283 -0
- package/build/management-wQgti8p7.d.cts.map +1 -0
- package/build/management.cjs.map +1 -1
- package/build/management.d.cts +2 -283
- package/build/management.d.mts +2 -283
- package/build/management.mjs.map +1 -1
- package/build/node.cjs +1 -1
- package/build/node.cjs.map +1 -1
- package/build/node.d.cts +1 -1
- package/build/node.d.mts +1 -2
- package/build/node.d.mts.map +1 -1
- package/build/node.mjs +1 -1
- package/build/node.mjs.map +1 -1
- package/build/power-Bi9cbP8g.d.mts +343 -0
- package/build/power-Bi9cbP8g.d.mts.map +1 -0
- package/build/power-Dv21KxFx.d.cts +343 -0
- package/build/power-Dv21KxFx.d.cts.map +1 -0
- package/build/power.cjs +1 -1
- package/build/power.d.cts +2 -342
- package/build/power.d.mts +3 -343
- package/build/power.mjs +1 -1
- package/build/relays-C-vNqDM-.d.cts +80 -0
- package/build/relays-C-vNqDM-.d.cts.map +1 -0
- package/build/relays-CbyqFtJP.d.mts +80 -0
- package/build/relays-CbyqFtJP.d.mts.map +1 -0
- package/build/relays.d.cts +2 -80
- package/build/relays.d.mts +2 -80
- package/package.json +7 -7
- package/build/com.d.cts.map +0 -1
- package/build/com.d.mts.map +0 -1
- package/build/gpio.d.cts.map +0 -1
- package/build/gpio.d.mts.map +0 -1
- package/build/hmi.d.cts.map +0 -1
- package/build/hmi.d.mts.map +0 -1
- package/build/management.d.cts.map +0 -1
- package/build/management.d.mts.map +0 -1
- package/build/power.d.cts.map +0 -1
- package/build/power.d.mts.map +0 -1
- package/build/relays.d.cts.map +0 -1
- package/build/relays.d.mts.map +0 -1
package/build/com.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as e from"valibot";const t=e.object({can_id:e.number(),data:e.pipe(e.array(e.number()),e.minLength(0),e.maxLength(8))}),n=e.pipe(e.union([e.pipe(e.string(),e.maxLength(
|
|
1
|
+
import*as e from"valibot";const t=e.object({can_id:e.number(),data:e.pipe(e.array(e.number()),e.minLength(0),e.maxLength(8))}),n=e.pipe(e.union([e.pipe(e.string(),e.maxLength(65536)),e.pipe(e.array(e.pipe(e.number(),e.minValue(0),e.maxValue(255))),e.maxLength(65536))]),e.transform(e=>typeof e==`string`?e.split(``).map(e=>{let t=e.charCodeAt(0);return t>127?63:t}):e)),r=e.object({address:e.number(),start:e.boolean(),stop:e.boolean(),nack_last_byte:e.boolean()}),i=e.intersect([e.partial(r,[`start`,`stop`,`nack_last_byte`]),e.object({length:e.pipe(e.number(),e.minValue(1),e.maxValue(1024))})]),a=e.intersect([e.partial(r,[`start`,`stop`,`nack_last_byte`]),e.object({data:n})]),o=e.object({enabled:e.boolean(),baud_rate:e.picklist([5e3,1e4,2e4,31250,33e3,4e4,5e4,8e4,83300,95e3,1e5,125e3,2e5,25e4,5e5,1e6]),termination_resistors:e.boolean(),rx_filter:e.object({extended_id:e.boolean(),id:e.number(),mask:e.number()})}),s=e.partial(o);e.omit(s,[`enabled`]);const c=e.picklist([`none`,`odd`,`even`,`mark`,`space`]),l=e.picklist([`1`,`1.5`,`2`]),u=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(50),e.maxValue(1e6)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c}),d=e.partial(u);e.omit(d,[`enabled`]);const f=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(2e7)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c,termination_resistors:e.boolean()}),p=e.partial(f);e.omit(p,[`enabled`]);const m=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(1e7)),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5)),mode:e.pipe(e.number(),e.minValue(0),e.maxValue(3))}),h=e.partial(m);e.omit(h,[`enabled`]);const g=e.object({enabled:e.boolean(),baud_rate:e.picklist([1e5,4e5,1e6]),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5))}),_=e.partial(g);e.omit(_,[`enabled`]);const v=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(12e6)),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c}),y=e.partial(v);e.omit(y,[`enabled`]);var b=class{constructor(e){this.fetch=e}reset(){return this.fetch(`/com/reset`,{method:`POST`,parseResponse:()=>{}})}can(e){return new x(this.fetch,e)}rs232(e){return new S(this.fetch,e)}rs485(e){return new C(this.fetch,e)}spi(e){return new w(this.fetch,e)}i2c(e){return new T(this.fetch,e)}uart(e){return new E(this.fetch,e)}},x=class{constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/can/${this.id}/config`,{method:`PATCH`,body:e.parse(s,t),schema:o})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(n){return this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:e.parse(t,n),schema:t})}start_rx(){return this.fetch(`/com/can/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/can/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/can/${this.id}/read`,{schema:e.array(t)})}},S=class{constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/rs232/${this.id}/config`,{method:`PATCH`,body:e.parse(d,t),schema:u})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/rs232/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/rs232/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs232/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs232/${this.id}/read`,{schema:n})}},C=class{constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/rs485/${this.id}/config`,{method:`PATCH`,body:e.parse(p,t),schema:f})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/rs485/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/rs485/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs485/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs485/${this.id}/read`,{schema:n})}},w=class{constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/spi/${this.id}/config`,{method:`PATCH`,body:e.parse(h,t),schema:m})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}trx(t){return this.fetch(`/com/spi/${this.id}/write_read`,{method:`POST`,body:e.parse(n,t),schema:n})}},T=class{constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/i2c/${this.id}/config`,{method:`PATCH`,body:e.parse(_,t),schema:g})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/i2c/${this.id}/write`,{method:`POST`,body:e.parse(a,t),parseResponse:async e=>{let t=await e.text();return parseInt(t,10)}})}rx(t){return this.fetch(`/com/i2c/${this.id}/read`,{method:`POST`,body:e.parse(i,t),schema:n})}},E=class{constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/uart/${this.id}/config`,{method:`PATCH`,body:e.parse(y,t),schema:v})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/uart/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/uart/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/uart/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/uart/${this.id}/read`,{schema:n})}};export{x as Can,b as ComApi,T as I2c,S as Rs232,C as Rs485,w as Spi,E as Uart};
|
|
2
2
|
//# sourceMappingURL=com.mjs.map
|
package/build/com.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"com.mjs","names":[],"sources":["../src/api/com.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nconst canFrame = v.object({\n can_id: v.number(),\n data: v.pipe(v.array(v.number()), v.minLength(0), v.maxLength(8)),\n});\nexport type CanFrame = v.InferOutput<typeof canFrame>;\n\nconst serialData = v.pipe(\n // 1. Validate Input: String OR Array of Bytes (0-255), both max length 1024\n v.union([\n v.pipe(v.string(), v.maxLength(1024)),\n v.pipe(v.array(v.pipe(v.number(), v.minValue(0), v.maxValue(255))), v.maxLength(1024)),\n ]),\n // 2. Transform: Convert String to ASCII bytes or pass Array as is\n v.transform((input) => {\n if (typeof input === 'string') {\n return input.split('').map((char) => {\n const code = char.charCodeAt(0);\n // Replace UTF8/Non-ASCII (>127) with \"?\" (ASCII 63)\n return code > 127 ? 63 : code;\n });\n }\n return input;\n }),\n);\nexport type SerialData = v.InferOutput<typeof serialData>;\nexport type SerialDataInput = v.InferInput<typeof serialData>;\n\nconst i2cTransactionBase = v.object({\n address: v.number(),\n start: v.boolean(),\n stop: v.boolean(),\n nack_last_byte: v.boolean(),\n});\nconst i2cTransactionRead = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ length: v.pipe(v.number(), v.minValue(1), v.maxValue(1024)) }),\n]);\ntype I2cTransactionRead = v.InferOutput<typeof i2cTransactionRead>;\nconst i2cTransactionWrite = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ data: serialData }),\n]);\ntype I2cTransactionWrite = v.InferOutput<typeof i2cTransactionWrite>;\n\nconst canConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([5_000, 10_000, 20_000, 31_250, 33_000, 40_000, 50_000, 80_000, 83_300,\n 95_000, 100_000, 125_000, 200_000, 250_000, 500_000, 1_000_000]),\n termination_resistors: v.boolean(),\n rx_filter: v.object({ extended_id: v.boolean(), id: v.number(), mask: v.number() }),\n});\nexport type CanConfig = v.InferOutput<typeof canConfig>;\nconst canConfigPatch = v.partial(canConfig);\nexport type CanConfigPatch = v.InferOutput<typeof canConfigPatch>;\nconst canEnableConfig = v.omit(canConfigPatch, ['enabled']);\nexport type CanEnableConfig = v.InferOutput<typeof canEnableConfig>;\n\nconst rs232Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(1_000_000)),\n});\nexport type Rs232Config = v.InferOutput<typeof rs232Config>;\nconst rs232ConfigPatch = v.partial(rs232Config);\nexport type Rs232ConfigPatch = v.InferOutput<typeof rs232ConfigPatch>;\nconst rs232EnableConfig = v.omit(rs232ConfigPatch, ['enabled']);\nexport type Rs232EnableConfig = v.InferOutput<typeof rs232EnableConfig>;\n\nconst rs485Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(20_000_000)),\n termination_resistors: v.boolean(),\n});\nexport type Rs485Config = v.InferOutput<typeof rs485Config>;\nconst rs485ConfigPatch = v.partial(rs485Config);\nexport type Rs485ConfigPatch = v.InferOutput<typeof rs485ConfigPatch>;\nconst rs485EnableConfig = v.omit(rs485ConfigPatch, ['enabled']);\nexport type Rs485EnableConfig = v.InferOutput<typeof rs485EnableConfig>;\n\nconst spiConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(10_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n mode: v.pipe(v.number(), v.minValue(0), v.maxValue(3)),\n});\nexport type SpiConfig = v.InferOutput<typeof spiConfig>;\nconst spiConfigPatch = v.partial(spiConfig);\nexport type SpiConfigPatch = v.InferOutput<typeof spiConfigPatch>;\nconst spiEnableConfig = v.omit(spiConfigPatch, ['enabled']);\nexport type SpiEnableConfig = v.InferOutput<typeof spiEnableConfig>;\n\nconst i2cConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([100_000, 400_000, 1_000_000]),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n});\nexport type I2cConfig = v.InferOutput<typeof i2cConfig>;\nconst i2cConfigPatch = v.partial(i2cConfig);\nexport type I2cConfigPatch = v.InferOutput<typeof i2cConfigPatch>;\nconst i2cEnableConfig = v.omit(i2cConfigPatch, ['enabled']);\nexport type I2cEnableConfig = v.InferOutput<typeof i2cEnableConfig>;\n\nconst uartConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(12_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n});\nexport type UartConfig = v.InferOutput<typeof uartConfig>;\nconst uartConfigPatch = v.partial(uartConfig);\nexport type UartConfigPatch = v.InferOutput<typeof uartConfigPatch>;\nconst uartEnableConfig = v.omit(uartConfigPatch, ['enabled']);\nexport type UartEnableConfig = v.InferOutput<typeof uartEnableConfig>;\n\n/** @hideconstructor */\nexport class ComApi {\n constructor(private readonly fetch: UpFetch) {}\n\n /**\n * Resets the communication interfaces.\n */\n reset(): Promise<void> {\n return this.fetch('/com/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific CAN interface by id.\n * @param id The CAN interface id.\n * @returns The CAN instance.\n */\n can(id: number): Can {\n return new Can(this.fetch, id);\n }\n\n /**\n * Access a specific RS232 interface by id.\n * @param id The RS232 interface id.\n * @returns The RS232 instance.\n */\n rs232(id: number): Rs232 {\n return new Rs232(this.fetch, id);\n }\n\n /**\n * Access a specific RS485 interface by id.\n * @param id The RS485 interface id.\n * @returns The RS485 instance.\n */\n rs485(id: number): Rs485 {\n return new Rs485(this.fetch, id);\n }\n\n /**\n * Access a specific SPI interface by id.\n * @param id The SPI interface id.\n * @returns The SPI instance.\n */\n spi(id: number): Spi {\n return new Spi(this.fetch, id);\n }\n\n /**\n * Access a specific I2C interface by id.\n * @param id The I2C interface id.\n * @returns The I2C instance.\n */\n i2c(id: number): I2c {\n return new I2c(this.fetch, id);\n }\n\n /**\n * Access a specific UART interface by id.\n * @param id The UART interface id.\n * @returns The UART instance.\n */\n uart(id: number): Uart {\n return new Uart(this.fetch, id);\n }\n}\n\n/** @hideconstructor */\nexport class Can {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the CAN interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: CanConfigPatch): Promise<CanConfig> {\n return this.fetch(`/com/can/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(canConfigPatch, config),\n schema: canConfig,\n });\n }\n\n /**\n * Enables the CAN interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: CanEnableConfig = {}): Promise<CanConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the CAN interface.\n * @returns The updated configuration.\n */\n disable(): Promise<CanConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the CAN interface.\n * @param data The data to transmit.\n * @returns The transmitted data.\n */\n tx(data: CanFrame): Promise<CanFrame> {\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: v.parse(canFrame, data),\n schema: canFrame,\n });\n }\n\n /**\n * Starts receiving data over the CAN interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the CAN interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the CAN interface.\n * @returns An array of can frames.\n */\n rx(): Promise<CanFrame[]> {\n return this.fetch(`/com/can/${this.id}/read`, { schema: v.array(canFrame) });\n }\n}\n\n/** @hideconstructor */\nexport class Rs232 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS232 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs232ConfigPatch): Promise<Rs232Config> {\n return this.fetch(`/com/rs232/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs232ConfigPatch, config),\n schema: rs232Config,\n });\n }\n\n /**\n * Enables the RS232 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs232EnableConfig = {}): Promise<Rs232Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS232 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs232Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS232 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS232 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS232 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS232 interface.\n * @returns An array containing the received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Rs485 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS485 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs485ConfigPatch): Promise<Rs485Config> {\n return this.fetch(`/com/rs485/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs485ConfigPatch, config),\n schema: rs485Config,\n });\n }\n\n /**\n * Enables the RS485 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs485EnableConfig = {}): Promise<Rs485Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS485 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs485Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS485 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS485 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS485 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS485 interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Spi {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the SPI interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: SpiConfigPatch): Promise<SpiConfig> {\n return this.fetch(`/com/spi/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(spiConfigPatch, config),\n schema: spiConfig,\n });\n }\n\n /**\n * Enables the SPI interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: SpiEnableConfig = {}): Promise<SpiConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the SPI interface.\n * @returns The updated configuration.\n */\n disable(): Promise<SpiConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the SPI interface and receives the response.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n trx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/spi/${this.id}/write_read`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class I2c {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the I2C interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: I2cConfigPatch): Promise<I2cConfig> {\n return this.fetch(`/com/i2c/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(i2cConfigPatch, config),\n schema: i2cConfig,\n });\n }\n\n /**\n * Enables the I2C interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: I2cEnableConfig = {}): Promise<I2cConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the I2C interface.\n * @returns The updated configuration.\n */\n disable(): Promise<I2cConfig> {\n return this.configure({ enabled: false });\n }\n\n tx(transaction: I2cTransactionWrite): Promise<number> {\n return this.fetch(`/com/i2c/${this.id}/write`, {\n method: 'POST',\n body: v.parse(i2cTransactionWrite, transaction),\n parseResponse: async (response) => {\n const text = await response.text();\n return parseInt(text, 10);\n },\n });\n }\n\n rx(transaction: I2cTransactionRead): Promise<SerialData> {\n return this.fetch(`/com/i2c/${this.id}/read`, {\n method: 'POST',\n body: v.parse(i2cTransactionRead, transaction),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class Uart {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the UART interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: UartConfigPatch): Promise<UartConfig> {\n return this.fetch(`/com/uart/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(uartConfigPatch, config),\n schema: uartConfig,\n });\n }\n\n /**\n * Enables the UART interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: UartEnableConfig = {}): Promise<UartConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the UART interface.\n * @returns The updated configuration.\n */\n disable(): Promise<UartConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the UART interface.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n });\n }\n\n /**\n * Starts receiving data over the UART interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the UART interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the UART interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/read`, { schema: serialData });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"com.mjs","names":[],"sources":["../src/api/com.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nconst canFrame = v.object({\n can_id: v.number(),\n data: v.pipe(v.array(v.number()), v.minLength(0), v.maxLength(8)),\n});\nexport type CanFrame = v.InferOutput<typeof canFrame>;\n\nconst serialData = v.pipe(\n // 1. Validate Input: String OR Array of Bytes (0-255), both max length 65536\n // Server enforces per-endpoint limits (e.g. SPI max transfer = 65536 bytes)\n v.union([\n v.pipe(v.string(), v.maxLength(65536)),\n v.pipe(v.array(v.pipe(v.number(), v.minValue(0), v.maxValue(255))), v.maxLength(65536)),\n ]),\n // 2. Transform: Convert String to ASCII bytes or pass Array as is\n v.transform((input) => {\n if (typeof input === 'string') {\n return input.split('').map((char) => {\n const code = char.charCodeAt(0);\n // Replace UTF8/Non-ASCII (>127) with \"?\" (ASCII 63)\n return code > 127 ? 63 : code;\n });\n }\n return input;\n }),\n);\nexport type SerialData = v.InferOutput<typeof serialData>;\nexport type SerialDataInput = v.InferInput<typeof serialData>;\n\nconst i2cTransactionBase = v.object({\n address: v.number(),\n start: v.boolean(),\n stop: v.boolean(),\n nack_last_byte: v.boolean(),\n});\nconst i2cTransactionRead = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ length: v.pipe(v.number(), v.minValue(1), v.maxValue(1024)) }),\n]);\ntype I2cTransactionRead = v.InferOutput<typeof i2cTransactionRead>;\nconst i2cTransactionWrite = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ data: serialData }),\n]);\ntype I2cTransactionWrite = v.InferOutput<typeof i2cTransactionWrite>;\n\nconst canConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([5_000, 10_000, 20_000, 31_250, 33_000, 40_000, 50_000, 80_000, 83_300,\n 95_000, 100_000, 125_000, 200_000, 250_000, 500_000, 1_000_000]),\n termination_resistors: v.boolean(),\n rx_filter: v.object({ extended_id: v.boolean(), id: v.number(), mask: v.number() }),\n});\nexport type CanConfig = v.InferOutput<typeof canConfig>;\nconst canConfigPatch = v.partial(canConfig);\nexport type CanConfigPatch = v.InferOutput<typeof canConfigPatch>;\nconst canEnableConfig = v.omit(canConfigPatch, ['enabled']);\nexport type CanEnableConfig = v.InferOutput<typeof canEnableConfig>;\n\nconst serialParity = v.picklist(['none', 'odd', 'even', 'mark', 'space']);\nexport type SerialParity = v.InferOutput<typeof serialParity>;\n\nconst serialStopBits = v.picklist(['1', '1.5', '2']);\nexport type SerialStopBits = v.InferOutput<typeof serialStopBits>;\n\nconst rs232Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(50), v.maxValue(1_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type Rs232Config = v.InferOutput<typeof rs232Config>;\nconst rs232ConfigPatch = v.partial(rs232Config);\nexport type Rs232ConfigPatch = v.InferOutput<typeof rs232ConfigPatch>;\nconst rs232EnableConfig = v.omit(rs232ConfigPatch, ['enabled']);\nexport type Rs232EnableConfig = v.InferOutput<typeof rs232EnableConfig>;\n\nconst rs485Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(20_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n termination_resistors: v.boolean(),\n});\nexport type Rs485Config = v.InferOutput<typeof rs485Config>;\nconst rs485ConfigPatch = v.partial(rs485Config);\nexport type Rs485ConfigPatch = v.InferOutput<typeof rs485ConfigPatch>;\nconst rs485EnableConfig = v.omit(rs485ConfigPatch, ['enabled']);\nexport type Rs485EnableConfig = v.InferOutput<typeof rs485EnableConfig>;\n\nconst spiConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(10_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n mode: v.pipe(v.number(), v.minValue(0), v.maxValue(3)),\n});\nexport type SpiConfig = v.InferOutput<typeof spiConfig>;\nconst spiConfigPatch = v.partial(spiConfig);\nexport type SpiConfigPatch = v.InferOutput<typeof spiConfigPatch>;\nconst spiEnableConfig = v.omit(spiConfigPatch, ['enabled']);\nexport type SpiEnableConfig = v.InferOutput<typeof spiEnableConfig>;\n\nconst i2cConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([100_000, 400_000, 1_000_000]),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n});\nexport type I2cConfig = v.InferOutput<typeof i2cConfig>;\nconst i2cConfigPatch = v.partial(i2cConfig);\nexport type I2cConfigPatch = v.InferOutput<typeof i2cConfigPatch>;\nconst i2cEnableConfig = v.omit(i2cConfigPatch, ['enabled']);\nexport type I2cEnableConfig = v.InferOutput<typeof i2cEnableConfig>;\n\nconst uartConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(12_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type UartConfig = v.InferOutput<typeof uartConfig>;\nconst uartConfigPatch = v.partial(uartConfig);\nexport type UartConfigPatch = v.InferOutput<typeof uartConfigPatch>;\nconst uartEnableConfig = v.omit(uartConfigPatch, ['enabled']);\nexport type UartEnableConfig = v.InferOutput<typeof uartEnableConfig>;\n\n/** @hideconstructor */\nexport class ComApi {\n constructor(private readonly fetch: UpFetch) {}\n\n /**\n * Resets the communication interfaces.\n */\n reset(): Promise<void> {\n return this.fetch('/com/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific CAN interface by id.\n * @param id The CAN interface id.\n * @returns The CAN instance.\n */\n can(id: number): Can {\n return new Can(this.fetch, id);\n }\n\n /**\n * Access a specific RS232 interface by id.\n * @param id The RS232 interface id.\n * @returns The RS232 instance.\n */\n rs232(id: number): Rs232 {\n return new Rs232(this.fetch, id);\n }\n\n /**\n * Access a specific RS485 interface by id.\n * @param id The RS485 interface id.\n * @returns The RS485 instance.\n */\n rs485(id: number): Rs485 {\n return new Rs485(this.fetch, id);\n }\n\n /**\n * Access a specific SPI interface by id.\n * @param id The SPI interface id.\n * @returns The SPI instance.\n */\n spi(id: number): Spi {\n return new Spi(this.fetch, id);\n }\n\n /**\n * Access a specific I2C interface by id.\n * @param id The I2C interface id.\n * @returns The I2C instance.\n */\n i2c(id: number): I2c {\n return new I2c(this.fetch, id);\n }\n\n /**\n * Access a specific UART interface by id.\n * @param id The UART interface id.\n * @returns The UART instance.\n */\n uart(id: number): Uart {\n return new Uart(this.fetch, id);\n }\n}\n\n/** @hideconstructor */\nexport class Can {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the CAN interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: CanConfigPatch): Promise<CanConfig> {\n return this.fetch(`/com/can/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(canConfigPatch, config),\n schema: canConfig,\n });\n }\n\n /**\n * Enables the CAN interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: CanEnableConfig = {}): Promise<CanConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the CAN interface.\n * @returns The updated configuration.\n */\n disable(): Promise<CanConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the CAN interface.\n * @param data The data to transmit.\n * @returns The transmitted data.\n */\n tx(data: CanFrame): Promise<CanFrame> {\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: v.parse(canFrame, data),\n schema: canFrame,\n });\n }\n\n /**\n * Starts receiving data over the CAN interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the CAN interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the CAN interface.\n * @returns An array of can frames.\n */\n rx(): Promise<CanFrame[]> {\n return this.fetch(`/com/can/${this.id}/read`, { schema: v.array(canFrame) });\n }\n}\n\n/** @hideconstructor */\nexport class Rs232 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS232 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs232ConfigPatch): Promise<Rs232Config> {\n return this.fetch(`/com/rs232/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs232ConfigPatch, config),\n schema: rs232Config,\n });\n }\n\n /**\n * Enables the RS232 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs232EnableConfig = {}): Promise<Rs232Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS232 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs232Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS232 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS232 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS232 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS232 interface.\n * @returns An array containing the received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Rs485 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS485 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs485ConfigPatch): Promise<Rs485Config> {\n return this.fetch(`/com/rs485/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs485ConfigPatch, config),\n schema: rs485Config,\n });\n }\n\n /**\n * Enables the RS485 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs485EnableConfig = {}): Promise<Rs485Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS485 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs485Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS485 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS485 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS485 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS485 interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Spi {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the SPI interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: SpiConfigPatch): Promise<SpiConfig> {\n return this.fetch(`/com/spi/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(spiConfigPatch, config),\n schema: spiConfig,\n });\n }\n\n /**\n * Enables the SPI interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: SpiEnableConfig = {}): Promise<SpiConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the SPI interface.\n * @returns The updated configuration.\n */\n disable(): Promise<SpiConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the SPI interface and receives the response.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n trx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/spi/${this.id}/write_read`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class I2c {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the I2C interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: I2cConfigPatch): Promise<I2cConfig> {\n return this.fetch(`/com/i2c/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(i2cConfigPatch, config),\n schema: i2cConfig,\n });\n }\n\n /**\n * Enables the I2C interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: I2cEnableConfig = {}): Promise<I2cConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the I2C interface.\n * @returns The updated configuration.\n */\n disable(): Promise<I2cConfig> {\n return this.configure({ enabled: false });\n }\n\n tx(transaction: I2cTransactionWrite): Promise<number> {\n return this.fetch(`/com/i2c/${this.id}/write`, {\n method: 'POST',\n body: v.parse(i2cTransactionWrite, transaction),\n parseResponse: async (response) => {\n const text = await response.text();\n return parseInt(text, 10);\n },\n });\n }\n\n rx(transaction: I2cTransactionRead): Promise<SerialData> {\n return this.fetch(`/com/i2c/${this.id}/read`, {\n method: 'POST',\n body: v.parse(i2cTransactionRead, transaction),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class Uart {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the UART interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: UartConfigPatch): Promise<UartConfig> {\n return this.fetch(`/com/uart/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(uartConfigPatch, config),\n schema: uartConfig,\n });\n }\n\n /**\n * Enables the UART interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: UartEnableConfig = {}): Promise<UartConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the UART interface.\n * @returns The updated configuration.\n */\n disable(): Promise<UartConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the UART interface.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the UART interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the UART interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the UART interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/read`, { schema: serialData });\n }\n}\n"],"mappings":"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"}
|
|
@@ -5,4 +5,4 @@ declare const analogOutputLevel: v.SchemaWithPipe<readonly [v.NumberSchema<undef
|
|
|
5
5
|
type AnalogOutputLevel = v.InferOutput<typeof analogOutputLevel>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { AnalogOutputLevel as t };
|
|
8
|
-
//# sourceMappingURL=common-
|
|
8
|
+
//# sourceMappingURL=common-Cc9ZDx5b.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-
|
|
1
|
+
{"version":3,"file":"common-Cc9ZDx5b.d.mts","names":[],"sources":["../src/api/common.ts"],"mappings":";;;cAGa,iBAAA,EAAiB,CAAA,CAAA,cAAA,WAAA,CAAA,CAAA,YAAA,aAAA,CAAA,CAAA,cAAA,wBAAA,CAAA,CAAA,cAAA;AAAA,KAIlB,iBAAA,GAAoB,CAAA,CAAE,WAAA,QAAmB,iBAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import*as e from"valibot";const t=e.pipe(e.number(),e.minValue(-25),e.maxValue(25)),n=e.pipe(e.number(),e.minValue(0),e.maxValue(24)),r=e.pipe(e.union([e.boolean(),e.number()]),e.toBoolean());export{n,r,t};
|
|
2
|
-
//# sourceMappingURL=common-
|
|
2
|
+
//# sourceMappingURL=common-DzTRbz1N.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-
|
|
1
|
+
{"version":3,"file":"common-DzTRbz1N.mjs","names":[],"sources":["../src/api/common.ts"],"sourcesContent":["import * as v from 'valibot';\n\nexport const analogLevel = v.pipe(v.number(), v.minValue(-25), v.maxValue(25));\nexport const analogOutputLevel = v.pipe(v.number(), v.minValue(0), v.maxValue(24));\nexport const digitalLevel = v.pipe(v.union([v.boolean(), v.number()]), v.toBoolean());\n\nexport type AnalogLevel = v.InferOutput<typeof analogLevel>;\nexport type AnalogOutputLevel = v.InferOutput<typeof analogOutputLevel>;\nexport type DigitalLevel = v.InferInput<typeof digitalLevel>;\n"],"mappings":"0BAEA,MAAa,EAAc,EAAE,KAAK,EAAE,QAAQ,CAAE,EAAE,SAAS,IAAI,CAAE,EAAE,SAAS,GAAG,CAAC,CACjE,EAAoB,EAAE,KAAK,EAAE,QAAQ,CAAE,EAAE,SAAS,EAAE,CAAE,EAAE,SAAS,GAAG,CAAC,CACrE,EAAe,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,SAAS,CAAE,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`valibot`);t=e.t(t);const n=t.pipe(t.number(),t.minValue(-25),t.maxValue(25)),r=t.pipe(t.number(),t.minValue(0),t.maxValue(24)),i=t.pipe(t.union([t.boolean(),t.number()]),t.toBoolean());Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return n}});
|
|
2
|
-
//# sourceMappingURL=common-
|
|
2
|
+
//# sourceMappingURL=common-PXzrB8CC.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-
|
|
1
|
+
{"version":3,"file":"common-PXzrB8CC.cjs","names":["v"],"sources":["../src/api/common.ts"],"sourcesContent":["import * as v from 'valibot';\n\nexport const analogLevel = v.pipe(v.number(), v.minValue(-25), v.maxValue(25));\nexport const analogOutputLevel = v.pipe(v.number(), v.minValue(0), v.maxValue(24));\nexport const digitalLevel = v.pipe(v.union([v.boolean(), v.number()]), v.toBoolean());\n\nexport type AnalogLevel = v.InferOutput<typeof analogLevel>;\nexport type AnalogOutputLevel = v.InferOutput<typeof analogOutputLevel>;\nexport type DigitalLevel = v.InferInput<typeof digitalLevel>;\n"],"mappings":"0EAEA,MAAa,EAAcA,EAAE,KAAKA,EAAE,QAAQ,CAAEA,EAAE,SAAS,IAAI,CAAEA,EAAE,SAAS,GAAG,CAAC,CACjE,EAAoBA,EAAE,KAAKA,EAAE,QAAQ,CAAEA,EAAE,SAAS,EAAE,CAAEA,EAAE,SAAS,GAAG,CAAC,CACrE,EAAeA,EAAE,KAAKA,EAAE,MAAM,CAACA,EAAE,SAAS,CAAEA,EAAE,QAAQ,CAAC,CAAC,CAAEA,EAAE,WAAW,CAAC"}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import { t as AnalogOutputLevel } from "./common-Cc9ZDx5b.mjs";
|
|
2
|
+
import { n as Information } from "./management-ra61-qUr.mjs";
|
|
3
|
+
import { UpFetch } from "up-fetch";
|
|
4
|
+
import * as v from "valibot";
|
|
5
|
+
|
|
6
|
+
//#region src/api/gpio.d.ts
|
|
7
|
+
declare const analogInputConfiguration: v.ObjectSchema<{
|
|
8
|
+
readonly mode: v.LiteralSchema<"analog", undefined>;
|
|
9
|
+
readonly direction: v.LiteralSchema<"input", undefined>;
|
|
10
|
+
}, undefined>;
|
|
11
|
+
declare const analogOutputConfiguration: v.ObjectSchema<{
|
|
12
|
+
readonly mode: v.LiteralSchema<"analog", undefined>;
|
|
13
|
+
readonly direction: v.LiteralSchema<"output", undefined>;
|
|
14
|
+
readonly value: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>, undefined>;
|
|
15
|
+
}, undefined>;
|
|
16
|
+
declare const digitalInputConfiguration: v.ObjectSchema<{
|
|
17
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
18
|
+
readonly direction: v.LiteralSchema<"input", undefined>;
|
|
19
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
20
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
21
|
+
}, undefined>;
|
|
22
|
+
declare const digitalOutputConfiguration: v.ObjectSchema<{
|
|
23
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
24
|
+
readonly direction: v.LiteralSchema<"output", undefined>;
|
|
25
|
+
readonly value: v.SchemaWithPipe<readonly [v.UnionSchema<[v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.ToBooleanAction<number | boolean>]>;
|
|
26
|
+
readonly vol: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
|
|
27
|
+
readonly voh: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
|
|
28
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
29
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
30
|
+
}, undefined>;
|
|
31
|
+
declare const openDrainConfiguration: v.ObjectSchema<{
|
|
32
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
33
|
+
readonly direction: v.LiteralSchema<"open_drain", undefined>;
|
|
34
|
+
readonly value: v.SchemaWithPipe<readonly [v.UnionSchema<[v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.ToBooleanAction<number | boolean>]>;
|
|
35
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
36
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
37
|
+
}, undefined>;
|
|
38
|
+
type AnalogInputConfiguration = v.InferOutput<typeof analogInputConfiguration>;
|
|
39
|
+
type AnalogOutputConfiguration = v.InferOutput<typeof analogOutputConfiguration>;
|
|
40
|
+
type DigitalInputConfiguration = v.InferOutput<typeof digitalInputConfiguration>;
|
|
41
|
+
type DigitalOutputConfiguration = v.InferOutput<typeof digitalOutputConfiguration>;
|
|
42
|
+
type OpenDrainConfiguration = v.InferOutput<typeof openDrainConfiguration>;
|
|
43
|
+
declare const partialAnalogOutputConfiguration: Omit<v.ObjectSchema<{
|
|
44
|
+
readonly mode: v.LiteralSchema<"analog", undefined>;
|
|
45
|
+
readonly direction: v.LiteralSchema<"output", undefined>;
|
|
46
|
+
readonly value: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>, undefined>;
|
|
47
|
+
}, undefined>, "~standard" | "~run" | "~types" | "entries"> & {
|
|
48
|
+
readonly entries: Omit<{
|
|
49
|
+
readonly mode: v.LiteralSchema<"analog", undefined>;
|
|
50
|
+
readonly direction: v.LiteralSchema<"output", undefined>;
|
|
51
|
+
readonly value: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>, undefined>;
|
|
52
|
+
}, "mode" | "direction">;
|
|
53
|
+
readonly "~standard": v.StandardProps<{
|
|
54
|
+
value?: number | undefined;
|
|
55
|
+
}, {
|
|
56
|
+
value?: number | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
59
|
+
value?: number | undefined;
|
|
60
|
+
}, v.NumberIssue | v.MinValueIssue<number, 0> | v.ObjectIssue | v.MaxValueIssue<number, 24>>;
|
|
61
|
+
readonly "~types"?: {
|
|
62
|
+
readonly input: {
|
|
63
|
+
value?: number | undefined;
|
|
64
|
+
};
|
|
65
|
+
readonly output: {
|
|
66
|
+
value?: number | undefined;
|
|
67
|
+
};
|
|
68
|
+
readonly issue: v.NumberIssue | v.MinValueIssue<number, 0> | v.ObjectIssue | v.MaxValueIssue<number, 24>;
|
|
69
|
+
} | undefined;
|
|
70
|
+
};
|
|
71
|
+
type PartialAnalogOutputConfiguration = v.InferOutput<typeof partialAnalogOutputConfiguration>;
|
|
72
|
+
declare const partialDigitalInputConfiguration: Omit<v.ObjectSchema<{
|
|
73
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
74
|
+
readonly direction: v.LiteralSchema<"input", undefined>;
|
|
75
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
76
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
77
|
+
}, undefined>, "~standard" | "~run" | "~types" | "entries"> & {
|
|
78
|
+
readonly entries: Omit<{
|
|
79
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
80
|
+
readonly direction: v.LiteralSchema<"input", undefined>;
|
|
81
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
82
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
83
|
+
}, "mode" | "direction">;
|
|
84
|
+
readonly "~standard": v.StandardProps<{
|
|
85
|
+
vil: number;
|
|
86
|
+
vih: number;
|
|
87
|
+
}, {
|
|
88
|
+
vil: number;
|
|
89
|
+
vih: number;
|
|
90
|
+
}>;
|
|
91
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
92
|
+
vil: number;
|
|
93
|
+
vih: number;
|
|
94
|
+
}, v.NumberIssue | v.ObjectIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25>>;
|
|
95
|
+
readonly "~types"?: {
|
|
96
|
+
readonly input: {
|
|
97
|
+
vil: number;
|
|
98
|
+
vih: number;
|
|
99
|
+
};
|
|
100
|
+
readonly output: {
|
|
101
|
+
vil: number;
|
|
102
|
+
vih: number;
|
|
103
|
+
};
|
|
104
|
+
readonly issue: v.NumberIssue | v.ObjectIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25>;
|
|
105
|
+
} | undefined;
|
|
106
|
+
};
|
|
107
|
+
type PartialDigitalInputConfiguration = v.InferOutput<typeof partialDigitalInputConfiguration>;
|
|
108
|
+
declare const partialDigitalOutputConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
109
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
110
|
+
readonly direction: v.LiteralSchema<"output", undefined>;
|
|
111
|
+
readonly value: v.SchemaWithPipe<readonly [v.UnionSchema<[v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.ToBooleanAction<number | boolean>]>;
|
|
112
|
+
readonly vol: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
|
|
113
|
+
readonly voh: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
|
|
114
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
115
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
116
|
+
}, undefined>, "~standard" | "~run" | "~types" | "entries"> & {
|
|
117
|
+
readonly entries: Omit<{
|
|
118
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
119
|
+
readonly direction: v.LiteralSchema<"output", undefined>;
|
|
120
|
+
readonly value: v.SchemaWithPipe<readonly [v.UnionSchema<[v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.ToBooleanAction<number | boolean>]>;
|
|
121
|
+
readonly vol: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
|
|
122
|
+
readonly voh: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
|
|
123
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
124
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
125
|
+
}, "mode" | "direction">;
|
|
126
|
+
readonly "~standard": v.StandardProps<{
|
|
127
|
+
value: number | boolean;
|
|
128
|
+
vil: number;
|
|
129
|
+
vih: number;
|
|
130
|
+
vol: number;
|
|
131
|
+
voh: number;
|
|
132
|
+
}, {
|
|
133
|
+
value: boolean;
|
|
134
|
+
vil: number;
|
|
135
|
+
vih: number;
|
|
136
|
+
vol: number;
|
|
137
|
+
voh: number;
|
|
138
|
+
}>;
|
|
139
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
140
|
+
value: boolean;
|
|
141
|
+
vil: number;
|
|
142
|
+
vih: number;
|
|
143
|
+
vol: number;
|
|
144
|
+
voh: number;
|
|
145
|
+
}, v.NumberIssue | v.MinValueIssue<number, 0> | v.BooleanIssue | v.ObjectIssue | v.MaxValueIssue<number, 24> | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.UnionIssue<v.NumberIssue | v.BooleanIssue>>;
|
|
146
|
+
readonly "~types"?: {
|
|
147
|
+
readonly input: {
|
|
148
|
+
value: number | boolean;
|
|
149
|
+
vil: number;
|
|
150
|
+
vih: number;
|
|
151
|
+
vol: number;
|
|
152
|
+
voh: number;
|
|
153
|
+
};
|
|
154
|
+
readonly output: {
|
|
155
|
+
value: boolean;
|
|
156
|
+
vil: number;
|
|
157
|
+
vih: number;
|
|
158
|
+
vol: number;
|
|
159
|
+
voh: number;
|
|
160
|
+
};
|
|
161
|
+
readonly issue: v.NumberIssue | v.MinValueIssue<number, 0> | v.BooleanIssue | v.ObjectIssue | v.MaxValueIssue<number, 24> | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.UnionIssue<v.NumberIssue | v.BooleanIssue>;
|
|
162
|
+
} | undefined;
|
|
163
|
+
}, "~standard" | "~run" | "~types" | "entries"> & {
|
|
164
|
+
readonly entries: {
|
|
165
|
+
readonly value: v.SchemaWithPipe<readonly [v.UnionSchema<[v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.ToBooleanAction<number | boolean>]>;
|
|
166
|
+
readonly vil: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>, undefined>;
|
|
167
|
+
readonly vih: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>, undefined>;
|
|
168
|
+
readonly vol: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
|
|
169
|
+
readonly voh: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
|
|
170
|
+
};
|
|
171
|
+
readonly "~standard": v.StandardProps<{
|
|
172
|
+
value: number | boolean;
|
|
173
|
+
vil?: number | undefined;
|
|
174
|
+
vih?: number | undefined;
|
|
175
|
+
vol: number;
|
|
176
|
+
voh: number;
|
|
177
|
+
}, {
|
|
178
|
+
value: boolean;
|
|
179
|
+
vil?: number | undefined;
|
|
180
|
+
vih?: number | undefined;
|
|
181
|
+
vol: number;
|
|
182
|
+
voh: number;
|
|
183
|
+
}>;
|
|
184
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
185
|
+
value: boolean;
|
|
186
|
+
vil?: number | undefined;
|
|
187
|
+
vih?: number | undefined;
|
|
188
|
+
vol: number;
|
|
189
|
+
voh: number;
|
|
190
|
+
}, v.NumberIssue | v.MinValueIssue<number, 0> | v.BooleanIssue | v.ObjectIssue | v.MaxValueIssue<number, 24> | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.UnionIssue<v.NumberIssue | v.BooleanIssue>>;
|
|
191
|
+
readonly "~types"?: {
|
|
192
|
+
readonly input: {
|
|
193
|
+
value: number | boolean;
|
|
194
|
+
vil?: number | undefined;
|
|
195
|
+
vih?: number | undefined;
|
|
196
|
+
vol: number;
|
|
197
|
+
voh: number;
|
|
198
|
+
};
|
|
199
|
+
readonly output: {
|
|
200
|
+
value: boolean;
|
|
201
|
+
vil?: number | undefined;
|
|
202
|
+
vih?: number | undefined;
|
|
203
|
+
vol: number;
|
|
204
|
+
voh: number;
|
|
205
|
+
};
|
|
206
|
+
readonly issue: v.NumberIssue | v.MinValueIssue<number, 0> | v.BooleanIssue | v.ObjectIssue | v.MaxValueIssue<number, 24> | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.UnionIssue<v.NumberIssue | v.BooleanIssue>;
|
|
207
|
+
} | undefined;
|
|
208
|
+
};
|
|
209
|
+
type PartialDigitalOutputConfiguration = v.InferInput<typeof partialDigitalOutputConfiguration>;
|
|
210
|
+
declare const partialOpenDrainConfiguration: Omit<v.ObjectSchema<{
|
|
211
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
212
|
+
readonly direction: v.LiteralSchema<"open_drain", undefined>;
|
|
213
|
+
readonly value: v.SchemaWithPipe<readonly [v.UnionSchema<[v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.ToBooleanAction<number | boolean>]>;
|
|
214
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
215
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
216
|
+
}, undefined>, "~standard" | "~run" | "~types" | "entries"> & {
|
|
217
|
+
readonly entries: Omit<{
|
|
218
|
+
readonly mode: v.LiteralSchema<"digital", undefined>;
|
|
219
|
+
readonly direction: v.LiteralSchema<"open_drain", undefined>;
|
|
220
|
+
readonly value: v.SchemaWithPipe<readonly [v.UnionSchema<[v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.ToBooleanAction<number | boolean>]>;
|
|
221
|
+
readonly vil: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
222
|
+
readonly vih: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
223
|
+
}, "mode" | "direction">;
|
|
224
|
+
readonly "~standard": v.StandardProps<{
|
|
225
|
+
value: number | boolean;
|
|
226
|
+
vil: number;
|
|
227
|
+
vih: number;
|
|
228
|
+
}, {
|
|
229
|
+
value: boolean;
|
|
230
|
+
vil: number;
|
|
231
|
+
vih: number;
|
|
232
|
+
}>;
|
|
233
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
234
|
+
value: boolean;
|
|
235
|
+
vil: number;
|
|
236
|
+
vih: number;
|
|
237
|
+
}, v.NumberIssue | v.BooleanIssue | v.ObjectIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.UnionIssue<v.NumberIssue | v.BooleanIssue>>;
|
|
238
|
+
readonly "~types"?: {
|
|
239
|
+
readonly input: {
|
|
240
|
+
value: number | boolean;
|
|
241
|
+
vil: number;
|
|
242
|
+
vih: number;
|
|
243
|
+
};
|
|
244
|
+
readonly output: {
|
|
245
|
+
value: boolean;
|
|
246
|
+
vil: number;
|
|
247
|
+
vih: number;
|
|
248
|
+
};
|
|
249
|
+
readonly issue: v.NumberIssue | v.BooleanIssue | v.ObjectIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.UnionIssue<v.NumberIssue | v.BooleanIssue>;
|
|
250
|
+
} | undefined;
|
|
251
|
+
};
|
|
252
|
+
type PartialOpenDrainConfiguration = v.InferOutput<typeof partialOpenDrainConfiguration>;
|
|
253
|
+
declare const syncConfiguration: v.ObjectSchema<{
|
|
254
|
+
readonly action: v.PicklistSchema<["release", "hold"], "Invalid sync action">;
|
|
255
|
+
}, undefined>;
|
|
256
|
+
type SyncConfiguration = v.InferOutput<typeof syncConfiguration>;
|
|
257
|
+
/** @hideconstructor */
|
|
258
|
+
declare class GpioApi {
|
|
259
|
+
private readonly fetch;
|
|
260
|
+
private count;
|
|
261
|
+
constructor(fetch: UpFetch, info: Information);
|
|
262
|
+
/**
|
|
263
|
+
* Resets all IO configurations to default.
|
|
264
|
+
*/
|
|
265
|
+
reset(): Promise<void>;
|
|
266
|
+
/**
|
|
267
|
+
* Access a specific digital IO pin by id.
|
|
268
|
+
* @param io The IO pin id.
|
|
269
|
+
* @returns The digital IO instance.
|
|
270
|
+
*/
|
|
271
|
+
digital(io: number): DigitalIO;
|
|
272
|
+
/**
|
|
273
|
+
* Access a specific analog IO pin by id.
|
|
274
|
+
* @param io The IO pin id.
|
|
275
|
+
* @returns The analog IO instance.
|
|
276
|
+
*/
|
|
277
|
+
analog(io: number): AnalogIO;
|
|
278
|
+
/**
|
|
279
|
+
* Holds the current state of all GPIO pins.
|
|
280
|
+
* @returns The applied sync state.
|
|
281
|
+
*/
|
|
282
|
+
hold(): Promise<SyncConfiguration>;
|
|
283
|
+
/**
|
|
284
|
+
* Releases control of the IO pins, allowing external control.
|
|
285
|
+
*
|
|
286
|
+
* This also sets the device as a slave.
|
|
287
|
+
*
|
|
288
|
+
* @returns The applied sync state.
|
|
289
|
+
*/
|
|
290
|
+
release(): Promise<SyncConfiguration>;
|
|
291
|
+
}
|
|
292
|
+
/** @hideconstructor */
|
|
293
|
+
declare class DigitalIO {
|
|
294
|
+
private readonly fetch;
|
|
295
|
+
readonly id: number;
|
|
296
|
+
constructor(fetch: UpFetch, id: number);
|
|
297
|
+
/**
|
|
298
|
+
* Configure the pin as a digital input.
|
|
299
|
+
* @param config The digital input configuration.
|
|
300
|
+
* @returns The applied configuration.
|
|
301
|
+
*/
|
|
302
|
+
configure_input(config: PartialDigitalInputConfiguration): Promise<DigitalInputConfiguration>;
|
|
303
|
+
/**
|
|
304
|
+
* Configures the pin as a digital output.
|
|
305
|
+
* @param config The digital output configuration.
|
|
306
|
+
* @returns The applied configuration.
|
|
307
|
+
*/
|
|
308
|
+
configure_output(config: PartialDigitalOutputConfiguration): Promise<DigitalOutputConfiguration>;
|
|
309
|
+
/**
|
|
310
|
+
* Reads the current state of the pin.
|
|
311
|
+
* @returns The current state of the pin.
|
|
312
|
+
*/
|
|
313
|
+
read(): Promise<boolean>;
|
|
314
|
+
/**
|
|
315
|
+
* Writes a value to the pin.
|
|
316
|
+
* @param value The value to write.
|
|
317
|
+
* @returns The written value.
|
|
318
|
+
*/
|
|
319
|
+
write(value: boolean | number): Promise<boolean>;
|
|
320
|
+
/**
|
|
321
|
+
* Configure the pin as an open drain output.
|
|
322
|
+
* @param config The open drain configuration.
|
|
323
|
+
* @returns The applied configuration.
|
|
324
|
+
*/
|
|
325
|
+
configure_open_drain(config: PartialOpenDrainConfiguration): Promise<OpenDrainConfiguration>;
|
|
326
|
+
}
|
|
327
|
+
/** @hideconstructor */
|
|
328
|
+
declare class AnalogIO {
|
|
329
|
+
private readonly fetch;
|
|
330
|
+
readonly id: number;
|
|
331
|
+
constructor(fetch: UpFetch, id: number);
|
|
332
|
+
/**
|
|
333
|
+
* Configures the pin as an analog input.
|
|
334
|
+
* @returns The applied configuration.
|
|
335
|
+
* @returns The applied configuration.
|
|
336
|
+
*/
|
|
337
|
+
configure_input(): Promise<AnalogInputConfiguration>;
|
|
338
|
+
/**
|
|
339
|
+
* Configures the pin as an analog output.
|
|
340
|
+
* @param config The analog output configuration.
|
|
341
|
+
* @returns The applied configuration.
|
|
342
|
+
*/
|
|
343
|
+
configure_output(value: AnalogOutputLevel): Promise<AnalogOutputConfiguration>;
|
|
344
|
+
/**
|
|
345
|
+
* Reads the current state of the pin.
|
|
346
|
+
* @returns The current state of the pin.
|
|
347
|
+
*/
|
|
348
|
+
read(): Promise<number>;
|
|
349
|
+
/**
|
|
350
|
+
* Writes a value to the pin.
|
|
351
|
+
* @param value The value to write.
|
|
352
|
+
* @returns The written value.
|
|
353
|
+
*/
|
|
354
|
+
write(value: number): Promise<number>;
|
|
355
|
+
}
|
|
356
|
+
//#endregion
|
|
357
|
+
export { DigitalInputConfiguration as a, OpenDrainConfiguration as c, PartialDigitalOutputConfiguration as d, PartialOpenDrainConfiguration as f, DigitalIO as i, PartialAnalogOutputConfiguration as l, AnalogInputConfiguration as n, DigitalOutputConfiguration as o, SyncConfiguration as p, AnalogOutputConfiguration as r, GpioApi as s, AnalogIO as t, PartialDigitalInputConfiguration as u };
|
|
358
|
+
//# sourceMappingURL=gpio-B2EhZKM8.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpio-B2EhZKM8.d.mts","names":[],"sources":["../src/api/gpio.ts"],"mappings":"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"}
|