From 75bc864cd1645954f0793c081f365f86ea043510 Mon Sep 17 00:00:00 2001
From: Armin Luntzer <armin.luntzer@univie.ac.at>
Date: Mon, 15 Jun 2020 12:29:35 +0200
Subject: [PATCH] add FEE HK readout

---
 FEE/smile_fee_cmd.c  | 432 +++++++++++++++++++++++++
 FEE/smile_fee_cmd.h  |  65 +++-
 FEE/smile_fee_ctrl.c | 744 +++++++++++++++++++++++++++++++++++++++++++
 FEE/smile_fee_ctrl.h | 113 +++++--
 4 files changed, 1320 insertions(+), 34 deletions(-)

diff --git a/FEE/smile_fee_cmd.c b/FEE/smile_fee_cmd.c
index ef7b742..7e60920 100644
--- a/FEE/smile_fee_cmd.c
+++ b/FEE/smile_fee_cmd.c
@@ -598,3 +598,435 @@ int fee_write_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd)
 {
 	return fee_write_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_24);
 }
+
+
+/**
+* @brief create a command to read the FEE HK register 3
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_3(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_3);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 4
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_4(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_4);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 5
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_5(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_5);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 6
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_6(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_6);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 7
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_7(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_7);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 11
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_11(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_11);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 12
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_12(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_12);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 13
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_13(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_13);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 14
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_14(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_14);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 15
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_15(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_15);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 16
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_16(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_16);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 17
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_17(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_17);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 18
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_18(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_18);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 19
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_19(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_19);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 20
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_20(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_20);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 21
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_21(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_21);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 22
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_22(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_22);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 23
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_23(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_23);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 27
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_27(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_27);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 28
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_28(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_28);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 29
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_29(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_29);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 30
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_30(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_30);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 31
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_31(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_31);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 32
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_32(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_32);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 33
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_33(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_33);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 34
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_34(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_34);
+}
+
+
+/**
+* @brief create a command to read the FEE HK register 35
+*
+* @param trans_id a transaction identifier
+*
+* @param cmd the command buffer; if NULL, the function returns the needed size
+*
+* @returns the size of the command data buffer or 0 on error
+*/
+
+int fee_read_cmd_hk_reg_35(uint16_t trans_id, uint8_t *cmd)
+{
+	return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_35);
+}
diff --git a/FEE/smile_fee_cmd.h b/FEE/smile_fee_cmd.h
index 8485e3d..1defd64 100644
--- a/FEE/smile_fee_cmd.h
+++ b/FEE/smile_fee_cmd.h
@@ -30,27 +30,40 @@
 #define FEE_CFG_REG_3		0x0000000CUL
 #define FEE_CFG_REG_4		0x00000010UL
 #define FEE_CFG_REG_5		0x00000014UL
+#define FEE_CFG_REG_6		0x00000018UL	/* unused */
+#define FEE_CFG_REG_7		0x0000001CUL	/* unused */
+#define FEE_CFG_REG_8		0x00000020UL	/* unused */
+#define FEE_CFG_REG_9		0x00000024UL	/* unused */
+#define FEE_CFG_REG_10		0x00000028UL	/* unused */
+#define FEE_CFG_REG_11		0x0000002CUL	/* unused */
+#define FEE_CFG_REG_12		0x00000030UL	/* unused */
+#define FEE_CFG_REG_13		0x00000034UL	/* unused */
+#define FEE_CFG_REG_14		0x00000038UL	/* unused */
+#define FEE_CFG_REG_15		0x0000003CUL	/* unused */
+#define FEE_CFG_REG_16		0x00000040UL	/* unused */
+#define FEE_CFG_REG_17		0x00000044UL	/* unused */
 #define FEE_CFG_REG_18		0x00000048UL
 #define FEE_CFG_REG_19		0x0000004CUL
 #define FEE_CFG_REG_20		0x00000050UL
 #define FEE_CFG_REG_21		0x00000054UL
 #define FEE_CFG_REG_22		0x00000058UL
+#define FEE_CFG_REG_23		0x0000005CUL	/* reserved */
 #define FEE_CFG_REG_24		0x00000060UL
 
 
 /* FEE  RO registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */
 
