64 lines
1.4 KiB
C++
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 */
|