@johntalton/ftdi 1.1.0 → 1.1.2

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.
Files changed (45) hide show
  1. package/README.md +88 -16
  2. package/lib/eeprom.d.ts +5 -5
  3. package/lib/eeprom.d.ts.map +1 -1
  4. package/lib/eeprom.js +2 -1
  5. package/lib/eeprom.js.map +1 -1
  6. package/lib/ftdi.d.ts +1 -1
  7. package/lib/ftdi.d.ts.map +1 -1
  8. package/lib/ftdi.js +16 -16
  9. package/lib/ftdi.js.map +1 -1
  10. package/lib/i2c/i2c-template.d.ts +19 -1
  11. package/lib/i2c/i2c-template.d.ts.map +1 -1
  12. package/lib/i2c/i2c-template.js +24 -13
  13. package/lib/i2c/i2c-template.js.map +1 -1
  14. package/lib/i2c/i2c.d.ts +2 -2
  15. package/lib/i2c/i2c.d.ts.map +1 -1
  16. package/lib/i2c/i2c.js +14 -8
  17. package/lib/i2c/i2c.js.map +1 -1
  18. package/lib/mpsse/command.d.ts.map +1 -1
  19. package/lib/mpsse/command.js +2 -2
  20. package/lib/mpsse/command.js.map +1 -1
  21. package/lib/mpsse/mpsse-template.d.ts +4 -2
  22. package/lib/mpsse/mpsse-template.d.ts.map +1 -1
  23. package/lib/mpsse/mpsse-template.js +36 -10
  24. package/lib/mpsse/mpsse-template.js.map +1 -1
  25. package/lib/mpsse/mpsse.d.ts +2 -2
  26. package/lib/mpsse/mpsse.d.ts.map +1 -1
  27. package/lib/mpsse/mpsse.js +2 -2
  28. package/lib/spi/index.d.ts +14 -0
  29. package/lib/spi/index.d.ts.map +1 -0
  30. package/lib/spi/index.js +74 -0
  31. package/lib/spi/index.js.map +1 -0
  32. package/lib/util.d.ts +4 -4
  33. package/lib/util.d.ts.map +1 -1
  34. package/lib/util.js +9 -8
  35. package/lib/util.js.map +1 -1
  36. package/package.json +14 -3
  37. package/src/eeprom.ts +10 -9
  38. package/src/ftdi.ts +16 -17
  39. package/src/i2c/i2c-template.ts +32 -13
  40. package/src/i2c/i2c.ts +15 -12
  41. package/src/mpsse/command.ts +2 -3
  42. package/src/mpsse/mpsse-template.ts +27 -10
  43. package/src/mpsse/mpsse.ts +3 -3
  44. package/src/spi/index.ts +113 -0
  45. package/src/util.ts +10 -9
