F´ Flight Software - C/C++ Documentation  NASA-v1.5.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 <stdio.h>
14 
15 namespace Svc {
16 
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
Svc::TlmChanImpl::tlmEntry::lastUpdate
Fw::Time lastUpdate
last updated time
Definition: TlmChanImpl.hpp:53
TlmChanImpl.hpp
Component that stores telemetry channel values.
Fw::TlmBuffer
Definition: TlmBuffer.hpp:21
FwChanIdType
#define FwChanIdType
Type representation for a channel id.
Definition: FpConfig.hpp:66
Svc::TlmChanImpl::m_activeBuffer
U32 m_activeBuffer
Definition: TlmChanImpl.hpp:66
Svc::TlmChanImpl::TlmSet::slots
TlmEntry * slots[TLMCHAN_NUM_TLM_HASH_SLOTS]
set of hash slots in hash table
Definition: TlmChanImpl.hpp:61
Assert.hpp
Svc::TlmChanImpl::tlmEntry
Definition: TlmChanImpl.hpp:50
Svc::TlmChanImpl::val
PRIVATE FwChanIdType Fw::Time Fw::TlmBuffer & val
Definition: TlmChanImpl.hpp:40
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
Svc::TlmChanImpl::TlmGet_handler
void TlmGet_handler(NATIVE_INT_TYPE portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)
Handler for input port TlmGet.
Definition: TlmChanImplGet.cpp:17
Svc::TlmChanImpl::tlmEntry::id
FwChanIdType id
telemetry id stored in slot
Definition: TlmChanImpl.hpp:51
Svc::TlmChanImpl::tlmEntry::buffer
Fw::TlmBuffer buffer
buffer to store serialized telemetry
Definition: TlmChanImpl.hpp:54
Svc
Definition: ActiveLoggerComponentAc.cpp:22
Svc::TlmChanImpl::tlmEntry::next
tlmEntry * next
pointer to next bucket in table
Definition: TlmChanImpl.hpp:55
BasicTypes.hpp
Declares ISF basic types.
Svc::TlmChanImpl::m_tlmEntries
struct Svc::TlmChanImpl::TlmSet m_tlmEntries[2]
NATIVE_INT_TYPE
int NATIVE_INT_TYPE
native integer type declaration
Definition: BasicTypes.hpp:29
Svc::TlmChanImpl::timeTag
PRIVATE FwChanIdType Fw::Time & timeTag
Definition: TlmChanImpl.hpp:40