1 // Copyright 2023 The Pigweed Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); you may not 4 // use this file except in compliance with the License. You may obtain a copy of 5 // the License at 6 // 7 // https://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 // License for the specific language governing permissions and limitations under 13 // the License. 14 #pragma once 15 16 #include "pw_persistent_ram/persistent_buffer.h" 17 #include "pw_system/config.h" 18 #include "pw_trace_tokenized/config.h" 19 #include "pw_transfer/transfer.h" 20 21 namespace pw::system { 22 23 using CrashSnapshotPersistentBuffer = persistent_ram::PersistentBuffer< 24 PW_SYSTEM_CRASH_SNAPSHOT_MEMORY_SIZE_BYTES>; 25 26 // CrashSnapshotBufferTransfer handler to connect a crash snapshot transfer 27 // resource ID to a data stream 28 class CrashSnapshotBufferTransfer : public transfer::ReadOnlyHandler { 29 public: 30 CrashSnapshotBufferTransfer(uint32_t id, 31 CrashSnapshotPersistentBuffer& buffer); 32 33 Status PrepareRead() final; 34 35 private: 36 CrashSnapshotPersistentBuffer& buffer_; 37 stream::MemoryReader reader_; 38 }; 39 40 using TracePersistentBuffer = 41 persistent_ram::PersistentBuffer<PW_TRACE_BUFFER_SIZE_BYTES>; 42 43 // TraceBufferTransfer handler to connect a trace transfer 44 // resource ID to a data stream 45 class TraceBufferTransfer : public transfer::ReadOnlyHandler { 46 public: 47 TraceBufferTransfer(uint32_t id, TracePersistentBuffer& buffer); 48 49 Status PrepareRead() final; 50 51 private: 52 TracePersistentBuffer& buffer_; 53 stream::MemoryReader reader_; 54 }; 55 56 } // namespace pw::system 57