| 1065 | } |
| 1066 | |
| 1067 | void cDataMemoryLevel::printLevelStats(int detail) const |
| 1068 | { |
| 1069 | if (detail) { |
| 1070 | SMILE_PRINT("==> LEVEL '%s' +++ Buffersize(frames) = %i +++ nReaders = %i",getName(),lcfg.nT,nReaders); |
| 1071 | if (detail >= 2) { |
| 1072 | // TODO: more details AND warn if nReaders == 0 or size == 0, etc. |
| 1073 | SMILE_PRINT(" Period(in seconds) = %f \t frameSize(in seconds) = %f (last: %f)", |
| 1074 | lcfg.T, lcfg.frameSizeSec, lcfg.lastFrameSizeSec); |
| 1075 | SMILE_PRINT(" BlocksizeRead(frames) = %i \t BlocksizeWrite(frames) = %i", |
| 1076 | lcfg.blocksizeReader, lcfg.blocksizeWriter); |
| 1077 | SMILE_PRINT(" noTimeMeta = %d", lcfg.noTimeMeta); |
| 1078 | if (detail >= 3) { |
| 1079 | SMILE_PRINT(" Number of elements: %i \t Number of fields: %i",lcfg.N,lcfg.Nf); |
| 1080 | if (detail >= 4) { |
| 1081 | const char * typeStr = "float"; |
| 1082 | SMILE_PRINT(" type = %s noHang = %i isRingbuffer(isRb) = %i growDyn = %i",typeStr,lcfg.noHang,lcfg.isRb,lcfg.growDyn); |
| 1083 | if (detail >= 5) { |
| 1084 | // TODO: print data element names ?? |
| 1085 | int i; long idx = 0; |
| 1086 | SMILE_PRINT(" Fields: index (range) : fieldname[array indicies] (# elements)"); |
| 1087 | for (i=0; i<fmeta.N; i++) { |
| 1088 | if (fmeta.field[i].N > 1) { |
| 1089 | SMILE_PRINT(" %2i. - %2i. : %s[%i-%i] (%i)",idx,idx+fmeta.field[i].N-1,fmeta.field[i].name,fmeta.field[i].arrNameOffset,fmeta.field[i].N+fmeta.field[i].arrNameOffset-1,fmeta.field[i].N); |
| 1090 | idx += fmeta.field[i].N; |
| 1091 | } else { |
| 1092 | SMILE_PRINT(" %2i. : %s",idx,fmeta.field[i].name); |
| 1093 | idx++; |
| 1094 | } |
| 1095 | } |
| 1096 | } |
| 1097 | if (detail >= 6) { |
| 1098 | SMILE_PRINT(" Fields with info struct set: (index (range) : info struct size in bytes (dt = datatype))"); |
| 1099 | long idx = 0; |
| 1100 | for (int i = 0; i < fmeta.N; i++) { |
| 1101 | if (fmeta.field[i].infoSet) { |
| 1102 | if (fmeta.field[i].N > 1) { |
| 1103 | SMILE_PRINT(" %2i. - %2i. : infoSize = %i (dt = %i)", idx, idx+fmeta.field[i].N-1, fmeta.field[i].infoSize, fmeta.field[i].dataType); |
| 1104 | idx += fmeta.field[i].N; |
| 1105 | } else { |
| 1106 | SMILE_PRINT(" %2i. : infoSize = %i (dt = %i)", idx, fmeta.field[i].infoSize, fmeta.field[i].dataType); |
| 1107 | idx++; |
| 1108 | } |
| 1109 | } |
| 1110 | } |
| 1111 | } |
| 1112 | } |
| 1113 | } |
| 1114 | } |
| 1115 | } |
| 1116 | if (nReaders <= 0) SMILE_WRN(1," Level '%s' might be a DEAD-END (nReaders <= 0!)",getName()); |
| 1117 | } |
| 1118 | |
| 1119 | const sDmLevelConfig * cDataMemoryLevel::queryReadConfig(long blocksizeReader) |
| 1120 | { |