package/lib/i2c/i2c.js CHANGED
@@ -25,8 +25,6 @@ export async function readData(device, length, targetBuffer) {
25
25
  (ArrayBuffer.isView(targetBuffer) ?
26
26
  new Uint8Array(targetBuffer.buffer, targetBuffer.byteOffset, length) :
27
27
  new Uint8Array(targetBuffer, 0, length));
28
- // c0 low - RX-LED-emulation
29
- // await device.mpsse.setGpioHigh(0b0000_0000, 0b0000_0001)
30
28
  for (let offset = 0; offset < length; offset += 1) {
31
29
  const ack = offset + 1 < length; // is last byte
32
30
  const readByteTransaction = I2CTemplate.readData(ack);
@@ -34,8 +32,6 @@ export async function readData(device, length, targetBuffer) {
34
32
  const byteReadResponse = await Util.pollData(device);
35
33
  buffer.set(new Uint8Array(byteReadResponse.buffer, byteReadResponse.byteOffset, 1), offset);
36
34
  }
37
- // c0 high - RX-LED-emulation
38
- // await device.mpsse.setGpioHigh(0b0000_0001, 0b0000_0001)
39
35
  return buffer;
40
36
  }
41
37
  export async function writeData(device, length, buffer) {
@@ -69,7 +65,7 @@ export class FT232HBus {
69
65
  constructor(device) {
70
66
  this.#device = device;
71
67
  }
72
- // biome-ignore lint/nursery/useThisInClassMethods: close is a noop
68
+ // biome-ignore lint/style/useThisInClassMethods: close is a noop
73
69
  close() {
74
70
  // noop
75
71
  }
@@ -87,9 +83,19 @@ export class FT232HBus {
87
83
  }
88
84
  return result;
89
85
  }
90
- // biome-ignore lint/nursery/useThisInClassMethods: no impl
91
- async sendByte(_address, _byteValue) {
92
- throw new Error('Method not implemented.');
86
+ async sendByte(address, byteValue) {
87
+ //
88
+ const startAck = await sendAndReadACK(this.#device, I2CTemplate.startWithAddress(address, true));
89
+ if (!startAck) {
90
+ throw new Error('start with address nack');
91
+ }
92
+ //
93
+ const writeAck = await sendAndReadACK(this.#device, I2CTemplate.writeByte(byteValue));
94
+ if (!writeAck) {
95
+ throw new Error('write data nack');
96
+ }
97
+ //
98
+ await this.#device.sendData(I2CTemplate.stop());
93
99
  }
94
100
  async readI2cBlock(address, cmd, length, targetBuffer) {
95
101
  //
@@ -1 +1 @@
1
- {"version":3,"file":"i2c.js","sourceRoot":"","sources":["../../src/i2c/i2c.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i2c.js","sourceRoot":"","sources":["../../src/i2c/i2c.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/mpsse/command.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,MAAO,CAAA;AAC/B,eAAO,MAAM,oBAAoB,MAAO,CAAA;AAGxC,eAAO,MAAM,yBAAyB;IACrC,mBAAmB;IACnB,QAAQ;IACR,kBAAkB;IAClB,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;CACT,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,eAAO,MAAM,aAAa;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;IAExB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IAEvB,4CAA4C;IAC5C,4CAA4C;IAC5C,2CAA2C;IAC3C,2CAA2C;IAG3C,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;IAExB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IAEvB,4CAA4C;IAC5C,4CAA4C;IAC5C,2CAA2C;IAC3C,2CAA2C;CAE3C,CAAA;AAYD,eAAO,MAAM,kBAAkB;IAC9B,sBAAsB;IACtB,uBAAuB;IAEvB,uBAAuB;IACvB,wBAAwB;CACxB,CAAA;AAED,eAAO,MAAM,iBAAiB;IAC7B,OAAO;IACP,OAAO;CACP,CAAA;AAED,eAAO,MAAM,sBAAsB;IAClC,eAAe;CACf,CAAA;AAED,eAAO,MAAM,4BAA4B;IACxC,cAAc;CAGd,CAAA;AASD,eAAO,MAAM,UAAU;IACtB,4BAA4B;IAC5B,2BAA2B;IAE3B,2BAA2B;IAC3B,4BAA4B;IAQ5B,wBAAwB;IACxB,yBAAyB;CAIzB,CAAA;AAED,eAAO,MAAM,oBAAoB;IAChC,qBAAqB;CACrB,CAAA"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/mpsse/command.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,MAAO,CAAA;AAC/B,eAAO,MAAM,oBAAoB,MAAO,CAAA;AAGxC,eAAO,MAAM,yBAAyB;IACrC,mBAAmB;IACnB,QAAQ;IACR,kBAAkB;IAClB,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;CACT,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,eAAO,MAAM,aAAa;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;IAExB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IAEvB,4CAA4C;IAC5C,4CAA4C;IAC5C,2CAA2C;IAC3C,2CAA2C;IAG3C,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;IAExB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IAEvB,4CAA4C;IAC5C,4CAA4C;IAC5C,2CAA2C;IAC3C,2CAA2C;CAC1C,CAAA;AAYF,eAAO,MAAM,kBAAkB;IAC9B,sBAAsB;IACtB,uBAAuB;IAEvB,uBAAuB;IACvB,wBAAwB;CACxB,CAAA;AAED,eAAO,MAAM,iBAAiB;IAC7B,OAAO;IACP,OAAO;CACP,CAAA;AAED,eAAO,MAAM,sBAAsB;IAClC,eAAe;CACf,CAAA;AAED,eAAO,MAAM,4BAA4B;IACxC,cAAc;CAGd,CAAA;AASD,eAAO,MAAM,UAAU;IACtB,4BAA4B;IAC5B,2BAA2B;IAE3B,2BAA2B;IAC3B,4BAA4B;IAQ5B,wBAAwB;IACxB,yBAAyB;CAIzB,CAAA;AAED,eAAO,MAAM,oBAAoB;IAChC,qBAAqB;CACrB,CAAA"}
@@ -10,7 +10,7 @@ export const SHIFT_COMMANDS_DEFINITION = {
10
10
  READ_TDO: 0b0010_0000, // Do read TDO
11
11
  WRITE_TMS: 0b0100_0000 // Do writeTMS
12
12
  };
13
- export const SHIFT_COMMAND = {
13
+ export const SHIFT_COMMAND = /** @type {const} */ ({
14
14
  OUT_MSB_BYTES_POSITIVE_VE: 0x10, // WRITE_TDI
15
15
  OUT_MSB_BYTES_NEGATIVE_VE: 0x11, // WRITE_TDI | WRITE_NEGATIVE_EDGE
16
16
  OUT_MSB_BITS_POSITIVE_VE: 0x12, // WRITE_TDI | BIT_MODE
@@ -36,7 +36,7 @@ export const SHIFT_COMMAND = {
36
36
  IN_OUT_LSB_BYTES_OUT_POSITIVE_IN_NEGATIVE_VE: 0x3C,
37
37
  IN_OUT_LSB_BITS_OUT_NEGATIVE_IN_POSITIVE_VE: 0x3B,
38
38
  IN_OUT_LSB_BITS_OUT_POSITIVE_IN_NEGATIVE_VE: 0x3E,
39
- };
39
+ });
40
40
  // export const LSB_FIRST_TMS_COMMANDS = {
41
41
  // CLOCK_DATA_NO_READ_POSITIVE_VE: 0x4A,
42
42
  // CLOCK_DATA_NO_READ_NEGATIVE_VE: 0x4B,
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/mpsse/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/mpsse/command.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
- /** biome-ignore-all lint/style/useConsistentArrayType: <explanation> */
1
+ /** biome-ignore-all lint/style/useConsistentArrayType: miss-classified */
2
+ /** biome-ignore-all lint/nursery/noMisleadingReturnType: false-positive */
2
3
  import { type ShiftCommand } from './command.ts';
3
4
  export declare class MPSSETemplate {
4
5
  static shiftOutByte(command: ShiftCommand, length: number, data: number): Array<number>;
6
+ static shiftOutBytes(command: ShiftCommand, length: number, data: Array<number>): Array<number>;
5
7
  static shiftInByte(command: ShiftCommand, length: number): Array<number>;
6
8
  static shiftOutBits(command: ShiftCommand, length: number, data: number): Array<number>;
7
9
  static shiftInBits(command: ShiftCommand, length: number): Array<number>;
@@ -9,7 +11,7 @@ export declare class MPSSETemplate {
9
11
  static gpioSetLow(pins: number, directions: number): Array<number>;
10
12
  static gpioGetHigh(): Array<number>;
11
13
  static gpioGetLow(): Array<number>;
12
- static setClockDivisor(divider: number): Array<number>;
14
+ static setClockDivisor(divisor: number): Array<number>;
13
15
  static enableLoopback(enable?: boolean): Array<number>;
14
16
  static enableClockDivideBy5(enable?: boolean): Array<number>;
15
17
  static enableThreePhaseClocking(enable?: boolean): Array<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"mpsse-template.d.ts","sourceRoot":"","sources":["../../src/mpsse/mpsse-template.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,EAMN,KAAK,YAAY,EACjB,MAAM,cAAc,CAAA;AAGrB,qBAAa,aAAa;IACzB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAItF;IAED,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAIvE;IAED,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAEtF;IAED,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAEvE;IAED,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMlE;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMjE;IAED,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,CAElC;IAED,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAEjC;IAED,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CASrD;IAED,MAAM,CAAC,cAAc,CAAC,MAAM,UAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAGlD;IAED,MAAM,CAAC,oBAAoB,CAAC,MAAM,UAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAGxD;IAED,MAAM,CAAC,wBAAwB,CAAC,MAAM,UAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAG5D;IAED,MAAM,CAAC,sBAAsB,CAAC,MAAM,UAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAG1D;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMxE;CACD"}
1
+ {"version":3,"file":"mpsse-template.d.ts","sourceRoot":"","sources":["../../src/mpsse/mpsse-template.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,OAAO,EAMN,KAAK,YAAY,EACjB,MAAM,cAAc,CAAA;AAGrB,qBAAa,aAAa;IACzB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMtF;IAED,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAM9F;IAED,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMvE;IAED,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAItF;IAED,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAIvE;IAED,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMlE;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMjE;IAED,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,CAElC;IAED,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAEjC;IAED,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CASrD;IAED,MAAM,CAAC,cAAc,CAAC,MAAM,UAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAGlD;IAED,MAAM,CAAC,oBAAoB,CAAC,MAAM,UAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAGxD;IAED,MAAM,CAAC,wBAAwB,CAAC,MAAM,UAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAG5D;IAED,MAAM,CAAC,sBAAsB,CAAC,MAAM,UAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAG1D;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMxE;CACD"}
@@ -1,21 +1,47 @@
1
- /** biome-ignore-all lint/style/useConsistentArrayType: <explanation> */
1
+ /** biome-ignore-all lint/style/useConsistentArrayType: miss-classified */
2
+ /** biome-ignore-all lint/nursery/noMisleadingReturnType: false-positive */
2
3
  import { CLOCK_DIVISOR_COMMANDS, FT232H_ONLY_COMMANDS, H_COMMANDS, LOOPBACK_COMMANDS, PIN_STATE_COMMANDS } from './command.js';
3
4
  export class MPSSETemplate {
4
5
  static shiftOutByte(command, length, data) {
5
- const lengthL = (length - 1) & 0x0F;
6
- const lengthH = ((length - 1) & 0xF0) >> 8;
6
+ if (length <= 0) {
7
+ throw new RangeError('can not read zero length');
8
+ }
9
+ const lengthMinusOne = length - 1;
10
+ const lengthL = lengthMinusOne & 0xFF;
11
+ const lengthH = (lengthMinusOne >> 8) & 0xFF;
7
12
  return [command, lengthL, lengthH, data];
8
13
  }
14
+ static shiftOutBytes(command, length, data) {
15
+ if (length <= 0) {
16
+ throw new RangeError('can not read zero length');
17
+ }
18
+ const lengthMinusOne = length - 1;
19
+ const lengthL = lengthMinusOne & 0xFF;
20
+ const lengthH = (lengthMinusOne >> 8) & 0xFF;
21
+ return [command, lengthL, lengthH, ...data];
22
+ }
9
23
  static shiftInByte(command, length) {
10
- const lengthL = (length - 1) & 0x0F;
11
- const lengthH = ((length - 1) & 0xF0) >> 8;
24
+ if (length <= 0) {
25
+ throw new RangeError('can not read zero length');
26
+ }
27
+ const lengthMinusOne = length - 1;
28
+ const lengthL = lengthMinusOne & 0xFF;
29
+ const lengthH = (lengthMinusOne >> 8) & 0xFF;
12
30
  return [command, lengthL, lengthH];
13
31
  }
14
32
  static shiftOutBits(command, length, data) {
15
- return [command, length - 1, data];
33
+ if (length <= 0) {
34
+ throw new RangeError('can not read zero length');
35
+ }
36
+ const lengthMinusOne = length - 1;
37
+ return [command, lengthMinusOne, data];
16
38
  }
17
39
  static shiftInBits(command, length) {
18
- return [command, length - 1];
40
+ if (length <= 0) {
41
+ throw new RangeError('can not read zero length');
42
+ }
43
+ const lengthMinusOne = length - 1;
44
+ return [command, lengthMinusOne];
19
45
  }
20
46
  static gpioSetHigh(pins, directions) {
21
47
  return [
@@ -37,9 +63,9 @@ export class MPSSETemplate {
37
63
  static gpioGetLow() {
38
64
  return [PIN_STATE_COMMANDS.READ_DATA_BITS_LOW_BYTE];
39
65
  }
40
- static setClockDivisor(divider) {
41
- const divisorL = divider & 0xFF;
42
- const divisorH = (divider >> 8) & 0xFF;
66
+ static setClockDivisor(divisor) {
67
+ const divisorL = divisor & 0xFF;
68
+ const divisorH = (divisor >> 8) & 0xFF;
43
69
  return [
44
70
  CLOCK_DIVISOR_COMMANDS.SET_CLK_DIVISOR,
45
71
  divisorL,
@@ -1 +1 @@
1
- {"version":3,"file":"mpsse-template.js","sourceRoot":"","sources":["../../src/mpsse/mpsse-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mpsse-template.js","sourceRoot":"","sources":["../../src/mpsse/mpsse-template.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** biome-ignore-all lint/style/useConsistentArrayType: <explanation> */
1
+ /** biome-ignore-all lint/style/useConsistentArrayType: miss-classified */
2
2
  import type { FTDIDevice } from '../ftdi.ts';
3
3
  export declare class MPSSE {
4
4
  #private;
@@ -9,7 +9,7 @@ export declare class MPSSE {
9
9
  setGpioLow(pins: number, directions: number): Promise<void>;
10
10
  getGpioHigh(): Promise<void>;
11
11
  getGpioLow(): Promise<void>;
12
- setClockDivisor(divider: number): Promise<void>;
12
+ setClockDivisor(divisor: number): Promise<void>;
13
13
  enableClockDivideBy5(enable?: boolean): Promise<void>;
14
14
  enableThreePhaseClocking(enable?: boolean): Promise<void>;
15
15
  enableAdaptiveClocking(enable?: boolean): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"mpsse.d.ts","sourceRoot":"","sources":["../../src/mpsse/mpsse.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C,qBAAa,KAAK;;IAGjB,YAAY,MAAM,EAAE,UAAU,EAE7B;IAEK,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,GAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInE;IAEK,aAAa,CAAC,OAAO,SAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAS3D;IAEK,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;IAEK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjC;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhC;IAGK,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpD;IAOK,oBAAoB,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvD;IAEK,wBAAwB,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3D;IAQK,sBAAsB,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzD;IAQK,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;CACD"}
1
+ {"version":3,"file":"mpsse.d.ts","sourceRoot":"","sources":["../../src/mpsse/mpsse.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C,qBAAa,KAAK;;IAGjB,YAAY,MAAM,EAAE,UAAU,EAE7B;IAEK,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,GAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInE;IAEK,aAAa,CAAC,OAAO,SAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAS3D;IAEK,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;IAEK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjC;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhC;IAGK,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpD;IAOK,oBAAoB,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvD;IAEK,wBAAwB,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3D;IAQK,sBAAsB,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzD;IAQK,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;CACD"}
@@ -42,8 +42,8 @@ export class MPSSE {
42
42
  const command = MPSSETemplate.gpioGetLow();
43
43
  return this.executeCommands(command);
44
44
  }
45
- async setClockDivisor(divider) {
46
- const command = MPSSETemplate.setClockDivisor(divider);
45
+ async setClockDivisor(divisor) {
46
+ const command = MPSSETemplate.setClockDivisor(divisor);
47
47
  return this.executeCommands(command);
48
48
  }
49
49
  // async waitIOHigh(): Promise<void> {s
@@ -0,0 +1,14 @@
1
+ /** biome-ignore-all lint/style/noNestedTernary: we like them */
2
+ import type { SPIBus, SPIOptions, TransferRequest, TransferResult } from '@johntalton/and-other-delights';
3
+ import type { FTDIDevice } from '../ftdi.ts';
4
+ export declare const delayMs: (ms: number) => Promise<void>;
5
+ export interface FT232HSPIOptions extends SPIOptions {
6
+ chipSelect1?: [boolean];
7
+ ledRxTx?: [boolean];
8
+ }
9
+ export declare class FTDISPIBus implements SPIBus {
10
+ #private;
11
+ constructor(device: FTDIDevice, options?: Partial<FT232HSPIOptions>);
12
+ transfer(request: TransferRequest, options?: Partial<FT232HSPIOptions>): Promise<TransferResult>;
13
+ }
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spi/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,KAAK,EACX,MAAM,EACN,UAAU,EACV,eAAe,EACf,cAAc,EACd,MAAM,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAuB5C,eAAO,MAAM,OAAO,OAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAoD,CAAA;AAErG,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IACnD,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IACvB,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;CACnB;AAED,qBAAa,UAAW,YAAW,MAAM;;IAIxC,YAAY,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAGlE;IAEK,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CA+DrG;CAED"}
@@ -0,0 +1,74 @@
1
+ import { DEFAULT_SPI_MODE, MODE_0 } from '@johntalton/and-other-delights';
2
+ import { CLOCK_BASE_60, CLOCK_DEFAULT_STANDARD_MODE_100_kHz, Clock } from '../mpsse/clock.js';
3
+ import { H_COMMANDS, HOST_AND_MPSSE_MODE_COMMANDS, SHIFT_COMMAND } from '../mpsse/command.js';
4
+ import { MPSSETemplate } from '../mpsse/mpsse-template.js';
5
+ import { Util } from '../util.js';
6
+ // const CLOCK_PIN_MASK = 0b0000_0001
7
+ // const MOSI_PIN_MASK = 0b0000_0010 // host out
8
+ // const MISO_PIN_MASK = 0b0000_0100 // host in
9
+ const CS0_PIN_MASK = 0b0000_1000;
10
+ // const CS1_PIN_MASK = 0b0001_0000
11
+ // const LED_TX_PIN_MASK = 0b0010_0000
12
+ // const LED_RX_PIN_MASK = 0b0100_0000
13
+ // const CLOCK_MONITOR_PIN_MASK = 0b1000_0000
14
+ const SPI_PIN_DIRECTION = 0b0000_1011;
15
+ export const delayMs = (ms) => new Promise(resolve => setTimeout(resolve, ms));
16
+ export class FTDISPIBus {
17
+ #device;
18
+ #options;
19
+ constructor(device, options) {
20
+ this.#device = device;
21
+ this.#options = options ?? {};
22
+ }
23
+ async transfer(request, options) {
24
+ const { mode, speedHz } = {
25
+ mode: DEFAULT_SPI_MODE,
26
+ speedHz: CLOCK_DEFAULT_STANDARD_MODE_100_kHz,
27
+ ...this.#options,
28
+ ...(options ?? {})
29
+ };
30
+ const { sendBuffer, receiveBufferLength } = request;
31
+ if (mode !== MODE_0) {
32
+ throw new Error('currently mode 0 only');
33
+ }
34
+ const writeLength = sendBuffer?.byteLength ?? 0;
35
+ const sendBufferU8 = (sendBuffer === undefined) ?
36
+ [] :
37
+ ArrayBuffer.isView(sendBuffer) ?
38
+ new Uint8Array(sendBuffer.buffer, sendBuffer.byteOffset, sendBuffer.byteLength) :
39
+ new Uint8Array(sendBuffer);
40
+ // calc clock divider for non-div-5
41
+ const divisor = Clock.clockDivisor(speedHz, CLOCK_BASE_60);
42
+ const totalBytesWritten = await this.#device.sendData(Uint8Array.from([
43
+ // preamble to set state
44
+ H_COMMANDS.DISABLE_CLOCK_DIVIDE_BY_FIVE,
45
+ ...MPSSETemplate.setClockDivisor(divisor),
46
+ H_COMMANDS.DISABLE_THREE_PHASE_CLOCKING,
47
+ H_COMMANDS.DISABLE_ADAPTIVE_CLOCKING,
48
+ // prep pins
49
+ ...MPSSETemplate.gpioSetLow(CS0_PIN_MASK, SPI_PIN_DIRECTION), // CS High / Clock Low
50
+ ...MPSSETemplate.gpioSetLow(0, SPI_PIN_DIRECTION), // CS Low / Clock Low
51
+ // transfer data
52
+ ...MPSSETemplate.shiftOutBytes(SHIFT_COMMAND.OUT_MSB_BYTES_NEGATIVE_VE, writeLength, [...sendBufferU8]),
53
+ ...((receiveBufferLength === 0) ? [] : MPSSETemplate.shiftInByte(SHIFT_COMMAND.IN_MSB_BYTES_POSITIVE_VE, receiveBufferLength)),
54
+ // return pins to idle state
55
+ ...MPSSETemplate.gpioSetLow(CS0_PIN_MASK, SPI_PIN_DIRECTION), // CS high / Clock Low
56
+ HOST_AND_MPSSE_MODE_COMMANDS.SEND_IMMEDIATE // do it now
57
+ ]));
58
+ if (totalBytesWritten === 0) {
59
+ throw new Error('no bytes written');
60
+ }
61
+ if (receiveBufferLength === 0) {
62
+ return {
63
+ bytesWritten: writeLength
64
+ };
65
+ }
66
+ // consume buffer
67
+ const result = await Util.pollData(this.#device, receiveBufferLength);
68
+ return {
69
+ bytesWritten: writeLength,
70
+ readBuffer: result
71
+ };
72
+ }
73
+ }
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spi/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AAEzE,OAAO,EACN,aAAa,EACb,mCAAmC,EACnC,KAAK,EACL,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAGjC,qCAAqC;AACrC,iDAAiD;AACjD,gDAAgD;AAChD,MAAM,YAAY,GAAK,WAAW,CAAA;AAElC,sCAAsC;AACtC,sCAAsC;AACtC,sCAAsC;AACtC,+CAA+C;AAE/C,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAErC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAOrG,MAAM,OAAO,UAAU;IACb,OAAO,CAAY;IACnB,QAAQ,CAA2B;IAE5C,YAAY,MAAkB,EAAE,OAAmC;QAClE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB,EAAE,OAAmC;QAC3E,MAAM,EACL,IAAI,EAAE,OAAO,EACb,GAAG;YACH,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,mCAAmC;YAC5C,GAAG,IAAI,CAAC,QAAQ;YAChB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;SAClB,CAAA;QAED,MAAM,EACL,UAAU,EACV,mBAAmB,EACnB,GAAG,OAAO,CAAA;QAEX,IAAG,IAAI,KAAK,MAAM,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,UAAU,EAAE,UAAU,IAAI,CAAC,CAAA;QAC/C,MAAM,YAAY,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC;YAChD,EAAE,CAAC,CAAC;YACJ,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC/B,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;gBACjF,IAAI,UAAU,CAAC,UAAU,CAAC,CAAA;QAE5B,mCAAmC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAE1D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;YACrE,wBAAwB;YACxB,UAAU,CAAC,4BAA4B;YACvC,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC;YACzC,UAAU,CAAC,4BAA4B;YACvC,UAAU,CAAC,yBAAyB;YAEpC,YAAY;YACZ,GAAG,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE,sBAAsB;YACpF,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,qBAAqB;YAExE,gBAAgB;YAChB,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,yBAAyB,EAAE,WAAW,EAAE,CAAE,GAAG,YAAY,CAAE,CAAC;YACzG,GAAG,CAAC,CAAC,mBAAmB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;YAE9H,4BAA4B;YAC5B,GAAG,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE,sBAAsB;YAEpF,4BAA4B,CAAC,cAAc,CAAC,YAAY;SACxD,CAAC,CAAC,CAAA;QAEH,IAAG,iBAAiB,KAAK,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAAC,CAAC;QAEnE,IAAG,mBAAmB,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACN,YAAY,EAAE,WAAW;aACzB,CAAA;QACF,CAAC;QAED,iBAAiB;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;QAErE,OAAO;YACN,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,MAAM;SAClB,CAAA;IACF,CAAC;CAED"}
package/lib/util.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- /** biome-ignore-all lint/performance/noAwaitInLoops: <explanation> */
2
- /** biome-ignore-all lint/style/useConsistentArrayType: <explanation> */
3
- import type { FTDIDevice } from "./ftdi.ts";
1
+ /** biome-ignore-all lint/performance/noAwaitInLoops: simplifies code */
2
+ /** biome-ignore-all lint/style/useConsistentArrayType: miss-classified */
3
+ import type { FTDIDevice } from './ftdi.ts';
4
4
  export interface ChipInfo {
5
5
  major: number;
6
6
  minor: number;
@@ -21,6 +21,6 @@ export declare const DEFAULT_DATA_READ_SIZE = 64;
21
21
  export declare const DEFAULT_MAX_POLL_ATTEMPTS = 5;
22
22
  export declare class Util {
23
23
  static chip(major: number, minor: number): ChipInfo | undefined;
24
- static pollData(device: FTDIDevice, attempts?: number): Promise<Uint8Array<ArrayBuffer>>;
24
+ static pollData(device: FTDIDevice, length?: number, attempts?: number): Promise<Uint8Array<ArrayBuffer>>;
25
25
  }
26
26
  //# sourceMappingURL=util.d.ts.map
package/lib/util.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,wEAAwE;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAG3C,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IAEZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,QAAQ,CAsBrC,CAAA;AAGD,eAAO,MAAM,sBAAsB,KAAK,CAAA;AACxC,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C,qBAAa,IAAI;IAChB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAI9D;IAED,OAAa,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,SAA4B,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAWhH;CACD"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,0EAA0E;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAG3C,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IAEZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AACjC,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,QAAQ,CAsBrC,CAAA;AAGD,eAAO,MAAM,sBAAsB,KAAK,CAAA;AACxC,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C,qBAAa,IAAI;IAChB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAI9D;IAED,OAAa,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,SAAyB,EAAE,QAAQ,SAA4B,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAYjJ;CACD"}
package/lib/util.js CHANGED
@@ -1,4 +1,4 @@
1
- import { STATUS_PREFIX_LENGTH } from "./status.js";
1
+ import { STATUS_PREFIX_LENGTH } from './status.js';
2
2
  export const USB_MAJOR_TYPE_BM = 4;
3
3
  export const USB_MAJOR_TYPE_2232C = 5;
4
4
  export const USB_MAJOR_TYPE_R = 6;
@@ -38,18 +38,19 @@ export class Util {
38
38
  }
39
39
  return info;
40
40
  }
41
- static async pollData(device, attempts = DEFAULT_MAX_POLL_ATTEMPTS) {
41
+ static async pollData(device, length = DEFAULT_DATA_READ_SIZE, attempts = DEFAULT_MAX_POLL_ATTEMPTS) {
42
+ // console.log('pollData', length)
42
43
  for (let i = 0; i < attempts; i += 1) {
43
- const response = await device.readData(DEFAULT_DATA_READ_SIZE);
44
- if (response.byteLength === STATUS_PREFIX_LENGTH) {
45
- continue;
46
- }
44
+ const response = await device.readData(STATUS_PREFIX_LENGTH + length);
47
45
  if (response === undefined) {
48
46
  throw new Error('no response');
49
47
  }
48
+ if (response.byteLength === STATUS_PREFIX_LENGTH) {
49
+ continue;
50
+ }
50
51
  // const status = DeviceStatus.parse(response)
51
- // console.log('attempts', i)
52
- return new Uint8Array(response.buffer, STATUS_PREFIX_LENGTH);
52
+ // console.log('attempts', i, status)
53
+ return new Uint8Array(response.buffer, response.byteOffset + STATUS_PREFIX_LENGTH);
53
54
  }
54
55
  throw new Error('no valid data acquired');
55
56
  }
package/lib/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,22 @@
1
1
  {
2
2
  "name": "@johntalton/ftdi",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
+ "keywords": [
7
+ "FTDI",
8
+ "I²C",
9
+ "FT232H",
10
+ "EEPROM",
11
+ "GPIO",
12
+ "MPSSE",
13
+ "WebUSB",
14
+ "USB"
15
+ ],
6
16
  "exports": {
7
17
  ".": "./lib/index.js",
8
18
  "./i2c": "./lib/i2c/index.js",
19
+ "./spi": "./lib/spi/index.js",
9
20
  "./mpsse": "./lib/mpsse/index.js",
10
21
  "./eeprom": "./lib/eeprom.js"
11
22
  },
@@ -27,12 +38,12 @@
27
38
  "coverage": "c8 --src src --check-coverage --statements 95 --branches 95 --functions 95 --lines 95 -r lcovonly -r text node --test test/**/*.test.js"
28
39
  },
29
40
  "devDependencies": {
30
- "@biomejs/biome": "^2.5.0",
41
+ "@biomejs/biome": "^2.6.2",
31
42
  "@types/w3c-web-usb": "^1.0.14",
32
43
  "c8": "^12.0.0",
33
44
  "typescript": "^7.0.2"
34
45
  },
35
46
  "dependencies": {
36
- "@johntalton/and-other-delights": "^8.6.6"
47
+ "@johntalton/and-other-delights": "^8.6.7"
37
48
  }
38
49
  }
package/src/eeprom.ts CHANGED
@@ -1,8 +1,8 @@
1
- /** biome-ignore-all lint/performance/noAwaitInLoops: <explanation> */
2
- /** biome-ignore-all lint/nursery/noMisleadingReturnType: <explanation> */
3
- /** biome-ignore-all lint/style/useConsistentArrayType: <explanation> */
4
- /** biome-ignore-all lint/style/noExcessiveLinesPerFile: <explanation> */
5
- /** biome-ignore-all lint/style/useDestructuring: <explanation> */
1
+ /** biome-ignore-all lint/performance/noAwaitInLoops: simplifies code */
2
+ /** biome-ignore-all lint/nursery/noMisleadingReturnType: false positive */
3
+ /** biome-ignore-all lint/style/useConsistentArrayType: miss-classified */
4
+ /** biome-ignore-all lint/style/noExcessiveLinesPerFile: parser for all chips */
5
+ /** biome-ignore-all lint/style/useDestructuring: explicity word index for array */
6
6
  import type { FTDIDevice } from './ftdi.ts'
7
7
  import {
8
8
  type ChipInfo,
@@ -74,7 +74,7 @@ export const CBUS_FUNC_NAME_R: Record<number, string> = {
74
74
  9: 'CLK6',
75
75
  10: 'IOMODE',
76
76
  11: 'BB_WR',
77
- 12: 'BB_RD"'
77
+ 12: 'BB_RD'
78
78
  }
79
79
 
80
80
  export const GROUP_DRIVE_MASK = 0b0000_0011
@@ -126,7 +126,7 @@ export interface EEPROMInfo {
126
126
  selfPowered: boolean
127
127
  remoteWake: boolean
128
128
  maxPower: number
129
- },
129
+ }
130
130
 
131
131
  chipConfig: {
132
132
  isInIsochronous: boolean
@@ -134,7 +134,7 @@ export interface EEPROMInfo {
134
134
  suspendPullDowns: boolean
135
135
  useSerial: boolean
136
136
  useUSBVersion: boolean
137
- },
137
+ }
138
138
 
139
139
  manufacture: string|undefined
140
140
  product: string|undefined
@@ -181,7 +181,7 @@ export interface EEPROMInfo232H {
181
181
  flowcontrol: boolean
182
182
  powersave: boolean
183
183
 
184
- group: [ GroupItem, GroupItem ],
184
+ group: [ GroupItem, GroupItem ]
185
185
 
186
186
  cbusFunction: Array<string|undefined>
187
187
 
@@ -543,6 +543,7 @@ export class FTDIEEPROM {
543
543
  return undefined
544
544
  }
545
545
 
546
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: does heavy lifting
546
547
  static parseEEPROM(buffer: ArrayBufferView<ArrayBuffer|ArrayBuffer>, chipInfo: ChipInfo): EEPROMInfo|undefined {
547
548
  const u16 = ArrayBuffer.isView(buffer) ?
548
549
  new Uint16Array(buffer.buffer, buffer.byteOffset) :