diff --git a/FEE/smile_fee_cmd.c b/FEE/smile_fee_cmd.c index 7e60920c3e7c4074db6408a005b5191eb1adeb31..e710447f092ee94c6633e62475422bc743d480fb 100644 --- a/FEE/smile_fee_cmd.c +++ b/FEE/smile_fee_cmd.c @@ -392,6 +392,22 @@ int fee_read_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd) } +/** + * @brief create a command to read the FEE configuration 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_cfg_reg_23(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_23); +} + + /** * @brief create a command to read the FEE configuration register 24 * @@ -408,6 +424,22 @@ int fee_read_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd) } +/** + * @brief create a command to read the FEE configuration register 25 + * + * @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_cfg_reg_25(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_25); +} + + /** * @brief create a command to write the FEE configuration register 0 * @@ -584,6 +616,22 @@ int fee_write_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd) } +/** + * @brief create a command to write the FEE configuration 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_write_cmd_cfg_reg_23(uint16_t trans_id, uint8_t *cmd) +{ + return fee_write_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_23); +} + + /** * @brief create a command to write the FEE configuration register 24 * @@ -600,6 +648,22 @@ int fee_write_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd) } +/** + * @brief create a command to write the FEE configuration register 25 + * + * @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_write_cmd_cfg_reg_25(uint16_t trans_id, uint8_t *cmd) +{ + return fee_write_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_25); +} + + /** * @brief create a command to read the FEE HK register 3 * diff --git a/FEE/smile_fee_cmd.h b/FEE/smile_fee_cmd.h index 1defd645efc74f8f380c2d95edaee5f93220bc32..23a67220e6d4125c8bda1c36cd1dcb8b84c3b304 100644 --- a/FEE/smile_fee_cmd.h +++ b/FEE/smile_fee_cmd.h @@ -22,7 +22,7 @@ #include <stdint.h> -/* FEE RW registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */ +/* FEE RW registers (SMILE-MSSL-PL-Register_map_v0.14_Draft) */ #define FEE_CFG_REG_0 0x00000000UL #define FEE_CFG_REG_1 0x00000004UL @@ -47,11 +47,12 @@ #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_23 0x0000005CUL #define FEE_CFG_REG_24 0x00000060UL +#define FEE_CFG_REG_25 0x00000064UL -/* FEE RO registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */ +/* FEE RO registers (SMILE-MSSL-PL-Register_map_v0.14_Draft) */ #define FEE_HK_REG_0 0x00000700 /* reserved */ #define FEE_HK_REG_1 0x00000704 /* reserved */ @@ -114,7 +115,9 @@ int fee_read_cmd_cfg_reg_19(uint16_t trans_id, uint8_t *cmd); int fee_read_cmd_cfg_reg_20(uint16_t trans_id, uint8_t *cmd); int fee_read_cmd_cfg_reg_21(uint16_t trans_id, uint8_t *cmd); int fee_read_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_cfg_reg_23(uint16_t trans_id, uint8_t *cmd); int fee_read_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_cfg_reg_25(uint16_t trans_id, uint8_t *cmd); /* FEE configuration register write accessors */ @@ -129,7 +132,9 @@ int fee_write_cmd_cfg_reg_19(uint16_t trans_id, uint8_t *cmd); int fee_write_cmd_cfg_reg_20(uint16_t trans_id, uint8_t *cmd); int fee_write_cmd_cfg_reg_21(uint16_t trans_id, uint8_t *cmd); int fee_write_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd); +int fee_write_cmd_cfg_reg_23(uint16_t trans_id, uint8_t *cmd); int fee_write_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd); +int fee_write_cmd_cfg_reg_25(uint16_t trans_id, uint8_t *cmd); /* FEE housekeeping register read accessors */ diff --git a/FEE/smile_fee_ctrl.c b/FEE/smile_fee_ctrl.c index 08415e8a270f79bb744bafc850f48cbfa084e654..849b954620d958d161b432ee8d965f0f375ef648 100644 --- a/FEE/smile_fee_ctrl.c +++ b/FEE/smile_fee_ctrl.c @@ -48,7 +48,6 @@ * development process. Make sure to inspect the latest register * map for changes. */ -#define FEE_SIM 1 /* XXX */ #include <stdio.h> #include <stdlib.h> @@ -584,6 +583,35 @@ void smile_fee_set_correction_bypass(uint32_t mode) } +/** + * @brief get DG en + * + * @returns 0 if DG operate as per mode + */ + +uint32_t smile_fee_get_dg_en(void) +{ + return (smile_fee->cfg_reg_5 >> 25) & 0x1UL; +} + + +/** + * @brief set DG en + * + * @param mode set 0 to operate DG as per mode + */ + +void smile_fee_set_dg_en(uint32_t mode) +{ + if (mode) + mode = 1; + + + smile_fee->cfg_reg_5 &= ~(0x1UL << 25); + smile_fee->cfg_reg_5 |= (mode << 25); +} + + /** * @brief get vod_config * @@ -851,12 +879,18 @@ void smile_fee_set_h_start(uint16_t row) * * @note as per register map document, the following return values * are currently valid: - * 0x0 on mode - * 0x1 full frame pattern mode - * 0x4 stand-by mode - * 0xd immediate on mode (this is a command, not a mode) - * 0xf frame transfer mode - * 0xe full frame mode + * + * 0x0 (On-Mode) + * 0x1 (Frame Transfer (FT) Mode Pattern Mode) + * 0x2 (Stand-By-Mode) + * 0x3 (Frame Transfer Mode(FT)) + * 0x4 (Full Frame Mode(FF)) + * 0x5 (Parallel trap pumping mode 1 (FF)) + * 0x6 (Parallel trap pumping mode 2 (FF)) + * 0x7 (Serial trap pumping mode 1 (FF)) + * 0x8 (Serial trap pumping mode 2 (FF)) + * 0xd (Immediate On-Mode) (this is a command and not a mode) + * */ uint8_t smile_fee_get_ccd_mode_config(void) @@ -872,12 +906,17 @@ uint8_t smile_fee_get_ccd_mode_config(void) * * @note as per register map document, the following return values * are currently valid: - * 0x0 on mode - * 0x1 full frame pattern mode - * 0x4 stand-by mode - * 0xd immediate on mode (this is a command, not a mode) - * 0xf frame transfer mode - * 0xe full frame mode + * + * 0x0 (On-Mode) + * 0x1 (Frame Transfer (FT) Mode Pattern Mode) + * 0x2 (Stand-By-Mode) + * 0x3 (Frame Transfer Mode(FT)) + * 0x4 (Full Frame Mode(FF)) + * 0x5 (Parallel trap pumping mode 1 (FF)) + * 0x6 (Parallel trap pumping mode 2 (FF)) + * 0x7 (Serial trap pumping mode 1 (FF)) + * 0x8 (Serial trap pumping mode 2 (FF)) + * 0xd (Immediate On-Mode) (this is a command and not a mode) * * @warn input parameter is not checked for validity */ @@ -990,59 +1029,163 @@ void smile_fee_set_clear_error_flag(uint32_t mode) /** - * @brief get ccd1 single pixel threshold + * @brief get ccd2 E single pixel threshold * * @note this is the threshold above which a pixel may be considered a possible * soft X-ray event */ -uint16_t smile_fee_get_ccd1_single_pixel_treshold(void) +uint16_t smile_fee_get_ccd2_e_pix_treshold(void) { - return (uint16_t) (smile_fee->cfg_reg_22 & 0xFFFUL); + return (uint16_t) (smile_fee->cfg_reg_22 & 0xFFFFUL); } /** - * @brief set ccd1 single pixel threshold + * @brief set ccd2 E single pixel threshold * * @param threshold the threshold above which a pixel may be considered * a possible soft X-ray event */ -void smile_fee_set_ccd1_single_pixel_treshold(uint16_t threshold) +void smile_fee_set_ccd2_e_pix_treshold(uint16_t threshold) { - smile_fee->cfg_reg_22 &= ~0xFFFUL; - smile_fee->cfg_reg_22 |= 0xFFFUL & ((uint32_t) threshold); + smile_fee->cfg_reg_22 &= ~0xFFFFUL; + smile_fee->cfg_reg_22 |= 0xFFFFUL & ((uint32_t) threshold); } /** - * @brief get ccd2 single pixel threshold + * @brief get ccd2 F single pixel threshold * * @note this is the threshold above which a pixel may be considered a possible * soft X-ray event */ -uint16_t smile_fee_get_ccd2_single_pixel_treshold(void) +uint16_t smile_fee_get_ccd2_f_pix_treshold(void) { return (uint16_t) ((smile_fee->cfg_reg_22 >> 16) & 0xFFFFUL); } /** - * @brief set ccd2 single pixel threshold + * @brief set ccd2 F single pixel threshold * * @param threshold the threshold above which a pixel may be considered * a possible soft X-ray event */ -void smile_fee_set_ccd2_single_pixel_treshold(uint16_t threshold) +void smile_fee_set_ccd2_f_pix_treshold(uint16_t threshold) { smile_fee->cfg_reg_22 &= ~(0xFFFFUL << 16); smile_fee->cfg_reg_22 |= (0xFFFFUL & ((uint32_t) threshold)) << 16; } +/** + * @brief get ccd4 E single pixel threshold + * + * @note this is the threshold above which a pixel may be considered a possible + * soft X-ray event + */ + +uint16_t smile_fee_get_ccd4_e_pix_treshold(void) +{ + return (uint16_t) (smile_fee->cfg_reg_23 & 0xFFFFUL); +} + + +/** + * @brief set ccd4 E single pixel threshold + * + * @param threshold the threshold above which a pixel may be considered + * a possible soft X-ray event + */ + +void smile_fee_set_ccd4_e_pix_treshold(uint16_t threshold) +{ + smile_fee->cfg_reg_23 &= ~0xFFFFUL; + smile_fee->cfg_reg_23 |= 0xFFFFUL & ((uint32_t) threshold); +} + + +/** + * @brief get ccd4 F single pixel threshold + * + * @note this is the threshold above which a pixel may be considered a possible + * soft X-ray event + */ + +uint16_t smile_fee_get_ccd4_f_pix_treshold(void) +{ + return (uint16_t) ((smile_fee->cfg_reg_23 >> 16) & 0xFFFFUL); +} + + +/** + * @brief set ccd4 F single pixel threshold + * + * @param threshold the threshold above which a pixel may be considered + * a possible soft X-ray event + */ + +void smile_fee_set_ccd4_f_pix_treshold(uint16_t threshold) +{ + smile_fee->cfg_reg_23 &= ~(0xFFFFUL << 16); + smile_fee->cfg_reg_23 |= (0xFFFFUL & ((uint32_t) threshold)) << 16; +} + + +/** + * @brief get pixel offset value + * + * @note his offset value is added to the average incoming pixel value + */ + +uint8_t smile_fee_get_pix_offset(void) +{ + return (uint8_t) (smile_fee->cfg_reg_24 & 0xFFUL); +} + + +/** + * @brief set pixel offset value + * + * @offset the offset value to be added to the average incoming pixel value + */ + +void smile_fee_set_pix_offset(uint8_t offset) +{ + smile_fee->cfg_reg_24 &= ~0xFFUL; + smile_fee->cfg_reg_24 |= 0xFFUL & ((uint32_t) offset); +} + + +/** + * @brief get event packet limit + * + * @note this is the total number of even packet per CCD that will be transmitted + */ + +uint32_t smile_fee_get_event_pkt_limit(void) +{ + return (uint32_t) ((smile_fee->cfg_reg_24 >> 8) & 0xFFFFFUL); +} + + +/** + * @brief set event packet limit + * + * @param pkt_limit the total number of even packet per CCD that will be transmitted + */ + +void smile_fee_set_event_pkt_limit(uint32_t pkt_limit) +{ + smile_fee->cfg_reg_24 &= ~(0xFFFFFFUL << 8); + smile_fee->cfg_reg_23 |= (0xFFFFFFUL & ((uint32_t) pkt_limit)) << 8; +} + + /** * @brief get execute op flag * @@ -1056,7 +1199,7 @@ void smile_fee_set_ccd2_single_pixel_treshold(uint16_t threshold) uint32_t smile_fee_get_execute_op(void) { - return smile_fee->cfg_reg_24 & 0x1UL; + return smile_fee->cfg_reg_25 & 0x1UL; } @@ -1079,8 +1222,8 @@ void smile_fee_set_execute_op(uint32_t mode) mode = 1; - smile_fee->cfg_reg_24 &= ~0x1UL; - smile_fee->cfg_reg_24 |= mode; + smile_fee->cfg_reg_25 &= ~0x1UL; + smile_fee->cfg_reg_25 |= mode; } @@ -2600,6 +2743,90 @@ void smile_fee_set_hk_error_flag_spw_link_parity_error(uint32_t error_flag_spw_l #endif /* FEE_SIM */ +/** + * @brief get FPGA minor version HK value + * + * @returns the FPGA minor version + */ + +uint8_t smile_fee_get_hk_fpga_minor_version(void) +{ + return (uint8_t) (smile_fee->hk_reg_35 & 0xFFUL); +} + + +#ifdef FEE_SIM + +/** + * @brief set FPGA minor version HK value + * + * @param minor the FPGA minor version + */ + +void smile_fee_set_hk_fpga_minor_version(uint8_t minor) +{ + smile_fee->hk_reg_35 &= ~0xFFUL; + smile_fee->hk_reg_35 |= 0xFFUL & ((uint32_t) minor); +} +#endif /* FEE_SIM */ + + +/** + * @brief get FPGA major version HK value + * + * @returns the FPGA major version + */ + +uint8_t smile_fee_get_hk_fpga_major_version(void) +{ + return (uint8_t) ((smile_fee->hk_reg_35 >> 8) & 0xFUL); +} + + +#ifdef FEE_SIM + +/** + * @brief set FPGA major version HK value + * + * @param minor the FPGA minor version + */ + +void smile_fee_set_hk_fpga_major_version(uint8_t major) +{ + smile_fee->hk_reg_35 &= ~(0xFUL << 8); + smile_fee->hk_reg_35 |= (0xFUL & ((uint32_t) major)) << 8; +} +#endif /* FEE_SIM */ + + +/** + * @brief get the board id the FPGA is housed on + * + * @returns the FPGA board id + */ + +uint16_t smile_fee_get_hk_board_id(void) +{ + return (uint16_t) ((smile_fee->hk_reg_35 >> 20) & 0xFUL); +} + + +#ifdef FEE_SIM + +/** + * @brief set the board id the FPGA is housed on + * + * @param id the FPGA board id + */ + +void smile_fee_set_hk_board_id(uint16_t id) +{ + smile_fee->hk_reg_35 &= ~(0x1FFUL << 20); + smile_fee->hk_reg_35 |= (0x1FFUL & ((uint32_t) id)) << 20; +} +#endif /* FEE_SIM */ + + /** * @brief sync configuration register 0 * @@ -2831,6 +3058,27 @@ int smile_fee_sync_cfg_reg_22(enum sync_direction dir) } +/** + * @brief sync configuration register 23 + * + * @param dir the syncronisation direction + * + * @returns 0 on success, otherwise error + */ +int smile_fee_sync_cfg_reg_23(enum sync_direction dir) +{ + if (dir == FEE2DPU) + return smile_fee_sync(fee_read_cmd_cfg_reg_23, + &smile_fee->cfg_reg_23, 0); + + if (dir == DPU2FEE) + return smile_fee_sync(fee_write_cmd_cfg_reg_23, + &smile_fee->cfg_reg_23, 4); + + return -1; +} + + /** * @brief sync configuration register 24 * @@ -2852,6 +3100,27 @@ int smile_fee_sync_cfg_reg_24(enum sync_direction dir) } +/** + * @brief sync configuration register 25 + * + * @param dir the syncronisation direction + * + * @returns 0 on success, otherwise error + */ +int smile_fee_sync_cfg_reg_25(enum sync_direction dir) +{ + if (dir == FEE2DPU) + return smile_fee_sync(fee_read_cmd_cfg_reg_25, + &smile_fee->cfg_reg_25, 0); + + if (dir == DPU2FEE) + return smile_fee_sync(fee_write_cmd_cfg_reg_25, + &smile_fee->cfg_reg_25, 4); + + return -1; +} + + /** * @brief sync register containing vstart * @@ -3115,6 +3384,21 @@ int smile_fee_sync_correction_bypass(enum sync_direction dir) } +/** + * @brief sync dg enable + * + * @param dir the syncronisation direction + * + * @returns 0 on success, otherwise error + */ + +int smile_fee_sync_dg_en(enum sync_direction dir) +{ + return smile_fee_sync_cfg_reg_5(dir); +} + + + /** * @brief sync vod_config * @note no description available in register map document @@ -3333,33 +3617,89 @@ int smile_fee_sync_clear_error_flag(enum sync_direction dir) /** - * @brief sync ccd1 single pixel threshold + * @brief sync ccd2 E single pixel threshold * * @param dir the syncronisation direction * * @returns 0 on success, otherwise error */ -int smile_fee_sync_ccd1_single_pixel_treshold(enum sync_direction dir) +int smile_fee_sync_ccd2_e_pix_treshold(enum sync_direction dir) { return smile_fee_sync_cfg_reg_22(dir); } /** - * @brief sync ccd2 single pixel threshold + * @brief sync ccd2 F single pixel threshold * * @param dir the syncronisation direction * * @returns 0 on success, otherwise error */ -int smile_fee_sync_ccd2_single_pixel_treshold(enum sync_direction dir) +int smile_fee_sync_ccd2_f_pix_treshold(enum sync_direction dir) { return smile_fee_sync_cfg_reg_22(dir); } +/** + * @brief sync ccd4 E single pixel threshold + * + * @param dir the syncronisation direction + * + * @returns 0 on success, otherwise error + */ + +int smile_fee_sync_ccd4_e_pix_treshold(enum sync_direction dir) +{ + return smile_fee_sync_cfg_reg_23(dir); +} + + +/** + * @brief sync ccd4 F single pixel threshold + * + * @param dir the syncronisation direction + * + * @returns 0 on success, otherwise error + */ + +int smile_fee_sync_ccd4_f_pix_treshold(enum sync_direction dir) +{ + return smile_fee_sync_cfg_reg_23(dir); +} + + +/** + * @brief sync pix offset + * + * @param dir the syncronisation direction + * + * @returns 0 on success, otherwise error + */ + +int smile_fee_sync_pix_offset(enum sync_direction dir) +{ + return smile_fee_sync_cfg_reg_24(dir); +} + + +/** + * @brief sync event pkt limit + * + * @param dir the syncronisation direction + * + * @returns 0 on success, otherwise error + */ + +int smile_fee_sync_event_pkt_limit(enum sync_direction dir) +{ + return smile_fee_sync_cfg_reg_24(dir); +} + + /** * @brief sync execute op flag * @@ -3370,7 +3710,7 @@ int smile_fee_sync_ccd2_single_pixel_treshold(enum sync_direction dir) int smile_fee_sync_execute_op(enum sync_direction dir) { - return smile_fee_sync_cfg_reg_24(dir); + return smile_fee_sync_cfg_reg_25(dir); } diff --git a/FEE/smile_fee_ctrl.h b/FEE/smile_fee_ctrl.h index 30753617d9e197f8676b83c6bf3991bdf8d78a2b..b1abf03a924ced791a85d8f7d87a7d07c4ee9664 100644 --- a/FEE/smile_fee_ctrl.h +++ b/FEE/smile_fee_ctrl.h @@ -23,7 +23,7 @@ __extension__ struct smile_fee_mirror { - /* FEE RW registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */ + /* FEE RW registers (SMILE-MSSL-PL-Register_map_v0.14_Draft) */ /* (includes unused) */ uint32_t cfg_reg_0; uint32_t cfg_reg_1; @@ -48,10 +48,11 @@ struct smile_fee_mirror { uint32_t cfg_reg_20; uint32_t cfg_reg_21; uint32_t cfg_reg_22; - uint32_t cfg_reg_23; /* reserved */ + uint32_t cfg_reg_23; uint32_t cfg_reg_24; + uint32_t cfg_reg_25; - /* FEE RO registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */ + /* FEE RO registers (SMILE-MSSL-PL-Register_map_v0.14_Draft) */ uint32_t unused[423]; @@ -116,7 +117,9 @@ int smile_fee_sync_cfg_reg_19(enum sync_direction dir); int smile_fee_sync_cfg_reg_20(enum sync_direction dir); 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_23(enum sync_direction dir); int smile_fee_sync_cfg_reg_24(enum sync_direction dir); +int smile_fee_sync_cfg_reg_25(enum sync_direction dir); int smile_fee_sync_hk_regs(void); @@ -141,6 +144,7 @@ int smile_fee_sync_sync_sel(enum sync_direction dir); int smile_fee_sync_readout_nodes(enum sync_direction dir); int smile_fee_sync_digitise(enum sync_direction dir); int smile_fee_sync_correction_bypass(enum sync_direction dir); +int smile_fee_sync_dg_en(enum sync_direction dir); int smile_fee_sync_vod_config(enum sync_direction dir); int smile_fee_sync_ccd1_vrd_config(enum sync_direction dir); int smile_fee_sync_ccd2_vrd_config(enum sync_direction dir); @@ -155,8 +159,12 @@ int smile_fee_sync_ccd_mode_config(enum sync_direction dir); int smile_fee_sync_ccd_mode2_config(enum sync_direction dir); int smile_fee_sync_event_detection(enum sync_direction dir); int smile_fee_sync_clear_error_flag(enum sync_direction dir); -int smile_fee_sync_ccd1_single_pixel_treshold(enum sync_direction dir); -int smile_fee_sync_ccd2_single_pixel_treshold(enum sync_direction dir); +int smile_fee_sync_ccd2_e_pix_treshold(enum sync_direction dir); +int smile_fee_sync_ccd2_f_pix_treshold(enum sync_direction dir); +int smile_fee_sync_ccd4_e_pix_treshold(enum sync_direction dir); +int smile_fee_sync_ccd4_f_pix_treshold(enum sync_direction dir); +int smile_fee_sync_pix_offset(enum sync_direction dir); +int smile_fee_sync_event_pkt_limit(enum sync_direction dir); int smile_fee_sync_execute_op(enum sync_direction dir); @@ -181,6 +189,7 @@ uint32_t smile_fee_get_sync_sel(void); uint16_t smile_fee_get_readout_nodes(void); uint32_t smile_fee_get_digitise(void); uint32_t smile_fee_get_correction_bypass(void); +uint32_t smile_fee_get_dg_en(void); uint16_t smile_fee_get_vod_config(void); uint16_t smile_fee_get_ccd1_vrd_config(void); uint16_t smile_fee_get_ccd2_vrd_config(void); @@ -195,8 +204,12 @@ uint8_t smile_fee_get_ccd_mode_config(void); uint8_t smile_fee_get_ccd_mode2_config(void); uint32_t smile_fee_get_event_detection(void); uint32_t smile_fee_get_clear_error_flag(void); -uint16_t smile_fee_get_ccd1_single_pixel_treshold(void); -uint16_t smile_fee_get_ccd2_single_pixel_treshold(void); +uint16_t smile_fee_get_ccd2_e_pix_treshold(void); +uint16_t smile_fee_get_ccd2_f_pix_treshold(void); +uint16_t smile_fee_get_ccd4_e_pix_treshold(void); +uint16_t smile_fee_get_ccd4_f_pix_treshold(void); +uint8_t smile_fee_get_pix_offset(void); +uint32_t smile_fee_get_event_pkt_limit(void); uint32_t smile_fee_get_execute_op(void); @@ -221,6 +234,7 @@ uint16_t smile_fee_get_int_period(void); void smile_fee_set_readout_nodes(uint32_t nodes); void smile_fee_set_digitise(uint32_t mode); void smile_fee_set_correction_bypass(uint32_t mode); +void smile_fee_set_dg_en(uint32_t mode); void smile_fee_set_vod_config(uint16_t vod); void smile_fee_set_ccd1_vrd_config(uint16_t vrd); void smile_fee_set_ccd2_vrd_config(uint16_t vrd); @@ -235,8 +249,12 @@ void smile_fee_set_ccd_mode_config(uint8_t mode); void smile_fee_set_ccd_mode2_config(uint8_t mode); void smile_fee_set_event_detection(uint32_t mode); void smile_fee_set_clear_error_flag(uint32_t mode); -void smile_fee_set_ccd1_single_pixel_treshold(uint16_t threshold); -void smile_fee_set_ccd2_single_pixel_treshold(uint16_t threshold); +void smile_fee_set_ccd2_e_pix_treshold(uint16_t threshold); +void smile_fee_set_ccd2_f_pix_treshold(uint16_t threshold); +void smile_fee_set_ccd4_e_pix_treshold(uint16_t threshold); +void smile_fee_set_ccd4_f_pix_treshold(uint16_t threshold); +void smile_fee_set_pix_offset(uint8_t offset); +void smile_fee_set_event_pkt_limit(uint32_t pkt_limit); void smile_fee_set_execute_op(uint32_t mode); @@ -300,6 +318,9 @@ 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); +uint8_t smile_fee_get_hk_fpga_minor_version(void); +uint8_t smile_fee_get_hk_fpga_major_version(void);// >> 8 0xf +uint16_t smile_fee_get_hk_board_id(void);// >> 12 1ff @@ -363,6 +384,9 @@ void smile_fee_set_hk_fpga_op_mode(uint8_t fpga_op_mode); void smile_fee_set_hk_error_flag_spw_link_escape_error(uint32_t error_flag_spw_link_escape_error); void smile_fee_set_hk_error_flag_spw_link_credit_error(uint32_t error_flag_spw_link_credit_error); void smile_fee_set_hk_error_flag_spw_link_parity_error(uint32_t error_flag_spw_link_parity_error); +void smile_fee_set_hk_fpga_minor_version(uint8_t minor); +void smile_fee_set_hk_fpga_major_version(uint8_t major); +void smile_fee_set_hk_board_id(uint16_t id); #endif /* FEE_SIM */