481 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			481 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/****************************************************************************
 | 
						|
 | 
						|
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_EM_EXT_API_H_
 | 
						|
#define _IOT_EM_EXT_API_H_
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
#include "iot_pkt_api.h"
 | 
						|
#include "iot_spi_api.h"
 | 
						|
 | 
						|
/* energy meter extern support module id */
 | 
						|
#define IOT_EM_EXT_MODULE_INVALID           0x00
 | 
						|
#define IOT_EM_EXT_MODULE_ATT7022           0x01
 | 
						|
 | 
						|
/* energy meter extern communication hw interface */
 | 
						|
#define IOT_EM_EXT_INTERFACE_SPI            0x00
 | 
						|
#define IOT_EM_EXT_INTERFACE_UART           0x01
 | 
						|
#define IOT_EM_EXT_INTERFACE_I2C            0x02
 | 
						|
 | 
						|
/* kunlun spi port default */
 | 
						|
#define IOT_EM_EXT_INTERFACE_SPI_PORT       0x00
 | 
						|
 | 
						|
/* energy meter extern general define */
 | 
						|
/* energy meter extern connect phase id */
 | 
						|
#define IOT_EM_EXT_PHASE_A                  0
 | 
						|
#define IOT_EM_EXT_PHASE_B                  1
 | 
						|
#define IOT_EM_EXT_PHASE_C                  2
 | 
						|
#define IOT_EM_EXT_PHASE_ALL                3
 | 
						|
#define IOT_EM_EXT_PHASE_CNT                4
 | 
						|
 | 
						|
/* energy meter extern measure parameter. start */
 | 
						|
/* power: active power */
 | 
						|
#define IOT_EM_EXT_MTYPE_P_P                0
 | 
						|
/* power: reactive power */
 | 
						|
#define IOT_EM_EXT_MTYPE_P_Q                1
 | 
						|
/* power: apparent power */
 | 
						|
#define IOT_EM_EXT_MTYPE_P_S                2
 | 
						|
/* power: fundamental wave active power */
 | 
						|
#define IOT_EM_EXT_MTYPE_P_LINE_P           3
 | 
						|
/* power: power factor */
 | 
						|
#define IOT_EM_EXT_MTYPE_P_FACTOR           4
 | 
						|
/* power: active power sign */
 | 
						|
#define IOT_EM_EXT_MTYPE_POWER_SIGN         5
 | 
						|
#define IOT_EM_EXT_MSIGN_P_A_MASK           0x01
 | 
						|
#define IOT_EM_EXT_MSIGN_P_A_OFFSET         0
 | 
						|
#define IOT_EM_EXT_MSIGN_P_B_MASK           0x02
 | 
						|
#define IOT_EM_EXT_MSIGN_P_B_OFFSET         1
 | 
						|
#define IOT_EM_EXT_MSIGN_P_C_MASK           0x04
 | 
						|
#define IOT_EM_EXT_MSIGN_P_C_OFFSET         2
 | 
						|
#define IOT_EM_EXT_MSIGN_P_ALL_MASK         0x08
 | 
						|
#define IOT_EM_EXT_MSIGN_P_ALL_OFFSET       3
 | 
						|
#define IOT_EM_EXT_MSIGN_Q_A_MASK           0x10
 | 
						|
#define IOT_EM_EXT_MSIGN_Q_A_OFFSET         4
 | 
						|
#define IOT_EM_EXT_MSIGN_Q_B_MASK           0x20
 | 
						|
#define IOT_EM_EXT_MSIGN_Q_B_OFFSET         5
 | 
						|
#define IOT_EM_EXT_MSIGN_Q_C_MASK           0x40
 | 
						|
#define IOT_EM_EXT_MSIGN_Q_C_OFFSET         6
 | 
						|
#define IOT_EM_EXT_MSIGN_Q_ALL_MASK         0x80
 | 
						|
#define IOT_EM_EXT_MSIGN_Q_ALL_OFFSET       7
 | 
						|
/* voltage: effective voltage  */
 | 
						|
