91 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/****************************************************************************
 | 
						|
 | 
						|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | 
						|
 | 
						|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | 
						|
be copied by any method or incorporated into another program without
 | 
						|
the express written consent of Aerospace C.Power. This Information or any portion
 | 
						|
thereof remains the property of Aerospace C.Power. The Information contained herein
 | 
						|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | 
						|
liability for its use in any way and conveys no license or title under
 | 
						|
any patent or copyright and makes no representation or warranty that this
 | 
						|
Information is free from patent or copyright infringement.
 | 
						|
 | 
						|
****************************************************************************/
 | 
						|
 | 
						|
#ifndef IOT_PLC_HW_TOPO_API_H
 | 
						|
#define IOT_PLC_HW_TOPO_API_H
 | 
						|
 | 
						|
#include "os_types_api.h"
 | 
						|
#include "iot_plc_msg_api.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/* load mode encode frequncy. unit: 0.01Hz */
 | 
						|
#define IOT_HW_TOPO_DECODE_FREQ_LOAD_DEF            (83333)
 | 
						|
 | 
						|
/* define maximum number of codes. At present, branch identification supports
 | 
						|
 * transmission of up to four bytes.
 | 
						|
 */
 | 
						|
#define IOT_HW_TOPO_MAX_NUMBER_OF_CODES             (16)
 | 
						|
 | 
						|
/* define hw topo cfg structure */
 | 
						|
typedef struct _hw_topo_rcv_cfg {
 | 
						|
    /* flag to mark to if the "fc" field is valid */
 | 
						|
    uint16_t    fc_valid        : 1,
 | 
						|
    /* flag to mark to if the "chara_bit_dur" field is valid */
 | 
						|
                dur_valid       : 1,
 | 
						|
    /* specified phase, see IOT_PLC_PHASE_XXX */
 | 
						|
                phase           : 2,
 | 
						|
    /* reserved for further use */
 | 
						|
                rsvd            : 12;
 | 
						|
    /* characteristics data per bit duration time, unit: 1ms. */
 | 
						|
    uint16_t    chara_bit_dur;
 | 
						|
    /* center frequency, uint is 0.01HZ */
 | 
						|
    uint32_t    fc;
 | 
						|
    /* similarity threshold, uint is 0.1& */
 | 
						|
    uint16_t    similarity_thr;
 | 
						|
    /* characteristics code length, can not exceeded
 | 
						|
     * IOT_HW_TOPO_MAX_NUMBER_OF_CODES.
 | 
						|
     */
 | 
						|
    uint8_t     data_len;
 | 
						|
    /* characteristics code */
 | 
						|
    uint8_t     data[IOT_HW_TOPO_MAX_NUMBER_OF_CODES];
 | 
						|
} hw_topo_rcv_cfg_t;
 | 
						|
 | 
						|
/* define hw ratio coefficient structure */
 | 
						|
typedef struct _hw_topo_ratio_coeff {
 | 
						|
    /* A/B/C phase current ratio coefficient, unit: 0.0001 */
 | 
						|
    uint32_t  i_ratio_coeff[IOT_PLC_PHASE_CNT];
 | 
						|
} hw_topo_ratio_coeff_t;
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief iot_plc_hw_topo_cfg_rcv_mode() - config hw topo receive info.
 | 
						|
 * @param cfg: pointer to hw_topo_rcv_cfg_t structure
 | 
						|
 * @retval 0 - successful, other case - fail.
 | 
						|
 */
 | 
						|
uint32_t iot_plc_hw_topo_rcv_cfg(hw_topo_rcv_cfg_t *cfg);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief iot_plc_hw_topo_ratio_cfg() - config hw topo ratio.
 | 
						|
 * @param cfg: pointer to hw_topo_ratio_cfg_t structure
 | 
						|
 * @retval 0 - successful, other case - fail.
 | 
						|
 */
 | 
						|
uint32_t iot_plc_hw_topo_ratio_cfg(hw_topo_ratio_coeff_t *cfg);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief iot_plc_hw_topo_rms2_get() - get mean square value of current.
 | 
						|
 * @param phase: get witch phase
 | 
						|
 * @retval mean square value of current.
 | 
						|
 */
 | 
						|
uint32_t iot_plc_hw_topo_rms2_get(uint8_t phase);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* IOT_PLC_HW_TOPO_API_H */
 | 
						|
 |