-#define FEE_HK_REG_0		0x00000700
-#define FEE_HK_REG_1		0x00000704
-#define FEE_HK_REG_2		0x00000708
+#define FEE_HK_REG_0		0x00000700	/* reserved */
+#define FEE_HK_REG_1		0x00000704	/* reserved */
+#define FEE_HK_REG_2		0x00000708	/* reserved */
 #define FEE_HK_REG_3		0x0000070C
 #define FEE_HK_REG_4		0x00000710
 #define FEE_HK_REG_5		0x00000714
 #define FEE_HK_REG_6		0x00000718
 #define FEE_HK_REG_7		0x0000071C
-#define FEE_HK_REG_8		0x00000720
-#define FEE_HK_REG_9		0x00000724
-#define FEE_HK_REG_10		0x00000728
+#define FEE_HK_REG_8		0x00000720	/* reserved */
+#define FEE_HK_REG_9		0x00000724	/* reserved */
+#define FEE_HK_REG_10		0x00000728	/* reserved */
 #define FEE_HK_REG_11		0x0000072C
 #define FEE_HK_REG_12		0x00000730
 #define FEE_HK_REG_13		0x00000734
@@ -64,9 +77,9 @@
 #define FEE_HK_REG_21		0x00000754
 #define FEE_HK_REG_22		0x00000758
 #define FEE_HK_REG_23		0x0000075C
-#define FEE_HK_REG_24		0x00000760
-#define FEE_HK_REG_25		0x00000764
-#define FEE_HK_REG_26		0x00000768
+#define FEE_HK_REG_24		0x00000760	/* reserved */
+#define FEE_HK_REG_25		0x00000764	/* reserved */
+#define FEE_HK_REG_26		0x00000768	/* reserved */
 #define FEE_HK_REG_27		0x0000076C
 #define FEE_HK_REG_28		0x00000770
 #define FEE_HK_REG_29		0x00000774
@@ -89,7 +102,7 @@ int fee_read_cmd_data(uint16_t trans_id, uint8_t *cmd,
 
 
 
-/* FEE read accessors */
+/* FEE configuration register read accessors */
 int fee_read_cmd_cfg_reg_0(uint16_t trans_id, uint8_t *cmd);
 int fee_read_cmd_cfg_reg_1(uint16_t trans_id, uint8_t *cmd);
 int fee_read_cmd_cfg_reg_2(uint16_t trans_id, uint8_t *cmd);
@@ -104,7 +117,7 @@ int fee_read_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd);
 int fee_read_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd);
 
 
-/* FEE write accessors */
+/* FEE configuration register write accessors */
 int fee_write_cmd_cfg_reg_0(uint16_t trans_id, uint8_t *cmd);
 int fee_write_cmd_cfg_reg_1(uint16_t trans_id, uint8_t *cmd);
 int fee_write_cmd_cfg_reg_2(uint16_t trans_id, uint8_t *cmd);
@@ -119,6 +132,36 @@ int fee_write_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd);
 int fee_write_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd);
 
 
