-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rework system layer event loop #5556
Comments
I agree that moving Linux to a more event based model that aligns with RTOS platform abstractions would be ideal. |
@mlepage-google - what are your thoughts on libuv for this usecase? |
@turon Agree we should strive to make it easy to use whatever main loop implementation the application uses natively (whether that be libevent, libev, libuv, glib, etc). Or even select() if the application really does use that. I believe it will be much easier to map from an event style interface onto a select() backend than the reverse. The problem with going from select() to e.g. epoll is that we are not notified of new sources as soon as they become interesting.. but rather the next time around the loop. So it's effectively impossible to integrate CHIP into these systems without introducing a new dedicated thread for it to run on. |
#### Problem Currently, the socket-based networking implementation calls `PrepareIO()` on each endpoint to determine file descriptor sets for `select()`. This usually does redundant work (since the conditions only change on endpoint state changes) and is not usable by event-based interfaces (e.g. epoll/kqueue and libraries like libevent/libev/libuv) – see issue project-chip#5556 _rework system layer event loop_. #### Summary of Changes - Maintain the required flags in an endpoint member, `mRequestIO`, in place of recalculating them in `PrepareIO()`. (The points where `mRequestIO` is changed are the points where an event-based interface would be invoked.) - For UDP and Raw endpoints, pass callbacks to `Listen()` rather than setting members separately, to avoid any possiblity of races in a less synchronous environment. Part of issue project-chip#5556 _rework system layer event loop_.
#### Problem Currently, the socket-based networking implementation calls `PrepareIO()` on each endpoint to determine file descriptor sets for `select()`. This usually does redundant work (since the conditions only change on endpoint state changes) and is not usable by event-based interfaces (e.g. epoll/kqueue and libraries like libevent/libev/libuv) – see issue project-chip#5556 _rework system layer event loop_. #### Summary of Changes - Maintain the required flags in an endpoint member, `mRequestIO`, in place of recalculating them in `PrepareIO()`. (The points where `mRequestIO` is changed are the points where an event-based interface would be invoked.) - For UDP and Raw endpoints, pass callbacks to `Listen()` rather than setting members separately, to avoid any possibility of races in a less synchronous environment. Part of issue project-chip#5556 _rework system layer event loop_.
* Replace the EndPoint::PrepareIO() functions with stored state #### Problem Currently, the socket-based networking implementation calls `PrepareIO()` on each endpoint to determine file descriptor sets for `select()`. This usually does redundant work (since the conditions only change on endpoint state changes) and is not usable by event-based interfaces (e.g. epoll/kqueue and libraries like libevent/libev/libuv) – see issue #5556 _rework system layer event loop_. #### Summary of Changes - Maintain the required flags in an endpoint member, `mRequestIO`, in place of recalculating them in `PrepareIO()`. (The points where `mRequestIO` is changed are the points where an event-based interface would be invoked.) - For UDP and Raw endpoints, pass callbacks to `Listen()` rather than setting members separately, to avoid any possibility of races in a less synchronous environment. Part of issue #5556 _rework system layer event loop_. * fix TestInetLayerMulticast build
commit d66c807f04723a2e6dba4268e17a34105df9c3b0 Author: Andrei Litvin <[email protected]> Date: Tue May 4 04:35:55 2021 -0400 Fix android KVS implementation to work across threads (#6372) commit aa208e83b61314d536e8395dc7e3df5534a6741e Author: shana-apple <[email protected]> Date: Tue May 4 09:12:45 2021 +0200 Add Pairing API in CHIPFramework that takes in an onboarding payload … (#6358) * Add Pairing API in CHIPFramework that takes in an onboarding payload string * Restyled by whitespace * Restyled by clang-format * Fixing headers * Restyled by clang-format * Correct ordering of imports Co-authored-by: Restyled.io <[email protected]> Co-authored-by: Justin Wood <[email protected]> commit 17be4afe670126e94282bcf14a57aa3984e36cf4 Author: Yufeng Wang <[email protected]> Date: Mon May 3 21:46:33 2021 -0700 Implement general commissioning cluster callbacks (#6361) * Implement general commisioning callbacks * Address review comments * Return CHIP_ERROR_NOT_IMPLEMENTED for unimplemented functions * Use static memeber function instead of friend member function commit 68d442e96d36c25dd855fcebebd1f193d6cef1c1 Author: Song Guo <[email protected]> Date: Tue May 4 08:49:05 2021 +0800 [cirque] Fix thread network setup code (#6156) commit 011540c23a7d6837a131ccef7051b88ebe902a26 Author: Vivien Nicolas <[email protected]> Date: Tue May 4 02:19:56 2021 +0200 Zap use byte span in struct (#6432) * [ZAP] Replace 'uint8_t *' by 'chip::ByteSpan' for OCTET_STRING * Update gen/ folders commit 237cfd0513ed16be521e59fa89fe4192d0291ffd Author: Pankaj Garg <[email protected]> Date: Mon May 3 14:32:48 2021 -0700 Add APIs to generate minimal CHIP x509 encoded certificates (#6370) * Add APIs to generate minimal CHIP x509 encoded certificates * fix build errors * address review comments * address some review comments * some more cleanup * Fix test stack usage * remove PutRaw() and add a TODO * add anonymous namespace * Check that serial number is not negative commit 06a9a3e5a5c00e6e4611803d023d501633c89e83 Author: Vivien Nicolas <[email protected]> Date: Mon May 3 21:47:08 2021 +0200 Make sure string data is available when passed to the registered completion handler (#6411) * Make sure string data are available when passed to the registered completion handler * Update gen/ folders commit 91a2b6d660c2bb4794b4fc15eee70bbe571c4570 Author: Pankaj Garg <[email protected]> Date: Mon May 3 12:46:31 2021 -0700 Fix restyle URL for downloading script (#6427) commit 5180abfc0b43495a6faaa3889a4f04f7a6de7cb9 Author: Timothy Maes <[email protected]> Date: Mon May 3 21:37:44 2021 +0200 * Fix 64-bit prints mDNS code for nano libprintf (#6420) commit 4fbb13b39c3f08d9df24803ec992863162271a79 Author: Sweety <[email protected]> Date: Tue May 4 00:32:17 2021 +0530 ESP32: Optimize the temperature-measurement-app for CMake (#6397) commit c2327a5a15cdfe75e251e9d799fe111c45d477da Author: Vivien Nicolas <[email protected]> Date: Mon May 3 20:11:46 2021 +0200 Zap remove ember af maximum aps payload length (#6428) * Remove emberAfMaximumApsPayloadLength method #### Problem Ember has a limit on the actual message payload. Currently this limit is `82` and it starts to be too small for reading `List` attributes. Futhermore, there is a method named `emberAfMaximumApsPayloadLength` use to calculate the size of the payload depending on some routing parameters as far as I can tell. It is unclear to me that CHIP will ever use those. #### Summary of changes * Remove `emberAfMaximumApsPayloadLength` and some dependencies * Upgrade the maximum payload size from `82` to `1024` * Update gen/ folders commit 93186c4bcad1e3dd5e4356e1e15fdd91c8767a47 Author: Vivien Nicolas <[email protected]> Date: Mon May 3 18:07:36 2021 +0200 [Darwin] Schedule Mdns callbacks on the main framework dispatch queue (#6414) commit 05e58fdac026730886a4ae68d275f62b0ef596eb Author: Vivien Nicolas <[email protected]> Date: Mon May 3 18:07:17 2021 +0200 [Darwin] Reduce the tests timeout from 10 seconds to 3 (#6415) commit b9d954e912b5c018517ca0c6ca7c133bdf9f5371 Author: Pankaj Garg <[email protected]> Date: Mon May 3 08:31:33 2021 -0700 Add Crypto API to verify the CSR and get pubkey (#6405) * Add Crypto API to verify the CSR and get pubkey * fix test build * Detect if CSR parsing is not supported * reduce stack usage in the test * disable CSR processing for embedded targets commit c6603d293c38aa85049390be51b08e2d0a9ea217 Author: Seth Rickard <[email protected]> Date: Mon May 3 10:04:06 2021 -0500 Enable SRP for the cc26x2x7 (#6377) * Add configuration to enable the OpenThread SRP client * Add default GN option to add the CHIP platform mDNS code commit 92e3683cd0a2772b91c08e0b0109395f94944f1b Author: Vivien Nicolas <[email protected]> Date: Sat May 1 00:38:25 2021 +0200 Ensure the stack is using a single ExchangeManager (#6398) commit 6df63b4043673f9a57c5d25a01d1115d94f5a28d Author: Vivien Nicolas <[email protected]> Date: Fri Apr 30 19:58:23 2021 +0200 Add some cluster tests to iOS ChipTool (#6402) commit e78324eacf7d94500d1d67fe68c09842b5f934ec Author: Sagar Dhawan <[email protected]> Date: Fri Apr 30 09:17:33 2021 -0700 Specify the type for std::min (#6394) commit 0d5b9559ae1546da957b9dbb183fb63df04fbd85 Author: Song Guo <[email protected]> Date: Fri Apr 30 23:02:45 2021 +0800 [python] Fix Python CHAR_STRING type (#6393) * [python] Fix python type for CHAR_STRING * Run Codegen commit 0615a59e14e133ee395fde86fd501af10ba85676 Author: Rob Mohr <[email protected]> Date: Fri Apr 30 07:52:51 2021 -0700 Update Pigweed from b227355 to 0aeedcc (#6381) * Update Pigweed from b227355 to 0aeedcc Also add script to simplify updating the Pigweed submodule. * Fix whitespace * Remove backslash commit 0de2a178f869216e4f8e8eca70c033e954db612c Author: Justin Wood <[email protected]> Date: Thu Apr 29 17:30:19 2021 -0700 Revert "Implement Docker best practices (#6373)" (#6387) This reverts commit 3c9aec23615bf4e37957de8a6a34c955c6be4faf. commit 65c3982d3811479d77712cba9f1d2fd6f3c73288 Author: Vivien Nicolas <[email protected]> Date: Fri Apr 30 00:39:25 2021 +0200 Remove NetworkProvising.[h|cpp] (#6349) commit 9a7285e8e0cd97d5df7b85fd1961e6fcc20d3b03 Author: Vivien Nicolas <[email protected]> Date: Fri Apr 30 00:36:20 2021 +0200 Enable optional Basic Cluster attributes and Pump Configuration And C… (#6371) * Enable optional Basic Cluster attributes and Pump Configuration And Control cluster into the all-clusters-app * Add a length for some of the optional attributes of the Basic Cluster since the current implementation expects strings to have a pre-defined length commit 3c9aec23615bf4e37957de8a6a34c955c6be4faf Author: Victor Morales <[email protected]> Date: Thu Apr 29 14:45:07 2021 -0700 Implement Docker best practices (#6373) * Pin versions for connectedhomeip/chip-build image Signed-off-by: Victor Morales <[email protected]> * Pin versions for connectedhomeip/chip-build-efr32 image Signed-off-by: Victor Morales <[email protected]> * Pin versions for connectedhomeip/chip-build-android image Signed-off-by: Victor Morales <[email protected]> * Pin versions for connectedhomeip/chip-build-cirque image Signed-off-by: Victor Morales <[email protected]> * Pin versions for connectedhomeip/chip-build-esp32 image Signed-off-by: Victor Morales <[email protected]> * Pin versions for connectedhomeip/chip-build-esp32-qemu image Signed-off-by: Victor Morales <[email protected]> * Pin versions for connectedhomeip/chip-build-k32w image Signed-off-by: Victor Morales <[email protected]> * Pin versions for connectedhomeip/chip-build-nrf-platform image Signed-off-by: Victor Morales <[email protected]> commit e8d5302fdc4e20a4d10b48f92249986272276254 Author: Vivien Nicolas <[email protected]> Date: Thu Apr 29 23:32:30 2021 +0200 [Darwin] Add CHIPDeviceController::PairDevice using an address/port in addition to the discriminator and the setupPINCode (#6369) commit 4a71302d24edbd2ce9f3afd330461d52562e331b Author: Sagar Dhawan <[email protected]> Date: Thu Apr 29 14:30:15 2021 -0700 Split the storage of the next KeyID used in pairing from the device list storage (#6378) commit 138bafbd7c6332869a1d4398de067b1a16679203 Author: Pankaj Garg <[email protected]> Date: Thu Apr 29 14:29:10 2021 -0700 Generate Certificate Signing Request in DER format (#6380) commit 94ebe86c94c303270b1a24e045a74d8850596644 Author: Sagar Dhawan <[email protected]> Date: Thu Apr 29 14:20:11 2021 -0700 Fix mDNS advertisement always set to 0 (#6376) commit a093b5401c73c2c93d7fcbcb01dfd18482ccbd0b Author: Vivien Nicolas <[email protected]> Date: Thu Apr 29 16:36:36 2021 +0200 Use a unique dispatch_queue_t for accessing the CHIP stack (#6207) commit 7e77955f4cd5100b8c8784b2ea023b9bdbcc6a60 Author: Yakun Xu <[email protected]> Date: Thu Apr 29 21:45:41 2021 +0800 [Thread] make mesh-local addresses non-preferred (#6363) This commit maps Thread mesh-local addresses as non-preferred addresses in lwIP so that they will not be selected as source address. commit 0c1ab688a982ebe3f5d17ef6d8ab56bea0f217e0 Author: Vivien Nicolas <[email protected]> Date: Wed Apr 28 22:53:15 2021 +0200 Add a timestamp + thread id to Darwin logging (#6354) commit 1d3204296aca9196c04ce50a45e5bd13c1dc6a11 Author: Pankaj Garg <[email protected]> Date: Wed Apr 28 12:44:26 2021 -0700 Cannot check size of pre-encrypted message payload (#6351) commit 6b0a6debc63d85e951cda1f49f507d6ef1f478a9 Author: Vincent Coubard <[email protected]> Date: Wed Apr 28 20:06:25 2021 +0100 Add Mbed os docker image (#6352) * Update base docker file to include CMake 3.19.3 * Add docker image to build with Mbed OS. * Update chip-build-vscode image to import Mbed OS requirements. Three things are imported in the docker image: - GCC - Mbed OS - OpenOCD commit c0fbc3382486964b153bd0007ab9a14e49f7cfdc Author: yunhanw-google <[email protected]> Date: Wed Apr 28 10:36:53 2021 -0700 descrease clusterinfo pool (#6353) Summary of Changes: -- Decrease clusterInfo pool from 256 to 8, currently we only have one read handler, and don't need large pool. when we have multiple read or subscription handler on particular device, vendor can override the pool maximum value. commit 6adb86507f73c242362b78798918fda168fd47da Author: Lazar Kovacic <[email protected]> Date: Wed Apr 28 19:33:53 2021 +0200 Update TV example app clusters (#6060) Problem TV example app does not support TV clusters. Summary of Changes - Updated all TV example app clusters that will be used by the application - Updated chip tool zap, to enable sending of CHIP commands through chip tool - Updated chip controller zap, to enable sending of CHIP commands through chip tool Note Everything which is not supported by the CHIP framework currently is noted with TODO comment. commit b92ae2222a1c8879dca41721bcc4cef0970d8e43 Author: Vivien Nicolas <[email protected]> Date: Wed Apr 28 18:04:29 2021 +0200 Print the uncommited changes from ZAP templates before failing the job in zap_templates.yaml (#6336) commit 388b3c053834b8d894ecdd357e4a9a6a2f6e1c8f Author: yunhanw-google <[email protected]> Date: Wed Apr 28 09:04:15 2021 -0700 remove extra exchangeContext cleanup (#6334) Summary of Changes: -- Reset would do exchange cleanup, remove extra ClearExistingExchangeContext commit d4da2fa535eb9de15fc780ffc616f2444667e0cd Author: Andrei Litvin <[email protected]> Date: Wed Apr 28 11:25:25 2021 -0400 Update init params for controller to include ble layer (#6315) * Update init parameters for controller and commisioner, change CPP references to use the new format. Make android pass in the BLE layer * Update iOS arguments to controller init * Revert unintentional changes in xml/settings files commit 1631101d6797dc7181d8912b2ce591861c17b573 Author: jrhees-cae <[email protected]> Date: Wed Apr 28 09:24:47 2021 -0600 Bugfix: Linux KeyValueStoreManagerImpl::_Get was returning (#6327) CHIP_ERROR_BUFFER_TOO_SMALL when sufficient buffer was provided. Fixes regression introduced by #5620 commit e9565573f442faacb42cc281b20b8ecc79c0dd8d Author: Zang MingJie <[email protected]> Date: Wed Apr 28 22:54:56 2021 +0800 Fix CI (#6348) /Users/runner/work/connectedhomeip/connectedhomeip/src/system/SystemPacketBuffer.h:670:20: warning: parameter 'aPacket' not found in the function declaration [-Wdocumentation] * @param[in] aPacket - the packet buffer handle to check. ^~~~~~~ commit dcc99248ab28831c6b6598ca849eb4cf72aa7fff Author: Vivien Nicolas <[email protected]> Date: Wed Apr 28 16:54:03 2021 +0200 Replace ChipLogProgress by ChipLogDetail in src/messaging (#6337) commit 692a4a224997e53ff33a2b4c0baeb263918ec869 Author: Vivien Nicolas <[email protected]> Date: Wed Apr 28 16:53:44 2021 +0200 Zap feature map (#6338) * Add FeatureMap attribute * Update gen/ folders commit b894330ada57be12073788e64b85bab6ba5ab3f1 Author: Vivien Nicolas <[email protected]> Date: Wed Apr 28 16:53:03 2021 +0200 Run command failure: CHIP Error 4003 (0x00000FA3): Incorrect state when running 'chip-tool discover resolve' (#6339) commit def377ade4609e118ec8effa4e82a9763d114f29 Author: Song Guo <[email protected]> Date: Wed Apr 28 22:29:40 2021 +0800 [cirque] Disable EchoTest in cirque (#6330) commit f5821552df4a6cfbc6475e65e7f2b535104ae4a3 Author: yunhanw-google <[email protected]> Date: Wed Apr 28 05:43:51 2021 -0700 Add IM/Ember Read/Writer Interface and attribute read for IM (#6214) Summary of Changes: -- Add initial IM read attribute implementation and ember read/write interface so that read client can send IM read request with attribute path, interaction model engine receive this request and ask reporting engine generate the corresponding interested attributes and send it back via read hander. -- Add unit and cirque integration test commit e2b2f30b01d13838481d08f79b343a5aeaca91d9 Author: Michael Spang <[email protected]> Date: Tue Apr 27 22:29:37 2021 -0400 Make sure to relink executables after linker script changes (#6301) The linker script is passed in ldflags, which isn't tracked automatically, so incremental builds don't re-trigger linking correctly when it changes. Add it to inputs to force a re-link if the timestamp changes. commit 5886ff7434ef2ee42564457843ede69c1f17ff11 Author: Justin Wood <[email protected]> Date: Tue Apr 27 19:07:50 2021 -0700 Update examples-k32w.yaml commit 0f92c5f0e67eb701455e34d4f0e8a752b369e90e Author: Vivien Nicolas <[email protected]> Date: Wed Apr 28 03:53:48 2021 +0200 Add initial definition for the Switch Cluster and activate it for some configurations (#6313) * Add definition for the Switch Cluster * Activate the Switch Cluster in some configurations * Update gen/ folder * Revert chip_client_clusters by chip_server_clusters for the python specific templates at the moment * Update the python generated file commit 7af4eb8851735fd6ff37c4c0da125f2dcb955af5 Author: Zang MingJie <[email protected]> Date: Wed Apr 28 09:43:49 2021 +0800 Upload mapfile for future memory analysis (#6228) commit 30e24da329e95bc757aa7e8cef41317aeca660d4 Author: Pankaj Garg <[email protected]> Date: Tue Apr 27 14:51:38 2021 -0700 Disable CRMP when PASE uses BLE (#6317) commit a2b3d1db2bf21f707ac7ffdbd9b26a217084a376 Author: Vivien Nicolas <[email protected]> Date: Tue Apr 27 23:16:55 2021 +0200 Add OnNetwork pairing command to chip-tool (#6309) commit b86e9a47c3a4706987b545bcc4a4db4333ec5b67 Author: Vivien Nicolas <[email protected]> Date: Tue Apr 27 22:40:35 2021 +0200 Move CHIPClusters.* to gen/ folders (#6284) * Move CHIPClusters.* to gen/ folders * Update gen/ folders commit ffa29ec07720f0a2841282eef7a444ba755a7117 Author: Sagar Dhawan <[email protected]> Date: Tue Apr 27 13:03:06 2021 -0700 [Darwin] Fix a crash when a nil device is passed to a cluster on init (#6276) * [Darwin] Fix a crash when a nil device is passed to a cluster on init * Update generated files * Mark getDevice as nullable since it can return nil commit d617fde3a4d423ce34d291aa1d54bd1a3035ea6a Author: yunhanw-google <[email protected]> Date: Tue Apr 27 12:44:42 2021 -0700 Fix wrong IM statusCode container (#6302) Problems: -- IM status code in command data element has been wrapped with one extra container Summary of Changes: -- Remove one extra container for IM status code in command data element via adding one additional parameter, isStatusCode in PrepareCommand and FinishCommand commit b80af57999577e104cfa8e0e0300b453c20ca15c Author: Vivien Nicolas <[email protected]> Date: Tue Apr 27 21:18:12 2021 +0200 Zap update repo (#6314) * Update ZAP repo * Replace atomic.discrete by atomic.isDiscrete to accomodate ZAP update * Update gen/ folder with the latest ZAP update commit a5b70506784faa085dad26226ca9703ea63f7c34 Author: Yufeng Wang <[email protected]> Date: Tue Apr 27 12:12:24 2021 -0700 [shell] Add send cmd to allow send any CHIP message for testing (#6239) * Add send cmd for testing * Enable ping/send commands only on CHIP controller * Move global varibles to common.cpp * Enable ping and send commands on accessory side * Address review comments commit a79e3bd8887038eb61e0d93d46a833a7d0f1d3e3 Author: Jiacheng Guo <[email protected]> Date: Wed Apr 28 03:11:52 2021 +0800 [python] make python-dev-ctrl less verbose (#6277) The current python-dev-ctrl are continuously printing heartbeat packets, making the output too verbose and hard to use. commit 85f0bc2667f1c23f311eaed8e54744d33d753d84 Author: Pankaj Garg <[email protected]> Date: Tue Apr 27 11:57:01 2021 -0700 Use exchange to send CASE session establishment messages (#6271) * Send CASE messages using exchange * cleanup * enable CASESession unit test * fix test * remove local node ID * Address review comments * Fix test failures * Update src/protocols/secure_channel/CASESession.cpp Co-authored-by: Boris Zbarsky <[email protected]> Co-authored-by: Boris Zbarsky <[email protected]> commit 4e048492f45ee45f40fb6e2b33a6f4f784bad4a0 Author: Song Guo <[email protected]> Date: Tue Apr 27 22:32:12 2021 +0800 [cirque] Re-enable cirque test w/o im tests (#6193) * [cirque] Re-enable cirque test w/o im tests * Remove OnOff cluster test * Fix race in command callbacks commit 14e0ee241759994614a22678ec573db4f6408a8a Author: jmartinez-silabs <[email protected]> Date: Tue Apr 27 10:23:49 2021 -0400 Add SRP to EFR32 examples (#6268) * Add client srp feature to EFR examples Fix deadlock situation between Thread_Lwip function UpdateThreadInterface and _SetupSrpHost when the thread IP address changes trigger new mdns advertissment after setupSrpHost has completed to avoid duplicate error. * restyle * Revert change on chipEvent thread advertise() trigger. Use addresse change and remove the event that was added kSrpClientRequestComplete commit 3daadfe26ac96e5b12266666455d88b0e8d240f4 Author: PetruSicoe <[email protected]> Date: Mon Apr 26 23:31:07 2021 +0300 Memory allocation refactoring (#5772) * Memory allocation refactoring Memory allocation wrapper functions Add memory allocation wrapper functions which enable vendors implement their specific alloc functions for their platform versions In case there is no such implementation, the normal libc function will be called CHIPPlatformMemory funneling Redirect otPlatCAlloc and otPlatFree from K32W/ThreadStackManagerImpl to CHIPPlatformMemory Same applies to mbedtls_platform_set_calloc_free from the main for lock-app/k32w and lighting-app/k32w, so that they funnel to CHIPPlatformMemory Signed-off-by: PetruSicoe <[email protected]> * Restyled by clang-format * Restyled by gn * Remove include "FreeRTOS.h" from src/lib/support/CHIPMem-Malloc.cpp No function from FreeRTOS.h is called inside CHIPMem-Malloc.cpp, so the include line is unnecessary * Follow up refactoring memory allocation Remove all WEAK symbols from common code and added wrap implementation to the specific platform version Signed-off-by: PetruSicoe <[email protected]> * Remove compilation bug and implement secure __wrap__realloc Make sure that memcpy in realloc does not copy more bytes from source than necessary * Restyled by clang-format * Restyled by gn * Implement malloc_usable_size() version for heap_4 The function xPortMallocUsableSize from Memconfig.cpp returns the size of an allocated block and is compatible with heap_4.c, unlike the gcc/glibc function malloc_usable_size Remove unnecessary #include and #define lines from CHIPMem-Malloc Signed-off-by: PetruSicoe <[email protected]> * Restyled by clang-format * Delete Memconfig.h and remove unnecessary include lines in BUILD.gn The declarations inside Memconfig.h were unnecessary The file examples/platform/k32w/app/support/BUILD.gn had unnecessary #include lines Add comment lines to Memconfig.cpp Signed-off-by: PetruSicoe <[email protected]> * Restyled by clang-format * Restyled by gn * Add comments in Memconfig.cpp and remove unnecessary lines in BUILD.gn Remove pigweed import line from examples/platform/k32w/app/support/BUILD.gn Signed-off-by: PetruSicoe <[email protected]> * Restyled by clang-format * Fix realloc function in Memconfig.cpp Modify memset line. There is no need to zero the part of new_ptr that is going to be overwritten Signed-off-by: PetruSicoe <[email protected]> * Restyled by clang-format * Fix realloc function in Memconfig.cpp Fix new_ptr leak problem and new_ptr is allocated only when new_ptr size is bigger than old_ptr size Signed-off-by: PetruSicoe <[email protected]> * Restyled by clang-format Co-authored-by: Restyled.io <[email protected]> commit 9e282880ae84168e0937c12abca853bcb71d9e70 Author: Michael Spang <[email protected]> Date: Mon Apr 26 15:54:03 2021 -0400 Read the ZAP file to determine which directories to compile (#5885) This parses the ZAP file, enumerates enabled clusters, and enables the appropriate directories in src/app/clusters. Some of the directories in src/app/clusters are dead code and do not even compile. Remove those. Based on #5882 commit 6a0533d1b8d3123ef1f84fbb5ce26e2ad2122e07 Author: sujaygkulkarni-nxp <[email protected]> Date: Mon Apr 26 19:00:05 2021 +0530 Added ECC Nist256 support in crypto HSM layer (#6198) * Added ECC Nist256 support in crypto HSM layer * ran restyler * build fix * restyler diff * fix - review comments * restyled * fix - review comments * fix - review comments * restyled * review comments - fix * restyled Co-authored-by: Jagadish B E <[email protected]> commit fd7394dc0b95684619cbd1eb0e5546a83c37c878 Author: Vivien Nicolas <[email protected]> Date: Mon Apr 26 15:27:01 2021 +0200 Zap ci pending changes (#5459) * Replace the various scripts/tools/zap_generate*.sh files by a single python script * Ensure there is no pending ZAP changes in CI * Update zap-templates documentation * Update src/app/zap-templates/README.md Co-authored-by: Łukasz Duda <[email protected]> * Update src/app/zap-templates/README.md Co-authored-by: Łukasz Duda <[email protected]> * Update src/app/zap-templates/README.md Co-authored-by: Łukasz Duda <[email protected]> Co-authored-by: Justin Wood <[email protected]> Co-authored-by: Łukasz Duda <[email protected]> commit 820d5b2b1ba44a66da682d572d4732bd5aee18ec Author: Kamil Kasperczyk <[email protected]> Date: Mon Apr 26 14:35:56 2021 +0200 Changed QR Code parser to use Base-38 alphabet. (#6132) Base-41 alphabet introduced in https://github.com/project-chip/connectedhomeip/pull/6001 was based on out of date spec info. Currently QR Code should be generated using Base-38 alphabet containing 0-9A-Z-. characters. By the way this change means removing space character from alphabet and possibility to remove temporary fix of replacing space characters with underscores when encoding QR code to the NFC tag payload. * Changed alphabet according to spec. * Renamed all base41 modules and methods to base38. * Removed replacing spaces with underscores when generating NFC tag payload in the firmware code. * Removed replacing underscores with spaces in the Android CHIPTool code. * Changed test vectors in the QR Code unit tests to match new alphabet. commit 2de15f4169ac2d75f905bc5fa211dcf08bc3d27b Author: Michael Spang <[email protected]> Date: Sun Apr 25 14:58:48 2021 -0400 Pull pigweed (#6270) In particular, this fixes bootstrapping in VS code. commit 47da4b0fcb7ca9f031794e7ff07bda239090a384 Author: Pankaj Garg <[email protected]> Date: Fri Apr 23 17:54:34 2021 -0700 Resurrect TestPASESession unit test (#6266) * Resurrect TestPASESession unit test * fix build error, and address review comments * restyled * add documentation, and address review comments * address comments commit 3cbdbcc6f35cedd6f974e3bafcf3c6e316b040d8 Author: Yufeng Wang <[email protected]> Date: Fri Apr 23 15:06:48 2021 -0700 Remove duplicated way to set flag kFlagResponseExpected (#6245) * Remove duplicated way to set flag kFlagResponseExpected * Add documentation for the APIs moved to private * Update src/messaging/ExchangeContext.h Co-authored-by: Boris Zbarsky <[email protected]> * Update src/messaging/ExchangeContext.h Co-authored-by: Boris Zbarsky <[email protected]> * Update src/messaging/ExchangeContext.h Co-authored-by: Boris Zbarsky <[email protected]> Co-authored-by: Boris Zbarsky <[email protected]> commit a08f82697b88490fb83ba1f008b7056c4ab7beb2 Author: Michael Spang <[email protected]> Date: Fri Apr 23 18:06:20 2021 -0400 Reduce the number of include roots (#6246) There seems to be little agreement about where to root #includes. We should not use every possible convention for this. Reduce the number of include roots by removing those that add little value. In particular this decreases the number of "bare" includes with no directory component. It is beneficial for readability to leave a clue about which component the header belongs to in the path. It also removes some cases where headers with very generic names are included with quotes and shadowed by local headers in some directories, e.g. "config.h" and "common.h". This does not completely fix the inconsistencies, but fixes the low hanging fruit. Remaining issues include: - We still include relative to both src/ and src/lib/ (does "lib" still make sense ? Its contents don't correspond to libCHIP's) - src/platform/ is still the only directory that uses src/include/ - "project configs" are typically included by adding include_dirs rather than setting *_PROJECT_CONFIG_INCLUDE relative to a common root commit 750d1ee1351ec7e227f3cda48f86b2efd03a9af5 Author: Pankaj Garg <[email protected]> Date: Fri Apr 23 11:50:06 2021 -0700 Decouple channel API from exchange manager using delegate (#6237) * Decouple channel API from exchange manager using delegate * address review comments commit 40a536cadaa8aa30b29f84da8d1173468f97fb5d Author: Jiacheng Guo <[email protected]> Date: Fri Apr 23 23:58:24 2021 +0800 [esp32] Added CHIP esp32 shell for testing purposes (#6253) * Added gn option for linking against shell library * Added chip-shell project for esp32 commit 6b853ec0aed812d9a5adc1ca4e40505907619fd5 Author: Timothy Maes <[email protected]> Date: Fri Apr 23 17:49:09 2021 +0200 Apply size optimizations (#6261) * Lower NVM area reserved * Disable Detail logging * Remove TCP/RAW from inet and LWIP * Restyled commit bf7b53d2ddaa810e1ba18dbe52e2ecb62793616b Author: Vivien Nicolas <[email protected]> Date: Fri Apr 23 15:52:32 2021 +0200 [M5Stack] Add a screen to control the OnOff cluster (#6256) commit 6de1e0a2e4c50dd01c33356cb91848f7f1946f04 Author: lucicop <[email protected]> Date: Fri Apr 23 16:24:26 2021 +0300 Avoid possible race condition in restart of advertisement with new interval (#6224) * Sync advertising start to confirmation that previous advertising has stopped * Restyled by whitespace Co-authored-by: Restyled.io <[email protected]> commit e52a08e657ca40e77b1506fccc9ed50dd905c154 Author: Pankaj Garg <[email protected]> Date: Fri Apr 23 06:24:14 2021 -0700 Return correct error code when sending large ping (#6244) commit 787c2dadacefb3cb57fcf089b1e22cc009082997 Author: Song Guo <[email protected]> Date: Fri Apr 23 21:23:48 2021 +0800 [examples] Extract common Linux platform app start up code (#6222) * [examples] Extract common Linux platform app start up code * Restyled by gn * Use LogDeviceConfig + PrintOnboardingCodes * Move PW_RPC_ENABLED back to program * Add PW_RPC_ENABLED * Fix Linux build Co-authored-by: Restyled.io <[email protected]> commit 1278b211d1cf8e4bd64aa6e90f7a4d8ea3ed51b8 Author: Michael Spang <[email protected]> Date: Fri Apr 23 08:56:25 2021 -0400 Remove execute bit from sources (#6247) commit 441350ae8e6da4c12305d635e1da035693d69a48 Author: Michael Spang <[email protected]> Date: Fri Apr 23 08:55:18 2021 -0400 Fix typo in gn_build.sh (#6248) "extra_args" is misspelled as "extra_arg" when generating out/release. commit 5f8c6f7874c82fb24c5d95e03c279eaf633895bd Author: Kevin Schoedel <[email protected]> Date: Fri Apr 23 00:10:55 2021 -0400 Improvements to scripts/tools/memory/diffsyms.py (#6236) #### Summary of Changes - Fixed a bug causing symbols to be skipped. - Sort by size change rather than (mangled) symbol name. - Report absent symbols as size 0 rather than NaN. - Remove trailing blanks from text report format. - Enable selection options. commit 5b9f9dc66e627241659f57936cbcb9455254a289 Author: Zang MingJie <[email protected]> Date: Fri Apr 23 02:37:13 2021 +0800 Increase limit of max number test suits (#6229) commit 0a9b67685ebc9ed849885ac02cdf976aab54e719 Author: doru91 <[email protected]> Date: Thu Apr 22 19:25:59 2021 +0300 [K32W] Update Dockerfile to MR3 of the SDK (#6226) * [K32W] Update Dockerfile to MR3 of the SDK Signed-off-by: Doru Gucea <[email protected]> * [K32W] Fix typo Signed-off-by: Doru Gucea <[email protected]> commit 85c5e858ffa3e763524d970d28f741e6d62e0fca Author: Pankaj Garg <[email protected]> Date: Thu Apr 22 09:23:42 2021 -0700 Remove unnecessary code from RendezvousSession class (#6213) commit 0719dade07b462263eb96c75558f82bdd83bf2dc Author: Damian Królik <[email protected]> Date: Thu Apr 22 17:54:58 2021 +0200 [python] Process responses to Network Commissioning Cluster commands (#6205) * [python] Process responses to Network Commissioning Cluster commands ZCL code for Python CHIP Controller doesn't process responses to Network Commissioning Cluster commands as the cluster is disabled in the ZAP configuration. Enable it. * Re-gen ZCL code commit 6a6994e1fc01f156db1abd129241a6272d16f1a4 Author: Damian Królik <[email protected]> Date: Thu Apr 22 17:46:07 2021 +0200 [dns-sd] Fix operational advertising (#6227) After #5337 has been merged, operational advertising no longer works since at the time the advertising is started nodeID stored in the admin table is not yet initialized. Start operational advertising when the device is assigned an IP address. In the future, e2e commissioning flow will probably take care of that in a different way. commit 5d6030137e1feea0d91bb50b4eee2b42c528f31c Author: shana-apple <[email protected]> Date: Thu Apr 22 07:02:15 2021 +0200 UI in the iOS demo app to support Fabric Management (#6185) * UI in the iOS demo app to support Fabric Management * Restyled by whitespace * Restyled by clang-format Co-authored-by: Restyled.io <[email protected]> commit 20ac5e12576882048b21af38874ad251e4057d5e Author: Yufeng Wang <[email protected]> Date: Wed Apr 21 21:57:06 2021 -0700 Remove SetFabric command from General Commissioning Cluster to align with 0.7 spec (#6173) * Update general commisioning cluster to align with 0.7 spec * Update the build targets for general commisioning cluster * Re-generate code with codegen commit ba9c503e67068aab87683f2ab8ef3860c5c058fc Author: Evgeny Margolis <[email protected]> Date: Wed Apr 21 21:47:27 2021 -0700 Added Support for CHIP Certificate Future Extension. (#6192) -- Added new test cases to verify proper certificate processing and conversion when future-extension is present. Also, added test case to verify that critical future-extension validation fails. -- Added new helper functions to the ASN1Reader and ASN1Writer classes. commit 68a48d4262dc0e87403d35def61aaa4c1e8ed337 Author: Thomas Lykkeberg <[email protected]> Date: Thu Apr 22 06:27:41 2021 +0200 Added PUMP_CONFIG_CONTROL_CLUSTER to controller and chip-tool (#6200) commit 1d4726c8bbdbe1877a62c1b2a5349db5d0159a6b Author: Zang MingJie <[email protected]> Date: Thu Apr 22 06:30:00 2021 +0800 Release all exchange contexts when shutting down the exchange manager (#5692) * Release all exchange contexts when shutting down the exchange manager There is also an on-going work of replacing raw pointer of ExchangeContext with a unique_ptr like handle. MessageCounter tests are broken due to incompleted implementation, I'll fix the test in the following up message counter PR. * Force close ExchangeContexts when shutting down the ExchangeManager * Remove useless comment * Crash when ExchangeContext is leaked commit 27a4c9a80b95301453d625b3c47a7b807be334dc Author: Yufeng Wang <[email protected]> Date: Wed Apr 21 14:53:19 2021 -0700 Make alloc/freea/reset functions private in ExchangeContext to prevent misuse (#6187) commit 0e9ec10bcf7c9b6a5433174fb8a07d8578201b7c Author: Seth Rickard <[email protected]> Date: Wed Apr 21 13:55:43 2021 -0500 [cc13x2x7_26x2x7] Fix BLE Provisioning issues for TE#2 (#6152) * Fix BLE Provisioning issues for TE#2 * Adds default SLAAC configuration to enable final step of BLE provisioning flow with GUA assignment. * Removes unused OpenThread configuration in platform_includes * Addresses runtime issues with BLE provisioning Co-Authored-by: Alexander D'Abreu <[email protected]> * Restyled by gn * Restyled by prettier-markdown * fix ccs programming markdown formatting Code text was not properly quoted. * Restyled by prettier-markdown Co-authored-by: Alexander D'Abreu <[email protected]> Co-authored-by: Restyled.io <[email protected]> commit 60b896d558fa42801b2fd71930fe3569f81c193a Author: Song Guo <[email protected]> Date: Thu Apr 22 00:56:05 2021 +0800 [im] Add command obj to all cluster callbacks (#5994) * [im] Add command object to ZCL callbacks * apCommandIbj -> commandObj * Fix new added clusters * Run Codegen * Fix dirty merge commit 7d199169d49af989f984111642ef01857d7e4484 Author: Vivien Nicolas <[email protected]> Date: Wed Apr 21 18:42:18 2021 +0200 Crash in -[BleConnection start] (#6169) commit 8408fe1d6a69876848bda5a784fc94a501ea4662 Author: Vivien Nicolas <[email protected]> Date: Wed Apr 21 18:42:11 2021 +0200 Use endpoint 0 instead of 1 in iOS ChipTool for Network Provisioning, Echo and Bindings (#6165) commit 125d1a2bdb5c474626fef7f55c553037a5db057f Author: Song Guo <[email protected]> Date: Thu Apr 22 00:40:11 2021 +0800 [python] Update document of python device controller (#6197) commit 87142e056b579286b851b266fd855e93d103191d Author: Song Guo <[email protected]> Date: Wed Apr 21 09:00:00 2021 +0800 [ble/rendezvous] Decouple BLE transport from Rendezvous (#5337) * [ble/rendezvous] Decouple BLE transport from Rendezvous * Move src/transport/BLE.cpp -> src/transport/raw/BLE.cpp * Update transport/raw/BLE.cpp * Various cleanup * Fix doxygen * Fix Android build * Lift CHIP Task Stack Size on ESP32 to 6144B * Put BleLayerDelegate to seperate file * Address comments * Fix python package * Reduce use of public members and void * * Code cleanup * Remove HandleSecureMessage * Add check for BLE Layer * Cleanup BLEBase * Add blelayer->Close * Remove BleLayerObject * Address comments * Update README for chip-device-ctrl * Remove BLE in SessionEstablishmentExchangeDispatch * Fix merge error * Address comments commit 982f8a43d1393a60e25e0f504df1701c446a1971 Author: yunhanw-google <[email protected]> Date: Tue Apr 20 17:59:22 2021 -0700 Add IM AttributePahParams CommandPathParams CommandPathParams (#6149) -- Move/Rename CommandPathParams in separate header -- Add AttributePahParams, EventPathParams, ClusterInfo to separate header so that other IM can direclty include this and avoid forward declarations and header include loop -- run zap codegen to update corresponding change commit 05df3a1bbd7e9907505bd890a95b1032cba6fd49 Author: Justin Wood <[email protected]> Date: Tue Apr 20 15:00:38 2021 -0700 Adding Darwin focused CI. Resolves: #506 (#6168) * Adding darwin tests * Removing these commit b79a9bf0513662e2b8f8e38805f8294006066d68 Author: Pankaj Garg <[email protected]> Date: Tue Apr 20 13:53:27 2021 -0700 Use spec defined max application message size (#6174) commit 69e1f35c6ccf2259e3284f44edbb48fbdcb220e4 Author: Song Guo <[email protected]> Date: Wed Apr 21 02:18:02 2021 +0800 [cirque] Add cirque test for Python device controller (#5851) * [cirque] Add cirque test for Python device controller (#5317) * [cirque] Add mobile device test for testing python binding * special check for linux * Add check for thread extpanid * Fix ChipDeviceCtrl issue * Fix linux log issue * Add catchsegv * Set timeout to 15s for joining thread network * Address comments * Removed sleep * Add wait_for_device_output * Fix setup pincode * Fix * Reduce remote shell execute Co-authored-by: yunhanw-google <[email protected]> commit 2265b34f59030e4039ab4d0aa4ac56901fc8c6f4 Author: shana-apple <[email protected]> Date: Tue Apr 20 19:55:30 2021 +0200 Implement Operational Credentials Cluster for initial Fabric support (#6096) * Initial implementation of OpCreds cluster * Enable opCreds cluster in zap files * Regen all files commit 3fcf70bc92e86cf97c12dbc7b88baa0d95bf2fb8 Author: shana-apple <[email protected]> Date: Tue Apr 20 18:45:17 2021 +0200 uint64_t support in emberAfFillExternalBuffer (#6100) commit 478357157414fb8b6bae0c7b04ac3c5860d4197a Author: Łukasz Duda <[email protected]> Date: Tue Apr 20 17:01:03 2021 +0200 [ble] update Service Data UUID (#6163) commit 7702198932ca70f96710a1743aac426a06723838 Author: Vivien Nicolas <[email protected]> Date: Tue Apr 20 16:57:05 2021 +0200 Revert "Fix CheckExchangeMessages crashes when malicious packet is sent (#6120)" (#6164) This reverts commit eeff872fde187e829685a662b8a97f673b924a84. commit 7768fc44a3963dd4529ba11353b5714eee7f74f5 Author: Vivien Nicolas <[email protected]> Date: Tue Apr 20 16:56:11 2021 +0200 chip_bypass_rendezvous=true does not work anymore after #6065 (#6160) commit 185e44c39c9b0691c36b717b4b2470ef00a4f8d6 Author: Paul Zander <[email protected]> Date: Tue Apr 20 16:07:08 2021 +0200 Build error when compiling with define BIGENDIAN_CPU set (#6143) (#6158) commit c5a7492b3e799b0445a93b53f899e1b94b7aceed Author: Vivien Nicolas <[email protected]> Date: Tue Apr 20 16:06:31 2021 +0200 iOS ChipTool does not compile: No visible @interface for 'NSData' declares the selector 'dataUsingEncoding:' (#6162) commit e6c0550d7c668a73141909973f537579a4d726e2 Author: Vivien Nicolas <[email protected]> Date: Tue Apr 20 16:05:54 2021 +0200 ZAP generation fails after #6135 for src/controller and src/darwin (#6161) commit 1e9f1a00fcfe50fc9eaa411473d5c1c97f11259a Author: Yufeng Wang <[email protected]> Date: Tue Apr 20 00:01:42 2021 -0700 Use Network Provisioning for both chip-tool and ChipTool iOS (#5990) * Use Network Provisioning for both chip-tool and ChipTool iOS * Set endpoint starts from 0 commit 560530e600663a4bd30177ec613415567da97133 Author: Damian Królik <[email protected]> Date: Tue Apr 20 07:11:54 2021 +0200 [zcl] Enable optional Basic Cluster attributes for controller apps (#6135) * [zcl] Enable optional Basic Cluster attributes for controller apps Controller apps should provide support for reading Basic Cluster attributes marked as optional event though they may not be available on a specific device. * [zcl] Re-generate common and controller code commit 0cf0147ea81a53a01f23dd5b7addab9c1056aa66 Author: Vivien Nicolas <[email protected]> Date: Tue Apr 20 05:29:30 2021 +0200 Build failure on some platforms because of an unused variable and some conversion issues (#6154) commit 2f16138ecef978a6cdfe616cadc75281e111e1c7 Author: Markus Becker <[email protected]> Date: Tue Apr 20 00:42:12 2021 +0200 chip-device-ctrl: add ability to configure reporting (subscribe) (#6138) Currently aligned with SiLabs codebase, not the CHIP spec. commit e83b3066135f323d87ad49b1cd1f45a350f00c3f Author: Vivien Nicolas <[email protected]> Date: Tue Apr 20 00:24:32 2021 +0200 CHIPSetupPayloadParserTests fails (#6140) commit a7fefd5145291f02f537a663a73da1d7b45595a0 Author: lucicop <[email protected]> Date: Tue Apr 20 01:23:37 2021 +0300 Change default setup pin code from 12345678 to 20202021 (#6133) commit f54ea20ce977dd70ba2fdcbc34e19780e9e46250 Author: Sweety <[email protected]> Date: Tue Apr 20 02:53:35 2021 +0530 ESP32: Advertisement stop error for slow advertisement timeout (#6129) commit ac89c24d6da9a819130252ea7ac28611ed853c95 Author: Sagar Dhawan <[email protected]> Date: Mon Apr 19 13:17:56 2021 -0700 [M5Stack] Add a Screen to control the Door Lock Cluster (#6113) commit 2d43a7f26f8b217e8bc4440cc6e2526602d1a7cf Author: Yufeng Wang <[email protected]> Date: Mon Apr 19 11:10:27 2021 -0700 Optimize memory usage by refactoring ExchangeContext (#5942) * Optimize memory usage by refactoring ExchangeContext * Remove challenge array from ExchangeContext * Remove mReliableMessageMgr from ReliableMessageContext * Remove shared configuration fields from ReliableMessageProtocolConfig * Rebase to master commit c0ad199abd3e797581a79208bcf006c1e0b1fe68 Author: rgoliver <[email protected]> Date: Mon Apr 19 14:09:55 2021 -0400 Add presubmit checks for RPCs (#6056) Add presubmit checks for RPC lighting app example of linux, EFR32, NRF32 commit eeff872fde187e829685a662b8a97f673b924a84 Author: Yufeng Wang <[email protected]> Date: Mon Apr 19 11:09:35 2021 -0700 Fix CheckExchangeMessages crashes when malicious packet is sent (#6120) commit d0e0b543c0073273df40361dcf41e3b3fc9b48b7 Author: Song Guo <[email protected]> Date: Tue Apr 20 02:09:25 2021 +0800 [im] Update codegen for #6019 (#6119) * [controller] Update codegen for Chip Device Controller after #6019 * Run Codegen commit f62e23875b0b7c9b594ce794365c20cb76cd03e7 Author: Kevin Schoedel <[email protected]> Date: Mon Apr 19 14:08:50 2021 -0400 Replace the EndPoint::PrepareIO() functions with stored state (#6109) * Replace the EndPoint::PrepareIO() functions with stored state #### Problem Currently, the socket-based networking implementation calls `PrepareIO()` on each endpoint to determine file descriptor sets for `select()`. This usually does redundant work (since the conditions only change on endpoint state changes) and is not usable by event-based interfaces (e.g. epoll/kqueue and libraries like libevent/libev/libuv) – see issue #5556 _rework system layer event loop_. #### Summary of Changes - Maintain the required flags in an endpoint member, `mRequestIO`, in place of recalculating them in `PrepareIO()`. (The points where `mRequestIO` is changed are the points where an event-based interface would be invoked.) - For UDP and Raw endpoints, pass callbacks to `Listen()` rather than setting members separately, to avoid any possibility of races in a less synchronous environment. Part of issue #5556 _rework system layer event loop_. * fix TestInetLayerMulticast build commit d3ac5292cf0651e224249e122138f4f2cab8f5ac Author: Damian Królik <[email protected]> Date: Mon Apr 19 20:08:32 2021 +0200 [zcl] Log string attributes when parsing ZCL responses (#6126) * [zcl] Log string attributes when parsing ZCL responses ZCL client callbacks log only lengths of ZCL attributes of string types. Add a function to log the entire value. * Re-generate ZCL code commit e09e11b04dc23915b6e735b86453895557fa740c Author: Evgeny Margolis <[email protected]> Date: Mon Apr 19 10:57:13 2021 -0700 Updated Certificate Extensions Encoding to Match the Spec. (#6015) -- CHIP certificate extensions should be encoded as TLV List -- Updated extension tags commit ca83379ca6034a33ee623cb8c347b54a1331f001 Author: lucicop <[email protected]> Date: Mon Apr 19 20:22:21 2021 +0300 Remove remnant Thread over BLE flags/API (#6125) * Removing code under OPENTHREAD_CONFIG_ENABLE_TOBLE flag, which is deprecated * Remove remnant Thread over BLE APIs * Remove API from Zephyr ThreadStackManager too commit f8043b6c0d88929cd8c294d03cb43925a5b8a9ae Author: Andrei Litvin <[email protected]> Date: Mon Apr 19 12:20:34 2021 -0400 MinMdns discovery implementation and chip-repl bindings (#5907) * Implementation of minmdns node resolution and python bindings. Changes: - MinMdns resolver implementation - Added unit tests for ServiceNaming support - Centralized service naming parsing (with unit tests) - Added a PeerId class to represent fabric + node id pairs Tested: manual chip-repl test. This works: In [1]: import chip.discovery In [2]: print(chip.discovery.FindAddress(0, 0xBC5C01)) * Fix compile errors * Add missing ( * Add TODO regarding invalid interface id * Fix compilation for node id getting * Remove misplaced comment * Address code review comments * Remove unused cpp source * Update merge error for node/fabric id reading * Revert hte qpg sdk change commit 3bb3bb9f474cd76933dc5585d0b93f70fa9b783c Author: Yakun Xu <[email protected]> Date: Mon Apr 19 22:45:42 2021 +0800 [Thread] use operational dataset (#5415) commit 994e13c477de20c6cbc62695a80208b53538ee62 Author: Yufeng Wang <[email protected]> Date: Mon Apr 19 07:30:26 2021 -0700 Adjust PBUF_POOL_SIZE to the minimal size to run CHIP stack (#6018) * [QPG6100] Adjust PBUF_POOL_SIZE to the minimal size to allow CHIP stack work * Remove unused PBUF config flags * Change the PBUF size to fit within minimal IPv6 MTU commit 88780da9141b6bb4476f476fdd736590328378e0 Author: Kevin Schoedel <[email protected]> Date: Sat Apr 17 23:23:14 2021 -0400 Remove `exit: return` idiom from src/inet and src/transport (#6025) * Remove `exit: return` idiom from src/inet and src/transport #### Problem The `Exit` group of error-handling macros inhibit scoping, and are unnecessary when there is no cleanup at the `exit:` label. #### Summary of Changes - Remove `exit: return` idiom from src/lib, replacing `Exit` macros with corresponding `Return` macros. - Incidentally fixed a bug in `RawEndPoint::BindInterface` and `UDPEndPoint::BindInterface` that could leave the LwIP lock held by calling `SuccessOrExit()` within a locked section. commit 381440f953561b75c4951a86f7fcd01da09e28f1 Author: jmartinez-silabs <[email protected]> Date: Sat Apr 17 12:14:35 2021 -0400 add missing configuration option used by mg21 to init the uart. (#6073) commit 2de65755df86939bf3ed1326a6a5b00313a8dc78 Author: Michael Spang <[email protected]> Date: Sat Apr 17 12:14:11 2021 -0400 Move default -std level to an argument (#6089) Currently applications that want to change the default standard level are creating a new config target which causes some minor duplication. Simplify this to just setting a new cpp_standard argument. commit fc199cecfb4160944e932b3401b4b6b6a43e903e Author: Kamil Kasperczyk <[email protected]> Date: Sat Apr 17 01:07:36 2021 +0200 [mdns] Added mdns remove service API and its SRP implementation. (#6048) There is not mdns remove specific service API on the CHIP level, but only ChipMdnsStopPublish which seems to remove all services. * Added ChipMdnsRemoveService method API. * Added ChipMdnsRemoveService implementation for OpenThread platform (SRP) and left it not implemented for the others. * Added ChipMdnsStopPublish implementation for OpenThread (SRP). commit 07c394718030bc222bc47f1eb3d492498610e65a Author: Kamil Kasperczyk <[email protected]> Date: Sat Apr 17 01:06:26 2021 +0200 [nrfconnect] Added CHIP Zephyr shell for testing purposes. (#6050) * Added option enabling using Zephyr based CHIP shell in examples. * Implemented ChipShell module allowing to call chip test commands to get information about CHIP stack state. * Extended nrfconnect CLI docs about CHIP commands. * Renamed src/lib/shell/shell.h and .cpp files to shell_core due to name conflicts with Zephyr shell/shell.h. * Added to OnboardingCodesUtil method allowing to get encoded QR code url. commit e36ccef3b48e5354193cd810f3b56ab493ca78e0 Author: Jagadish-NXP <[email protected]> Date: Sat Apr 17 04:34:29 2021 +0530 Feature/spake minor fix (#6095) * Buffer contains 2bytes of KeyId followed by Pa, KeyID is consumend and Pa is passed correctly * Buffer contains 2bytes of KeyId followed by Pa, KeyID is consumend and Pa is passed correctly * restyled commit f3bece1dd07709ef94ca8c74018aaba0c1afa2f4 Author: Jiacheng Guo <[email protected]> Date: Sat Apr 17 07:02:39 2021 +0800 [app] add logging for dns-sd server (#6093) commit 79b3354759ae40be000cdf6bb03fa84c9bdca475 Author: yunhanw-google <[email protected]> Date: Fri Apr 16 16:02:25 2021 -0700 Update AttributeStatusList (#6107) -- Per lastest IM encoding spec, remove attributeStatusList in report data, replace status list with attributeStatusList in write response. commit ebb739662ca25957a9ef6690c852916e2d3f9388 Author: yunhanw-google <[email protected]> Date: Fri Apr 16 16:02:17 2021 -0700 Add FieldId and ListIndex type (#6104) Summary of Changes: --Add FieldId and ListIndex type for Interaction Model commit 3c4f9100724704a9bb7806a591a846a326f0b029 Author: yunhanw-google <[email protected]> Date: Fri Apr 16 16:02:06 2021 -0700 Update TLV Path to List (#6106) Summary of Changes: -- Per TLV spec, Path has been renamed to List, update TLV Path with TLV List refer: https://github.com/CHIP-Specifications/connectedhomeip-spec/blob/772ce87727f39ed417fe1ecf6787084a0c82be68/src/common_protocol/tlv-format.adoc#tlv.container.list fixes: #3648 commit 931b72b4f20484e1319b2a15802b326a92583738 Author: Kamil Kasperczyk <[email protected]> Date: Fri Apr 16 23:23:09 2021 +0200 [nrfconnect] Updated nRF Connect SDK version. (#6102) Regular update of nRF Connect SDK version in CHIP. * For nrf5340dk fixed bug with BLE assert on application boot. * For nrf5340dk fixed bug with application crash after enabling Thread and BLE at once. commit d843033652eb1c5a5eb58057569ec73acfd251a0 Author: Vivien Nicolas <[email protected]> Date: Fri Apr 16 23:19:06 2021 +0200 Set the mdns resolver to nullptr inside CHIPDeviceController::Shutdown (#6059) commit d2f2fe1ac2a11e13d609ddae74dce1f70cf95ba5 Author: Vivien Nicolas <[email protected]> Date: Fri Apr 16 21:41:51 2021 +0200 Add endpoint 0 for the all-clusters-app (#6000) commit 99edfee2881fd270b6f4e8f884b8fe7279990fb2 Author: Damian Królik <[email protected]> Date: Fri Apr 16 18:11:36 2021 +0200 [python] Parse QR Code and Manual Pairing Code (#6005) * [python] Parse QR Code and Manual Pairing Code Implement the following commands: setup-payload parse-manual <manual-pairing-code> setup-payload parse-qr <qr-code-payload> * Restyled by gn * Fix Doxygen errors * Add human readable description of RendezvousInformation Co-authored-by: Restyled.io <[email protected]> commit e1c8d7d77ae31fb1bec35b6c1e61e2f958d98e85 Author: Damian Królik <[email protected]> Date: Fri Apr 16 17:34:08 2021 +0200 [server] Fix ExchangeContext leak (#6101) commit e4c011566814f7387889d0a02d47f9554d0a2bd0 Author: yunhanw-google <[email protected]> Date: Fri Apr 16 08:22:10 2021 -0700 Add parser and builder for IM write request and response (#6062) Summary of Changes: -- Add parser and builder for IM write and request and response per IM spec -- Add parser and builder for status list -- Add unit test -- move im pretty print implementation from MessageDefHelper header to cpp file commit b5810621b6e9d75264e10368495540fa5e6dd30d Author: lucicop <[email protected]> Date: Fri Apr 16 18:18:29 2021 +0300 Qpg6100/kvs (#5899) * Add KVS implementation and persistent-storage app for QPG6100 * Format args * Add nececssary include * Adding modified QPG_SDK repo * Restyled by clang-format * Removing unnecessary files and includes * Cleanup build files * Update usage information * Update * Restyled by gn * Restyled by prettier-markdown * Fixes after code review * Move path to correct place in dependencies * Restyled by gn * Update changes from qpg_sdk repo Co-authored-by: Restyled.io <[email protected]> commit 2b6cc314d363fb04d855f71efdc72dbe8de658e9 Author: Michael Spang <[email protected]> Date: Fri Apr 16 11:03:36 2021 -0400 Fix minimal-mdns examples with clang (#6082) This fixes some warnings when building with clang: clang++ -MMD -MF obj/mdns-advertiser.advertiser.cpp.o.d -Wconversion -O0 -g2 -fno-common -ffunction-sections -fdata-sections -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -Wall -Wextra -Wshadow -Wunreachable-code -Werror -Wimplicit-fallthrough -Wheader-hygiene -Wno-deprecated-declarations -Wno-unknown-warning-option -Wno-missing-field-initializers -Wno-unused-parameter -fdiagnostics-color -fno-strict-aliasing -D_REENTRANT -isystem../../third_party/connectedhomeip/third_party/ot-br-posix/repo/src -isystem../../third_party/connectedhomeip/third_party/ot-br-posix/repo/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -std=gnu++14 -fno-rtti -Wnon-virtual-dtor -DCHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK=1 -DCHIP_HAVE_CONFIG_H=1 -DLWIP_IPV4=1 -DLWIP_IPV6=1 -DLWIP_API=1 -DLWIP_ETHERNET=1 -DLWIP_SLIP=0 -DLWIP_6LOWPAN=1 -DLWIP_PPP=1 -I../../third_party/connectedhomeip/src/app/util -I../../third_party/connectedhomeip/src/app -Igen/third_party/connectedhomeip/src/app/include -I../../third_party/connectedhomeip/src/include -I../../third_party/connectedhomeip/src -Igen/include -I../../third_party/connectedhomeip/src/lib -I../../third_party/connectedhomeip/config/standalone -I../../third_party/connectedhomeip/third_party/nlassert/repo/include -I../../third_party/connectedhomeip/third_party/nlio/repo/include -I../../third_party/connectedhomeip/src/lwip/standalone -I../../third_party/connectedhomeip/third_party/lwip/repo/lwip/src/include -I../../third_party/connectedhomeip/src/lwip/include -I../../third_party/connectedhomeip/src/setup_payload -Igen -Igen -I../../third_party/connectedhomeip/third_party/inipp/repo/inipp -I../../third_party/connectedhomeip/src/app/server -c ../../advertiser.cpp -o obj/mdns-advertiser.advertiser.cpp.o This fixes the following warnings: ../../advertiser.cpp:123:29: error: implicit conversion changes signedness: 'long long' to 'uint64_t' (aka 'unsigned long') [-Werror,-Wsign-conversion] gOptions.fabricId = atoll(aValue); ~ ^~~~~~~~~~~~~ clang++ -MMD -MF obj/minimal-mdns-server.server.cpp.o.d -Wconversion -O0 -g2 -fno-common -ffunction-sections -fdata-sections -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -Wall -Wextra -Wshadow -Wunreachable-code -Werror -Wimplicit-fallthrough -Wheader-hygiene -Wno-deprecated-declarations -Wno-unknown-warning-option -Wno-missing-field-initializers -Wno-unused-parameter -fdiagnostics-color -fno-strict-aliasing -D_REENTRANT -isystem../../third_party/connectedhomeip/third_party/ot-br-posix/repo/src -isystem../../third_party/connectedhomeip/third_party/ot-br-posix/repo/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -std=gnu++14 -fno-rtti -Wnon-virtual-dtor -DCHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK=1 -DCHIP_HAVE_CONFIG_H=1 -DLWIP_IPV4=1 -DLWIP_IPV6=1 -DLWIP_API=1 -DLWIP_ETHERNET=1 -DLWIP_SLIP=0 -DLWIP_6LOWPAN=1 -DLWIP_PPP=1 -I../../third_party/connectedhomeip/src/app/util -I../../third_party/connectedhomeip/src/app -Igen/third_party/connectedhomeip/src/app/include -I../../third_party/connectedhomeip/src/include -I../../third_party/connectedhomeip/src -Igen/include -I../../third_party/connectedhomeip/src/lib -I../../third_party/connectedhomeip/config/standalone -I../../third_party/connectedhomeip/third_party/nlassert/repo/include -I../../third_party/connectedhomeip/third_party/nlio/repo/include -I../../third_party/connectedhomeip/src/lwip/standalone -I../../third_party/connectedhomeip/third_party/lwip/repo/lwip/src/include -I../../third_party/connectedhomeip/src/lwip/include -I../../third_party/connectedhomeip/src/setup_payload -Igen -Igen -I../../third_party/connectedhomeip/third_party/inipp/repo/inipp -I../../third_party/connectedhomeip/src/app/server -c ../../server.cpp -o obj/minimal-mdns-server.server.cpp.o ../../server.cpp:89:5: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] nullptr, ^~~~~~~ { } Tested by: gn gen out/host_clang --args=is_clang=true ninja -C out/host_clang commit c477ec5f03d02ad343e380345bea2aee14054b13 Author: Jiacheng Guo <[email protected]> Date: Fri Apr 16 23:02:18 2021 +0800 [esp32] use minimal mDNS by default (#6088) The mDNS library in IDF currently doesn't support subtypes. Use minimal mDNS instead for compilance with the spec. commit b33a12101ab5b03c8b970cab25cbc8b388393704 Author: Vivien Nicolas <[email protected]> Date: Fri Apr 16 16:59:55 2021 +0200 Add pairDeviceWithoutSecurity and setListenPort methods to src/darwin/Framework/CHIP/CHIPDeviceController.h/m for debugging purposes (#6057) commit b7b6171a95ecc1182d9c4c99ab0c4d34e0031be8 Author: Yufeng Wang <[email protected]> Date: Fri Apr 16 07:59:16 2021 -0700 Register MCSP messages by type instead of protocol (#6031) commit 4cd8575ecd06a24066933eaee519960e50f50f14 Author: Vivien Nicolas <[email protected]> Date: Fri Apr 16 15:47:31 2021 +0200 Enabling CHIP_EXCHANGE_CONTEXT_DETAIL_LOGGING does not compile (#6044) commit 205653c3fbf6bde5bb09383bf3eea76f35064a2f Author: Song Guo <[email protected]> Date: Fri Apr 16 10:21:57 2021 +0800 [doc] Update document for linux lighting app (#6042) * [doc] Update document for linux lighting app * Fix typo commit 11cbbf33018b87d61a5c5ee37236b386121e8898 Author: Trevor Holbrook <[email protected]> Date: Thu Apr 15 17:33:29 2021 -0700 New Clusters: OTA Server and OTA Client (#5745) * hand-edited files for OTA Client+Server Clusters - XML Cluster definitions - add ota-server directory and ember callback stubs - add ota XML files to zcl.json * generated files: OTA Client+Server Clusters commit 975324db565315c88d4dc731f54ecbf7f154f09a Author: Vivien Nicolas <[email protected]> Date: Fri Apr 16 02:14:49 2021 +0200 Zap generate objc list callbacks (#6003) * Update zap templates to generate objc callbacks for the descriptor cluster attributes * Update gen/ folder commit ef9c15ddf82be987dc97a5adbe76929e0c84a487 Author: Pankaj Garg <[email protected]> Date: Thu Apr 15 16:49:20 2021 -0700 Optimize memory needed by SecurePairingUsingTestSecret (#6065) commit cffd65dd8790c65010617ffb28af312c396d47b1 Author: Vivien Nicolas <[email protected]> Date: Fri Apr 16 00:39:41 2021 +0200 Sync the tree with the content of ZAP templates (again) (#6076) commit 1ae670dfbc557208a6faf05f7eaf3abad5f667fe Author: Vivien Nicolas <[email protected]> Date: Fri Apr 16 00:33:28 2021 +0200 src/controller/python/chip/native/StackInit.cpp:29:10: error: unused variable 'sBluetoothAdapterId' [-Werror,-Wunused-variable] (#6075) commit 03ea431d2bbf0782d300bd096036d5f148a6eff4 Author: yunhanw-google <[email protected]> Date: Thu Apr 15 15:24:09 2021 -0700 Imporve Command Add API in IM Command (#6019) Summary of Changes: -- Add PrepareCommand, GetCommandDataElementTLVWriter and FinishCommand API to handle command add functionality, and remove old AddCommand which create the redundant buffer to hold command data -- Disable im in experimental build, and the ember change would happen in seperate PR commit 23cba58191b3001536437906e27e553ff7a41fb7 Author: Vivien Nicolas <[email protected]> Date: Fri Apr 16 00:23:34 2021 +0200 [Python dev ctrl] ChipStack is initialized twice on Darwin (#6066) commit 1b3f48c7b8a369f03c6476c9e8443e579af62867 Author: Lazar Kovacic <[email protected]> Date: Fri Apr 16 00:14:25 2021 +0200 Update CHIP tool client with thermostat client reference (#6067) Problem CHIP tool is missing thermostat client reference so it can be build Summary of Changes - Updated BUILD.gn with thermostat-client reference - Renamed thermostat.cpp to thermostat-client.cpp commit d3c15cc66dd5670ba382174a0cd39f985638fc51 Author: Song Guo <[email protected]> Date: Fri Apr 16 03:44:49 2021 +0800 [python] Fix bluetooth adapter selection (#6046) commit 1e983212602e4706cab096826d4dbda0b1c2c743 Author: Zang MingJie <[email protected]> Date: Fri Apr 16 03:40:17 2021 +0800 Add offset_of and owner_of (#5979) * Add OwnerOf * Restyled by whitespace * Restyled by clang-format Co-aut…
☛ This PR is not intended to be merged (or even build in CI since I've left out test changes in the interest of brevity). The intent is to get feedback on the general approach, to avoid wasting time on the remaining work if there are major objections and/or better ideas. The end goal of issue project-chip#5556 is to allow CHIP as a library to be used more easily by programs or systems that already have their own I/O event loop. This defines a SystemSocketWatcher, primarly used by the Inet layer, as an alternative to the current `select()`-based loop for socket-based platforms. The interface is intended to make minimal assumptions about the underlying implementation. The proof-of-concept implementation uses the libevent library and works for the completed subset — enough to run `chip-tool basic read vendor-name 0`. The current `select()`- based implementation has been _partly_ converted to use the same interface.
☛ This PR is not intended to be merged (or even build in CI since I've left out test changes in the interest of brevity). The intent is to get feedback on the general approach, to avoid wasting time on the remaining work if there are major objections and/or better ideas. The end goal of issue project-chip#5556 is to allow CHIP as a library to be used more easily by programs or systems that already have their own I/O event loop. This defines a SystemSocketWatcher, primarly used by the Inet layer, as an alternative to the current `select()`-based loop for socket-based platforms. The interface is intended to make minimal assumptions about the underlying implementation. The proof-of-concept implementation uses the libevent library and works for the completed subset — enough to run `chip-tool basic read vendor-name 0`. The current `select()`- based implementation has been _partly_ converted to use the same interface.
☛ This PR is not intended to be merged (or even build in CI since I've left out test changes in the interest of brevity). The intent is to get feedback on the general approach, to avoid wasting time on the remaining work if there are major objections and/or better ideas. The end goal of issue project-chip#5556 is to allow CHIP as a library to be used more easily by programs or systems that already have their own I/O event loop. This defines a SystemSocketWatcher, primarly used by the Inet layer, as an alternative to the current `select()`-based loop for socket-based platforms. The interface is intended to make minimal assumptions about the underlying implementation. The proof-of-concept implementation uses the libevent library and works for the completed subset — enough to run `chip-tool basic read vendor-name 0`. The current `select()`- based implementation has been _partly_ converted to use the same interface.
☛ This PR is not intended to be merged (or even build in CI since I've left out test changes in the interest of brevity). The intent is to get feedback on the general approach, to avoid wasting time on the remaining work if there are major objections and/or better ideas. The end goal of issue project-chip#5556 is to allow CHIP as a library to be used more easily by programs or systems that already have their own I/O event loop. This defines a SystemSocketWatcher, primarly used by the Inet layer, as an alternative to the current `select()`-based loop for socket-based platforms. The interface is intended to make minimal assumptions about the underlying implementation. The proof-of-concept implementation uses the libevent library and works for the completed subset — enough to run `chip-tool basic read vendor-name 0`. The current `select()`- based implementation has been _partly_ converted to use the same interface.
☛ This PR is not intended to be merged (or even build in CI since I've left out test changes in the interest of brevity). The intent is to get feedback on the general approach, to avoid wasting time on the remaining work if there are major objections and/or better ideas. The end goal of issue project-chip#5556 is to allow CHIP as a library to be used more easily by programs or systems that already have their own I/O event loop. This defines a SystemSocketWatcher, primarly used by the Inet layer, as an alternative to the current `select()`-based loop for socket-based platforms. The interface is intended to make minimal assumptions about the underlying implementation. The proof-of-concept implementation uses the libevent library and works for the completed subset — enough to run `chip-tool basic read vendor-name 0`. The current `select()`- based implementation has been _partly_ converted to use the same interface.
☛ This PR is not intended to be merged (or even build in CI since I've left out test changes in the interest of brevity). The intent is to get feedback on the general approach, to avoid wasting time on the remaining work if there are major objections and/or better ideas. The end goal of issue project-chip#5556 is to allow CHIP as a library to be used more easily by programs or systems that already have their own I/O event loop. This defines a SystemSocketWatcher, primarly used by the Inet layer, as an alternative to the current `select()`-based loop for socket-based platforms. The interface is intended to make minimal assumptions about the underlying implementation. The proof-of-concept implementation uses the libevent library and works for the completed subset — enough to run `chip-tool basic read vendor-name 0`. The current `select()`- based implementation has been _partly_ converted to use the same interface.
#### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication
#### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication
#### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication
#### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication
#### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication
#### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication
#### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication
#### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication
* Generalize socket-based event loop #### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue #5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication * Clarify SocketEventFlags error vs exceptional condition * restyle * fixes for CHIP_SYSTEM_CONFIG_USE_DISPATCH merge * restyle * rename System::SystemWakeEvent to System::WakeEvent
* Generalize socket-based event loop #### Problem Socket event management is currently tied closely to select(2), and does not integrate well with other event loops. See issue project-chip#5556 _rework system layer event loop_ #### Change overview The primary purpose of this change is to provide a clear interface for monitoring socket events, that can be used both within the CHIP SDK and by an application using the SDK, and can be implemented either inside or outside the SDK. Functionality does not change. * Defines an interface, in `system/SystemSockets.h`. * Converts most existing uses of socket event monitoring (except mDNS, to be done as a followup). * Converts the existing select(2)-based event management into an implementation of the new interface. * Adds a second implementation of the interface, using libevent, to verify that the interface is general enough. #### Testing * Converted the applicable unit tests from select(2) to this interface, and ran them with both the select and libevent implementations. (CI remains select-only for now.) * Integration tests involving socket-based platforms exercise this code and confirm no change to functionality. * Manual verification of controller/device communication * Clarify SocketEventFlags error vs exceptional condition * restyle * fixes for CHIP_SYSTEM_CONFIG_USE_DISPATCH merge * restyle * rename System::SystemWakeEvent to System::WakeEvent
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
This stale issue has been automatically closed. Thank you for your contributions. |
Problem
The code in src/{system,inet} is based on use of the select(2) system call.
Unfortunately, select(2) is incompatible with event loops used in many modern programs, e.g. those based on abstractions such as those provided by libevent / libev / libuv or that directly use low level event based facilities such as Linux's epoll(7).
The main issue is that these event loops are based on persistent event subscriptions, while select(2) has no persistent state and instead requires calling each entity that's interested in polling for every main loop iteration. This is a major impedance mismatch that complicates integrating CHIP into programs.
Another, lesser problem is the use of fd_sets which imposes a relatively low limit on file descriptor value.
Proposed Solution
Ideal outcome - CHIP's IO thread can be removed, and tests/examples are all single threaded
The text was updated successfully, but these errors were encountered: