Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnStatusFrame.h
- Revision:
- 21:ce51bb0ba4a5
- Parent:
- 10:3c93db1cfb12
- Child:
- 25:57b2627fe756
--- a/SnStatusFrame.h Wed Oct 03 00:22:27 2012 +0000 +++ b/SnStatusFrame.h Wed Oct 10 05:54:12 2012 +0000 @@ -7,6 +7,7 @@ #include "SnCommWin.h" #include "SnConfigFrame.h" #include "SnEventFrame.h" +#include "SnSDUtils.h" struct SnStatusFrame { // @@ -29,33 +30,35 @@ sizeof(uint64_t) + (3u*sizeof(uint32_t)) + (2u*sizeof(uint16_t)) + (3u*sizeof(uint8_t)) + (2u*sizeof(float)) + SnConfigFrame::kConfLblLen; + static const uint32_t kMaxSizeOfV3 = + kMaxSizeOfV2 + sizeof(uint32_t) + sizeof(float); static const uint32_t kMaxSizeOf = kMaxSizeOfV1; static uint32_t GetMaxSizeOf(const uint8_t rv) { if (rv==1) { return kMaxSizeOfV1; + } else if (rv==2) { + return kMaxSizeOfV2; } else { - return kMaxSizeOfV2; + return kMaxSizeOfV3; } } template<class T> static SnCommWin::ECommWinResult WriteTo(T& x, - const SnConfigFrame::EDatPackBit type, const SnConfigFrame& conf, const SnEventFrame& evt, char* const evtBuf, const uint16_t seq, const float thmrate, - const float evtrate) { + const float evtrate, + const uint8_t loseLSB, + const uint8_t loseMSB, + const uint16_t wvBase) { // expect 'x' to be a MODSERIAL& or a char const* - uint8_t loseLSB=0, loseMSB=0; - uint16_t wvBase=0; - conf.GetPackParsFor(type, loseLSB, loseMSB, wvBase); - const uint32_t llen = strlen(conf.GetLabel()); // if anything about these writes changes, update kIOVers and SizeOf @@ -71,10 +74,21 @@ x = SnBitUtils::WriteTo(x, wvBase); x = SnBitUtils::WriteTo(x, thmrate); x = SnBitUtils::WriteTo(x, evtrate); - /* - x = WriteEventTo(x, evtBuf, evt, - loseLSB, loseMSB, wvBase); - */ + // file info + uint32_t nfiles(0); + float totbytes(0); + SnSDUtils::GetDirProps(SnSDUtils::kSDdir, nfiles, totbytes); + if (strcmp(SnSDUtils::kSDdir, SnSDUtils::kSDsubDir)!=0) { + uint32_t sf(0); + float sb(0); + SnSDUtils::GetDirProps(SnSDUtils::kSDsubDir, sf, sb); + nfiles += sf; + totbytes += sb; + } + totbytes /= 1000; // KB + x = SnBitUtils::WriteTo(x, nfiles); + x = SnBitUtils::WriteTo(x, totbytes); + return SnCommWin::kOkMsgSent; }