#define IOT_EM_EXT_MTYPE_U_RMS              6
 | 
						|
/* voltage: fundamental wave effective voltage */
 | 
						|
#define IOT_EM_EXT_MTYPE_U_LINE_RMS         7
 | 
						|
/* current: effective electric current */
 | 
						|
#define IOT_EM_EXT_MTYPE_I_RMS              8
 | 
						|
/* current: fundamental wave effective current */
 | 
						|
#define IOT_EM_EXT_MTYPE_I_LINE_RMS         9
 | 
						|
/* energy: active energy  */
 | 
						|
#define IOT_EM_EXT_MTYPE_E_P                10
 | 
						|
/* energy: reactive energy */
 | 
						|
#define IOT_EM_EXT_MTYPE_E_Q                11
 | 
						|
/* energy: apparent energy */
 | 
						|
#define IOT_EM_EXT_MTYPE_E_S                12
 | 
						|
/* energy: fundamental wave effective active energy */
 | 
						|
#define IOT_EM_EXT_MTYPE_E_LINE_P           13
 | 
						|
/* angle: voltage and current angle */
 | 
						|
#define IOT_EM_EXT_MTYPE_ANGLE_U_I          14
 | 
						|
/* angle: voltage angle */
 | 
						|
#define IOT_EM_EXT_MTYPE_ANGLE_UA_UB        15
 | 
						|
#define IOT_EM_EXT_MTYPE_ANGLE_UA_UC        16
 | 
						|
#define IOT_EM_EXT_MTYPE_ANGLE_UB_UC        17
 | 
						|
/* frequency */
 | 
						|
#define IOT_EM_EXT_MTYPE_FREQ               18
 | 
						|
/* temperature */
 | 
						|
#define IOT_EM_EXT_MTYPE_TPSD               19
 | 
						|
/* ec constant */
 | 
						|
#define IOT_EM_EXT_MTYPE_EC                 20
 | 
						|
/* current: read current rms offset */
 | 
						|
#define IOT_EM_EXT_MTYPE_I_RMS_OFFSET       21
 | 
						|
/* voltage: read voltage rms offset */
 | 
						|
#define IOT_EM_EXT_MTYPE_U_RMS_OFFSET       22
 | 
						|
/* current: effective electric curren for N line */
 | 
						|
#define IOT_EM_EXT_MTYPE_I_N_RMS            23
 | 
						|
//TODO: add code
 | 
						|
#define IOT_EM_EXT_MTYPE_MAX                24
 | 
						|
/* energy meter extern measure parameter. end */
 | 
						|
 | 
						|
/* energy meter extern calibration parameter. start */
 | 
						|
/* power: active power */
 | 
						|
#define IOT_EM_EXT_CTYPE_P_P_GAIN           0
 | 
						|
#define IOT_EM_EXT_CTYPE_P_P_OFFSET         1
 | 
						|
/* power: reactive power */
 | 
						|
#define IOT_EM_EXT_CTYPE_P_Q_GAIN           2
 | 
						|
#define IOT_EM_EXT_CTYPE_P_Q_OFFSET         3
 | 
						|
/* power: apparent power */
 | 
						|
#define IOT_EM_EXT_CTYPE_P_S_GAIN           4
 | 
						|
/* voltage: effective voltage  */
 | 
						|
#define IOT_EM_EXT_CTYPE_U_GAIN             5
 | 
						|
#define IOT_EM_EXT_CTYPE_U_OFFSET           6
 | 
						|
/* current: effective electric current */
 | 
						|
#define IOT_EM_EXT_CTYPE_I_GAIN             7
 | 
						|
#define IOT_EM_EXT_CTYPE_I_OFFSET           8
 | 
						|
/* phase calibration */
 | 
						|
#define IOT_EM_EXT_CTYPE_PHASE_CALI0        9
 | 
						|
#define IOT_EM_EXT_CTYPE_PHASE_CALI1        10
 | 
						|
#define IOT_EM_EXT_CTYPE_PHASE_CALI2        11
 | 
						|
