#ifndef STA_RTOS_SHAREDMEM_TPP #define STA_RTOS_SHAREDMEM_TPP #ifndef STA_RTOS_SHAREDMEM_HPP # error "Internal header. Use instead." #endif // !STA_RTOS_MEMPOOL_HPP #include namespace sta { template RtosMemPool::RtosMemPool() { } template RtosMemPool::RtosMemPool(uint32_t block_size, uint32_t timeout /* = osWaitForever */) { handle_ = osMemoryPoolNew(block_size, block_count, NULL); STA_ASSERT_MSG(handle_ != nullptr, "Failed to Create RtosMemPool for sharedmem"); shared_mem_ = osMemoryPoolAlloc(handle_, timeout) STA_ASSERT_MSG(shared_mem_ != nullptr, "Failed to Alloc RtosMemPool Block"); } template RtosMemPool::~RtosSharedMem() { osMemoryPoolFree(handle_, shared_mem_); osMemoryPoolDelete(handle_); } template void RtosMemPool::write(T _message) { *shared_mem_ = _message; } template T RtosMemPool::read(void * block) { return *shared_mem_; } } // namespace sta #endif // STA_RTOS_SHAREDMEM_TPP