@opendisplay/opendisplay 1.1.1 → 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.
package/dist/index.d.cts CHANGED
@@ -664,6 +664,7 @@ declare class OpenDisplayDevice {
664
664
  compress?: boolean;
665
665
  onProgress?: (current: number, total: number, stage: string) => void;
666
666
  onStatusChange?: (message: string) => void;
667
+ onUploadComplete?: (uploadTimeSeconds: number) => void;
667
668
  }): Promise<void>;
668
669
  /**
669
670
  * Execute image upload using compressed or uncompressed protocol.
package/dist/index.d.ts CHANGED
@@ -664,6 +664,7 @@ declare class OpenDisplayDevice {
664
664
  compress?: boolean;
665
665
  onProgress?: (current: number, total: number, stage: string) => void;
666
666
  onStatusChange?: (message: string) => void;
667
+ onUploadComplete?: (uploadTimeSeconds: number) => void;
667
668
  }): Promise<void>;
668
669
  /**
669
670
  * Execute image upload using compressed or uncompressed protocol.
package/dist/index.js CHANGED
@@ -250,6 +250,8 @@ var CommandCode = /* @__PURE__ */ ((CommandCode3) => {
250
250
  CommandCode3[CommandCode3["DIRECT_WRITE_START"] = 112] = "DIRECT_WRITE_START";
251
251
  CommandCode3[CommandCode3["DIRECT_WRITE_DATA"] = 113] = "DIRECT_WRITE_DATA";
252
252
  CommandCode3[CommandCode3["DIRECT_WRITE_END"] = 114] = "DIRECT_WRITE_END";
253
+ CommandCode3[CommandCode3["REFRESH_COMPLETE"] = 115] = "REFRESH_COMPLETE";
254
+ CommandCode3[CommandCode3["REFRESH_TIMEOUT"] = 116] = "REFRESH_TIMEOUT";
253
255
  return CommandCode3;
254
256
  })(CommandCode || {});
255
257
 
@@ -1685,6 +1687,7 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1685
1687
  const compress = options.compress ?? true;
1686
1688
  const onProgress = options.onProgress;
1687
1689
  const onStatusChange = options.onStatusChange;
1690
+ const onUploadComplete = options.onUploadComplete;
1688
1691
  console.log(
1689
1692
  `Uploading image (${this.width}x${this.height}, ${ColorScheme4[this.colorScheme]})`
1690
1693
  );
@@ -1710,7 +1713,8 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1710
1713
  compressedData,
1711
1714
  uncompressedSize: encodedData.length,
1712
1715
  onProgress,
1713
- onStatusChange
1716
+ onStatusChange,
1717
+ onUploadComplete
1714
1718
  });
1715
1719
  } else {
1716
1720
  console.log(
@@ -1721,7 +1725,8 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1721
1725
  imageData: encodedData,
1722
1726
  refreshMode,
1723
1727
  onProgress,
1724
- onStatusChange
1728
+ onStatusChange,
1729
+ onUploadComplete
1725
1730
  });
1726
1731
  }
1727
1732
  } else {
@@ -1731,7 +1736,8 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1731
1736
  imageData: encodedData,
1732
1737
  refreshMode,
1733
1738
  onProgress,
1734
- onStatusChange
1739
+ onStatusChange,
1740
+ onUploadComplete
1735
1741
  });
1736
1742
  }
1737
1743
  console.log("Image upload complete");
@@ -1748,9 +1754,11 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1748
1754
  compressedData,
1749
1755
  uncompressedSize,
1750
1756
  onProgress,
1751
- onStatusChange
1757
+ onStatusChange,
1758
+ onUploadComplete
1752
1759
  } = params;
1753
1760
  this.connection.clearQueue();
1761
+ const uploadStartTime = Date.now();
1754
1762
  let startCmd;
1755
1763
  let remainingCompressed = null;
1756
1764
  if (useCompression && compressedData && uncompressedSize) {
@@ -1773,13 +1781,38 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1773
1781
  autoCompleted = await this.sendDataChunks(imageData, onProgress, onStatusChange);
1774
1782
  }
1775
1783
  if (!autoCompleted) {
1776
- onStatusChange?.("Refreshing display...");
1777
1784
  const endCmd = buildDirectWriteEndCommand(refreshMode);
1778
1785
  await this.connection.writeCommand(endCmd);
1779
1786
  response = await this.connection.readResponse(
1780
- _OpenDisplayDevice.TIMEOUT_REFRESH
1787
+ _OpenDisplayDevice.TIMEOUT_ACK
1781
1788
  );
1782
1789
  validateAckResponse(response, 114 /* DIRECT_WRITE_END */);
1790
+ const uploadTime = (Date.now() - uploadStartTime) / 1e3;
1791
+ onUploadComplete?.(uploadTime);
1792
+ onStatusChange?.(
1793
+ `Upload complete (${uploadTime.toFixed(1)}s), refreshing display...`
1794
+ );
1795
+ const refreshStartTime = Date.now();
1796
+ const refreshResponse = await this.connection.readResponse(
1797
+ _OpenDisplayDevice.TIMEOUT_REFRESH
1798
+ );
1799
+ const [responseCode] = checkResponseType(refreshResponse);
1800
+ if (responseCode === 115 /* REFRESH_COMPLETE */) {
1801
+ const refreshTime = (Date.now() - refreshStartTime) / 1e3;
1802
+ const totalTime = (Date.now() - uploadStartTime) / 1e3;
1803
+ console.log(
1804
+ `Refresh complete (${refreshTime.toFixed(1)}s), total time: ${totalTime.toFixed(1)}s`
1805
+ );
1806
+ onStatusChange?.(
1807
+ `Refresh complete (${refreshTime.toFixed(1)}s)`
1808
+ );
1809
+ } else if (responseCode === 116 /* REFRESH_TIMEOUT */) {
1810
+ throw new ProtocolError("Display refresh timed out");
1811
+ } else {
1812
+ throw new ProtocolError(
1813
+ `Unexpected refresh response: 0x${responseCode.toString(16).padStart(4, "0")}`
1814
+ );
1815
+ }
1783
1816
  }
1784
1817
  }
1785
1818
  /**