F´ Flight Software - C/C++ Documentation  NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
TlmChanImplGet.cpp
Go to the documentation of this file.
1 /*
2  * TelemChanImpl.cpp
3  *
4  * Created on: Mar 28, 2014
5  * Author: tcanham
6  */
7 
9 #include <cstring>
10 #include <Fw/Types/BasicTypes.hpp>
11 #include <Fw/Types/Assert.hpp>
12 
13 #include <cstdio>
14 
15 namespace Svc {
16 
17  void TlmChanImpl::TlmGet_handler(NATIVE_INT_TYPE portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) {
18 
19  // Compute index for entry
20 
21  NATIVE_UINT_TYPE index = this->doHash(id);
22 
23  // Search to see if channel has been stored
24  TlmEntry *entryToUse = this->m_tlmEntries[this->m_activeBuffer].slots[index];
25  for (NATIVE_UINT_TYPE bucket = 0; bucket < TLMCHAN_HASH_BUCKETS; bucket++) {
26  if (entryToUse) { // If bucket exists, check id
27  if (entryToUse->id == id) {
28  break;
29  } else { // otherwise go to next bucket
30  entryToUse = entryToUse->next;
31  }
32  } else { // no buckets left to search
33  break;
34  }
35  }
36 
37  if (entryToUse) {
38  val = entryToUse->buffer;
39  timeTag = entryToUse->lastUpdate;
40  } else { // requested entry may not be written yet; empty buffer
41  val.resetSer();
42  }
43 
44  }
45 }
Fw::Time
Definition: Time.hpp:10
TlmChanImpl.hpp
Component that stores telemetry channel values.
Fw::TlmBuffer
Definition: TlmBuffer.hpp:21
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:28
Fw::SerializeBufferBase::resetSer
void resetSer(void)
reset to beginning of buffer to reuse for serialization
Definition: Serializable.cpp:572
FwChanIdType
#define FwChanIdType
Type representation for a channel id.
Definition: FpConfig.hpp:66
NATIVE_INT_TYPE
int NATIVE_INT_TYPE
native integer type declaration
Definition: BasicTypes.hpp:27
Svc
Definition: ActiveRateGroupCfg.hpp:18
Svc::TlmChanImpl::doHash
virtual NATIVE_UINT_TYPE doHash(FwChanIdType id)
Definition: TlmChanImpl.cpp:61