Pigweed: update to 79525f59ff (#15701)

diff --git a/config/linux/lib/pw_rpc/BUILD.gn b/config/linux/lib/pw_rpc/BUILD.gn
index 6b50e5a..e79af44 100644
--- a/config/linux/lib/pw_rpc/BUILD.gn
+++ b/config/linux/lib/pw_rpc/BUILD.gn
@@ -24,7 +24,6 @@
     "$dir_pw_hdlc:encoder",
     "$dir_pw_hdlc:pw_rpc",
     "$dir_pw_hdlc:rpc_channel_output",
-    "$dir_pw_rpc:synchronized_channel_output",
     "$dir_pw_rpc/system_server:facade",
     "$dir_pw_stream:socket_stream",
     dir_pw_log,
diff --git a/config/mbed/CMakeLists.txt b/config/mbed/CMakeLists.txt
index 35b6151..7b333d2 100644
--- a/config/mbed/CMakeLists.txt
+++ b/config/mbed/CMakeLists.txt
@@ -371,6 +371,7 @@
 target_include_directories(${APP_TARGET} PRIVATE
                     ${PIGWEED_ROOT}/pw_sys_io/public
                     ${PIGWEED_ROOT}/pw_assert/public
+                    ${PIGWEED_ROOT}/pw_assert/assert_lite_public_overrides
                     ${PIGWEED_ROOT}/pw_assert_log/public
                     ${PIGWEED_ROOT}/pw_assert_log/public_overrides
                     ${PIGWEED_ROOT}/pw_bytes/public
diff --git a/examples/common/pigweed/RpcService.cpp b/examples/common/pigweed/RpcService.cpp
index d6461ec..9616b61 100644
--- a/examples/common/pigweed/RpcService.cpp
+++ b/examples/common/pigweed/RpcService.cpp
@@ -49,33 +49,23 @@
 ::chip::rpc::Mutex * uart_mutex;
 
 template <size_t buffer_size>
-class ChipRpcChannelOutputBuffer : public pw::rpc::ChannelOutput
+class ChipRpcChannelOutput : public pw::rpc::ChannelOutput
 {
 public:
-    constexpr ChipRpcChannelOutputBuffer(pw::stream::Writer & writer, uint8_t address, const char * channel_name) :
+    constexpr ChipRpcChannelOutput(pw::stream::Writer & writer, uint8_t address, const char * channel_name) :
         pw::rpc::ChannelOutput(channel_name), mWriter(writer), mAddress(address)
     {}
 
-    std::span<std::byte> AcquireBuffer() override
+    pw::Status Send(std::span<const std::byte> buffer) override
     {
+        if (buffer.empty())
+        {
+            return pw::OkStatus();
+        }
         if (uart_mutex)
         {
             uart_mutex->Lock();
         }
-        return mBuffer;
-    }
-
-    pw::Status SendAndReleaseBuffer(std::span<const std::byte> buffer) override
-    {
-        PW_DASSERT(buffer.data() == mBuffer.data());
-        if (buffer.empty())
-        {
-            if (uart_mutex)
-            {
-                uart_mutex->Unlock();
-            }
-            return pw::OkStatus();
-        }
         pw::Status ret = pw::hdlc::WriteUIFrame(mAddress, buffer, mWriter);
         if (uart_mutex)
         {
@@ -86,12 +76,11 @@
 
 private:
     pw::stream::Writer & mWriter;
-    std::array<std::byte, buffer_size> mBuffer;
     const uint8_t mAddress;
 };
 
 // Set up the output channel for the pw_rpc server to use to use.
-ChipRpcChannelOutputBuffer<kMaxTransmissionUnit> hdlc_channel_output(sysIoWriter, pw::hdlc::kDefaultRpcAddress, "HDLC channel");
+ChipRpcChannelOutput<kMaxTransmissionUnit> hdlc_channel_output(sysIoWriter, pw::hdlc::kDefaultRpcAddress, "HDLC channel");
 
 pw::rpc::Channel channels[] = { pw::rpc::Channel::Create<1>(&hdlc_channel_output) };
 
diff --git a/examples/common/pigweed/system_rpc_server.cc b/examples/common/pigweed/system_rpc_server.cc
index 8a91e2e..6fe87c6 100644
--- a/examples/common/pigweed/system_rpc_server.cc
+++ b/examples/common/pigweed/system_rpc_server.cc
@@ -33,7 +33,7 @@
 stream::SysIoReader reader;
 
 // Set up the output channel for the pw_rpc server to use.
-hdlc::RpcChannelOutputBuffer<kMaxTransmissionUnit> hdlc_channel_output(writer, pw::hdlc::kDefaultRpcAddress, "HDLC channel");
+hdlc::RpcChannelOutput hdlc_channel_output(writer, pw::hdlc::kDefaultRpcAddress, "HDLC channel");
 Channel channels[] = { pw::rpc::Channel::Create<1>(&hdlc_channel_output) };
 rpc::Server server(channels);
 
diff --git a/examples/lighting-app/linux/BUILD.gn b/examples/lighting-app/linux/BUILD.gn
index 5b1e4cd..601f66f 100644
--- a/examples/lighting-app/linux/BUILD.gn
+++ b/examples/lighting-app/linux/BUILD.gn
@@ -69,7 +69,6 @@
       "$dir_pw_hdlc:rpc_channel_output",
       "$dir_pw_log",
       "$dir_pw_rpc:server",
-      "$dir_pw_rpc:synchronized_channel_output",
       "$dir_pw_rpc/system_server:facade",
       "$dir_pw_stream:socket_stream",
       "$dir_pw_stream:sys_io_stream",
diff --git a/scripts/build/builders/nrf.py b/scripts/build/builders/nrf.py
index a83d5fe..ccc916f 100644
--- a/scripts/build/builders/nrf.py
+++ b/scripts/build/builders/nrf.py
@@ -148,7 +148,7 @@
 
             cmd = '''
 source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {outdir} -b {board} {sourcedir}{overlayflags}
         '''.format(
                 outdir=shlex.quote(self.output_dir),
diff --git a/scripts/build/testdata/build_all_except_host.txt b/scripts/build/testdata/build_all_except_host.txt
index e22f2c4..cc1ee7b 100644
--- a/scripts/build/testdata/build_all_except_host.txt
+++ b/scripts/build/testdata/build_all_except_host.txt
@@ -629,72 +629,72 @@
 
 # Generating nrf-native-posix-64-tests
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-native-posix-64-tests -b native_posix_64 {root}/src/test_driver/nrfconnect'
 
 # Generating nrf-nrf52840dk-light
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf52840dk-light -b nrf52840dk_nrf52840 {root}/examples/lighting-app/nrfconnect'
 
 # Generating nrf-nrf52840dk-light-rpc
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf52840dk-light-rpc -b nrf52840dk_nrf52840 {root}/examples/lighting-app/nrfconnect -- -DOVERLAY_CONFIG=rpc.overlay'
 
 # Generating nrf-nrf52840dk-lock
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf52840dk-lock -b nrf52840dk_nrf52840 {root}/examples/lock-app/nrfconnect'
 
 # Generating nrf-nrf52840dk-pump
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf52840dk-pump -b nrf52840dk_nrf52840 {root}/examples/pump-app/nrfconnect'
 
 # Generating nrf-nrf52840dk-pump-controller
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf52840dk-pump-controller -b nrf52840dk_nrf52840 {root}/examples/pump-controller-app/nrfconnect'
 
 # Generating nrf-nrf52840dk-shell
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf52840dk-shell -b nrf52840dk_nrf52840 {root}/examples/shell/nrfconnect'
 
 # Generating nrf-nrf52840dongle-light
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf52840dongle-light -b nrf52840dongle_nrf52840 {root}/examples/lighting-app/nrfconnect'
 
 # Generating nrf-nrf5340dk-light
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf5340dk-light -b nrf5340dk_nrf5340_cpuapp {root}/examples/lighting-app/nrfconnect'
 
 # Generating nrf-nrf5340dk-light-rpc
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf5340dk-light-rpc -b nrf5340dk_nrf5340_cpuapp {root}/examples/lighting-app/nrfconnect -- -DOVERLAY_CONFIG=rpc.overlay'
 
 # Generating nrf-nrf5340dk-lock
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf5340dk-lock -b nrf5340dk_nrf5340_cpuapp {root}/examples/lock-app/nrfconnect'
 
 # Generating nrf-nrf5340dk-pump
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf5340dk-pump -b nrf5340dk_nrf5340_cpuapp {root}/examples/pump-app/nrfconnect'
 
 # Generating nrf-nrf5340dk-pump-controller
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf5340dk-pump-controller -b nrf5340dk_nrf5340_cpuapp {root}/examples/pump-controller-app/nrfconnect'
 
 # Generating nrf-nrf5340dk-shell
 bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh";
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR";
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR";
 west build --cmake-only -d {out}/nrf-nrf5340dk-shell -b nrf5340dk_nrf5340_cpuapp {root}/examples/shell/nrfconnect'
 
 # Generating qpg-qpg6100-lock
diff --git a/scripts/constraints.txt b/scripts/constraints.txt
index 53269d1..11ad63f 100644
--- a/scripts/constraints.txt
+++ b/scripts/constraints.txt
@@ -174,7 +174,7 @@
     # via
     #   mbed-ls
     #   mbed-os-tools
-prompt-toolkit==3.0.21
+prompt-toolkit==3.0.26
     # via ipython
 protobuf==3.17.3
     # via -r requirements.txt
diff --git a/scripts/environment.json b/scripts/environment.json
index 21c7f4f..4662e6d 100644
--- a/scripts/environment.json
+++ b/scripts/environment.json
@@ -1,5 +1,6 @@
 {
     "cipd_package_files": [
+        "third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/cipd_setup/arm.json",
         "third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/cipd_setup/pigweed.json",
         "scripts/python.json"
     ],
diff --git a/scripts/examples/nrfconnect_example.sh b/scripts/examples/nrfconnect_example.sh
index 2f46128..f49aa5f 100755
--- a/scripts/examples/nrfconnect_example.sh
+++ b/scripts/examples/nrfconnect_example.sh
@@ -40,7 +40,7 @@
 [[ -n $ZEPHYR_BASE ]] && source "$ZEPHYR_BASE/zephyr-env.sh"
 
 # Use toolchain from Pigweed CIPD
-export GNUARMEMB_TOOLCHAIN_PATH="$PW_PIGWEED_CIPD_INSTALL_DIR"
+export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR"
 
 # Set ccache base directory to improve the cache hit ratio
 export CCACHE_BASEDIR="$PWD/$APP/nrfconnect"
diff --git a/scripts/python.json b/scripts/python.json
index d4fb039..82af0f9 100644
--- a/scripts/python.json
+++ b/scripts/python.json
@@ -1,12 +1,14 @@
-[
-    {
-        "path": "infra/3pp/tools/cpython3/${platform}",
-        "platforms": ["mac-amd64", "windows-amd64"],
-        "tags": ["version:3.8.2.chromium.10"]
-    },
-    {
-        "path": "fuchsia/third_party/cmake/${platform}",
-        "platforms": ["mac-amd64", "linux-amd64"],
-        "tags": ["version:3.20.20210428-g857373c"]
-    }
-]
+{
+    "packages": [
+        {
+            "path": "infra/3pp/tools/cpython3/${platform}",
+            "platforms": ["mac-amd64", "windows-amd64"],
+            "tags": ["version:3.8.2.chromium.10"]
+        },
+        {
+            "path": "fuchsia/third_party/cmake/${platform}",
+            "platforms": ["mac-amd64", "linux-amd64"],
+            "tags": ["version:3.20.20210428-g857373c"]
+        }
+    ]
+}
diff --git a/src/pybindings/pycontroller/BUILD.gn b/src/pybindings/pycontroller/BUILD.gn
index 5416278..d5f36f1 100644
--- a/src/pybindings/pycontroller/BUILD.gn
+++ b/src/pybindings/pycontroller/BUILD.gn
@@ -46,7 +46,7 @@
   include_dirs = [ "${chip_root}/third_party/pybind11/repo/include" ]
   if (current_os == "mac") {
     include_dirs +=
-        [ "${chip_root}/.environment/cipd/python/include/python3.8" ]
+        [ "${chip_root}/.environment/cipd/packages/python/include/python3.8" ]
   } else if (current_os == "linux") {
     include_dirs += [ "/usr/include/python3.9" ]
   } else {
diff --git a/third_party/pigweed/repo b/third_party/pigweed/repo
index f30bce8..79525f5 160000
--- a/third_party/pigweed/repo
+++ b/third_party/pigweed/repo
@@ -1 +1 @@
-Subproject commit f30bce8bf2513e924f461da6f2e7d1f2620a89f3
+Subproject commit 79525f59ff502d80346c9cc8e70570786c5fc903