{"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:1719238636.0","currentOid":""},"activityList":{"items":[{"before":"a49290b62682eb772c011c2f5dfa51e1b182ca75","after":"5b70cc1db710ab2c1f4c11d6f7a5a7b2f6bdf9c9","ref":"refs/heads/develop","pushedAt":"2024-07-02T11:10:19.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 additional warnings (#2849)\n\n**Move sanitizers to main build, add BUILD_VARS**\r\n\r\nAlthough asan/ubsan aren't supported for embedded targets,\r\nthere do appear to be more extensive compile-time checks which are useful.\r\nJust be nice at the end and don't try to link anything.\r\n\r\n**Remove Windows esp32 `dist` directory after installing tools**\r\n\r\nSaves 750+MB from cache (per image; 2 images).\r\n\r\n**Build with additional warnings in STRICT, and fix most of them**\r\n\r\nSwitch statements may fall through: use [[falthrough]] for C++.\r\nThere isn't yet a standard for C, though `/* fallthrough */` comments seem to work for some compilers (not all).\r\n\r\nUnused parameters. Happens for some code when debug isn't enabled - apply [[maybe_unused]] in C++.\r\n For others remove parameter name (C++ only), unless it's useful/descriptive.\r\n For C there is no standard, so just using `(void)` cast statement.\r\n Leave those which might mask other issues, such as code which isn't yet implemented.\r\n esp-idf has lots of unused parameter warnings; quench those.\r\n\r\nBase class X should be explicitly initialized in the copy constructor\r\n\r\nFix 'type qualifiers ignored on function return type'\r\n\r\nFix use of signed/unsigned types\r\n\r\n\r\n**Remove unused code from `Wire` library**\r\n\r\n`I2Cdev` has similar crud but needs far more work. Leave it.\r\n\r\n**Fix Graphics library bugs**\r\n\r\nUnused parameter warnings highlighted bugs in `Region` and `SolidBrush` classes.\r\nMake Region constructor explicit.\r\n\r\n\r\n\r\nmuldivMaxValue parameter 1 never used, not required\r\n\r\n**Update scanlog.py**\r\n\r\nThere are lots of duplicate warnings in logs, so update this tool to de-duplicate and categorise them by source line.\r\n\r\nSupport scanning logs obtained via github CLI\r\nIntegrate GH fetch\r\nAdd Job information\r\nScan warnings, deduplicate and support filtering\r\nAdd README","shortMessageHtmlLink":"Fix additional warnings (#2849)"}},{"before":"bffdf06cce427030ed196b96d13440d4cc885efd","after":"a49290b62682eb772c011c2f5dfa51e1b182ca75","ref":"refs/heads/develop","pushedAt":"2024-07-02T07:40:33.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":"Cache IDF and tools for esp32 CI builds (#2848)\n\nSaves time and resources downloading the IDF itself, all its submodules and build tools.\r\nJust need to clear the cache if we update IDF versions.\r\n\r\n- The IDF itself is shared amongst all platforms\r\n- The build tools are specific to each OS\r\n\r\nTotal cache used is 5.58GB.\r\n\r\nNote: Changed CI builds **only** to use a shallow clone for IDF (with submodules),\r\notherwise cache consumed hits 10.25GB which exceeds allowance.\r\nIndividually, the IDF size goes from from 1.5GB+ to 250MB.\r\nMost of this is attributable to `components/esp_wifi/libs`.\r\n\r\nNote: Windows esp32 tools come in around 1.1-1.3GB compared with 350-520MB for other OSes.","shortMessageHtmlLink":"Cache IDF and tools for esp32 CI builds (#2848)"}},{"before":"44fe07ad7171fb108019d6997813d8ffc9e28d73","after":"bffdf06cce427030ed196b96d13440d4cc885efd","ref":"refs/heads/develop","pushedAt":"2024-07-01T09:50:03.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":"Refactor DnsServer (#2846)\n\nThis PR is just a refactor of the `DnsServer` class as it's a bit more complex than necessary. No additional functionality added, but a few extra bounds checks have been added.\r\n\r\n- Move `downcaseAndRemoveWwwPrefix`, `getDomainNameWithoutWwwPrefix` and `requestIncludesOnlyOneQuestion` into private namespace (with appropriate parameter) - these do not need to be class members.\r\n\r\n- Remove `dnsHeader` and `buffer`, these are only used locally.\r\n\r\n- Move bulk of logic into separate `processQuestion` method.\r\n\r\n- Add additional debug output, printing content of question/response packets.\r\n\r\n- Fix potential issue with `getDomainNameWithoutWwwPrefix` if `www.` is contained **within** the domain name (unlikely, but possible)\r\n\r\n- Don't allocate response buffer on stack - size is potentially unbounded. Instead, re-use the allocated buffer for the response, simpler as our answer is just appended to the received question.\r\n\r\nTested using nslookup with santizers active.","shortMessageHtmlLink":"Refactor DnsServer (#2846)"}},{"before":"3db64954d14ef8d79ddf2bd0b3fa5d6a6d640ba0","after":"44fe07ad7171fb108019d6997813d8ffc9e28d73","ref":"refs/heads/develop","pushedAt":"2024-07-01T09:49: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":"Update esp-nimble-cpp, ESP32-BLE-Gamepad, ESP32-BLE-Keyboard to master (#2847)\n\nThis PR updates the three ESP32 BLE libraries and applies some fixes.\r\n\r\n- NimBLE library (`esp-nimble-cpp` submodule)\r\n- BLEGamepad library (`ESP32-BLE-Gamepad` submodule)\r\n- BLEKeyboard (`ESP32-BLE-Keyboard` submodule)\r\n\r\nThere are some `unused parameter` warnings present (when enabled) which can mask issues. Disabled those warnings for library build (in component.mk) and fixed them so #include files don't cause issues elsewhere. Many warnings come from idf.\r\n\r\nFixed in ESP32-BLE-Gamepad:\r\n\r\n- `ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]`. No reason for these not to be `const char*`. Patched.\r\n\r\n- `BleConnectionStatus.h 'virtual void NimBLEServerCallbacks::onDisconnect(NimBLEServer*, NimBLEConnInfo&, int)' was hidden [-Woverloaded-virtual=]`. Fixed method implementation, added `override` directive.","shortMessageHtmlLink":"Update esp-nimble-cpp, ESP32-BLE-Gamepad, ESP32-BLE-Keyboard to master ("}},{"before":"6570fd3ef75d412090ede7fa763b41af73ca4851","after":"3db64954d14ef8d79ddf2bd0b3fa5d6a6d640ba0","ref":"refs/heads/develop","pushedAt":"2024-06-29T11:48: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 UBSAN bugs (#2845)\n\nThis PR fixes some potential/actual bugs identified by the undefined behaviour sanitizer.\r\nSeveral of these became apparent with `-Wextra`, mainly through 'unused parameter' warnings, of which there are many.\r\n\r\n**String::replace: Passing nullptr to memcpy is undefined behaviour**\r\n\r\n**axtls sha1: Undefined behaviour**\r\n\r\naxtls-8266/crypto/sha1.c:124:42: runtime error: left shift of 128 by 24 places cannot be represented in type 'int'\r\nSUMMARY: UndefinedBehaviorSanitizer: undefined-behavior axtls-8266/crypto/sha1.c:124:42\r\n\r\nBecause: implicit conversion of uint8_t to int\r\n\r\n**Don't force queueCallback with no parameter**\r\n\r\nSanitizer reports undefined behaviour passing parameter to function which doesn't expect one.\r\nWorks fine in practice but safer to add a lamba for dealing with it.\r\n\r\n**Stream::parseFloat() not handling timeout**\r\n\r\n**String(unsigned char, ...) ignoring width, pad parameters**\r\n\r\n**char could be signed, check for `> 127` would never succeed**\r\n\r\n**HostTests datetime check should use parameter**\r\n\r\n**Fix unimplemented host `RtcClass::setRtcNanoseconds()`**\r\n\r\n**Potential array bounds violation in esp-open-lwip dhcp.c**\r\n\r\nCheck for index in range should be first.\r\n\r\n```\r\nlwip/core/dhcp.c: In function 'dhcp_recv':\r\nlwip/core/dhcp.c:133:69: warning: array subscript 10 is above array bounds of 'u8_t[10]' {aka 'unsigned char[10]'} [-Warray-bounds]\r\n 133 | #define dhcp_option_given(dhcp, idx) (dhcp_rx_options_given[idx] != 0)\r\n | ~~~~~~~~~~~~~~~~~~~~~^~~~~\r\nlwip/core/dhcp.c:592:9: note: in expansion of macro 'dhcp_option_given'\r\n 592 | while(dhcp_option_given(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n) && (n < DNS_MAX_SERVERS)) {\r\n | ^~~~~~~~~~~~~~~~~\r\nlwip/core/dhcp.c:131:7: note: while referencing 'dhcp_rx_options_given'\r\n 131 | u8_t dhcp_rx_options_given[DHCP_OPTION_IDX_MAX];\r\n | ^~~~~~~~~~~~~~~~~~~~~\r\n```","shortMessageHtmlLink":"Fix UBSAN bugs (#2845)"}},{"before":"e029a6229ec327ae34e4a720985ad66fdb00ec02","after":"6570fd3ef75d412090ede7fa763b41af73ca4851","ref":"refs/heads/develop","pushedAt":"2024-06-28T12:08:06.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 `pgm_read_word` for 64-bit host builds (#2844)\n\nSanitizer caught issue with `pgm_read_dword` on 64-bit build, defined as `unsigned long` instead of `uint32_t`.\r\n\r\nSuppress sanitizer `alignment` warnings for some FlashString methods where (64-bit) pointers are aligned to 32-bit boundaries. We need everything (including pointers) to be 32-bit aligned so this isn't a bug. (It's an optimisation thing.)","shortMessageHtmlLink":"Fix pgm_read_word for 64-bit host builds (#2844)"}},{"before":"0d0d28e5e5bf89026b6659db02a3fcd1cb58df74","after":"e029a6229ec327ae34e4a720985ad66fdb00ec02","ref":"refs/heads/develop","pushedAt":"2024-06-28T12:07:37.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 `time_t` size check (#2843)","shortMessageHtmlLink":"Remove time_t size check (#2843)"}},{"before":"f0970d83ae472de084537e8976f287ea2cce72b2","after":"0d0d28e5e5bf89026b6659db02a3fcd1cb58df74","ref":"refs/heads/develop","pushedAt":"2024-06-27T07:39: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":"Add sanitizer build options for host (#2842)\n\nThis PR adds a couple of build variables so host builds can be compiled with the available address sanitisers.\r\n\r\nI spent way too much time today trying to track down some odd behaviour with the graphics library virtual screen in MacOS. Since valgrind isn't available, I tried enabling some address sanitisers which I've not used before. Actually seems more effective than valgrind and is supported on both GCC and CLANG (and MacOS). Found the issue immediately.\r\n\r\nThere are a lot of possible sanitizer options so I've picked some which look most helpful. Also added stack checking. All of this obviously affects build size and runtime speed.\r\n\r\nTo try this out:\r\n\r\n```\r\nexport ENABLE_SANITIZERS=1\r\nmake clean components-clean\r\nmake flash run\r\n```\r\n\r\nThat's it. `make list-config | grep SANITIZER` will show applicable options.\r\n\r\nNB. GCC requires the `libasan` and `libubsan` packages.\r\n\r\n**Bug in MacOS getHostAppDir**\r\n\r\nBad len value causes memory corruption, very difficult to track down without valgrind/santizers.\r\n\r\n**Fix graphics virtual display handling with 64-bit host**\r\n\r\nSmall fix found whilst hunting the above bug, affects all 64-bit builds not just MacOS.","shortMessageHtmlLink":"Add sanitizer build options for host (#2842)"}},{"before":"683c3135b93eb7f6a757411192abce5bd472223b","after":"f0970d83ae472de084537e8976f287ea2cce72b2","ref":"refs/heads/develop","pushedAt":"2024-06-25T11:18: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":"Tidy up documentation for `PhyInitData` (#2838)","shortMessageHtmlLink":"Tidy up documentation for PhyInitData (#2838)"}},{"before":"f69ea9ce29262589370f7fcc5537f3602eb94b39","after":"683c3135b93eb7f6a757411192abce5bd472223b","ref":"refs/heads/develop","pushedAt":"2024-06-25T11:17:36.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 Esp32 timer1 tick test (#2837)\n\n* Down counter value requires initialising or won't read correctly.","shortMessageHtmlLink":"Fix Esp32 timer1 tick test (#2837)"}},{"before":"780697266db01827342ad4ee6e8df0015f7bc5bf","after":"f69ea9ce29262589370f7fcc5537f3602eb94b39","ref":"refs/heads/develop","pushedAt":"2024-06-25T11:16: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":"Esp32 build fixes (#2836)\n\nFurther to #2819 the size mainly seems to relate to two things:\r\n\r\n1. WPA3 support is enabled by default, but probably isn't necessary for most applications (could be wrong).\r\n2. More debug stuff in IDF 5.2; release builds are comparable to IDF 4.4.\r\n\r\n## Bug fixes\r\n\r\n- esp32 timer definitions missing in RELEASE build\r\n- sdkconfig definitions not picked up\r\n\r\n## Size fixes\r\n\r\n**Disable WPA3 by default**\r\n\r\nThis is also enabled by default in IDF 4.4 but can always be re-enabled if required.\r\nIt adds quite a lot to the image size.\r\n\r\n**Don't pull in stdio code from newlib**\r\n\r\nSming doesn't use newlib stdio streams\r\n\r\n\r\n## Others\r\n\r\n- Revise CI tool `scanlog.py` to include missing builds (HostTests)\r\n- Make `checksdk` a pre-requisite","shortMessageHtmlLink":"Esp32 build fixes (#2836)"}},{"before":"257a07929b30a2c7a68b92dbabb040eb25b3fa3f","after":"780697266db01827342ad4ee6e8df0015f7bc5bf","ref":"refs/heads/develop","pushedAt":"2024-06-25T11:15:03.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":"Don't use ROM time functions, they're 32-bit only (#2835)\n\nFixes #2834. Checked HostTests with IDF 4.4 and 5.2 on esp32-wroom32.\r\n\r\nNote that using ROM routines are an optimisation for pre SDK 5 so not worth the effort using them.","shortMessageHtmlLink":"Don't use ROM time functions, they're 32-bit only (#2835)"}},{"before":"3f8f2ef290447030a13ec6f654eb3603822b6640","after":"257a07929b30a2c7a68b92dbabb040eb25b3fa3f","ref":"refs/heads/develop","pushedAt":"2024-06-25T11:14:06.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":"Minor fixes (#2833)\n\n- Fix FlashString coding style\r\n- UPnP operator== not const\r\n- Tidy rp2040 build.mk\r\n- Fix comments in `FileSystem.h` referring to Spiffs","shortMessageHtmlLink":"Minor fixes (#2833)"}},{"before":"199bd6ce2dfbfdbcaa80495e746b1664daa9e437","after":null,"ref":"refs/heads/fix/esp32-build-size","pushedAt":"2024-06-24T14:17:16.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":"199bd6ce2dfbfdbcaa80495e746b1664daa9e437","ref":"refs/heads/fix/esp32-build-size","pushedAt":"2024-06-24T12:26:04.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":"Make `checksdk` a pre-requisite","shortMessageHtmlLink":"Make checksdk a pre-requisite"}},{"before":"626ae7b91ab8ebbc4cf3de1a92214112e9503006","after":"3f8f2ef290447030a13ec6f654eb3603822b6640","ref":"refs/heads/develop","pushedAt":"2024-06-24T11:42:27.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 appveyor compatibility. (#2831)","shortMessageHtmlLink":"Remove appveyor compatibility. (#2831)"}},{"before":"244105b3ef167d4f93c4244e3e1c0bf48319e7c0","after":"626ae7b91ab8ebbc4cf3de1a92214112e9503006","ref":"refs/heads/develop","pushedAt":"2024-06-24T11:16:48.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 Graphics library ref. (#2832)","shortMessageHtmlLink":"Fix Graphics library ref. (#2832)"}},{"before":"cb8adf4f7af9ed926f0b4c0e82a4f9217ee253d8","after":"244105b3ef167d4f93c4244e3e1c0bf48319e7c0","ref":"refs/heads/develop","pushedAt":"2024-06-24T11:16:02.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":"Minor websocket client issues (#2827)\n\nThis PR adds a few fixes for websockets I seem to have kicking about.\r\n\r\n- Tidy, remove unused websocket strings\r\n- `wsserver` tool missing port argument handling, default is 8000 not 9999\r\n\r\n**Check return value from http `connect()`**\r\n\r\n I can force this to fail by calling 'connect' twice in succession, though I do notice a disparity here. If the http connection is 'processing' then `WebsocketClient::connect` returns `false`; however, `HttpClientConnection::connect` returns `true` in this situation.","shortMessageHtmlLink":"Minor websocket client issues (#2827)"}},{"before":"9a097d81d015ac43d9475993b0c533ebabc03087","after":"cb8adf4f7af9ed926f0b4c0e82a4f9217ee253d8","ref":"refs/heads/develop","pushedAt":"2024-06-24T07:44: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":"Support Esp8266 PHY settings runtime modification (#2830)\n\nThe initial PHY data is used initialize an ESP8266 chip and controls its behaviour.\r\nThis is stored in the ``phy_init`` partition and is loaded at startup.\r\n\r\nSometimes you may want to change that data for a certain ROM on the device without changing it for all ROMs on the device.\r\n\r\nTo do this, build with ``ENABLE_CUSTOM_PHY=1`` and add code to your application:\r\n\r\n```\r\n#include \r\n\r\nvoid customPhyInit(PhyInitData data)\r\n{\r\n // Use methods of `data` to modify as required\r\n data.set_vdd33_const(0xff);\r\n}\r\n```\r\n\r\nThis PR supersedes #1491 and provides a more C++ mechanism for adjusting the configuration at runtime.","shortMessageHtmlLink":"Support Esp8266 PHY settings runtime modification (#2830)"}},{"before":"edf87fdc7636f1b01fb6a1bc99b603a163b2a96d","after":"9a097d81d015ac43d9475993b0c533ebabc03087","ref":"refs/heads/develop","pushedAt":"2024-06-24T07:42:55.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 Host MacOS support (#2804)\n\nThis PR adds support for the Host Emulator to MacOS.\r\n\r\nSee #2773.\r\n\r\n**64-bit only**\r\n\r\nStandard compiler is 'Apple Clang', supports only 64-bit builds: no 32-bit compatibility.\r\nGCC can be installed via `brew install gcc` and compiles as usual with the `-m32` flag.\r\nThe GNU linker is absent from brew's `coreutils` package (see https://github.com/Homebrew/homebrew-core/issues/17794) so the standard system linker must be used. This only supports 64-bit targets.\r\nApple have removed 32-bit application support from their ecosystem.\r\n\r\nAdvantages\r\n No need for 32-bit compatibibility libraries in GNU/Linux.\r\n For MacOS build and run host emulator using standard Apple tools, no GCC required.\r\n General improvements in portability, less tolerant of incorrect type usage.\r\n\r\nDisadvantages\r\n Types such as long, size_t now 64-bit, don't match target hardware\r\n Pointers are 64-bit so cannot be cast to 32-bit intrinsics. Code must use correct `intptr_t` types.\r\n Must use `ENABLE_STORAGE_SIZE64=1` as emulated flash addresses must be 64-bit.\r\n\r\n**Symbol wrapping**\r\n\r\nMacOS linker doesn't support symbol wrapping which is used by `malloc_count` Component to hook `malloc`, etc.\r\nDon't currently have a solution for this so malloc_count is disabled for MacOS.\r\n\r\n**CI builds**\r\n\r\nAdded MacOS builds plus running tests. For esp32 only IDF 5.2 is tested.\r\n\r\n**Notes**\r\n\r\nMacOS identified in makefiles with `UNAME=Darwin`.\r\nIn code, use `#ifdef __APPLE__` when running on apple toolchains.\r\nAlso requires `#ifdef __aarch64__` for Apple Silicon.\r\nThe `rbpf` library requires `bpf` target with clang. Not supported by apple clang - use brew clang.\r\n\r\nI managed to get MacOS Ventura running in Qemu via https://github.com/kholia/OSX-KVM.\r\nThis runs in x86_64 mode, adequate for dev/testing.\r\nThe github actions runner `macos-latest` uses arm64, so introduces a few extra quirks.\r\n\r\n\r\n**Tools**\r\n\r\n- Compiler. Standard compiler is 'Apple Clang', supports only 64-bit builds: no 32-bit compatibility. Doesn't support `alias` attribute so use linker to do that instead.\r\n\r\n- Archive. Standard `ar` does not support\r\n\r\n- Linker. GNU Linker not available. MacOS linker does not support symbol wrapping.\r\n\r\n- GDB. Can be installed with `brew` but requires some additional steps for security reasons. Separate `lldb` target added.\r\n\r\n- sed. GNU 'sed' tool has extensions which MacOS version does not support. Added `SED` build variable which should always point to GNU version `gsed`, but only for Darwin.","shortMessageHtmlLink":"Add Host MacOS support (#2804)"}},{"before":"9580006e39da72501e31168d11dd75534ac21ed7","after":"edf87fdc7636f1b01fb6a1bc99b603a163b2a96d","ref":"refs/heads/develop","pushedAt":"2024-06-23T13:55:39.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 esp32 IDF paths (#2825)\n\nThis PR simplifies and eliminates conflict between the ESP32 IDF python installation and the one Sming uses.\r\n\r\nesp32 IDF uses its own virtual python environment and that location gets added to the system path.\r\nThat means if our `PYTHON` variable doesn't contain an absolute path (e.g. `python3`, the default) then for esp32 builds **only** it ends up using the IDF python instead. Which is problematic.\r\n\r\nSo, do we really need **all** that crud on the path?\r\nTurns out we don't. This PR gets rid of stuff which isn't necessary.\r\n\r\nNB. Checked current IDF behaviour and their export script still puts everything in the PATH.\r\n\r\nA further simplification is removal of core python requirements from the main Python environment. These aren't required.","shortMessageHtmlLink":"Fix esp32 IDF paths (#2825)"}},{"before":"b5e39d5c90b74a594858128401f47366b9658155","after":"9580006e39da72501e31168d11dd75534ac21ed7","ref":"refs/heads/develop","pushedAt":"2024-06-23T13:53:06.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 graphical Editor to Graphics library (#2826)\n\nThis PR updates the Graphics library which now has a basic graphical layout editor. There are also a few fixes:\r\n\r\n- Add `sourceOffset` parameter to `ReferenceObject`. Supports drawing part of image, for example.\r\n- Flatten resource compiler directory structure\r\n- Fix incorrect font size calculations\r\n- Use raw strings for regex. Fixes python warnings about invalid escape sequences\r\n- Support dynamic virtual display resizing","shortMessageHtmlLink":"Add graphical Editor to Graphics library (#2826)"}},{"before":"63877bbf8e2df882d67dfa993bddf6955deed976","after":"b5e39d5c90b74a594858128401f47366b9658155","ref":"refs/heads/develop","pushedAt":"2024-06-23T13:50:03.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 Url default handling and query parameters (#2828)\n\nThis PR addresses some inconsistencies with the `Url` class.\r\n\r\n**Ensure Url provides default port for default scheme**\r\n\r\nWhen building a URL the Scheme defaults to HTTP if not specified.\r\nThis means the port should also default to 80, but it doesn't.\r\n\r\nFor example:\r\n\r\n```\r\nUrl url;\r\nurl.Host = \"api.thingspeak.com\";\r\nurl.Path = \"/update\";\r\n```\r\n\r\nThis produces the correct URL text `http://api.thingspeak.com/update` with the default scheme, but `getPort()` incorrectly returns 0.\r\n\r\nSee https://github.com/SmingHub/Sming/issues/1937#issuecomment-549534674,\r\nPR #1945 provided a fix but didn't actually resolve the underlying issue.\r\n\r\n**Url::toString() doesn't lowercase scheme**\r\n\r\nFor example:\r\n\r\n```\r\nUrl url;\r\nurl.Scheme = \"HTTP\";\r\nurl.Host = \"api.thingspeak.com\";\r\nurl.Path = \"/update\";\r\n```\r\n\r\nIncorrectly produces `HTTP://api.thingspeak.com/update`.\r\n\r\n**Add `Url::getQueryParameter` method**\r\n\r\nCare is required when reading query parameters as direct access to the `Query` member variable means non-existent keys get added. Therefore a `const` cast is required. This method provides a more convenient way for safely reading values, and also allows a default to be given where the value doesn't exist.","shortMessageHtmlLink":"Fixes to Url default handling and query parameters (#2828)"}},{"before":"34ec9b251d2aa5d966052b996f3a0b0a9f8fa436","after":"63877bbf8e2df882d67dfa993bddf6955deed976","ref":"refs/heads/develop","pushedAt":"2024-06-23T13:47: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":"Tidy network files (#2824)\n\nThe Network Component files are laid out in a fairly predictable way, with a few exceptions whose headers and source modules are all in the root directory:\r\n\r\n- FtpServer\r\n- HttpClient\r\n- HttpServer\r\n- WebsocketClient\r\n- MqttClient\r\n\r\nThis PR moves those files into the appropriate subdirectory but replaces the headers with stubs.\r\nThis should make maintenance easier as the actual code and header are kept together in the expected location.","shortMessageHtmlLink":"Tidy network files (#2824)"}},{"before":"30f6124c4b71cb549e0ce8ff92d2ed1d8fe17e3a","after":"34ec9b251d2aa5d966052b996f3a0b0a9f8fa436","ref":"refs/heads/develop","pushedAt":"2024-06-20T13:12: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":"Support native 64-bit host builds (#2823)\n\nThis PR allows 64-bit Host builds and adds an additional CI build/test for ubuntu in 64-bit mode.\r\n\r\nBuilding with `BUILD64=1` removes the need to install any 32-bit support libraries.\r\n\r\nBecause pointers are 64-bit, minimum SSO String size must increase.\r\nThe minimum size is ensured by the compiler, without error.\r\n\r\nIncludes fixes for these libraries:\r\n\r\n- jerryscript: required fixes for 64-bit builds plus MacOS build support\r\n- CsvReader: test parameter type\r\n- axtls-8266: printf argument types\r\n\r\nAlso removes `make components application` from build logs, this should be quiet.","shortMessageHtmlLink":"Support native 64-bit host builds (#2823)"}},{"before":"15836e32afdf65218e96df8f479a2782771c8eb2","after":"30f6124c4b71cb549e0ce8ff92d2ed1d8fe17e3a","ref":"refs/heads/develop","pushedAt":"2024-06-20T11:38:38.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 default toolchain paths (#2822)","shortMessageHtmlLink":"Fix default toolchain paths (#2822)"}},{"before":"cc41342b3633e90327f25e237a4192335cf58345","after":"15836e32afdf65218e96df8f479a2782771c8eb2","ref":"refs/heads/develop","pushedAt":"2024-06-20T08:17:06.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":"Improve timezone support (#2770)\n\nThis PR fills some gaps in Sming's support of time zones.\r\n\r\nTime zones are a complex issue and best left to a separate library.\r\nHowever, some minimal changes are required to the framework itself.\r\n\r\n\r\n**Fixes**\r\n\r\n- Remove `DT_DATE_SEPARATOR` - no longer used\r\n- Add MINS_PER_HOUR definition\r\n- Don't restrict SystemClock timezone offset range. Can vary much more than plus/minus 12 hours.\r\n- Make core DateTime defines signed. Causes all sorts of hidden issues performing arithmetic otherwise.\r\n\r\n- Ensure DateTime:: fromHttpDate(), fromISO8601() and setTime() set weekday correctly.\r\n\tRequires full conversion to/from time_t, so add static versions of these methods which can also be used where broken-down time isn't required.\r\n\tAny failure in parsing means the DateTime value is left unchanged, rather than in an indeterminate state.\r\n\r\n\r\n**Add Zoned Time support**\r\n\r\nThis uses `DateTime::ZoneInfo` and `ZonedTime` to provide a basic mechanism for dealing with zoned time information.\r\nHandling rules, etc. must be handled with separate library.\r\n\r\n`ZoneInfo` provides information associated with a point-in-time\r\n`ZonedTime` contains a UTC timestamp (time_t) plus ZoneInfo\r\n\r\nThis naming is common amongst other libraries, e.g. java.\r\n\r\n`DateTime` formatting now supports \"z\", \":z\" and \"%Z\" format specifiers with provided (optional) `ZoneInfo` parameter.\r\n\r\n\r\n**Handle transitions to/from daylight savings**\r\n\r\nAdds a callback to the SystemClock so that the timezone offset can be maintained efficiently.\r\nUpdate `SystemClock_NTP` sample and add to Windows CI builds.\r\n\r\nObtaining the local time involves converting the current system clock time from UTC using an offset based on the currently active timezone rules. The `Timezone` library is one way to deal with this, but not the only way of course.\r\n\r\nThere is currently no mechanism for keeping the system clock time offset correct, other than periodically setting it. For example, this is how the `SystemClock_NTP` sample currently does it. However, that's not ideal since we might only need to update via NTP infrequently; the two tasks aren't actually related.\r\n\r\nThis is the code added to the `SystemClock_NTP` sample, in the `NtpClientDemo.cpp` file:\r\n\r\n```\r\nvoid checkTimeZoneOffset(time_t systemTime)\r\n{\r\n\tstatic time_t nextChange;\r\n\tstatic const TimeChangeRule* rule;\r\n\r\n\tif(!rule) {\r\n\t\ttz.toLocal(systemTime, &rule);\r\n\t} else if(systemTime < nextChange) {\r\n // For most calls we just return\r\n\t\treturn;\r\n\t}\r\n\r\n // This happens on first call, or if switching from DST to STD or vice-versa (twice a year!)\r\n\tSystemClock.setTimeZoneOffset(rule->offset * SECS_PER_MIN);\r\n\tnextChange = tz.getNextChange(systemTime, &rule);\r\n}\r\n```\r\n\r\nIt's important to note that the system clock must be correctly set before this is called for the first time.\r\nTherefore the call to `SystemClock.onCheckTimeZoneOffset(checkTimeZoneOffset)` is made only after setting the clock in our NTP callback. From then on, `checkTimeZoneOffset` is called whenever the local time is requested from `SystemClock`.\r\n\r\nIt's efficient because we note when the next change to/from DST is and so only need to check it, but will guarantee that the correct local time is returned without having to perform a full TimeChangeRule calculation every time.\r\n\r\nNOTE: This isn't a perfect solution since there are ways to easily bypass the update check. Something the user might want to add into their applications is a periodic manual check, perhap?\r\n\r\n## Timezone library changes\r\n\r\n**Add POSIX timezone string support**\r\n\r\nAdds support for parsing POSIX timezone definition strings.\r\n\r\nC library support for timezone generally involves code like this:\r\n\r\n```\r\nsetenv(\"TZ\", \"CET-1CEST,M3.5.0,M10.5.0/3\");\r\ntzset();\r\n```\r\n\r\nThis approach is complex and inflexible so the code has been ported from newlib so that rules can be easily defined using these strings.\r\n\r\n**Provide standard timezone rule definitions**\r\n\r\nA set of timezone data can be built directly from the IANA database information.\r\nThis is limited to the standard POSIX string definitions.\r\n\r\nThe data itself is deliberately *NOT* included in the library as it changes frequently, sometimes several times a year.\r\n\r\nNote: Whilst currently this data is generated statically for linking with applications,\r\nfuture improvements to the library will consider mechanisms for keeping this information updated in a running system,\r\n*without* having to re-flash the firmware.\r\n\r\n**Testing**\r\n\r\nAdd extensive testing to validate generated rules and compare against OS-provided transition tables.","shortMessageHtmlLink":"Improve timezone support (#2770)"}},{"before":"5caffe3f8660d140087c8e94ce3378fb396d34f3","after":"cc41342b3633e90327f25e237a4192335cf58345","ref":"refs/heads/develop","pushedAt":"2024-06-19T15:04: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":"Fixed typos reported by codespell. (#2818)","shortMessageHtmlLink":"Fixed typos reported by codespell. (#2818)"}},{"before":"a681b4ccd9724985c9be1c8bc9d2660b05a5c800","after":"5caffe3f8660d140087c8e94ce3378fb396d34f3","ref":"refs/heads/develop","pushedAt":"2024-06-19T11:12: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 compiler detection (#2817)\n\nCompiler detection was changed in #2798 but did not take locale into account.\r\n\r\nThis PR fixes the problem using `LANG=C` as recommended in #2816.\r\n\r\nAlso if a failure occurs the command output accompanies the error message to make diagnosis a little easier next time.","shortMessageHtmlLink":"Fix compiler detection (#2817)"}},{"before":"9a3c9a7bc64c83f4bea2fc147c5ab560f50d9834","after":"a681b4ccd9724985c9be1c8bc9d2660b05a5c800","ref":"refs/heads/develop","pushedAt":"2024-06-19T06:16:49.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 host lwip to current master (2.2.x) (#2814)\n\nFor Host lwip makes sense to work with latest. Currently using commit from 3/10/2021.\r\n2.2.0 is current release, a few fixes on top of that.","shortMessageHtmlLink":"Update host lwip to current master (2.2.x) (#2814)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEdLcGdQA","startCursor":null,"endCursor":null}},"title":"Activity ยท SmingHub/Sming"}