| #pragma once |
| |
| /** |
| * @file hei_user_interface.hpp |
| * |
| * The process for actions like hardware register access will vary per user |
| * application. Therefore, the user application must define all of the APIs |
| * declared in this header file. |
| */ |
| |
| #include <stdlib.h> |
| |
| #include <hei_chip.hpp> |
| |
| namespace libhei |
| { |
| |
| /** |
| * @brief Performs a hardware register read operation. |
| * |
| * @param i_chip The target chip for the register access. It is provided to |
| * the isolator by the user application via the isolator main |
| * APIs. |
| * |
| * @param o_buffer Allocated memory space for the returned contents of the |
| * register. |
| * |
| * @param io_bufSize The input parameter is the maximum size of the allocated |
| * o_buffer. The return value is the number of bytes actually |
| * written to the buffer. |
| * |
| * @param i_regType The user application may support different types of |
| * registers. This value is provided to the isolator by the |
| * user application via the Chip Data Files. The user |
| * application is responsible for knowing what to do with this |
| * parameter. |
| * |
| * @param i_address The register address. The values is a 1, 2, 4, or 8 byte |
| * address (right justified), which is provided to the |
| * isolator by the user application via the Chip Data Files. |
| * |
| * @return false => register access was successful |
| * true => hardware access failure |
| * Note that in the case of a failure, the user application is |
| * responsible for reporting why the register access failed. |
| */ |
| bool registerRead(const Chip& i_chip, void* o_buffer, size_t& io_bufSize, |
| uint64_t i_regType, uint64_t i_address); |
| |
| #ifndef __HEI_READ_ONLY |
| |
| /** |
| * @brief Performs a hardware register write operation. |
| * |
| * @param i_chip The target chip for the register access. It is provided to |
| * the isolator by the user application via the isolator main |
| * APIs. |
| * |
| * @param i_buffer Allocated memory space containing the register contents to |
| * write to hardware. |
| * |
| * @param io_bufSize The input parameter is the number of byte from i_buffer to |
| * write to the hardware register. The return value is the |
| * actual number of bytes written to the hardware register. |
| * |
| * @param i_regType The user application may support different types of |
| * registers. This value is provided to the isolator by the |
| * user application via the Chip Data Files. The user |
| * application is responsible for knowing what to do with this |
| * parameter. |
| * |
| * @param i_address The register address. The values is a 1, 2, 4, or 8 byte |
| * address (right justified), which is provided to the |
| * isolator by the user application via the Chip Data Files. |
| * |
| * @return false => register access was successful |
| * true => hardware access failure |
| * Note that in the case of a failure, the user application is |
| * responsible for reporting why the register access failed. |
| */ |
| bool registerWrite(const Chip& i_chip, void* i_buffer, size_t& io_bufSize, |
| uint64_t i_regType, uint64_t i_address); |
| |
| #endif |
| |
| /** |
| * @brief Prints an informational trace/log. |
| * |
| * This is similar to printing a single line of text to stdout. Example |
| * implementation: |
| * void hei_inf(char* format, ...) |
| * { |
| * va_list args; |
| * va_start(args, format); |
| * vfprintf(stdout, format, args); |
| * va_end(args); |
| * fprintf(stdout, "\n"); |
| * } |
| * |
| * @param i_format The string format and variatic arguments. |
| */ |
| void hei_inf(char* i_format, ...); |
| |
| /** |
| * @brief Prints an error trace/log. |
| * |
| * This is similar to printing a single line of text to stderr. Example |
| * implementation: |
| * void hei_inf(char* format, ...) |
| * { |
| * va_list args; |
| * va_start(args, format); |
| * vfprintf(stderr, format, args); |
| * va_end(args); |
| * fprintf(stderr, "\n"); |
| * } |
| * |
| * @param i_format The string format and variatic arguments. |
| */ |
| void hei_err(char* i_format, ...); |
| |
| } // end namespace libhei |