13 bool recoverable =
false;
14 this->m_allocatorId = identifier;
15 U8* allocatedMemory =
static_cast<U8*
>(allocator.
allocate(identifier, bytes, recoverable));
17 FW_ASSERT(bytes >= originalBytes, static_cast<FwAssertArgType>(bytes));
18 this->m_sequenceBuffer.
setExtBuffer(allocatedMemory, bytes);
23 this->m_sequenceBuffer.
clear();
29 if (this->m_sequenceFilePath.
length() == 0) {
36 this->m_computedCRC.
init();
53 readStatus = this->readHeader();
66 readStatus = this->readBody();
79 readStatus = this->readFooter();
104 if (sequenceFileSize != sequenceFilePosition) {
111 if (this->m_sequenceArgs.
get_size() > availableSpace) {
118 if (this->m_sequenceArgs.
get_size() > argCapacity) {
165 this->m_totalExpectedArgSize = 0;
169 for (
U8 i = 0; i < argumentCount; i++) {
170 Fpy::ArgSpec& argSpec = this->m_sequenceObj.
get_args()[i];
179 m_totalExpectedArgSize += argSpec.get_argSize();
189 if (this->m_totalExpectedArgSize != this->m_sequenceArgs.
get_size()) {
191 this->m_sequenceFilePath);
197 for (U16 statementIdx = 0; statementIdx < statementCount; statementIdx++) {
223 this->m_computedCRC.
finalize(computedCRC);
237 const FpySequencer_FileReadStage& readStage,
247 if (expectedReadLen > capacity) {
259 if (actualReadLen < expectedReadLen) {
265 FW_ASSERT(expectedReadLen == actualReadLen, static_cast<FwAssertArgType>(expectedReadLen),
266 static_cast<FwAssertArgType>(actualReadLen));
269 this->m_sequenceBuffer.
setBuffLen(static_cast<Fw::Serializable::SizeType>(expectedReadLen));
273 this->m_computedCRC.
update(this->m_sequenceBuffer.
getBuffAddr(), expectedReadLen);
void update(const void *const data, const FwSizeType len)
Serialization/Deserialization operation was successful.
void clear()
Clear external buffer.
virtual void * allocate(const FwEnumStoreType identifier, FwSizeType &size, bool &recoverable, FwSizeType alignment=alignof(std::max_align_t))=0
Type_of_args & get_args()
Get member args.
void log_WARNING_HI_InsufficientBufferSpace(U64 bufferSize, const Fw::StringBase &filePath) const
Log event InsufficientBufferSpace.
PlatformSizeType FwSizeType
void log_WARNING_HI_WrongCRC(U32 expected, U32 actual) const
Log event WrongCRC.
void log_WARNING_HI_ArgSizeExceedsCapacity(FwSizeType actual, FwSizeType capacity) const
Log event ArgSizeExceedsCapacity.
Serializable::SizeType getSize() const override
Get current buffer size.
Status position(FwSizeType &position_result) override
get file pointer position of the currently open file
Status size(FwSizeType &size_result) override
get size of currently open file
void log_WARNING_HI_FileApiError(const Fw::StringBase &filePath, I32 errorCode) const
Log event FileApiError.
void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const
Log event ExtraBytesInSequence.
void log_WARNING_HI_TooManySequenceDirectives(U16 count, U16 max) const
Log event TooManySequenceDirectives.
SerializeStatus
forward declaration for string
Os::FileInterface::Status open(const char *path, Mode mode)
open file with supplied path and mode
void log_WARNING_HI_EndOfFileError(const Svc::FpySequencer_FileReadStage &readStage, const Fw::StringBase &filePath) const
Log event EndOfFileError.
Serializable::SizeType getCapacity() const
Get buffer capacity.
Svc::Fpy::Header & get_header()
Get member header.
Invalid argument passed in.
Type_of_buffer & get_buffer()
Get member buffer.
Serializable::SizeType getDeserializeSizeLeft() const override
Get remaining deserialization buffer size.
void log_WARNING_HI_FileReadError(const Svc::FpySequencer_FileReadStage &readStage, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileReadError.
Type_of_statements & get_statements()
Get member statements.
void allocateBuffer(FwEnumStoreType identifier, Fw::MemAllocator &allocator, FwSizeType bytes)
const char * toChar() const
Convert to a C-style char*.
FwSizeType get_size() const
Get member size.
uint8_t U8
8-bit unsigned integer
Status read(U8 *buffer, FwSizeType &size)
read data from this file into supplied buffer bounded by size
void log_WARNING_HI_FileOpenError(const Fw::StringBase &filePath, I32 errorCode) const
Log event FileOpenError.
void setExtBuffer(U8 *buffPtr, Serializable::SizeType size)
Set the external buffer.
Memory Allocation base class.
Svc::Fpy::Footer & get_footer()
Get member footer.
Operation was successful.
void log_WARNING_HI_ArgTotalSizeExceedsStackLimit(Svc::Fpy::StackSizeType argSize) const
Log event ArgTotalSizeExceedsStackLimit.
void log_WARNING_HI_WrongSchemaVersion(U8 expected, U8 actual) const
Log event WrongSchemaVersion.
RateGroupDivider component implementation.
virtual SizeType length() const
Get the length of the string.
SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG) override
Deserialize an 8-bit unsigned integer value.
void log_WARNING_HI_TooManySequenceArgs(U8 count, U8 max) const
Log event TooManySequenceArgs.
void log_WARNING_HI_ArgSizeMismatch(Svc::Fpy::StackSizeType expected, FwSizeType actual, const Fw::StringBase &filePath) const
Log event ArgSizeMismatch.
virtual void deallocate(const FwEnumStoreType identifier, void *ptr)=0
void deallocateBuffer(Fw::MemAllocator &allocator)
SerializeStatus setBuffLen(Serializable::SizeType length) override
Set buffer length manually.
void log_WARNING_HI_FileReadDeserializeError(const Svc::FpySequencer_FileReadStage &readStage, const Fw::StringBase &filePath, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event FileReadDeserializeError.
void finalize(HashBuffer &buffer) const
bool isOpen() const
determine if the file is open
U32 StackSizeType
the type which everything referencing a size or offset on the stack is represented in ...
U8 * getBuffAddr()
Get buffer address for data filling (non-const version)