2017-05-09 20:29:29 -07:00
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
/* Copyright (c) FIRST 2017. All Rights Reserved. */
|
|
|
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
|
|
|
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
|
|
|
|
/* the project. */
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
#include "HAL/cpp/fpga_clock.h"
|
|
|
|
|
|
|
|
|
|
#include "HAL/HAL.h"
|
2017-06-30 18:46:50 -07:00
|
|
|
#include "llvm/raw_ostream.h"
|
2017-05-09 20:29:29 -07:00
|
|
|
|
|
|
|
|
namespace hal {
|
2017-08-19 22:56:58 -07:00
|
|
|
const fpga_clock::time_point fpga_clock::min_time =
|
|
|
|
|
fpga_clock::time_point(fpga_clock::duration(
|
|
|
|
|
std::numeric_limits<fpga_clock::duration::rep>::min()));
|
2017-05-09 20:29:29 -07:00
|
|
|
|
|
|
|
|
fpga_clock::time_point fpga_clock::now() noexcept {
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
uint64_t currentTime = HAL_GetFPGATime(&status);
|
2017-06-30 18:46:50 -07:00
|
|
|
if (status != 0) {
|
|
|
|
|
llvm::errs()
|
|
|
|
|
<< "Call to HAL_GetFPGATime failed."
|
|
|
|
|
<< "Initialization might have failed. Time will not be correct";
|
|
|
|
|
llvm::errs().flush();
|
|
|
|
|
return epoch();
|
|
|
|
|
}
|
2017-05-09 20:29:29 -07:00
|
|
|
return time_point(std::chrono::microseconds(currentTime));
|
|
|
|
|
}
|
|
|
|
|
} // namespace hal
|