{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":32271212,"defaultBranch":"develop","name":"Sming","ownerLogin":"SmingHub","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-03-15T16:36:22.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/14863779?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1716922048.0","currentOid":""},"activityList":{"items":[{"before":"8a2dcc7e9f73c37ddbc015665c09b28dadedb6f0","after":"52ee9d0129a1bb434bde7b2df0cc2865c0005163","ref":"refs/heads/develop","pushedAt":"2024-06-08T12:48:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Update lwip2, use upstream repo. (#2793)\n\nThis PR at long last brings lwip2 out of the dark ages. Seems to work reliably, here it is for testing anyway.\r\n\r\nInstead of using a fork this uses the lwip2 repo used by esp8266 arduino, with some minimal patching.\r\n\r\nlwip2 now updated from 2.0.2 to 2.1.3.","shortMessageHtmlLink":"Update lwip2, use upstream repo. (#2793)"}},{"before":"7e11439bcad9afd3cec48808e0d9f38d51319bbf","after":"8a2dcc7e9f73c37ddbc015665c09b28dadedb6f0","ref":"refs/heads/develop","pushedAt":"2024-06-07T07:51:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix SSL issues (#2788)\n\nThis PR aims to address some issues encountered whilst trying to use SSL for a basic `HttpClient` download session.\r\n\r\n**Fix malloc_count link error 'undefined reference to __wrap_strdup`**\r\n\r\nImplementation also needs to call mc_malloc, not malloc.\r\n\r\n**AxCertificate destructor accesses ssl after it's been destroyed**\r\n\r\nPicked up by valgrind.\r\n\r\n**Provide time implementations in RTC.cpp, add test**\r\n\r\nLibrary code requires libc implementations for `gettimeofday` and `time_t`.\r\nOn Esp8266 typically get `please start sntp first !` message.\r\nThis should be synced with `SystemClock` so removed the `time replacement` code from AXTLS and use that.\r\n\r\nTest added to HostTests to ensure SystemClock and `time()` are synced. Checked on esp8266, rp2040, esp32s2, host.\r\n\r\n\r\n**Replace automatic SSL certificate generation with `generate-cert` build target**\r\n\r\nThese don't need to be auto-generated as they're not always required.\r\nThere are also multiple ways to get this information into an application.\r\nSeveral samples don't make use of these files, so removed.\r\n\r\nNOTE: The `make_certs.sh` script no longer appears to work, at least with openssl 3.2.1 (Jan 2024).\r\nThe headers are generated but Axtls fails to load the certificate with -269 (SSL_ERROR_INVALID_KEY).\r\n\r\n**Put generated SSL certificate information into PROGMEM**\r\n\r\nBit wasteful of RAM.\r\n\r\n**Enforce consistent 'verifyLater' behaviour with Bearssl**\r\n\r\nWhen attempting to fetch an https resource (using HttpClient) *without* setting request `onSslInit` we get this behaviour:\r\n\r\n- Axtls: Fails with `X509_VFY_ERROR_NO_TRUSTED_CERT`\r\n- Bearssl: No problem, goes right ahead.\r\n\r\nThis behaviour with Bearssl is not desirable as it could inadvertently compromise security.\r\nAdd a check on `verifyLater` and fail with `X509_NOT_TRUSTED` as appropriate.\r\n\r\n**Notes**\r\n\r\n- Add `setSslInitHandler` method to HttpClient? NO ! `Use request->onSslInit`\r\n- Does this work with lwip2 on esp8266? Doesn't appear to make things worse, but lwip2 looks to be kinda broken. Needs major update.\r\n- Certificate generation throws errors with openssl 3, this needs addressing separately as it's only really appropriate for basic testing anyway.","shortMessageHtmlLink":"Fix SSL issues (#2788)"}},{"before":"307d6db7fb579752450c168b38c6253824e16f0f","after":"7e11439bcad9afd3cec48808e0d9f38d51319bbf","ref":"refs/heads/develop","pushedAt":"2024-06-07T07:41:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"esptool needs same comport fix for WSL2 (#2791)\n\nFurther to #2790 esptool of course uses COM ports and same issue applies when physical ports available in WSL2.","shortMessageHtmlLink":"esptool needs same comport fix for WSL2 (#2791)"}},{"before":"90511f14152cbaa753d947fa9be70febbed3a57c","after":"307d6db7fb579752450c168b38c6253824e16f0f","ref":"refs/heads/develop","pushedAt":"2024-06-06T10:56:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Use physical serial port if present on WSL2 (#2790)\n\nWSL2 doesn't natively support USB devices such as serial ports, so Sming uses runs the python terminal application inside Windows natively using powershell.\r\n\r\nHowever, as discussed in #2789 this prevents software such as [usbipd](https://github.com/dorssel/usbipd-win) from working.\r\n\r\nThis PR adds an additional check when running inside WSL2 to see if the nominated port, via `COM_PORT`, is actually present. If so, then it runs the python terminal application normally. If the path isn't present then it is assumed to be a Windows port and powershell is invoked as usual.\r\n\r\nBecause the `TERMINAL` environment variable is cached by Sming this can cause issues. To maintain existing behaviour this variable is still cached but left empty to indicate default behaviour. If `TERMINAL` has been redefined then that will be run instead. This will require `make config-clean` to clear the existing cached value.","shortMessageHtmlLink":"Use physical serial port if present on WSL2 (#2790)"}},{"before":"4753ef43c8ba1e67c1fe58967edfca8292061965","after":"90511f14152cbaa753d947fa9be70febbed3a57c","ref":"refs/heads/develop","pushedAt":"2024-06-05T08:17:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Documentation/CI fixes (#2783)\n\nThis PR contains a few minor fixes relating to CI testing and documentation. There are no functional changes to the framework.\r\n\r\n**Documentation fixes**\r\n\r\n- Noticed that `:issue:` links don't work! Just a typo in the URL...\r\n- The `Storage` component API documentation contained everything from the FatIFS and DiskStorage libraries\r\ntoo since they live in the same namespace. I've broken things out a bit to avoid that.\r\n- Doxygen API index page isn't appearing at https://sming.readthedocs.io/en/latest/api/, just the placeholder page. The pages are all there but Sphinx hasn't overwritten the placeholder index.html as it should do. Fixed by adding a manual copy at end of sphinx build. Tested on readthedocs and locally.\r\n- Document `STRICT` setting and add upgrade note about Y2038 warning.\r\n- Add tips to vscode documentation.\r\n- Upgrade sphinx to latest 7.3.7\r\n\r\n**Test fixes**\r\n\r\n- Simplify HostTests partition layout\r\n- Fix uf2conf python regex warning","shortMessageHtmlLink":"Documentation/CI fixes (#2783)"}},{"before":"a90219605fd38824dbf742031814a6c6331dace4","after":"4753ef43c8ba1e67c1fe58967edfca8292061965","ref":"refs/heads/develop","pushedAt":"2024-06-03T08:21:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Upgrade toolchains (#2787)\n\nThis PR updates the embedded toolchains to more recent versions, setting the new default installed version for Esp32 to IDF 5.2. The library testing github actions script has been updated to include missing esp32c2 architecture and test against IDF 4.4 and 5.2.\r\n\r\n**Esp32 IDF SDK**\r\n\r\nThe installation scripts now install IDF version 5.2 by default (see issue #2784 regarding docker build failure because of Y2038 warning with IDF < 5).\r\nDeprecation warnings printed for IDF 4.3 and 4.4 after final link step. See #2732 for discussion regarding old versions.\r\nWindows CI tests for IDF 4.3, 5.0 removed.\r\n\r\n**Extend library tests to include missing esp32 variants**\r\n\r\nCI testing when developing libraries is much more efficient than running the main Sming CI tests.\r\nLooks like these haven't been updated for a while so have added the `esp32s3` and `esp32c2` variants\r\nand testing against IDF 5.2 for all esp32 variants. Previously was only 4.4 (old default).\r\n\r\n**Esp8266 Toolchain**\r\n\r\nThe installer has been updated to use the latest toolchain (Feb 23), gcc 10.3.\r\n\r\n**RP2040 Toolchain**\r\n\r\nThe installer has been updated to use the latest toolchain (Oct 23), gcc 13.2.","shortMessageHtmlLink":"Upgrade toolchains (#2787)"}},{"before":"66216b1fa67bd68a32ce617ec87489612fd0cfe6","after":"a90219605fd38824dbf742031814a6c6331dace4","ref":"refs/heads/develop","pushedAt":"2024-06-01T06:55:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix delayed sending of websocket messages (#2782)\n\nFixes #2780 by kicking TCP when messages are queued. Without this messages are sent lazily by lwip stack.","shortMessageHtmlLink":"Fix delayed sending of websocket messages (#2782)"}},{"before":"2d3d267e398a1db49b17f8fcfce62ea7e9efaee2","after":"66216b1fa67bd68a32ce617ec87489612fd0cfe6","ref":"refs/heads/develop","pushedAt":"2024-05-30T16:51:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"NPCAP gone down. Use SmingTools cache. (#2778)\n\nThe npcap SDK is required by Host networking in Windows, and is downloaded on demand from `npcam.com`. This site has been down since yesterday and whilst it may come back up again it makes sense to keep a cached copy of this in SmingTools.","shortMessageHtmlLink":"NPCAP gone down. Use SmingTools cache. (#2778)"}},{"before":"3c2548d8120ab29411a0c6876d645e872827e77c","after":null,"ref":"refs/heads/feature/csvreader-library","pushedAt":"2024-05-28T18:47:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mikee47","name":"Mike","path":"/mikee47","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1982774?s=80&v=4"}},{"before":null,"after":"3c2548d8120ab29411a0c6876d645e872827e77c","ref":"refs/heads/feature/csvreader-library","pushedAt":"2024-05-28T15:45:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mikee47","name":"Mike","path":"/mikee47","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1982774?s=80&v=4"},"commit":{"message":"Move CsvReader into separate library","shortMessageHtmlLink":"Move CsvReader into separate library"}},{"before":"2cac9139286cb2f154e508e6e1472652b102905e","after":"2d3d267e398a1db49b17f8fcfce62ea7e9efaee2","ref":"refs/heads/develop","pushedAt":"2024-05-27T08:53:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Update littlefs from 2.4.0 -> 2.9.3 (#2777)\n\nThis PR updates the [Sming-LittleFS](https://github.com/mikee47/Sming-LittleFS) library, which implements IFS for the [littlefs](https://github.com/littlefs-project/littlefs) file system.\r\n\r\nThe library still uses a fork of littlefs because it adds attribute enumeration support - see upstream [PR request](https://github.com/littlefs-project/littlefs/pull/636). This has now been rebased on version 2.9.3 - see [releases](https://github.com/littlefs-project/littlefs/releases) for details of all the changes. Here's a (non-exhaustive) summary:\r\n\r\n- Improved RAM usage\r\n- Improved performance\r\n- v2.5.0 removed all recursion\r\n- v2.6.0 bump the on-disk minor version of littlefs from lfs2.0 -> lfs2.1. \"This change is backwards-compatible, but after the first write with the new version, the image on disk will no longer be mountable by older versions of littlefs.\"\r\n- v2.7.0 Add `lfs_fs_stat` as an analog for the POSIX stavfs. This isn't currently used by Sming-LittleFS.\r\n- v2.9.0 `rename` now returns LFS_ERR_NOTDIR if the source is a regular file and the destination is a directory. This better aligns with POSIX.\r\n\r\nThere are no functional changes to the library, but the samples have been simplified. An additional sample has been added to assess wear levelling behaviour (as a result of discussion #2771).","shortMessageHtmlLink":"Update littlefs from 2.4.0 -> 2.9.3 (#2777)"}},{"before":"7d69a58c3e2682e06fb6cb96095536c36de1137a","after":"2cac9139286cb2f154e508e6e1472652b102905e","ref":"refs/heads/develop","pushedAt":"2024-05-27T07:07:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Remove legacy compiler build options (#2775)\n\nRemove `__GXX_EXPERIMENTAL_CXX0X__`, it's for obsolete compiler versions.\r\n\r\nEnable deprecated warnings for Host builds. These were originally masked but there's currently no reason for it.","shortMessageHtmlLink":"Remove legacy compiler build options (#2775)"}},{"before":"ef3cc6b67e2653684fd561e3bfba616e90a06d87","after":"7d69a58c3e2682e06fb6cb96095536c36de1137a","ref":"refs/heads/develop","pushedAt":"2024-05-27T07:06:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix IFS build inconsistencies (#2774)\n\nThis PR addresses a couple of issues which have arisen in testing.\r\n\r\n**Globally define _POSIX_C_SOURCE**\r\n\r\nValue set by Sming to 200809L making available functionality from the 2008 edition of the POSIX standard (IEEE Standard 1003.1-2008). See https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html.\r\n\r\nWe should expect those features to be available generally.\r\nIFS library no longer needs to define this.\r\n\r\n**Fix IFS issues**\r\n\r\n- Fix README links\r\n- Build images using environment variables with regular Windows paths require 'fixing', e.g. \"/C/dir/path\" -> \"C:/dir/path\"\r\n\r\n- Remove `TimeStamp::String()` operator completely: it's ambiguous\r\n\r\nTimeStamp has implicit `time_t` cast, which is appropriate.\r\nCalling `String(timestamp)` could yield the numeric value or the string value. Instead, call `toString()` method.\r\n\r\nFor example, when calling `Serial.println(timestamp);` GCC 10.2 calls `TimeStamp::String()`, whereas GCC 14.1 uses `String(time_t)`.","shortMessageHtmlLink":"Fix IFS build inconsistencies (#2774)"}},{"before":"591b673f50fa5728d95f720e113f7fb6c8f57755","after":"ef3cc6b67e2653684fd561e3bfba616e90a06d87","ref":"refs/heads/develop","pushedAt":"2024-05-27T07:04:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix problem defining arrays in class declarations (#2776)\n\n- Fix `static_assert` failure using `int64_t` for map keys\r\n- Add integration tests to verify before/after behaviour.\r\n- Update documentation\r\n\r\nFor example, this code produces `__fstr__myIntArray not defined` error:\r\n\r\n```\r\nstruct MyClass {\r\n DEFINE_FSTR_ARRAY_LOCAL(myIntArray, int, 1, 2, 3, 4, 5)\r\n};\r\n```\r\n\r\nThe same issue applies to maps and vectors.","shortMessageHtmlLink":"Fix problem defining arrays in class declarations (#2776)"}},{"before":"75a748192cd3883030012f680a0b1bd5cba67598","after":"591b673f50fa5728d95f720e113f7fb6c8f57755","ref":"refs/heads/develop","pushedAt":"2024-04-23T08:58:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Make `time_t` size check message more helpful (#2769)\n\nFurther to #2758 host builds should generally match code run on hardware. As mentioned this is not straightforward for Windows, but for Linux we should expect 64-bits as the default.\r\n\r\nGCC 10+ can make use of `_TIME_BITS` to ensure we get this behaviour. More specifically, this is a feature of `glibc` shipped with those versions.\r\n\r\nFor earlier versions, even though the compiler is 64-bit we are building in 32-bit mode and `time_t` stays stuck in 32-bits. There are various discussions about this but the short answer is that prior to GCC 10 (libc 4) 32-bit applications get 32-bit `time_t`.\r\n\r\nInstead of generating a `static_assert` (which stops compilation) we get a compiler warning - this still requires building in STRICT mode.","shortMessageHtmlLink":"Make time_t size check message more helpful (#2769)"}},{"before":"ea00370bdb4ac917206b2ab5a5cd8b32d1b0a390","after":"75a748192cd3883030012f680a0b1bd5cba67598","ref":"refs/heads/develop","pushedAt":"2024-04-23T08:57:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Add `clang-tidy` support for static code analysis (#2648)\n\nThis PR allows static code analysis using clang-tidy, suggested by #2616.\r\n\r\nClang has more limited `constexpr` support than GCC so cannot parse some of the FlashString and NanoTime code without modification. However, these changes are only made when `__clang__` is defined and do not affect regular builds with GCC.\r\n\r\nThis PR also includes some basic code fixes which clang identifies. There are a lot more to look at.\r\n\r\nTo try it out, build a project with:\r\n\r\n```\r\nmake CLANG_TIDY=clang-tidy\r\n```\r\n\r\nAdd additional parameters like this:\r\n\r\n```\r\nmake CLANG_TIDY=\"clang-tidy --fix --fix-errors\"\r\n```\r\n\r\nNotes:\r\n\r\n- Don't use `-j` option as clang-tidy output and fixes don't get serialised correctly.\r\n- Settings are in the main `.clang-tidy` file. A custom version can be used and passed on the command line.\r\n- I've been using clang 17.0.6 https://releases.llvm.org/17.0.1/tools/clang/tools/extra/docs/clang-tidy/index.html\r\n- Only source files which haven't been built are inspected. So, to restrict which code gets processed built the entire application then 'clean' the relevant modules before proceeding with clang-tidy.\r\n- No object code is generated by clang.","shortMessageHtmlLink":"Add clang-tidy support for static code analysis (#2648)"}},{"before":"c8cffebcfb2b1a43aa098bc794f16bb3955c6fae","after":"ea00370bdb4ac917206b2ab5a5cd8b32d1b0a390","ref":"refs/heads/develop","pushedAt":"2024-04-22T14:12:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Improvements to HostEd (#2768)\n\nThis PR proposes some changes to the Hosted classes\r\n\r\n**Update simpleRPC to master**\r\n\r\nWith clang-tidy #2648 some failures occur in the `simpleRPC` library. Updating this to current master solves the issues.\r\nI've also put all the code into the `simpleRPC` namespace which sorts out the conflict with `Vector` but makes it available for use if required.\r\n\r\n**Tidy HostTests module**\r\n\r\nAlso decode the anonymous 'packet' blob so we can see what's in it and compare with spec. should we wish to update it.\r\n\r\n**Use abstract base class for callbacks**\r\n\r\nSimplifies implementation since usually all callbacks are required.\r\nCompiler ensures all methods have implementations.\r\n`clang-tidy` gave potential memory leak indication because of Delegates. Not sure if that's real but this fixes it.","shortMessageHtmlLink":"Improvements to HostEd (#2768)"}},{"before":"2c3ed1be74d1425310508dbed27a2a43a6a4b7a9","after":"c8cffebcfb2b1a43aa098bc794f16bb3955c6fae","ref":"refs/heads/develop","pushedAt":"2024-04-22T07:11:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"A few DateTime tweaks (#2767)\n\nSome further minor updates to `DateTime`:\r\n\r\n- Reduce class size. Member variables misaligned so consumes 14 bytes instead of 12.\r\n- Simplify `calcDayOfYear()`","shortMessageHtmlLink":"A few DateTime tweaks (#2767)"}},{"before":"913a0e3526086bb7fe5fc92a1a01db4de3a5bca3","after":"1fef5531e67fe144775d5312f6ebc0218acb6298","ref":"refs/heads/lts-master/4.2.x","pushedAt":"2024-04-15T08:07:56.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Merge branch 'lts-develop/4.2.x' into lts-master/4.2.x","shortMessageHtmlLink":"Merge branch 'lts-develop/4.2.x' into lts-master/4.2.x"}},{"before":"be1ffa2312cfbbcff14eb49f597ddaa06580a471","after":"e5f7f9750f75ab0191687e2122073c122b1eb9d2","ref":"refs/heads/lts-develop/4.2.x","pushedAt":"2024-04-15T08:07:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"esp8266: NMI not disabled when timer1 ISR cleared (#2764)\n\nSDK doesn't actually disable NMI interrupts when interrupt callback cleared. This blocks regular (FRC) timer1 interrupts if subsequently enabled.\n\nThe HardwareTimer (timer1) appears to stop working if applications switch from using NMI interrupts to regular timer interrupts.\n\nA more subtle manifestation of this bug is that the original NMI callback continues to be called when a different FRC handler is set.","shortMessageHtmlLink":"esp8266: NMI not disabled when timer1 ISR cleared (#2764)"}},{"before":"cf1e532d31688107353067d95a990e133c71ab0b","after":"2c3ed1be74d1425310508dbed27a2a43a6a4b7a9","ref":"refs/heads/develop","pushedAt":"2024-04-15T07:46:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix valgrind allocator mismatch warnings (#2766)\n\nThis PR fixes warnings flagged by valgrind when running HostTests.\r\n\r\n**Fix mismatched new/delete issues with SharedMemoryStream**\r\n\r\nUse correct templated allocation, also simplifies code.\r\n\r\n**Fix mismatched allocators with `LimitedMemoryStream`**\r\n\r\nUse malloc/free` instead of new/delete, as for MemoryDataStream.\r\nResolves issue with mismatch highlighted by valgrind using `moveString`.\r\nAlso add null check in allocation.","shortMessageHtmlLink":"Fix valgrind allocator mismatch warnings (#2766)"}},{"before":"bb5074ab0a763a2da7f818650de9db6e8c80df18","after":"cf1e532d31688107353067d95a990e133c71ab0b","ref":"refs/heads/develop","pushedAt":"2024-04-15T07:43:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fixes to hardware config editing/display (#2765)\n\n**If name not specified when loading config then 'save' raises exception**\r\n\r\nFor example, `Basic_Ota` sample doesn't have its `name` field set in `ota.hw`:\r\n\r\n- Run `make hwconfig-edit`\r\n- Click 'save'\r\n\r\nSo ensure we provide a default name based on filename.\r\n\r\n\r\n**Ensure all sample .hw files have names**\r\n\r\nFor consistency.\r\n\r\n\r\n**Remove 'unused_before' and 'unused_after' fields from `make hwconfig` output**\r\n\r\nThese are only used for map building so shouldn't be visible.\r\nExample:\r\n\r\n```\r\n \"phy_init\": {\r\n \"device\": \"spiFlash\",\r\n \"address\": \"0x000fc000\",\r\n \"size\": \"4K\",\r\n \"type\": \"data\",\r\n \"subtype\": \"phy\",\r\n \"readonly\": false,\r\n \"encrypted\": false,\r\n \"filename\": \"$(FLASH_INIT_DATA)\",\r\n \"unused_before\": 0, ///<\r\n \"unused_after\": 0 ///< Don't show\r\n },\r\n```\r\n\r\n\r\n**Don't set name, comment fields from option data**\r\n\r\nFor example, `Basic_Blink` sample uses default config. Running `make hwconfig` gives:\r\n\r\n```\r\n{\r\n \"name\": \"Standard config with single ROM\",\r\n \"comment\": \"Should work with any Esp8266 variant\",\r\n \"arch\": \"Esp8266\",\r\n \"options\": [],\r\n```\r\n\r\nIf we run `make hwconfig HWCONFIG_OPTS=4m` we get this:\r\n\r\n```\r\n{\r\n \"name\": \"\",\r\n \"comment\": \"\",\r\n \"arch\": \"Esp8266\",\r\n \"options\": [\r\n \"4m\"\r\n ],\r\n```\r\n\r\nThe `name` and `comment` have been wiped out, should be as before.\r\n\r\n\r\n**Fix use of `not in` and `is not` operators**\r\n\r\ne.g. `x not in [...]` preferred to `not x in [...]`","shortMessageHtmlLink":"Fixes to hardware config editing/display (#2765)"}},{"before":"895535ea3bf60af38781ac2890a24371dd0b76a8","after":"bb5074ab0a763a2da7f818650de9db6e8c80df18","ref":"refs/heads/develop","pushedAt":"2024-04-15T07:42:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix building `lwip2` with `ENABLE_LWIPDEBUG=1` (#2754)","shortMessageHtmlLink":"Fix building lwip2 with ENABLE_LWIPDEBUG=1 (#2754)"}},{"before":"3c39c29412a4b46b345fa6aafa9d5b33866e8cf1","after":"895535ea3bf60af38781ac2890a24371dd0b76a8","ref":"refs/heads/develop","pushedAt":"2024-04-15T07:41:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"esp8266: NMI not disabled when timer1 ISR cleared (#2764)\n\nSDK doesn't actually disable NMI interrupts when interrupt callback cleared. This blocks regular (FRC) timer1 interrupts if subsequently enabled.\r\n\r\nThe HardwareTimer (timer1) appears to stop working if applications switch from using NMI interrupts to regular timer interrupts.\r\n\r\nA more subtle manifestation of this bug is that the original NMI callback continues to be called when a different FRC handler is set.","shortMessageHtmlLink":"esp8266: NMI not disabled when timer1 ISR cleared (#2764)"}},{"before":"040d6bd168178b09bcd0b05c1dc36b35432f7389","after":"3c39c29412a4b46b345fa6aafa9d5b33866e8cf1","ref":"refs/heads/develop","pushedAt":"2024-04-12T10:54:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix and expand DateTime class, address 64-bit time_t issues (#2762)\n\nThis PR improves test coverage for the `DateTime` class and adds a number of necessary fixes. It also adds some obvious omissions.\r\n\r\n**Compare day/month names without case-sensitivity**\r\n\r\nAllows more use cases when converting strings.\r\n\r\n**Ensure host builds (linux) use 64-bit `time_t`**\r\n\r\nDefaults to 32-bit if not specified by `_TIME_BITS`.\r\nNow consistent with embedded toolchains which use fixed size (all but IDF 4.x are 64-bit).\r\nSee issue #2758.\r\n\r\n**Document and add static check for time_t range**\r\n\r\nCI will fail build if incorrect.\r\nFor legacy toolchains (Windows host, IDF 4.x) will fail if it ever gets fixed as a reminder.\r\n\r\n**`mktime` broken by axtls. Correct implementation available in newlib.**\r\n\r\nCalls esp8266 ROM function which doesn't support 64-bit time_t.\r\n\r\n**Fix `isLeapYear` implementation**\r\n\r\nDoesn't account for century.\r\n\r\n**Add enumeration for Month value**\r\n\r\nFor backward compatibility methods use standard types, but makes code easier to read and avoids off-by-one errors in application code.\r\n\r\n**Fix `toUnixTime` to accommodate negative values**\r\n\r\n`time_t` can represent dates before 1 Jan 1970.\r\n\r\n**Fix `toUnixTime` parameter handling outside normal range**\r\n\r\nComment reads: \"Seconds, minutes, hours and days may be any value, e.g. to calculate the value for 300 days since 1970 (epoch), set day=300\"\r\nThis requires a more appropriate parameter type (int) and casting so calculations are 64-bit.\r\n\r\n**Apply `const` to DateTime methods**\r\n\r\nAs appropriate.\r\n\r\n**Add `fromISO8601` method**\r\n\r\nComplements `toISO8601`. Update Basic_DateTime sample so strings can be interpreted.\r\n\r\n**Expand HTTP string conversion**\r\n\r\nVarious RFC versions suggest more relaxed interpretation of strings.\r\nAccept e.g. \"Sun\" or \"Sunday\". Also \"Sunasdlfkj\" but do we care?\r\nMake leading day of week optional, since the value gets discarded anyway\r\nFold whitespace\r\n\r\n**Fix `setTime`, `fromUnixTime` methods**\r\n\r\nResults are not always correct. e.g. Out by a whole day for `0x66152e16`.\r\nCode in `gmtime_r` markedly different, and not bloaty, so just use that.\r\n\r\n**Provide `gmtime_r` implementation for Windows host builds**\r\n\r\nWindows does have `gmtime` but doesn't behave like glibc/newlib does.\r\nSafest to just copy the code from newlib.\r\nhttps://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/time/gmtime_r.c\r\n\r\n**Use DateTime to produce default IFS TimeStamp string**\r\n\r\nJust output UTC, localising will likely be wrong.\r\n\r\n**Include milliseconds with '%T' format if non-zero**\r\n\r\nConsistent with ISO time strings.\r\nThis is different from libC `strftime` behaviour, but then `struct tm` doesn't have a fractional seconds field.\r\n\r\n**Update tests**\r\n\r\nGenerate test data using python script\r\nCheck dates before 1970\r\nInclude 64-bit-only tests\r\nVerify `setTime` calls with out-of-range offsets\r\n\r\n**Pull out some utility methods. Some internal functions could be useful so add those as static methods:**\r\n\r\nbool isLeapYear(uint16_t year);\r\nuint8_t getMonthDays(uint8_t month, uint16_t year);\r\nString getLocaleDayName(uint8_t day);\r\nString getLocaleMonthName(uint8_t month);\r\nString getIsoDayName(uint8_t day);\r\nString getIsoMonthName(uint8_t month);\r\nuint16_t getDaysInYear(uint16_t year);\r\n\r\n**Replace helper macros with inline functions**","shortMessageHtmlLink":"Fix and expand DateTime class, address 64-bit time_t issues (#2762)"}},{"before":"20cc413f76d21875cafa2fd22f719be6b37983cd","after":"040d6bd168178b09bcd0b05c1dc36b35432f7389","ref":"refs/heads/develop","pushedAt":"2024-04-12T10:51:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Optimise FlashString iteration and indexing (#2761)\n\nThis PR improves performance of `FlashString` library object iteration and indexing.","shortMessageHtmlLink":"Optimise FlashString iteration and indexing (#2761)"}},{"before":"38a85ff53891d7ad1e7d7bf5bb77cc1896f25b4b","after":"20cc413f76d21875cafa2fd22f719be6b37983cd","ref":"refs/heads/develop","pushedAt":"2024-04-10T13:10:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix typos reported by codespell. (#2760)","shortMessageHtmlLink":"Fix typos reported by codespell. (#2760)"}},{"before":"39f0cf69d4d62d12010813fadbad34e8f2fb03fc","after":"38a85ff53891d7ad1e7d7bf5bb77cc1896f25b4b","ref":"refs/heads/develop","pushedAt":"2024-04-10T12:23:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Allow pillow upgrade to latest (#2757)\n\nThis PR removes the sphinx `seqdiag` support as is broken with recent versions of pillow. There is only one affected diagram in the documentation so this has been replaced with a `.png` image.\r\n\r\nThe restriction on `pillow` version has been removed to satisfy #2755.\r\n\r\nSequence diagrams are only used here https://smingdev.readthedocs.io/en/latest/information/tasks.html.","shortMessageHtmlLink":"Allow pillow upgrade to latest (#2757)"}},{"before":"1bcb31dbf165468177b9197cd35d95a867fb3989","after":"39f0cf69d4d62d12010813fadbad34e8f2fb03fc","ref":"refs/heads/develop","pushedAt":"2024-04-10T11:25:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"PYTHON not set correctly (#2759)\n\nThe `PYTHON` environment variable isn't set correctly for CI builds, or for other installations where non-standard locations may be used. This can result in unexpected behaviour where multiple python3 versions are installed.\r\n\r\nUpdate to #2735.","shortMessageHtmlLink":"PYTHON not set correctly (#2759)"}},{"before":"8843f26a5d4b1a8e0d4447a0808d9f182d7cdccd","after":"1bcb31dbf165468177b9197cd35d95a867fb3989","ref":"refs/heads/develop","pushedAt":"2024-04-08T09:11:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"slaff","name":null,"path":"/slaff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/247452?s=80&v=4"},"commit":{"message":"Fix potential memory leaks in `TcpClient::send` (#2753)\n\nThis PR addresses a concern raised by Coverity. The `TcpClient::send(const char*, ...` method is tricky because it can either use the existing stream or create a new one. Further leaks are possible in `TcpClient::send(IDataSourceStream*, ...` when inspecting the failure paths. The code has been refactored using `std::unique_ptr` guards.\r\n\r\n[scan:coverity]","shortMessageHtmlLink":"Fix potential memory leaks in TcpClient::send (#2753)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEX-okjwA","startCursor":null,"endCursor":null}},"title":"Activity ยท SmingHub/Sming"}