Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
749d589
Add in support for DRX8.
jaycedowell Jul 20, 2023
c421526
Update for new call signature.
jaycedowell Jul 20, 2023
8705ce2
More drx8 updates.
jaycedowell Jul 20, 2023
0ebacf1
Ugh.
jaycedowell Jul 20, 2023
ede9ab0
Even more.
jaycedowell Jul 20, 2023
c5ab110
Merge commit 'ede9ab0645d8f47bfe6d9a84d2831d717a7e1b9b' into drx8_mark2
jaycedowell Jan 3, 2025
d4b5593
Add a DRX8 version of the spectrometer.
jaycedowell Jan 7, 2025
1304cec
Enable the DRX8 Spectrometer with 'Bits=8' metadata on the SPC command.
jaycedowell Jan 7, 2025
e5b7fab
DRX8 is really for NDP+.
jaycedowell Jan 7, 2025
22f1235
Fix a few redefinition problems.
jaycedowell Jan 7, 2025
a201458
Fix a few more redefinition problems.
jaycedowell Jan 7, 2025
0e48650
Fix even more redefinition problems.
jaycedowell Jan 7, 2025
0ab4b61
No LUTs for DRX8.
jaycedowell Jan 8, 2025
0c351bf
Close out SPECTROMETE8ROPERATION_H_.
jaycedowell Jan 8, 2025
49cd6b5
It's been unified so there is only one copy of this script.
jaycedowell Jan 8, 2025
220e081
Add a couple more checks for DRX vs DRX8 in SPC.
jaycedowell Jan 8, 2025
9b2106c
Just call it 'Spectrometr'.
jaycedowell Jan 9, 2025
aa3672d
Packets can be larger than 8192 with DRX8.
jaycedowell Jan 9, 2025
563f5a6
Double the initial buffer size to account for DRX8.
jaycedowell Jan 9, 2025
155be0e
I/Q swap PackedSample8.
jaycedowell Jan 11, 2025
b218a75
New approach for a universal DR spectrometer mode.
jaycedowell Jan 21, 2025
4601995
Duplicate declaration and some deprecated boost stuff.
jaycedowell Jan 21, 2025
f91e83e
Add in a some missing commas.
jaycedowell Jan 21, 2025
397a174
Drop the recording modes for the prototype DP system.
jaycedowell Jan 21, 2025
1e96364
How'd that get there?
jaycedowell Jan 21, 2025
f716740
Cleanup the templating.
jaycedowell Jan 21, 2025
d514783
Lost the pointer at some point.
jaycedowell Jan 21, 2025
370a544
Classic
jaycedowell Jan 21, 2025
5d0bdd0
Not any more.
jaycedowell Jan 21, 2025
5517adc
Drop boost/progress.hpp.
jaycedowell Jan 21, 2025
bc68651
We're only peeking here, not taking the next packet.
jaycedowell Feb 6, 2025
3dc1b47
Protect against null pointers here as well.
jaycedowell Feb 6, 2025
dfc17e7
Merge branch 'drx8_mark2' of https://github.com/lwa-project/data_reco…
jaycedowell Feb 6, 2025
552cb8b
Merge branch 'only_ndp' into drx8_mark2
jaycedowell Aug 5, 2025
c60562b
Cleanup and fix array size.
jaycedowell Aug 5, 2025
c9c2ca5
Nice.
jaycedowell Aug 5, 2025
9b1f084
Bad merge.
jaycedowell Aug 5, 2025
82b010a
Bad merge (again).
jaycedowell Aug 5, 2025
fa022c9
Add support for DRX8 frame generation.
jaycedowell Aug 12, 2025
0914119
Add DRX8 support here as well.
jaycedowell Aug 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DROS2/.cproject
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
<listOptionValue builtIn="false" value="pthread"/>
<listOptionValue builtIn="false" value="fftw3f"/>
</option>
<option id="gnu.cpp.link.option.flags.2143618899" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-pthread -std=c++11 -march=native -rdynamic" valueType="string"/>
<option id="gnu.cpp.link.option.flags.2143618899" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-pthread -std=c++17 -march=native -rdynamic" valueType="string"/>
<option id="gnu.cpp.link.option.debugging.gprof.1873732752" name="Generate gprof information (-pg)" superClass="gnu.cpp.link.option.debugging.gprof" value="true" valueType="boolean"/>
<option id="gnu.cpp.link.option.debugging.prof.1032163262" name="Generate prof information (-p)" superClass="gnu.cpp.link.option.debugging.prof" value="true" valueType="boolean"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1382640020" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
Expand Down
10 changes: 5 additions & 5 deletions DROS2/Actors/MessageProcessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -715,9 +715,10 @@ bool MessageProcessor::onDoReceive(Message& received){
RESPOND( false, "Unsupported integration count: '"+LXS(NInts)+"'");
}