#define IOT_EM_EXT_CTYPE_PHASE_REGION01     12
 | 
						|
#define IOT_EM_EXT_CTYPE_PHASE_REGION12     13
 | 
						|
/* temperature calibration */
 | 
						|
#define IOT_EM_EXT_CTYPE_TPSD_OFFSET        14
 | 
						|
/* current start up threshold */
 | 
						|
#define IOT_EM_EXT_CTYPE_I_START            15
 | 
						|
/* power start up threshold */
 | 
						|
#define IOT_EM_EXT_CTYPE_P_START            16
 | 
						|
/* power gain calculate by oneshot method */
 | 
						|
#define IOT_EM_EXT_CTYPE_P_P_GAIN_ONESHOT   17
 | 
						|
/* phase angle calculate by oneshot method */
 | 
						|
#define IOT_EM_EXT_CTYPE_PHS_CALI_ONESHOT   18
 | 
						|
/* current: effective electric current for N line */
 | 
						|
#define IOT_EM_EXT_CTYPE_I_N_GAIN           19
 | 
						|
/* calibration type max id */
 | 
						|
#define IOT_EM_EXT_CTYPE_MAX                0x7F
 | 
						|
/* energy meter extern calibration parameter. end */
 | 
						|
 | 
						|
/* special function id */
 | 
						|
/* soft reset extern energy meter module */
 | 
						|
#define IOT_EM_EXT_FUNC_SW_RST              0x00
 | 
						|
/* hardware reset extern energy meter module */
 | 
						|
#define IOT_EM_EXT_FUNC_HW_RST              0x01
 | 
						|
/* clear extern energy meter(HW) calibration parameter */
 | 
						|
#define IOT_EM_EXT_FUNC_CALI_AREA_CLR       0x02
 | 
						|
/* set extern energy meter constant parameter */
 | 
						|
#define IOT_EM_EXT_FUNC_CALI_CONST_SET      0x03
 | 
						|
/* get extern energy meter(HW) calibration parameter */
 | 
						|
#define IOT_EM_EXT_FUNC_CALI_AREA_GET       0x04
 | 
						|
 | 
						|
/* for compitable with extend cali area introduce cali version */
 | 
						|
/* cali version invalid */
 | 
						|
#define IOT_EM_EXT_CALI_VERSION_INVALID     (0xff)
 | 
						|
/* cali version never write version to flash */
 | 
						|
#define IOT_EM_EXT_CALI_VERSION_BASE        (0)
 | 
						|
/* cali version support base cali area and extend erea */
 | 
						|
#define IOT_EM_EXT_CALI_VERSION_EXT         (1)
 | 
						|
/* cali version add support N current */
 | 
						|
#define IOT_EM_EXT_CALI_VERSION_EXT_V2      (2)
 | 
						|
/* target cali version */
 | 
						|
#define IOT_EM_EXT_CALI_TARGET_VER          IOT_EM_EXT_CALI_VERSION_EXT_V2
 | 
						|
 | 
						|
#pragma pack(push)
 | 
						|
#pragma pack(1)
 | 
						|
 | 
						|
/* calibration data start */
 | 
						|
/* calibration data parameter for standard and actuual mode */
 | 
						|
typedef struct _iot_em_ext_cali_data_std_act {
 | 
						|
    int32_t std;
 | 
						|
    int32_t actual;
 | 
						|
} iot_em_ext_cali_data_std_act_t;
 | 
						|
 | 
						|
/* calibration data parameter for U/I offset calibration */
 | 
						|
typedef struct _iot_em_ext_cali_data_raw_data {
 | 
						|
    uint32_t raw;
 | 
						|
} iot_em_ext_cali_data_raw_data_t;
 | 
						|
 | 
						|
/* calibration data parameter for I/P start rate calibration */
 | 
						|
typedef struct _iot_em_ext_cali_data_set_rate {
 | 
						|
    uint32_t rate;
 | 
						|
} iot_em_ext_cali_data_set_rate_t;
 | 
						|
 | 
						|
/* calibration data for power gain */
 | 
						|
