uldaq/src/hid/ai/AiHidBase.cpp
2018-12-03 13:40:46 -05:00

64 lines
1.4 KiB
C++

/*
* AiHidBase.cpp
*
* Author: Measurement Computing Corporation
*/
#include "AiHidBase.h"
namespace ul
{
AiHidBase::AiHidBase(const HidDaqDevice& daqDevice): AiDevice(daqDevice), mHidDevice(daqDevice)
{
}
AiHidBase::~AiHidBase()
{
}
void AiHidBase::readCalDate()
{
unsigned char calDateBuf[6];
int calDateAddr = mAiInfo.getCalDateAddr();
if(calDateAddr != -1 && getScanState() == SS_IDLE)
{
int bytesReceived = daqDev().memRead(MT_EEPROM, MR_CAL, calDateAddr, (unsigned char*)calDateBuf, sizeof(calDateBuf));
if(bytesReceived == sizeof(calDateBuf))
{
tm time;
memset(&time, 0, sizeof(time));
time.tm_year = calDateBuf[0] + 100;
time.tm_mon = calDateBuf[1] - 1;
time.tm_mday = calDateBuf[2];
time.tm_hour = calDateBuf[3];
time.tm_min = calDateBuf[4];
time.tm_sec = calDateBuf[5];
time.tm_isdst = -1;
// make sure the date is valid, mktime does not validate the range
if(time.tm_mon <= 11 && time.tm_mday <= 31 && time.tm_hour <= 23 && time.tm_min <= 59 && time.tm_sec <= 60)
{
time_t cal_date_sec = mktime(&time); // seconds since unix epoch
if(cal_date_sec != -1) // mktime returns -1 if cal date is invalid
mCalDate = cal_date_sec;
// convert seconds to string
/*struct tm *timeinfo;
timeinfo = localtime(&cal_date_sec);
char b[100];
strftime(b, 100, "%Y-%m-%d %H:%M:%S", timeinfo);
std::cout << b << std::endl;*/
}
}
}
}
} /* namespace ul */