@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.cjs CHANGED
@@ -306,6 +306,8 @@ var CommandCode = /* @__PURE__ */ ((CommandCode3) => {
306
306
  CommandCode3[CommandCode3["DIRECT_WRITE_START"] = 112] = "DIRECT_WRITE_START";
307
307
  CommandCode3[CommandCode3["DIRECT_WRITE_DATA"] = 113] = "DIRECT_WRITE_DATA";
308
308
  CommandCode3[CommandCode3["DIRECT_WRITE_END"] = 114] = "DIRECT_WRITE_END";
309
+ CommandCode3[CommandCode3["REFRESH_COMPLETE"] = 115] = "REFRESH_COMPLETE";
310
+ CommandCode3[CommandCode3["REFRESH_TIMEOUT"] = 116] = "REFRESH_TIMEOUT";
309
311
  return CommandCode3;
310
312
  })(CommandCode || {});
311
313
 
@@ -1741,6 +1743,7 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1741
1743
  const compress = options.compress ?? true;
1742
1744
  const onProgress = options.onProgress;
1743
1745
  const onStatusChange = options.onStatusChange;
1746
+ const onUploadComplete = options.onUploadComplete;
1744
1747
  console.log(
1745
1748
  `Uploading image (${this.width}x${this.height}, ${import_epaper_dithering4.ColorScheme[this.colorScheme]})`
1746
1749
  );
@@ -1766,7 +1769,8 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1766
1769
  compressedData,
1767
1770
  uncompressedSize: encodedData.length,
1768
1771
  onProgress,
1769
- onStatusChange
1772
+ onStatusChange,
1773
+ onUploadComplete
1770
1774
  });
1771
1775
  } else {
1772
1776
  console.log(
@@ -1777,7 +1781,8 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1777
1781
  imageData: encodedData,
1778
1782
  refreshMode,
1779
1783
  onProgress,
1780
- onStatusChange
1784
+ onStatusChange,
1785
+ onUploadComplete
1781
1786
  });
1782
1787
  }
1783
1788
  } else {
@@ -1787,7 +1792,8 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1787
1792
  imageData: encodedData,
1788
1793
  refreshMode,
1789
1794
  onProgress,
1790
- onStatusChange
1795
+ onStatusChange,
1796
+ onUploadComplete
1791
1797
  });
1792
1798
  }
1793
1799
  console.log("Image upload complete");
@@ -1804,9 +1810,11 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1804
1810
  compressedData,
1805
1811
  uncompressedSize,
1806
1812
  onProgress,
1807
- onStatusChange
1813
+ onStatusChange,
1814
+ onUploadComplete
1808
1815
  } = params;
1809
1816
  this.connection.clearQueue();
1817
+ const uploadStartTime = Date.now();
1810
1818
  let startCmd;
1811
1819
  let remainingCompressed = null;
1812
1820
  if (useCompression && compressedData && uncompressedSize) {
@@ -1829,13 +1837,38 @@ var OpenDisplayDevice = class _OpenDisplayDevice {
1829
1837
  autoCompleted = await this.sendDataChunks(imageData, onProgress, onStatusChange);
1830
1838
  }
1831
1839
  if (!autoCompleted) {
1832
- onStatusChange?.("Refreshing display...");
1833
1840
  const endCmd = buildDirectWriteEndCommand(refreshMode);
1834
1841
  await this.connection.writeCommand(endCmd);
1835
1842
  response = await this.connection.readResponse(
1836
- _OpenDisplayDevice.TIMEOUT_REFRESH
1843
+ _OpenDisplayDevice.TIMEOUT_ACK
1837
1844
  );
1838
1845
  validateAckResponse(response, 114 /* DIRECT_WRITE_END */);
1846
+ const uploadTime = (Date.now() - uploadStartTime) / 1e3;
1847
+ onUploadComplete?.(uploadTime);
1848
+ onStatusChange?.(
1849
+ `Upload complete (${uploadTime.toFixed(1)}s), refreshing display...`
1850
+ );
1851
+ const refreshStartTime = Date.now();
1852
+ const refreshResponse = await this.connection.readResponse(
1853
+ _OpenDisplayDevice.TIMEOUT_REFRESH
1854
+ );
1855
+ const [responseCode] = checkResponseType(refreshResponse);
1856
+ if (responseCode === 115 /* REFRESH_COMPLETE */) {
1857
+ const refreshTime = (Date.now() - refreshStartTime) / 1e3;
1858
+ const totalTime = (Date.now() - uploadStartTime) / 1e3;
1859
+ console.log(
1860
+ `Refresh complete (${refreshTime.toFixed(1)}s), total time: ${totalTime.toFixed(1)}s`
1861
+ );
1862
+ onStatusChange?.(
1863
+ `Refresh complete (${refreshTime.toFixed(1)}s)`
1864
+ );
1865
+ } else if (responseCode === 116 /* REFRESH_TIMEOUT */) {
1866
+ throw new ProtocolError("Display refresh timed out");
1867
+ } else {
1868
+ throw new ProtocolError(
1869
+ `Unexpected refresh response: 0x${responseCode.toString(16).padStart(4, "0")}`
1870
+ );
1871
+ }
1839
1872
  }
1840
1873
  }
1841
1874
  /**