typedef struct _iot_em_ext_cali_data_p_gain {
 | 
						|
    /* indicate data type. 0 - std actual type, others - err type */
 | 
						|
    uint8_t is_err;
 | 
						|
    union {
 | 
						|
        /* standard meter output error value.
 | 
						|
         * e.g. 0.74%, then set err = 74
 | 
						|
         */
 | 
						|
        int32_t err;
 | 
						|
        /* standard/actual value, unit: 1mW */
 | 
						|
        iot_em_ext_cali_data_std_act_t  std_act;
 | 
						|
    } data;
 | 
						|
} iot_em_ext_cali_data_p_gain_t;
 | 
						|
 | 
						|
/* calibration data for power phase */
 | 
						|
typedef struct _iot_em_ext_cali_data_p_phase {
 | 
						|
    /* indicate data type. 0 - std actual type, others - err type */
 | 
						|
    uint8_t is_err;
 | 
						|
    union {
 | 
						|
        /* standard meter output error value.
 | 
						|
         * e.g. 0.74%, then set err = 74
 | 
						|
         */
 | 
						|
        int32_t err;
 | 
						|
        /* standard/actual value, unit: 1mW */
 | 
						|
        iot_em_ext_cali_data_std_act_t  std_act;
 | 
						|
    } data;
 | 
						|
} iot_em_ext_cali_data_p_phase_t;
 | 
						|
 | 
						|
/* calibration data for U gain, U unit: 1mV */
 | 
						|
typedef iot_em_ext_cali_data_std_act_t iot_em_ext_cali_data_u_gain_t;
 | 
						|
 | 
						|
/* calibration data for I gain, I unit: 1mA */
 | 
						|
typedef iot_em_ext_cali_data_std_act_t iot_em_ext_cali_data_i_gain_t;
 | 
						|
 | 
						|
/* calibration data for p_gain/phase angel, unit:1W/1Var */
 | 
						|
typedef struct {
 | 
						|
    /* calibration data of P include raw and actual value */
 | 
						|
    iot_em_ext_cali_data_std_act_t p;
 | 
						|
    /* calibration data of Q include raw and actual value */
 | 
						|
    iot_em_ext_cali_data_std_act_t q;
 | 
						|
} iot_em_ext_cali_p_data_oneshot_t;
 | 
						|
 | 
						|
/* calibration data for temperature offset , T unit: 0.1 Celsius */
 | 
						|
typedef struct {
 | 
						|
    int32_t std;
 | 
						|
    int32_t actual;
 | 
						|
} iot_em_ext_cali_data_tpsd_t;
 | 
						|
 | 
						|
/* voltage channel hw input config */
 | 
						|
typedef struct _iot_em_ext_hw_u_cfg {
 | 
						|
    /* voltage channel transfer rate */
 | 
						|
    uint32_t rate;
 | 
						|
} iot_em_ext_u_cfg_t;
 | 
						|
 | 
						|
/* current channel hw input config */
 | 
						|
typedef struct _iot_em_ext_hw_i_cfg {
 | 
						|
    /* current channel sample resistance value. unit: ohm */
 | 
						|
    uint32_t r_sample;
 | 
						|
    /* current channel transfer rate */
 | 
						|
    uint32_t rate;
 | 
						|
} iot_em_ext_i_cfg_t;
 | 
						|
 | 
						|
/* energy meter constant config */
 | 
						|
typedef struct _iot_em_ext_cali_const {
 | 
						|
    /* EC constant */
 | 
						|
    uint32_t ec; /* low 16bit */
 | 
						|
    /* voltage channel config */
 | 
						|
    iot_em_ext_u_cfg_t  u_ch;
 | 
						|
    /* current channel config */
 | 
						|
    iot_em_ext_i_cfg_t  i_ch;
 | 
						|
} iot_em_ext_cali_const_t;
 | 
						|
/* calibration data end */
 | 
						|
 | 
						|
#pragma pack(pop)
 | 
						|
 | 
						|
/* energy measure misc data */
 | 
						|
