Line data Source code
1 :
2 : #include "TRACE/tracemf.h"
3 : #define TRACE_NAME "CFOandDTC_DMAs.cpp"
4 :
5 : #include "CFOandDTC_DMAs.h"
6 : // #define TLVL_GetData TLVL_DEBUG + 5
7 : // #define TLVL_GetJSONData TLVL_DEBUG + 6
8 : // #define TLVL_ReadBuffer TLVL_DEBUG + 7
9 : #define TLVL_ReadNextDAQPacket TLVL_DEBUG + 8
10 : // #define TLVL_ReadNextDCSPacket TLVL_DEBUG + 9
11 : // #define TLVL_SendDCSRequestPacket TLVL_DEBUG + 10
12 : // #define TLVL_SendHeartbeatPacket TLVL_DEBUG + 11
13 : // #define TLVL_VerifySimFileInDTC TLVL_DEBUG + 12
14 : // #define TLVL_VerifySimFileInDTC2 TLVL_DEBUG + 13
15 : // #define TLVL_VerifySimFileInDTC3 TLVL_DEBUG + 14
16 : // #define TLVL_WriteSimFileToDTC TLVL_DEBUG + 15
17 : // #define TLVL_WriteSimFileToDTC2 TLVL_DEBUG + 16
18 : // #define TLVL_WriteSimFileToDTC3 TLVL_DEBUG + 17
19 : // #define TLVL_WriteDetectorEmulatorData TLVL_DEBUG + 18
20 : // #define TLVL_WriteDataPacket TLVL_DEBUG + 19
21 : // #define TLVL_ReleaseBuffers TLVL_DEBUG + 20
22 : #define TLVL_GetCurrentBuffer TLVL_DEBUG + 21
23 :
24 : #include "dtcInterfaceLib/otsStyleCoutMacros.h"
25 :
26 : #include <unistd.h>
27 : #include <fstream>
28 : #include <iostream>
29 : #include <sstream> // Convert uint to hex string
30 :
31 0 : int DTCLib::CFOandDTC_DMAs::GetCurrentBuffer(DMAInfo* info)
32 : {
33 0 : TLOG(TLVL_GetCurrentBuffer) << "GetCurrentBuffer BEGIN currentReadPtr=" << (void*)info->currentReadPtr
34 0 : << " buffer.size()=" << info->buffer.size();
35 :
36 0 : if (info->buffer.size()) // might crash in ReleaseBuffers if currentReadPtr = nullptr ????????????????????????????????
37 : {
38 0 : TLOG(TLVL_GetCurrentBuffer) << "GetCurrentBuffer returning info->buffer.size()=" << info->buffer.size();
39 0 : return info->buffer.size();
40 : }
41 :
42 0 : if (info->currentReadPtr == nullptr || info->buffer.size() == 0)
43 : {
44 0 : TLOG(TLVL_GetCurrentBuffer) << "GetCurrentBuffer returning -1 because not currently reading a buffer";
45 0 : return -1;
46 : }
47 :
48 : #if 0
49 : for (size_t ii = 0; ii < info->buffer.size(); ++ii)
50 : {
51 : auto bufferptr = *info->buffer[ii];
52 : uint16_t bufferSize = *reinterpret_cast<uint16_t*>(bufferptr);
53 : TLOG(TLVL_GetCurrentBuffer) << "GetCurrentBuffer bufferptr="<<(void*)bufferptr<<" bufferSize="<<bufferSize;
54 : if (info->currentReadPtr > bufferptr &&
55 : info->currentReadPtr < bufferptr + bufferSize)
56 : {
57 : TLOG(TLVL_GetCurrentBuffer) << "Found matching buffer at index " << ii << ".";
58 : return ii;
59 : }
60 : }
61 : #endif
62 0 : TLOG(TLVL_GetCurrentBuffer) << "GetCurrentBuffer returning -2: Have buffers but none match read ptr position, need new";
63 0 : return -2;
64 : }
65 :
66 0 : uint16_t DTCLib::CFOandDTC_DMAs::GetBufferByteCount(DMAInfo* info, size_t index)
67 : {
68 0 : if (index >= info->buffer.size()) return 0;
69 0 : auto bufferptr = *info->buffer[index];
70 0 : uint16_t bufferSize = *reinterpret_cast<uint16_t*>(bufferptr);
71 0 : TLOG(TLVL_ReadNextDAQPacket) << "bufferSize = " << bufferSize;
72 0 : return bufferSize;
73 : }
|