| /** |
| * @file These are the simulated implementations of the user interfaces declared |
| * in hei_user_interface.hpp |
| */ |
| |
| #include "simulator.hpp" |
| |
| #include <endian.h> |
| |
| #include <hei_user_interface.hpp> |
| #include <util/hei_includes.hpp> |
| |
| namespace libhei |
| { |
| |
| //------------------------------------------------------------------------------ |
| |
| bool registerRead(const Chip& i_chip, RegisterType_t i_regType, |
| uint64_t i_address, uint64_t& o_value) |
| { |
| bool accessFailure = false; |
| |
| // Get access to data through the singleton. |
| SimulatorData& theSimData = SimulatorData::getSingleton(); |
| |
| switch (i_regType) |
| { |
| case REG_TYPE_SCOM: |
| o_value = theSimData.getScomReg(i_chip, (uint32_t)i_address); |
| break; |
| case REG_TYPE_ID_SCOM: |
| o_value = theSimData.getIdScomReg(i_chip, i_address); |
| break; |
| default: |
| accessFailure = true; |
| HEI_ERR("registerRead(%p,%" PRIu8 ",%" PRIx64 ")", i_chip.getChip(), |
| i_regType, i_address); |
| } |
| |
| return accessFailure; |
| } |
| |
| //------------------------------------------------------------------------------ |
| |
| #ifdef __HEI_ENABLE_HW_WRITE |
| |
| bool registerWrite(const Chip& i_chip, RegisterType_t i_regType, |
| uint64_t i_address, uint64_t i_value) |
| { |
| bool accessFailure = false; |
| |
| switch (i_regType) |
| { |
| // TODO: add cases for REG_TYPE_SCOM and REG_TYPE_ID_SCOM |
| default: |
| accessFailure = true; |
| HEI_ERR("registerWrite(%p,%" PRIu8 ",%" PRIx64 ",%" PRIx64 ")", |
| i_chip.getChip(), i_regType, i_address, i_value); |
| } |
| |
| return accessFailure; |
| } |
| |
| #endif // __HEI_ENABLE_HW_WRITE |
| |
| //------------------------------------------------------------------------------ |
| |
| } // namespace libhei |