165 lines
5.6 KiB
C
Executable File
165 lines
5.6 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 PLC_MME_ZERO_CROSS_H
|
|
#define PLC_MME_ZERO_CROSS_H
|
|
|
|
/* os shim includes */
|
|
#include "os_types_api.h"
|
|
|
|
#include "plc_mme.h"
|
|
#include "plc_utils.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* pack for the structures in the whole file */
|
|
#pragma pack(push) // save the pack status
|
|
#pragma pack(1) // 1 byte align
|
|
|
|
#define MME_ZC_CT_ONE_STA 0 // collection type: one STA
|
|
#define MME_ZC_CT_ALL_STA 1 // collection type: all STAs
|
|
|
|
#define MME_ZC_CP_HALF_PEROID 0 // half a power line period collection
|
|
#define MME_ZC_CP_ONE_PEROID 1 // a whole power line period collection
|
|
|
|
#define MME_ZC_CT_FALLING_EDGE 0 // zc collect on falling edge
|
|
#define MME_ZC_CT_RISING_EDGE 1 // zc collect on rising edge
|
|
#define MME_ZC_CT_ALL_EDGE 2 // zc collect on falling and rising edge
|
|
|
|
/**
|
|
* each ntb_diff_value_t contain 2 NTB diff value.
|
|
* Please use ntb_diff1 to access the 1st value and ntb_diff2 for the 2nd one.
|
|
*/
|
|
typedef struct _ntb_diff_value {
|
|
union {
|
|
struct {
|
|
/* lower 12 bit */
|
|
uint16_t ntb_diff1 :12;
|
|
uint16_t _reserved_1 : 4;
|
|
uint8_t _reserved_2;
|
|
|
|
};
|
|
struct {
|
|
uint8_t _reserved_3;
|
|
uint16_t _reserved_4 : 4;
|
|
/* higher 12 bit */
|
|
uint16_t ntb_diff2 :12;
|
|
};
|
|
/* size of this struct is 3 bytes */
|
|
uint8_t data[3];
|
|
};
|
|
} ntb_diff_value_t;
|
|
|
|
/* definition of zero cross NTB collect indication */
|
|
typedef struct _mme_zc_ntb_clct_ind {
|
|
/* the STA who should collect zero cross NTB */
|
|
uint16_t sta: 12,
|
|
/* reserved for future */
|
|
reserved: 4;
|
|
/* collecting type. see MME_ZC_CT_XXX */
|
|
uint8_t clct_type;
|
|
/* collecting period. see MME_ZC_CP_XXX */
|
|
uint8_t clct_period;
|
|
/* number of consecutive zero cross NTB to collect */
|
|
uint8_t clct_cnt;
|
|
/* reserved */
|
|
uint8_t resvd[3];
|
|
} mme_zc_ntb_clct_ind_t;
|
|
|
|
/* definition of zero cross NTB report */
|
|
typedef struct _mme_zc_ntb_report {
|
|
/* the STA reporting zero corss NTB */
|
|
uint16_t sta: 12,
|
|
/* reserved for future */
|
|
resvd: 4;
|
|
/* number of zero cross NTB collected */
|
|
uint8_t clct_cnt;
|
|
/* number of item in each phase */
|
|
uint8_t phase_cnt[3];
|
|
/* standard NTB */
|
|
uint32_t std_ntb;
|
|
/* each item contain 2 NTB diff values */
|
|
ntb_diff_value_t ntb_diff_val[0];
|
|
} mme_zc_ntb_report_t;
|
|
|
|
/* definition of high-precision zero cross NTB area notify report data filed */
|
|
typedef struct __mme_area_notify_zc_ntb_data {
|
|
/* number of item in each phase */
|
|
uint8_t phase_cnt[3];
|
|
/* standard NTB */
|
|
uint32_t std_ntb;
|
|
/* each item contain 2 NTB diff values */
|
|
ntb_diff_value_t ntb_diff_val[0];
|
|
} mme_area_notify_zc_ntb_data_t;
|
|
|
|
/* definition of high-precision zero cross NTB area notify report */
|
|
typedef struct _mme_area_notify_zc_ntb_report_header {
|
|
/* version */
|
|
uint8_t ver :6,
|
|
/* reserved for future */
|
|
reserved_1 :2;
|
|
/* the STA reporting zero corss NTB */
|
|
uint16_t tei :12,
|
|
/* reserved for future */
|
|
reserved_2 :4;
|
|
/* task sequence number */
|
|
uint8_t task_sn;
|
|
/* same transformer identify result. valid range from 0 to 100 */
|
|
uint8_t score :7,
|
|
/* data attribute, 0 means sent from cco, 1 means sent from sta */
|
|
attr :1;
|
|
/* collecting type. see MME_ZC_CT_XXX_EDGE */
|
|
uint8_t clct_type :2,
|
|
/* reserved for future */
|
|
reserved_3 :6;
|
|
} mme_area_notify_zc_ntb_report_header_t;
|
|
|
|
/* definition of zero cross NTB collect indication */
|
|
typedef struct _spg_mme_zc_ntb_clct_ind {
|
|
/* the STA who should collect zero cross NTB */
|
|
tei_t sta;
|
|
/* collecting type. see MME_ZC_CT_XXX */
|
|
uint8_t clct_type;
|
|
/* collecting period. see MME_ZC_CP_XXX */
|
|
uint8_t clct_period;
|
|
/* number of consecutive zero cross NTB to collect */
|
|
uint8_t clct_cnt;
|
|
} spg_mme_zc_ntb_clct_ind_t;
|
|
|
|
/* definition of zero cross NTB report */
|
|
typedef struct _spg_mme_zc_ntb_report {
|
|
/* the STA reporting zero corss NTB */
|
|
tei_t sta;
|
|
/* number of zero cross NTB collected */
|
|
uint8_t clct_cnt;
|
|
/* reserved */
|
|
uint8_t resv0;
|
|
/* standard NTB */
|
|
uint32_t std_ntb;
|
|
/* each item contain 2 NTB diff values */
|
|
ntb_diff_value_t ntb_diff_val[0];
|
|
} spg_mme_zc_ntb_report_t;
|
|
|
|
#pragma pack(pop) // restore the pack status
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // PLC_MME_ZERO_CROSS_H
|