+/* FEE housekeeping register read accessors */
+int fee_read_cmd_hk_reg_3(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_4(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_5(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_6(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_7(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_11(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_12(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_13(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_14(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_15(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_16(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_17(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_18(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_19(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_20(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_21(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_22(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_23(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_27(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_28(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_29(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_30(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_31(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_32(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_33(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_34(uint16_t trans_id, uint8_t *cmd);
+int fee_read_cmd_hk_reg_35(uint16_t trans_id, uint8_t *cmd);
+
+
 
 
 #endif /* SMILE_FEE_CMD_H */
diff --git a/FEE/smile_fee_ctrl.c b/FEE/smile_fee_ctrl.c
index f178415..131111b 100644
--- a/FEE/smile_fee_ctrl.c
+++ b/FEE/smile_fee_ctrl.c
@@ -1084,6 +1084,708 @@ void smile_fee_set_execute_op(uint32_t mode)
 }
 
 
+/**
+ * @brief get CCD1_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd1_ts(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_3 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD2_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd2_ts(void)
+{
+	return (uint16_t) smile_fee->hk_reg_3 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD3_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd3_ts(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_4 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD4_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd4_ts(void)
+{
+	return (uint16_t) smile_fee->hk_reg_4 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get PRT1_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_prt1(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_5 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get PRT2_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_prt2(void)
+{
+	return (uint16_t) smile_fee->hk_reg_5 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get PRT3_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_prt3(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_6 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get PRT4_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_prt4(void)
+{
+	return (uint16_t) smile_fee->hk_reg_6 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get PRT5_TS HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_prt5(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_7 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get ZERO_DIFF_AMP HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_zero_diff_amp(void)
+{
+	return (uint16_t) smile_fee->hk_reg_7 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD3_VOD_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd3_vod_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_11 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD3_VOG_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd3_vog_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_11 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD3_VRD_MON_E HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd3_vrd_mon_e(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_12 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD4_VOD_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd4_vod_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_12 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD4_VOG_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd4_vog_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_13 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD4_VRD_MON_e HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd4_vrd_mon_e(void)
+{
+	return (uint16_t) smile_fee->hk_reg_13 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VCCD HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_vccd(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_14 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VRCLK_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_vrclk_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_14 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VICLK HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_viclk(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_15 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VRCLK_LOW HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_vrclk_low(void)
+{
+	return (uint16_t) smile_fee->hk_reg_15 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get 5VB_POS_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_5vb_pos_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_16 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get 5VB_NEG_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_5vb_neg_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_16 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get 3V3B_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_3v3b_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_17 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get 2V5A_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_2v5a_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_17 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get 3V3D_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_3v3d_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_18 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get 2V5D_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_2v5d_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_18 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get 1V5D_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_1v5d_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_19 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get 5VREF_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_5vref_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_19 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VCCD_POS_RAW HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_vccd_pos_raw(void)
+{
+	return (uint16_t) smile_fee->hk_reg_20 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VCLK_POS_RAW HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_vclk_pos_raw(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_20 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VAN1_POS_RAW HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_van1_pos_raw(void)
+{
+	return (uint16_t) smile_fee->hk_reg_21 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VAN3_NEG_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_van3_neg_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_21 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VAN2_POS_RAW HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_van2_pos_raw(void)
+{
+	return (uint16_t) smile_fee->hk_reg_22 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VDIG_RAW HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_vdig_raw(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_22 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VDIG_RAW_2 HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_vdig_raw_2(void)
+{
+	return (uint16_t) smile_fee->hk_reg_23 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get VDIG_RAW HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_viclk_low(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_23 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD3_VRD_MON_F HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd3_vrd_mon_f(void)
+{
+	return (uint16_t) smile_fee->hk_reg_27 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD3_VDD_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd3_vdd_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_27 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD3_VGD_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd3_vgd_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_28 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD4_VRD_MON_F HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd4_vrd_mon_f(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_28 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD4_VDD_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd4_vdd_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_29 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get CCD4_VGD_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ccd4_vgd_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_29 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get IG_HI_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ig_hi_mon(void)
+{
+	return (uint16_t) smile_fee->hk_reg_30 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get IG_LO_MON HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_ig_lo_mon(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_30 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get TENSE_A HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_tense_a(void)
+{
+	return (uint16_t) smile_fee->hk_reg_31 & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get TENSE_B HK value
+ *
+ * @note no description available in register map document
+ */
+
+uint16_t smile_fee_get_hk_tense_b(void)
+{
+	return (uint16_t) (smile_fee->hk_reg_30 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get SpW Time Code HK value
+ */
+
+uint8_t smile_fee_get_hk_timecode_from_spw(void)
+{
+	return (uint8_t) (smile_fee->hk_reg_32 >> 16) & 0xFFUL;
+}
+
+
+/**
+ * @brief get RMAP target status HK value
+ */
+
+uint8_t smile_fee_get_hk_rmap_target_status(void)
+{
+	return (uint8_t) (smile_fee->hk_reg_32 >> 8) & 0xFFUL;
+}
+
+
+/**
+ * @brief get RMAP target status HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_rmap_target_indicate(void)
+{
+	return (smile_fee->hk_reg_32 >> 5) & 0x1UL;
+}
+
+
+/**
+ * @brief get SpW link escape error HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_spw_link_escape_error(void)
+{
+	return (smile_fee->hk_reg_32 >> 4) & 0x1UL;
+}
+
+
+/**
+ * @brief get SpW link credit error HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_spw_link_credit_error(void)
+{
+	return (smile_fee->hk_reg_32 >> 3) & 0x1UL;
+}
+
+
+/**
+ * @brief get SpW link parity error HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_spw_link_parity_error(void)
+{
+	return (smile_fee->hk_reg_32 >> 2) & 0x1UL;
+}
+
+
+/**
+ * @brief get SpW link disconnect HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_spw_link_disconnect(void)
+{
+	return (smile_fee->hk_reg_32 >> 1) & 0x1UL;
+}
+
+
+/**
+ * @brief get SpW link running HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_spw_link_running(void)
+{
+	return smile_fee->hk_reg_32 & 0x1UL;
+}
+
+
+/**
+ * @brief get frame counter HK value
+ *
+ * @note incrementing after each sync25 (description from register map document)
+ */
+
+uint32_t smile_fee_get_hk_frame_counter(void)
+{
+	return (smile_fee->hk_reg_33 >> 16) & 0xFFFFUL;
+}
+
+
+/**
+ * @brief get FPGA op mode HK value
+ */
+
+uint8_t smile_fee_get_hk_fpga_op_mode(void)
+{
+	return (uint8_t) smile_fee->hk_reg_33 & 0x7FUL;
+}
+
+
+/**
+ * @brief get error flag SpW link escape error HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_error_flag_spw_link_escape_error(void)
+{
+	return smile_fee->hk_reg_34 & 0x1UL;
+}
+
+
+/**
+ * @brief get error flag SpW link credit error HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_error_flag_spw_link_credit_error(void)
+{
+	return (smile_fee->hk_reg_34 >> 1) & 0x1UL;
+}
+
+
+/**
+ * @brief get error flag SpW link parity error HK value
+ *
+ * @returns 1 if set, 0 otherwise
+ */
+
+uint32_t smile_fee_get_hk_error_flag_spw_link_parity_error(void)
+{
+	return (smile_fee->hk_reg_34 >> 2) & 0x1UL;
+}
+
+
 /**
  * @brief sync configuration register 0
  *
@@ -1858,6 +2560,48 @@ int smile_fee_sync_execute_op(enum sync_direction dir)
 }
 
 
+/**
+ * @brief sync ALL HK registers
+ *
+ * @returns 0 on success, otherwise error occured in at least one transaction
+ *
+ * @note HK is read only, so this only syncs FEE->DPU
+ */
+
+int smile_fee_sync_hk_regs(void)
+{
+	int err = 0;
+
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_3, &smile_fee->hk_reg_3, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_4, &smile_fee->hk_reg_4, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_5, &smile_fee->hk_reg_5, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_6, &smile_fee->hk_reg_6, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_7, &smile_fee->hk_reg_7, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_11, &smile_fee->hk_reg_11, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_12, &smile_fee->hk_reg_12, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_13, &smile_fee->hk_reg_13, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_14, &smile_fee->hk_reg_14, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_15, &smile_fee->hk_reg_15, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_16, &smile_fee->hk_reg_16, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_17, &smile_fee->hk_reg_17, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_18, &smile_fee->hk_reg_18, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_19, &smile_fee->hk_reg_19, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_20, &smile_fee->hk_reg_20, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_21, &smile_fee->hk_reg_21, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_22, &smile_fee->hk_reg_22, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_23, &smile_fee->hk_reg_23, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_27, &smile_fee->hk_reg_27, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_28, &smile_fee->hk_reg_28, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_29, &smile_fee->hk_reg_29, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_30, &smile_fee->hk_reg_30, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_31, &smile_fee->hk_reg_31, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_32, &smile_fee->hk_reg_32, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_33, &smile_fee->hk_reg_33, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_34, &smile_fee->hk_reg_34, 0);
+	err |= smile_fee_sync(fee_read_cmd_hk_reg_35, &smile_fee->hk_reg_35, 0);
+
+	return err;
+}
 
 
 
diff --git a/FEE/smile_fee_ctrl.h b/FEE/smile_fee_ctrl.h
index deca718..4abc544 100644
--- a/FEE/smile_fee_ctrl.h
+++ b/FEE/smile_fee_ctrl.h
@@ -31,41 +31,41 @@ struct smile_fee_mirror {
 	uint32_t cfg_reg_3;
 	uint32_t cfg_reg_4;
 	uint32_t cfg_reg_5;
-	uint32_t cfg_reg_6;
-	uint32_t cfg_reg_7;
-	uint32_t cfg_reg_8;
-	uint32_t cfg_reg_9;
-	uint32_t cfg_reg_10;
-	uint32_t cfg_reg_11;
-	uint32_t cfg_reg_12;
-	uint32_t cfg_reg_13;
-	uint32_t cfg_reg_14;
-	uint32_t cfg_reg_15;
-	uint32_t cfg_reg_16;
-	uint32_t cfg_reg_17;
+	uint32_t cfg_reg_6;	/* unused */
+	uint32_t cfg_reg_7;     /* unused */
+	uint32_t cfg_reg_8;     /* unused */
+	uint32_t cfg_reg_9;     /* unused */
+	uint32_t cfg_reg_10;    /* unused */
+	uint32_t cfg_reg_11;    /* unused */
+	uint32_t cfg_reg_12;    /* unused */
+	uint32_t cfg_reg_13;    /* unused */
+	uint32_t cfg_reg_14;    /* unused */
+	uint32_t cfg_reg_15;    /* unused */
+	uint32_t cfg_reg_16;    /* unused */
+	uint32_t cfg_reg_17;    /* unused */
 	uint32_t cfg_reg_18;
 	uint32_t cfg_reg_19;
 	uint32_t cfg_reg_20;
 	uint32_t cfg_reg_21;
 	uint32_t cfg_reg_22;
-	uint32_t cfg_reg_23;
+	uint32_t cfg_reg_23;	/* reserved */
 	uint32_t cfg_reg_24;
 
 	/* FEE  RO registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */
 
-	uint32_t unused[1696];	/* TODO */
+	uint32_t unused[423];
 
-	uint32_t hk_reg_0;
-	uint32_t hk_reg_1;
-	uint32_t hk_reg_2;
+	uint32_t hk_reg_0;	/* reserved */
+	uint32_t hk_reg_1;	/* reserved */
+	uint32_t hk_reg_2;	/* reserved */
 	uint32_t hk_reg_3;
 	uint32_t hk_reg_4;
 	uint32_t hk_reg_5;
 	uint32_t hk_reg_6;
 	uint32_t hk_reg_7;
-	uint32_t hk_reg_8;
-	uint32_t hk_reg_9;
-	uint32_t hk_reg_10;
+	uint32_t hk_reg_8;	/* reserved */
+	uint32_t hk_reg_9;	/* reserved */
+	uint32_t hk_reg_10;	/* reserved */
 	uint32_t hk_reg_11;
 	uint32_t hk_reg_12;
 	uint32_t hk_reg_13;
@@ -79,9 +79,9 @@ struct smile_fee_mirror {
 	uint32_t hk_reg_21;
 	uint32_t hk_reg_22;
 	uint32_t hk_reg_23;
-	uint32_t hk_reg_24;
-	uint32_t hk_reg_25;
-	uint32_t hk_reg_26;
+	uint32_t hk_reg_24;	/* reserved */
+	uint32_t hk_reg_25;	/* reserved */
+	uint32_t hk_reg_26;	/* reserved */
 	uint32_t hk_reg_27;
 	uint32_t hk_reg_28;
 	uint32_t hk_reg_29;
@@ -118,6 +118,9 @@ int smile_fee_sync_cfg_reg_21(enum sync_direction dir);
 int smile_fee_sync_cfg_reg_22(enum sync_direction dir);
 int smile_fee_sync_cfg_reg_24(enum sync_direction dir);
 
+int smile_fee_sync_hk_regs(void);
+
+
 /* values contained in registers */
 int smile_fee_sync_vstart(enum sync_direction dir);
 int smile_fee_sync_vend(enum sync_direction dir);
@@ -237,6 +240,70 @@ void smile_fee_set_ccd2_single_pixel_treshold(uint16_t threshold);
 void smile_fee_set_execute_op(uint32_t mode);
 
 
+/* read SMILE_FEE housekeeping register mirror */
+uint16_t smile_fee_get_hk_ccd1_ts(void);
+uint16_t smile_fee_get_hk_ccd2_ts(void);
+uint16_t smile_fee_get_hk_ccd3_ts(void);
+uint16_t smile_fee_get_hk_ccd4_ts(void);
+uint16_t smile_fee_get_hk_prt1(void);
+uint16_t smile_fee_get_hk_prt2(void);
+uint16_t smile_fee_get_hk_prt3(void);
+uint16_t smile_fee_get_hk_prt4(void);
+uint16_t smile_fee_get_hk_prt5(void);
+uint16_t smile_fee_get_hk_zero_diff_amp(void);
+uint16_t smile_fee_get_hk_ccd3_vod_mon(void);
+uint16_t smile_fee_get_hk_ccd3_vog_mon(void);
+uint16_t smile_fee_get_hk_ccd3_vrd_mon_e(void);
+uint16_t smile_fee_get_hk_ccd4_vod_mon(void);
+uint16_t smile_fee_get_hk_ccd4_vog_mon(void);
+uint16_t smile_fee_get_hk_ccd4_vrd_mon_e(void);
+uint16_t smile_fee_get_hk_vccd(void);
+uint16_t smile_fee_get_hk_vrclk_mon(void);
+uint16_t smile_fee_get_hk_viclk(void);
+uint16_t smile_fee_get_hk_vrclk_low(void);
+uint16_t smile_fee_get_hk_5vb_pos_mon(void);
+uint16_t smile_fee_get_hk_5vb_neg_mon(void);
+uint16_t smile_fee_get_hk_3v3b_mon(void);
+uint16_t smile_fee_get_hk_2v5a_mon(void);
+uint16_t smile_fee_get_hk_3v3d_mon(void);
+uint16_t smile_fee_get_hk_2v5d_mon(void);
+uint16_t smile_fee_get_hk_1v5d_mon(void);
+uint16_t smile_fee_get_hk_5vref_mon(void);
+uint16_t smile_fee_get_hk_vccd_pos_raw(void);
+uint16_t smile_fee_get_hk_vclk_pos_raw(void);
+uint16_t smile_fee_get_hk_van1_pos_raw(void);
+uint16_t smile_fee_get_hk_van3_neg_mon(void);
+uint16_t smile_fee_get_hk_van2_pos_raw(void);
+uint16_t smile_fee_get_hk_vdig_raw(void);
+uint16_t smile_fee_get_hk_vdig_raw_2(void);
+uint16_t smile_fee_get_hk_viclk_low(void);
+uint16_t smile_fee_get_hk_ccd3_vrd_mon_f(void);
+uint16_t smile_fee_get_hk_ccd3_vdd_mon(void);
+uint16_t smile_fee_get_hk_ccd3_vgd_mon(void);
+uint16_t smile_fee_get_hk_ccd4_vrd_mon_f(void);
+uint16_t smile_fee_get_hk_ccd4_vdd_mon(void);
+uint16_t smile_fee_get_hk_ccd4_vgd_mon(void);
+uint16_t smile_fee_get_hk_ig_hi_mon(void);
+uint16_t smile_fee_get_hk_ig_lo_mon(void);
+uint16_t smile_fee_get_hk_tense_a(void);
+uint16_t smile_fee_get_hk_tense_b(void);
+uint8_t smile_fee_get_hk_timecode_from_spw(void);
+uint8_t smile_fee_get_hk_rmap_target_status(void);
+uint32_t smile_fee_get_hk_rmap_target_indicate(void);
+uint32_t smile_fee_get_hk_spw_link_escape_error(void);
+uint32_t smile_fee_get_hk_spw_link_credit_error(void);
+uint32_t smile_fee_get_hk_spw_link_parity_error(void);
+uint32_t smile_fee_get_hk_spw_link_disconnect(void);
+uint32_t smile_fee_get_hk_spw_link_running(void);
+uint32_t smile_fee_get_hk_frame_counter(void);
+uint8_t smile_fee_get_hk_fpga_op_mode(void);
+uint32_t smile_fee_get_hk_error_flag_spw_link_escape_error(void);
+uint32_t smile_fee_get_hk_error_flag_spw_link_credit_error(void);
+uint32_t smile_fee_get_hk_error_flag_spw_link_parity_error(void);
+
+
+
+
 
 /* setup */
 void smile_fee_ctrl_init(struct smile_fee_mirror *fee_mirror);
-- 
GitLab