IPCQueueCommon.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. #include <Os/IPCQueue.hpp>
  2. #include <cstring>
  3. namespace Os {
  4. Queue::QueueStatus IPCQueue::send(const Fw::SerializeBufferBase &buffer, NATIVE_INT_TYPE priority, QueueBlocking block) {
  5. const U8* msgBuff = buffer.getBuffAddr();
  6. NATIVE_INT_TYPE buffLength = buffer.getBuffLength();
  7. return this->send(msgBuff,buffLength,priority, block);
  8. }
  9. Queue::QueueStatus IPCQueue::receive(Fw::SerializeBufferBase &buffer, NATIVE_INT_TYPE &priority, QueueBlocking block) {
  10. U8* msgBuff = buffer.getBuffAddr();
  11. NATIVE_INT_TYPE buffCapacity = buffer.getBuffCapacity();
  12. NATIVE_INT_TYPE recvSize = 0;
  13. Queue::QueueStatus recvStat = this->receive(msgBuff, buffCapacity, recvSize, priority, block);
  14. if (QUEUE_OK == recvStat) {
  15. if (buffer.setBuffLen(recvSize) == Fw::FW_SERIALIZE_OK) {
  16. return QUEUE_OK;
  17. } else {
  18. return QUEUE_SIZE_MISMATCH;
  19. }
  20. } else {
  21. return recvStat;
  22. }
  23. }
  24. }