17 #include <pia/reckoning/reckoning_definitions.h> 18 #include <pia/clone/clone_CloneElementBase.h> 19 #include <pia/common/common_OffsetList.h> 68 void Trace(u64 flag)
const;
74 virtual u16 GetType()
const 76 return GetTypeStatic();
78 virtual bool IsSupportedClone(
int cloneType)
const;
80 static u16 GetTypeStatic()
82 return TYPE_RECKONING;
84 static bool Receive(CloneElementBase* pElement, clone::IDataPacker* pAckPacker,
const void* cpChunk, u16 chunkSize,
Id elementId,
StationIndex src,
StationIndex myStationIndex, u32 dispatchCount);
85 static size_t GetDataChunkHeaderSize();
93 virtual void ClearData();
99 virtual void RequestInitialData();
102 class ReckoningSendToken :
public ConversibleResendableSendToken
106 : ConversibleResendableSendToken()
111 m_pElement = pElement;
114 virtual Type GetElementType()
const 116 return TYPE_RECKONING;
118 virtual u32 GetDestBitmap()
const 122 virtual size_t GetChunkSize()
const;
123 virtual void WriteChunk(
void* pChunkBuffer)
const;
124 virtual CloneElementBase* GetElement()
131 return m_pElement->GetId();
133 size_t GetSize()
const 135 return m_pElement->GetSize();
141 void Serialize(
void* pBuffer)
const 143 m_pElement->Serialize(pBuffer,
this);
148 return m_SetterStationIndex;
151 void SetDestBitmap(u32 destBmp)
161 m_SetterStationIndex = stationId;
166 m_pElement->AddSendData(
this);
168 void CancelSendData()
170 m_pElement->CancelSendData(
this);
181 template <
typename Sample>
182 class SampleReckoningSendToken :
public ReckoningSendToken
185 SampleReckoningSendToken()
186 : ReckoningSendToken()
189 Sample* GetSamplePtr()
193 const Sample& GetSample()
const 207 nn::Result SetValueCore(
bool* pIsSend);
208 ReckoningSendToken* AssignTokenForSend(
int* pIdx,
bool isResendable);
210 virtual void Serialize(
void* pBuffer,
const ReckoningSendToken* cpToken) = 0;
211 virtual void ClearValue() = 0;
214 virtual void Deserialize(ReckoningSendToken* pToken,
const void* cpData) = 0;
215 virtual void OnUpdateSample(
int idx) = 0;
221 SampleBuffer(ReckoningSendToken** apBuffer,
int size);
224 ReckoningSendToken* Get(
int idx);
225 const ReckoningSendToken* Get(
int idx)
const;
226 bool IsHead(ReckoningSendToken* pToken)
const 228 return (pToken == m_apBuffer[m_HeadIdx]);
237 void AddDest(
StationIndex stationId,
bool IsResponsible);
242 ReckoningSendToken** m_apBuffer;
248 const SampleBuffer& GetSampleBuffer()
const 250 return m_SampleBuffer;
260 template <
typename Sample>
277 return m_cBuffer.GetNum();
288 PIA_ASSERT(index >= 0 && index < GetNum());
289 return m_cBuffer.Get(index)->GetClock();
300 PIA_ASSERT(index >= 0 && index < GetNum());
301 return static_cast<const SampleReckoningSendToken<Sample>*
>(m_cBuffer.Get(index))->GetSample();
305 const SampleBuffer& m_cBuffer;
312 SampleBuffer m_SampleBuffer;
317 static Definition<ReckoningCloneElementBase> s_Definition;
321 void Test(
const CloneProtocol* cpProtocol);
325 template <
int TEST_ID,
typename Arg>
This is the base class for managing data that is sent and received. .
Definition: clone_CloneElementBase.h:40
u32 ClockValue
Defines a type that holds a clock value.
Definition: clone_definitions.h:44
StationIndex
Enumerates StationIndex values.
Definition: platformCtr.h:44
Contains member functions used to access values in the sample buffer.
Definition: reckoning_ReckoningCloneElementBase.h:261
const Sample & GetSample(int index) const
Gets a sample.
Definition: reckoning_ReckoningCloneElementBase.h:298
This is the base class for managing the sending and receiving of data while using dead reckoning...
Definition: reckoning_ReckoningCloneElementBase.h:47
int GetNum() const
Gets the number of saved samples.
Definition: reckoning_ReckoningCloneElementBase.h:275
u16 Id
Specifies the type of the ID for identifying clone elements.
Definition: clone_CloneElementBase.h:59
clone::ClockValue GetClock(int index) const
Gets the clock for when the sample was set.
Definition: reckoning_ReckoningCloneElementBase.h:286