typedef struct _iot_em_ext_meas_misc {
 | 
						|
    /* EC constant */
 | 
						|
    uint16_t ec;
 | 
						|
    /* phase line frequency. unit: 0.01Hz */
 | 
						|
    uint16_t freq;
 | 
						|
    /* energy chip temperature. unit: 0.1 centigrade */
 | 
						|
    int16_t temperature;
 | 
						|
    /* voltage angle between phaseA and phaseB. unit: 1degrees */
 | 
						|
    int16_t angle_ua_ub;
 | 
						|
    /* voltage angle between phaseA and phaseC. unit: 1degrees */
 | 
						|
    int16_t angle_ua_uc;
 | 
						|
    /* voltage angle between phaseB and phaseC. unit: 1degrees */
 | 
						|
    int16_t angle_ub_uc;
 | 
						|
    /* current rms for N line. unit: 0.00001A */
 | 
						|
    int32_t i_n_rms;
 | 
						|
    //TODO:
 | 
						|
} iot_em_ext_meas_misc_t;
 | 
						|
 | 
						|
/* energy measure all phase common data */
 | 
						|
typedef struct _iot_em_ext_meas_common {
 | 
						|
    /* active powoer sign. 0: positive , 1: negative */
 | 
						|
    uint16_t p_sign         : 1,/* 1bit */
 | 
						|
    /* reactive powoer sign. 0: positive , 1: negative */
 | 
						|
             q_sign         : 1,
 | 
						|
    /* reserved for further use */
 | 
						|
             rsvd0          : 14;
 | 
						|
    /* power factor. unit: 0.001 */
 | 
						|
    int16_t p_factor;
 | 
						|
    /* active power. unit: 0.000001KW */
 | 
						|
    int32_t p_p;
 | 
						|
    /* reactive power. unit: 0.000001Kvar */
 | 
						|
    int32_t p_q;
 | 
						|
    /* apparent power. unit: 0.000001KVA */
 | 
						|
    int32_t p_s;
 | 
						|
    /* voltage rms. unit: 0.1V */
 | 
						|
    uint16_t u_rms;
 | 
						|
    /* power angele(only phaseA/B/C). unit: 0.1degrees */
 | 
						|
    int16_t angle_u_i;
 | 
						|
    /* current rms. unit: 0.00001A */
 | 
						|
    int32_t i_rms;
 | 
						|
    /* active energy. unit: 1/ec kwh */
 | 
						|
    uint32_t e_p;
 | 
						|
    /* reactive energy. unit: 1/ec kvarh */
 | 
						|
    uint32_t e_q;
 | 
						|
    /* apparent energy. unit: 1/ec kwh */
 | 
						|
    uint32_t e_s;
 | 
						|
} iot_em_ext_meas_common_t;
 | 
						|
 | 
						|
/* measure value ctxt */
 | 
						|
typedef struct _iot_em_ext_meas_data {
 | 
						|
    /* measure update timestamp */
 | 
						|
    uint32_t ts;
 | 
						|
    /* misc measure */
 | 
						|
    iot_em_ext_meas_misc_t      misc;
 | 
						|
    /* total phase(phase A/B/C/All) measure */
 | 
						|
    iot_em_ext_meas_common_t    phase[IOT_EM_EXT_PHASE_CNT];
 | 
						|
} iot_em_ext_meas_data_t;
 | 
						|
/* energy measure ctxt. end */
 | 
						|
 | 
						|
/* energy hw config info context */
 | 
						|
typedef struct _iot_em_ext_hw_cfg {
 | 
						|
    /* communication interface between energy meter extern module and kunlun.
 | 
						|
     * see IOT_EM_EXT_INTERFACE_XXX
 | 
						|
     */
 | 
						|
    uint32_t interface_proto    : 2,
 | 
						|
    /* em extern module reset gpio */
 | 
						|
        gpio_rst                : 8,
 | 
						|
        rev0                    : 22;
 | 
						|
    /* communication interface config */
 | 
						|
    union {
 | 
						|
        /* spi config info */
 | 
						|
        iot_spi_cfg_t   spi;
 | 
						|
        /* TODO: reserved. */
 | 
						|
        uint32_t        uart;
 | 
						|
    } comm;
 | 
						|
} iot_em_ext_hw_cfg_t;
 | 
						|
 | 
						|