if (((Nfreqs*NInts)%DRX_SAMPLES_PER_FRAME) != 0){
RESPOND( false, "Unsupported geometry: 'Nf x Ni must be an integral multiple of DRX frame sizes'");
}
// DRX
if (((Nfreqs*NInts)%DRX_SAMPLES_PER_FRAME) != 0){
RESPOND( false, "Unsupported geometry: 'Nf x Ni must be an integral multiple of DRX frame sizes'");
}

TimeSlot ts(__TimeStamp(startMJD, startMPM),duration);

Expand All @@ -730,8 +731,6 @@ bool MessageProcessor::onDoReceive(Message& received){
}
}

DataFormat opFormat=DataFormat::getFormatByName("DEFAULT_DRX");

char optag[20];
sprintf(optag, "%.6lu_%.9lu", startMJD, received.getReference());
string tag(optag);
Expand All @@ -747,6 +746,7 @@ bool MessageProcessor::onDoReceive(Message& received){
RESPOND( false, "Cannot create output file, or file already exists");
}

DataFormat opFormat=DataFormat::getFormatByName("DEFAULT_DRX");
SpectrometerOperation* op_spc = new SpectrometerOperation(received.getReference(),ts,buf,opFormat,tagfile,0, outputType,Nfreqs, NInts);
checkAndSchedule(sch, op_spc, accept, comment);
if (!accept){
Expand Down
125 changes: 81 additions & 44 deletions DROS2/Actors/Receiver.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
#define NSEC_PER_SEC (1000000000ll)
#define IDEAL_TRANSFER_SIZE 4194304 /*4MB*/
//#define INITIAL_BUFFER_SIZE 2147483648 /*2 GiB*/
#define INITIAL_BUFFER_SIZE (1048576lu*2048lu)
#define INITIAL_BUFFER_SIZE (1048576lu*4096lu)
//#define INITIAL_BUFFER_SIZE 33554432 /*32MB*/


Expand Down Expand Up @@ -130,6 +130,7 @@ class Receiver: public GenericThread {
bufsize(0),
transferSize(0),
currentDrxDecFactor(-1),
currentIsDrx8(false),
resetRequired(true),
newFormat(DataFormat::getFormatByName(DataFormat::defaultFormatName)),
newTransferSize(IDEAL_TRANSFER_SIZE),
Expand All @@ -150,28 +151,50 @@ class Receiver: public GenericThread {

}

bool setNewFmtDrx(int decFactor){
bool setNewFmtDrx(int decFactor, bool isDrx8){
static TimeStamp lastErrorLogged = Time::now();
static size_t errCount = 0;
switch(decFactor){
case 784: newFormat = DataFormat::getFormatByName("DRX_FILT_1"); return true; break;
case 392: newFormat = DataFormat::getFormatByName("DRX_FILT_2"); return true; break;
case 196: newFormat = DataFormat::getFormatByName("DRX_FILT_3"); return true; break;
case 98: newFormat = DataFormat::getFormatByName("DRX_FILT_4"); return true; break;
case 40: newFormat = DataFormat::getFormatByName("DRX_FILT_5"); return true; break;
case 20: newFormat = DataFormat::getFormatByName("DRX_FILT_6"); return true; break;
case 10: newFormat = DataFormat::getFormatByName("DRX_FILT_7"); return true; break;
default:
if (Time::compareTimestamps(Time::addTime(lastErrorLogged, 5000), Time::now()) <=0){
lastErrorLogged = Time::now();
LOGC(L_FATAL, "[Receiver] Bad DRX Decimation factor: " + LXS(decFactor) + " {"+LXS(errCount)+" previous occurrences}", FATAL_COLORS );
errCount = 0;
} else {
errCount++;
}
break;
if(isDrx8) {
switch(decFactor){
case 784: newFormat = DataFormat::getFormatByName("DRX8_FILT_1"); return true; break;
case 392: newFormat = DataFormat::getFormatByName("DRX8_FILT_2"); return true; break;
case 196: newFormat = DataFormat::getFormatByName("DRX8_FILT_3"); return true; break;
case 98: newFormat = DataFormat::getFormatByName("DRX8_FILT_4"); return true; break;
case 40: newFormat = DataFormat::getFormatByName("DRX8_FILT_5"); return true; break;
case 20: newFormat = DataFormat::getFormatByName("DRX8_FILT_6"); return true; break;
case 10: newFormat = DataFormat::getFormatByName("DRX8_FILT_7"); return true; break;
default:
if (Time::compareTimestamps(Time::addTime(lastErrorLogged, 5000), Time::now()) <=0){
lastErrorLogged = Time::now();
LOGC(L_FATAL, "[Receiver] Bad DRX8 Decimation factor: " + LXS(decFactor) + " {"+LXS(errCount)+" previous occurrences}", FATAL_COLORS );
errCount = 0;
} else {
errCount++;
}
break;
}
newFormat = DataFormat::getFormatByName("DEFAULT_DRX8");
} else {
switch(decFactor){
case 784: newFormat = DataFormat::getFormatByName("DRX_FILT_1"); return true; break;
case 392: newFormat = DataFormat::getFormatByName("DRX_FILT_2"); return true; break;
case 196: newFormat = DataFormat::getFormatByName("DRX_FILT_3"); return true; break;
case 98: newFormat = DataFormat::getFormatByName("DRX_FILT_4"); return true; break;
case 40: newFormat = DataFormat::getFormatByName("DRX_FILT_5"); return true; break;
case 20: newFormat = DataFormat::getFormatByName("DRX_FILT_6"); return true; break;
case 10: newFormat = DataFormat::getFormatByName("DRX_FILT_7"); return true; break;
default:
if (Time::compareTimestamps(Time::addTime(lastErrorLogged, 5000), Time::now()) <=0){
lastErrorLogged = Time::now();
LOGC(L_FATAL, "[Receiver] Bad DRX Decimation factor: " + LXS(decFactor) + " {"+LXS(errCount)+" previous occurrences}", FATAL_COLORS );
errCount = 0;
} else {
errCount++;
}
break;
}
newFormat = DataFormat::getFormatByName("DEFAULT_DRX");
}
newFormat = DataFormat::getFormatByName("DEFAULT_DRX");
return true;
}

Expand Down Expand Up @@ -229,8 +252,8 @@ class Receiver: public GenericThread {
}
virtual void packetBurn(){
externallyClosed=true;
char buf[8192];
bzero((void*)buf, 8192);
char buf[8224];
bzero((void*)buf, 8224);
int burnsd = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_storage sa;
bzero((void*)&sa, sizeof(struct sockaddr_storage));
Expand Down Expand Up @@ -306,6 +329,7 @@ class Receiver: public GenericThread {
bool drxRateChange = false;
size_t cnt = (size_t) res;
uint16_t newDrxDecFactor;
bool isDrx8 = false;
for (size_t c=0; c<(size_t)res; c++){
bytesReceived += t->mhdrs[c].msg_len;
}
Expand All @@ -323,6 +347,10 @@ class Receiver: public GenericThread {
tt = __builtin_bswap64(*((size_t*)(&((TbtFrame*)t->iovs[cnt-1].iov_base)->header.timeTag)));
case COR_FRAME_SIZE:
tt = __builtin_bswap64(*((size_t*)(&((CorFrame*)t->iovs[cnt-1].iov_base)->header.timeTag)));
break;
case DRX8_FRAME_SIZE:
tt = __builtin_bswap64(*((size_t*)(&((Drx8Frame*)t->iovs[cnt-1].iov_base)->header.timeTag)));
break;
default : break;
}
if (tt!=0){
Expand All @@ -338,9 +366,10 @@ class Receiver: public GenericThread {

// quick check the common case, all packets right size, no change in decfactors
for (size_t j=0; j<cnt; j++){
if (fsize == DRX_FRAME_SIZE){
if (fsize == DRX_FRAME_SIZE || fsize == DRX8_FRAME_SIZE){
newDrxDecFactor = bswap16(((DrxFrame*) t->frames[j])->header.decFactor);
if (newDrxDecFactor != currentDrxDecFactor){
isDrx8 = ((DrxFrame*) t->frames[j])->header.drx_is_adp;
if (newDrxDecFactor != currentDrxDecFactor || isDrx8 != currentIsDrx8){
drxRateChange=true;
}
}
Expand All @@ -351,8 +380,8 @@ class Receiver: public GenericThread {
}

// check in case drx rate changed
if ((fsize == DRX_FRAME_SIZE) && drxRateChange && !lookMore){
if (!setNewFmtDrx(newDrxDecFactor)){
if ((fsize == DRX_FRAME_SIZE || fsize == DRX8_FRAME_SIZE) && drxRateChange && !lookMore){
if (!setNewFmtDrx(newDrxDecFactor, isDrx8)){
CANCEL_TICKET();
RESUME_RECEPTION();
/* CONTINUE_WITH_TICKET(); */
Expand All @@ -371,33 +400,36 @@ class Receiver: public GenericThread {
#define IDX_TBT 3
#define IDX_COR 4
#define IDX_DRX 5
#define IDX_ODDBALL 6
#define IDX_DRX8 6
#define IDX_ODDBALL 7

// some count variables for deeper inspection
size_t n[7] = {0,0,0,0,0,0,0}; // in order : error, empty, tbs, tbt, cor, drx, odd
size_t last[7] = {0,0,0,0,0,0,0}; // in order : error, empty, tbs, tbt, cor, drx, odd
int sz[7] = {0,-1,TBS_FRAME_SIZE,TBT_FRAME_SIZE,COR_FRAME_SIZE,DRX_FRAME_SIZE,-2}; // in order : error, empty, tbn, tbw, tbf, cor, drx, odd
size_t n[8] = {0,0,0,0,0,0,0,0}; // in order : error, empty, tbs, tbt, cor, drx, drx8, odd
size_t last[8] = {0,0,0,0,0,0,0,0}; // in order : error, empty, tbs, tbt, cor, drx, drx8, odd
int sz[8] = {0,-1,TBS_FRAME_SIZE,TBT_FRAME_SIZE,COR_FRAME_SIZE,DRX_FRAME_SIZE,DRX8_FRAME_SIZE,-2}; // in order : error, empty, tbs, tbt, tbf, cor, drx, drx8, odd
size_t curIdx;
// count packet sizes
for (size_t j=0; j<(size_t) res; j++){
switch(t->mhdrs[j].msg_len){
case 0: n[IDX_EMPTY]++; last[IDX_EMPTY]=j; break;
case TBS_FRAME_SIZE: n[IDX_TBS]++; last[IDX_TBS]=j; break;
case TBT_FRAME_SIZE: n[IDX_TBT]++; last[IDX_TBT]=j; break;
case COR_FRAME_SIZE: n[IDX_COR]++; last[IDX_COR]=j; break;
case DRX_FRAME_SIZE: n[IDX_DRX]++; last[IDX_DRX]=j; break;
case 0: n[IDX_EMPTY]++; last[IDX_EMPTY]=j; break;
case TBS_FRAME_SIZE: n[IDX_TBS]++; last[IDX_TBS]=j; break;
case TBT_FRAME_SIZE: n[IDX_TBT]++; last[IDX_TBT]=j; break;
case COR_FRAME_SIZE: n[IDX_COR]++; last[IDX_COR]=j; break;
case DRX_FRAME_SIZE: n[IDX_DRX]++; last[IDX_DRX]=j; break;
case DRX8_FRAME_SIZE: n[IDX_DRX8]++; last[IDX_DRX8]=j; break;
default:
LOGC(L_DEBUG, "Bad size: " + LXS(t->mhdrs[j].msg_len), TRACE_COLORS);
n[IDX_ODDBALL]++; last[IDX_ODDBALL]=j; break;
}
}
switch(t->fsize){
case 0: curIdx = IDX_EMPTY; break;
case TBS_FRAME_SIZE: curIdx = IDX_TBS; break;
case TBT_FRAME_SIZE: curIdx = IDX_TBT; break;
case COR_FRAME_SIZE: curIdx = IDX_COR; break;
case DRX_FRAME_SIZE: curIdx = IDX_DRX; break;
default: curIdx = IDX_ODDBALL; break;
case 0: curIdx = IDX_EMPTY; break;
case TBS_FRAME_SIZE: curIdx = IDX_TBS; break;
case TBT_FRAME_SIZE: curIdx = IDX_TBT; break;
case COR_FRAME_SIZE: curIdx = IDX_COR; break;
case DRX_FRAME_SIZE: curIdx = IDX_DRX; break;
case DRX8_FRAME_SIZE: curIdx = IDX_DRX8; break;
default: curIdx = IDX_ODDBALL; break;
}

// find the maximum count of packets whose size is not our current size
Expand Down Expand Up @@ -425,6 +457,7 @@ class Receiver: public GenericThread {
LOGC(L_FATAL, "[Receiver] n[4] " + LXS(n[4]), FATAL_COLORS );
LOGC(L_FATAL, "[Receiver] n[5] " + LXS(n[5]), FATAL_COLORS );
LOGC(L_FATAL, "[Receiver] n[6] " + LXS(n[6]), FATAL_COLORS );
LOGC(L_FATAL, "[Receiver] n[7] " + LXS(n[7]), FATAL_COLORS );
CANCEL_TICKET();
RESUME_RECEPTION();
/* CONTINUE_WITH_TICKET(); */
Expand All @@ -439,7 +472,8 @@ class Receiver: public GenericThread {
}

// get the new format based on deeper packet inspection once we know the new size
DrxFrame* f; // only drx might require looking at the actual frame
DrxFrame* f; // only drx and drx8 might require looking at the actual frame
Drx8Frame* f8;
switch(new_frame_size){
case 0:
// ignore, not a mode change
Expand Down Expand Up @@ -472,9 +506,10 @@ class Receiver: public GenericThread {
newFormat = DataFormat::getFormatByName("DEFAULT_COR");
break;
case DRX_FRAME_SIZE:
// changed to DRX
case DRX8_FRAME_SIZE:
// changed to DRX or DRX8
f = (DrxFrame*) t->frames[last_seen];
if (!setNewFmtDrx(bswap16(f->header.decFactor))){
if (!setNewFmtDrx(bswap16(f->header.decFactor), f->header.drx_is_adp)){
CANCEL_TICKET();
RESUME_RECEPTION();
/* CONTINUE_WITH_TICKET(); */
Expand Down Expand Up @@ -555,6 +590,7 @@ class Receiver: public GenericThread {
size_t bufsize;
size_t transferSize;
int currentDrxDecFactor; // to detect mode changes
bool currentIsDrx8; // to detect mode changes

// buffer geometry change stuff
volatile bool resetRequired;
Expand Down Expand Up @@ -713,6 +749,7 @@ class Receiver: public GenericThread {
this->currentFormat = newFormat;
this->transferSize = newTransferSize;
this->currentDrxDecFactor = newFormat.getDecFactor();
this->currentIsDrx8 = (newFormat.getBitDepth() == 8);
this->resetRequired = false;
return true;

Expand Down
5 changes: 3 additions & 2 deletions DROS2/Data/Complex.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,15 @@ typedef union __PackedSample4{
uint8_t packed;
}__attribute__((packed)) PackedSample4;

// NOTE: little-endian packing
typedef union __PackedSample8{
struct {
int8_t q;
int8_t i;
int8_t q;
};
struct {
int8_t im;
int8_t re;
int8_t im;
};
uint16_t packed;
}__attribute__((packed)) PackedSample8;
Expand Down
37 changes: 21 additions & 16 deletions DROS2/Data/DataFormat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,26 +50,31 @@
#include "DataFormat.h"

DataFormat::FormatList DataFormat::knownFormats = map_list_of
("DEFAULT_DRX", DataFormat("DRX_GENERIC", 4128ll, 79014048ll, PT_DRX, -1 ))
("DEFAULT_TBT", DataFormat("DEFAULT_TBT", 8220ll, 117440512ll, PT_TBT, -1 ))
("DEFAULT_TBS", DataFormat("DEFAULT_TBS", 4124ll, 98976999ll, PT_TBS, -1 ))
("DEFAULT_COR", DataFormat("DEFAULT_COR", 2336ll, 117440512ll, PT_FSC, -1 ))
("DEFAULT_DRX", DataFormat("DRX_GENERIC", 4128ll, 79014048ll, PT_DRX, -1, 4 ))
("DEFAULT_TBT", DataFormat("DEFAULT_TBT", 8220ll, 117440512ll, PT_TBT, -1, 4 ))
("DEFAULT_TBS", DataFormat("DEFAULT_TBS", 4124ll, 98976999ll, PT_TBS, -1, 4 ))
("DEFAULT_COR", DataFormat("DEFAULT_COR", 2336ll, 117440512ll, PT_FSC, -1, 4 ))
("DEFAULT_DRX8", DataFormat("DRX8_GENERIC", 8224ll, 157415584ll, PT_DRX8, -1, 8 ))

("TBS_FILT_8", DataFormat("TBS_FILT_8", 4124ll, 98976999ll, PT_TBS, -1 ))
("TBS_FILT_8", DataFormat("TBS_FILT_8", 4124ll, 98976999ll, PT_TBS, -1, 4 ))

("DRX_FILT_1", DataFormat("DRX_FILT_1", 4128ll, 1011360ll, PT_DRX, 784 ))
("DRX_FILT_2", DataFormat("DRX_FILT_2", 4128ll, 2018592ll, PT_DRX, 392 ))
("DRX_FILT_3", DataFormat("DRX_FILT_3", 4128ll, 4033056ll, PT_DRX, 196 ))
("DRX_FILT_4", DataFormat("DRX_FILT_4", 4128ll, 8066112ll, PT_DRX, 98 ))
("DRX_FILT_5", DataFormat("DRX_FILT_5", 4128ll, 19756608ll, PT_DRX, 40 ))
("DRX_FILT_6", DataFormat("DRX_FILT_6", 4128ll, 39509088ll, PT_DRX, 20 ))
("DRX_FILT_7", DataFormat("DRX_FILT_7", 4128ll, 79014048ll, PT_DRX, 10 ))
("DRX_FILT_1", DataFormat("DRX_FILT_1", 4128ll, 1011360ll, PT_DRX, 784, 4 ))
("DRX_FILT_2", DataFormat("DRX_FILT_2", 4128ll, 2018592ll, PT_DRX, 392, 4 ))
("DRX_FILT_3", DataFormat("DRX_FILT_3", 4128ll, 4033056ll, PT_DRX, 196, 4 ))
("DRX_FILT_4", DataFormat("DRX_FILT_4", 4128ll, 8066112ll, PT_DRX, 98, 4 ))
("DRX_FILT_5", DataFormat("DRX_FILT_5", 4128ll, 19756608ll, PT_DRX, 40, 4 ))
("DRX_FILT_6", DataFormat("DRX_FILT_6", 4128ll, 39509088ll, PT_DRX, 20, 4 ))
("DRX_FILT_7", DataFormat("DRX_FILT_7", 4128ll, 79014048ll, PT_DRX, 10, 4 ))

("DRX8_FILT_1", DataFormat("DRX8_FILT_1", 8224ll, 2006656ll, PT_DRX8, 784, 8 ))
("DRX8_FILT_2", DataFormat("DRX8_FILT_2", 8224ll, 4013312ll, PT_DRX8, 392, 8 ))
("DRX8_FILT_3", DataFormat("DRX8_FILT_3", 8224ll, 8026624ll, PT_DRX8, 196, 8 ))
("DRX8_FILT_4", DataFormat("DRX8_FILT_4", 8224ll, 16061472ll, PT_DRX8, 98, 8 ))
("DRX8_FILT_5", DataFormat("DRX8_FILT_5", 8224ll, 39351840ll, PT_DRX8, 40, 8 ))
("DRX8_FILT_6", DataFormat("DRX8_FILT_6", 8224ll, 78703680ll, PT_DRX8, 20, 8 ))
("DRX8_FILT_7", DataFormat("DRX8_FILT_7", 8224ll, 157415584ll, PT_DRX8, 10, 8 ))

;
const string DataFormat::defaultFormatName = "DRX_FILT_7";

INIT_ACCESS_MUTEX_ST(DataFormat);




Loading