147 lines
5.2 KiB
C
Executable File
147 lines
5.2 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_CALIBRATION_H_
|
|
#define _IOT_EM_EXT_CALIBRATION_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "os_types.h"
|
|
#include "iot_em_ext_api.h"
|
|
|
|
/* extern energy meter calibration cmd type */
|
|
/* open energy meter extern module */
|
|
#define IOT_EM_EXT_CALI_CMD_MODULE_OPEN 0x00
|
|
/* set energy meter extern constant parameters */
|
|
#define IOT_EM_EXT_CALI_CMD_CONST_SET 0x01
|
|
/* set calibration parameter */
|
|
#define IOT_EM_EXT_CALI_CMD_PARA_SET 0x02
|
|
/* get calibration parameter */
|
|
#define IOT_EM_EXT_CALI_CMD_PARA_GET 0x03
|
|
/* calculate calibration parameter */
|
|
#define IOT_EM_EXT_CALI_CMD_PARA_CALC 0x04
|
|
/* get measure data */
|
|
#define IOT_EM_EXT_CALI_CMD_MEAS_GET 0x05
|
|
/* save current calibration parameters to oem */
|
|
#define IOT_EM_EXT_CALI_CMD_PARA_SAVE 0x06
|
|
/* trigger oneshot calibration */
|
|
#define IOT_EM_EXT_CALI_CMD_ONESHOT_TRIG 0x07
|
|
/* query oneshot calibration result */
|
|
#define IOT_EM_EXT_CALI_CMD_ONESHOT_QUERY 0x08
|
|
|
|
/* oneshot cali sample meas data delay interval, unit:ms */
|
|
#define IOT_EM_EXT_ONESHOT_SMPL_INTERVAL_MS 600
|
|
/* oneshot cali after init const parameter wait time, unit:ms */
|
|
#define IOT_EM_EXT_ONESHOT_WAIT_STABLE_MS 2000
|
|
|
|
/* oneshot cali state mechine of idle state */
|
|
#define IOT_EM_EXT_ONESHOT_CALI_SM_IDLE 0
|
|
/* oneshot cali state mechine of sample meas data state */
|
|
#define IOT_EM_EXT_ONESHOT_CALI_SM_SMPL 1
|
|
/* oneshot cali state mechine of stop state */
|
|
#define IOT_EM_EXT_ONESHOT_CALI_SM_STOP 2
|
|
|
|
/* oneshot cali fail reason of initiate fail */
|
|
#define IOT_EM_EXT_ONESHOT_CALI_FAIL_INIT 1
|
|
/* oneshot cali fail reason of write chip reg fail */
|
|
#define IOT_EM_EXT_ONESHOT_CALI_FAIL_WR_REG 2
|
|
/* oneshot cali fail reason of save parameter to flash fail */
|
|
#define IOT_EM_EXT_ONESHOT_CALI_FAIL_SAVE_PARA 3
|
|
|
|
/* output voltage factor */
|
|
#define IOT_EM_EXT_CALI_ONESHOT_OUT_U_RATE (10)
|
|
/* output current factor */
|
|
#define IOT_EM_EXT_CALI_ONESHOT_OUT_I_RATE (100000)
|
|
|
|
#pragma pack(push)
|
|
#pragma pack(1)
|
|
|
|
/* calibration data protocol header */
|
|
typedef struct _iot_em_ext_cali_cmd_hdr {
|
|
/* command execution result error code, see ERR_XXX */
|
|
uint8_t err_no;
|
|
/* command id, see IOT_EM_EXT_CALI_CMD_XXX */
|
|
uint8_t cmd;
|
|
/* parameter type id, see IOT_EM_EXT_CTYPE_XXX and IOT_EM_EXT_MTYPE_XXX */
|
|
uint8_t type;
|
|
/* phase id, see IOT_EM_EXT_PHASE_XXX */
|
|
uint8_t phase;
|
|
/* parameter bytes */
|
|
uint16_t len;
|
|
} iot_em_ext_cali_cmd_hdr_t;
|
|
|
|
/* oneshot cali channel data type define */
|
|
typedef struct _iot_em_ext_oneshot_cali_chn {
|
|
/* sample output meas voltage data, unit: 0.1V */
|
|
uint32_t u;
|
|
/* sample output meas current data, unit: 0.001A */
|
|
uint32_t i;
|
|
/* sample output raw active power data, unit: 1Walt */
|
|
int32_t p;
|
|
/* sample output raw reactive power data, unit: 1Var*/
|
|
int32_t q;
|
|
} iot_em_ext_oneshot_cali_chn_t;
|
|
|
|
typedef struct _iot_em_ext_oneshot_cali_misc {
|
|
/* current rms for n line */
|
|
uint32_t i_n_rms;
|
|
} iot_em_ext_oneshot_cali_misc_t;
|
|
|
|
typedef struct _iot_em_ext_oneshot_cali_item {
|
|
/* oneshot calibration misc data */
|
|
iot_em_ext_oneshot_cali_misc_t misc;
|
|
/* oneshot calibration phase data */
|
|
iot_em_ext_oneshot_cali_chn_t phase[IOT_EM_EXT_PHASE_ALL];
|
|
} iot_em_ext_oneshot_cali_item_t;
|
|
|
|
/* oneshot calibration context define */
|
|
typedef struct _iot_em_ext_oneshot_cali_ctxt {
|
|
/* cali state mechine current state */
|
|
uint32_t cur_state : 8,
|
|
/* cali state mechine last state */
|
|
last_state : 8,
|
|
/* calibration sample count */
|
|
sample_cnt : 16;
|
|
/* calibration fail reason */
|
|
uint32_t reason;
|
|
/* calibration timer */
|
|
timer_id_t cali_timer;
|
|
/* app set config parameter */
|
|
iot_em_ext_oneshot_cali_cfg_t app_cfg;
|
|
/* calibration sample data of all phase */
|
|
iot_em_ext_oneshot_cali_item_t smpl;
|
|
/* convert cfg data to unit of smaple data type */
|
|
iot_em_ext_oneshot_cali_item_t from_cfg;
|
|
/* packet of context */
|
|
iot_pkt_t *ctxt_pkt;
|
|
} iot_em_ext_oneshot_cali_ctxt_t;
|
|
|
|
/* @breif iot_em_ext_cali_oneshot_msg_handle() oneshot cali message handle
|
|
* @param func_id - function id
|
|
* @param pkt - message data of package
|
|
* @return none
|
|
*/
|
|
void iot_em_ext_cali_oneshot_msg_handle(uint8_t func_id, iot_pkt_t *pkt);
|
|
|
|
#pragma pack(pop)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //_IOT_EM_EXT_CALIBRATION_H_
|