/* @brief               measure data callback register.
 | 
						|
 *
 | 
						|
 * @param entry         measure data buffer entry address
 | 
						|
 * @return:             none.
 | 
						|
 */
 | 
						|
typedef void (*iot_em_ext_meas_std_rpt_func_t)(iot_em_ext_meas_data_t \
 | 
						|
    const *entry);
 | 
						|
 | 
						|
/* energy config info context */
 | 
						|
typedef struct _iot_em_ext_cfg {
 | 
						|
    /* communication hw config */
 | 
						|
    iot_em_ext_hw_cfg_t             hw_cfg;
 | 
						|
    /* measure data report callback function */
 | 
						|
    iot_em_ext_meas_std_rpt_func_t  rpt;
 | 
						|
} iot_em_ext_cfg_t;
 | 
						|
 | 
						|
/* @breif:          calibration finish callback function
 | 
						|
 * @param res       calibration result, eg, ERR_OK or ERR_FAIL
 | 
						|
 * @param reason    calibration fail reason, eg IOT_EM_EXT_ONESHOT_CALI_FAIL_XXX
 | 
						|
 * @param return    none
 | 
						|
 */
 | 
						|
typedef void (*iot_em_ext_rpt_cali_res_cb_t)(uint8_t res, uint32_t reason);
 | 
						|
 | 
						|
/* standard source output parameter define */
 | 
						|
typedef struct _iot_em_ext_cali_src_para {
 | 
						|
    /* input standard source voltage, unit: 0.1V */
 | 
						|
    uint16_t u;
 | 
						|
    /* input stardard source current, unit: 0.01A */
 | 
						|
    uint16_t i;
 | 
						|
    /* input standard source active power, unit: 0.1W */
 | 
						|
    int32_t p;
 | 
						|
    /* input standard source reactive power, unit: 0.1Var */
 | 
						|
    int32_t q;
 | 
						|
} iot_em_ext_cali_src_para_t;
 | 
						|
 | 
						|
/* calibrate defult parameter type */
 | 
						|
typedef struct _iot_em_ext_cali_zero_para {
 | 
						|
    /* u offset cali zero enable */
 | 
						|
    uint32_t u_offset_en        : 1,
 | 
						|
    /* i offset cali zero enable */
 | 
						|
             i_offset_en        : 1,
 | 
						|
             resv               : 30;
 | 
						|
    /* u offset reg data */
 | 
						|
    uint16_t u_offset[IOT_EM_EXT_PHASE_ALL];
 | 
						|
    /* i offset reg data */
 | 
						|
    uint16_t i_offset[IOT_EM_EXT_PHASE_CNT];
 | 
						|
} iot_em_ext_cali_default_para_t;
 | 
						|
 | 
						|
/* app trigger calibration, config parameter define */
 | 
						|
typedef struct _iot_em_ext_oneshot_cali_cfg {
 | 
						|
    /* input max sample times */
 | 
						|
    uint32_t max_smpl              : 8,
 | 
						|
    /* is calibrate default parameter enable */
 | 
						|
             is_cali_defeault_en   : 1,
 | 
						|
             resv                  : 23;
 | 
						|
    /* standard source device output parameter, eg U/I/PF */
 | 
						|
    iot_em_ext_cali_src_para_t src_phase[IOT_EM_EXT_PHASE_ALL];
 | 
						|
    /* hardware config const parameter */
 | 
						|
    iot_em_ext_cali_const_t cali_const;
 | 
						|
    /* calibration finish callback function */
 | 
						|
    iot_em_ext_rpt_cali_res_cb_t func;
 | 
						|
    /* default para data */
 | 
						|
    iot_em_ext_cali_default_para_t default_para;
 | 
						|
} iot_em_ext_oneshot_cali_cfg_t;
 | 
						|
 | 
						|
