F´ Flight Software - C/C++ Documentation  devel
A framework for building embedded system applications to NASA flight quality standards.
IPCQueueCommon.cpp
Go to the documentation of this file.
1 #include <Os/IPCQueue.hpp>
2 #include <cstring>
3 
4 namespace Os {
5 
7 
8  const U8* msgBuff = buffer.getBuffAddr();
9  NATIVE_INT_TYPE buffLength = static_cast<NATIVE_INT_TYPE>(buffer.getBuffLength());
10 
11  return this->send(msgBuff,buffLength,priority, block);
12 
13  }
14 
16 
17  U8* msgBuff = buffer.getBuffAddr();
18  NATIVE_INT_TYPE buffCapacity = static_cast<NATIVE_INT_TYPE>(buffer.getBuffCapacity());
19  NATIVE_INT_TYPE recvSize = 0;
20 
21  Queue::QueueStatus recvStat = this->receive(msgBuff, buffCapacity, recvSize, priority, block);
22 
23  if (QUEUE_OK == recvStat) {
24  if (buffer.setBuffLen(static_cast<NATIVE_UINT_TYPE>(recvSize)) == Fw::FW_SERIALIZE_OK) {
25  return QUEUE_OK;
26  } else {
27  return QUEUE_SIZE_MISMATCH;
28  }
29  } else {
30  return recvStat;
31  }
32  }
33 
34 }
PlatformIntType NATIVE_INT_TYPE
Definition: BasicTypes.h:51
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:26
PlatformUIntType NATIVE_UINT_TYPE
Definition: BasicTypes.h:52
virtual U8 * getBuffAddr()=0
gets buffer address for data filling
SerializeStatus setBuffLen(Serializable::SizeType length)
sets buffer length manually after filling with data
Serializable::SizeType getBuffLength() const
returns current buffer size
virtual Serializable::SizeType getBuffCapacity() const =0
returns capacity, not current size, of buffer
QueueStatus send(const Fw::SerializeBufferBase &buffer, NATIVE_INT_TYPE priority, QueueBlocking block)
send a message
QueueStatus receive(Fw::SerializeBufferBase &buffer, NATIVE_INT_TYPE &priority, QueueBlocking block)
receive a message
QueueStatus
Definition: Queue.hpp:27
@ QUEUE_SIZE_MISMATCH
attempted to send or receive with buffer too large, too small
Definition: Queue.hpp:31
@ QUEUE_OK
message sent/received okay
Definition: Queue.hpp:28
QueueBlocking
Definition: Queue.hpp:40
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.