/* @brief               read measure data from local buffer.
 | 
						|
 *
 | 
						|
 * @param meas_type     read data type, see IOT_EM_EXT_MTYPE_XXX
 | 
						|
 * @param em_ext_phase  read phase id, see IOT_EM_EXT_PLC_PHASE_XXX
 | 
						|
 * @param result        read result. unit see iot_em_ext_meas_data_t.
 | 
						|
 * @return:             error code. see see ERR_XXX
 | 
						|
 */
 | 
						|
uint32_t iot_em_ext_get_meas_local(uint8_t meas_type, uint8_t em_ext_phase,
 | 
						|
    int32_t *result);
 | 
						|
 | 
						|
/* @brief               read measure data from chip.
 | 
						|
 *
 | 
						|
 * @param meas_type     read data type, see IOT_EM_EXT_MTYPE_XXX
 | 
						|
 * @param is_rawdata    is get measure raw data
 | 
						|
 * @param em_ext_phase  read phase id, see IOT_EM_EXT_PLC_PHASE_XXX
 | 
						|
 * @return:             return measure data
 | 
						|
 */
 | 
						|
int32_t iot_em_ext_read_meas(uint8_t meas_type, uint8_t is_rawdata,
 | 
						|
    uint8_t em_ext_phase);
 | 
						|
 | 
						|
/* @brief               open energy module
 | 
						|
 *
 | 
						|
 * @param em_ext_cfg    hw config parameters
 | 
						|
 * @return:             error code, see ERR_XXX
 | 
						|
 */
 | 
						|
uint32_t iot_em_ext_module_open(iot_em_ext_cfg_t *em_ext_cfg);
 | 
						|
 | 
						|
/* @brief               close energy module
 | 
						|
 *
 | 
						|
 * @return:             error code, see ERR_XXX
 | 
						|
 */
 | 
						|
uint32_t iot_em_ext_module_close(void);
 | 
						|
 | 
						|
/* @brief               entry energy meter calibration function.
 | 
						|
 *
 | 
						|
 * @param req           request buffer address
 | 
						|
 * @param req_len       request  buffer byte length
 | 
						|
 * @param resp          response buffer address
 | 
						|
 * @param resp_len      response  buffer byte length
 | 
						|
 * @return:             return response valid data length
 | 
						|
 */
 | 
						|
uint32_t iot_em_ext_cali_func_entry(uint8_t *req, uint16_t req_len,
 | 
						|
    uint8_t *resp, uint16_t resp_len);
 | 
						|
 | 
						|
/* @brief                em oneshot calibration trig start
 | 
						|
 * @param cfg            app config calibration parameter
 | 
						|
 * @retval               trig calibration ok return ERR_OK, else ERR_FAIL
 | 
						|
 * note : in oneshot method calibration, after standard source device output
 | 
						|
 *        in rate voltage range and current range, just trigger the oneshot
 | 
						|
 *        method process once can finish all calibration.
 | 
						|
 *   eg : iot_em_ext_oneshot_cali_cfg_t test = {0};
 | 
						|
 *        test.src_phase[0].i = 2000;  //20.00A
 | 
						|
 *        test.src_phase[0].u = 2200;  //220.0V
 | 
						|
 *        test.src_phase[0].p = 22000; //2200.0W
 | 
						|
 *        test.src_phase[0].q = 38104; //3810.4Var
 | 
						|
 *        test.max_smpl = 5;
 | 
						|
 *        test.cali_const.ec = 1200;
 | 
						|
 *        test.cali_const.i_ch.rate = 3000;
 | 
						|
 *        test.cali_const.i_ch.r_sample = 4;
 | 
						|
 *        test.cali_const.u_ch.rate = 1843;
 | 
						|
 *        iot_em_ext_cali_oneshot_trig(&test);
 | 
						|
 */
 | 
						|
uint32_t iot_em_ext_cali_oneshot_trig(iot_em_ext_oneshot_cali_cfg_t *app_cfg);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif //_IOT_EM_EXT_API_H_
 |