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_BRM_CACHE_H
|
||
|
#define __IOT_BRM_CACHE_H
|
||
|
|
||
|
/* os_shim header files */
|
||
|
#include "os_types_api.h"
|
||
|
|
||
|
#include "iot_config_api.h"
|
||
|
#include "iot_brm_common.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* define cache data type */
|
||
|
typedef enum {
|
||
|
iot_brm_cache_data_type_cr,
|
||
|
iot_brm_cache_data_type_max,
|
||
|
} iot_brm_cache_data_type_t;
|
||
|
|
||
|
/* curve descriptor */
|
||
|
typedef struct {
|
||
|
/* time tag */
|
||
|
uint32_t ts;
|
||
|
/* A/B/C phase current, uint is 0.001A */
|
||
|
int32_t i[IOT_BRM_PHASE_C];
|
||
|
/* total/A/B/C active power, uint is 0.0001 KW */
|
||
|
int32_t p[IOT_BRM_PHASE_MAX];
|
||
|
/* total/A/B/C reactive power, uint is 0.0001 Kvar */
|
||
|
int32_t q[IOT_BRM_PHASE_MAX];
|
||
|
/* total forward active energy, uint is 0.01kWh */
|
||
|
uint32_t ept_pos;
|
||
|
/* total reverse active energy, uint is 0.01kWh */
|
||
|
uint32_t ept_neg;
|
||
|
/* A/B/C phase voltage, uint is 0.1v */
|
||
|
uint16_t v[IOT_BRM_PHASE_C];
|
||
|
/* total/A/B/C power factor, uint is 0.001 */
|
||
|
int16_t pf[IOT_BRM_PHASE_MAX];
|
||
|
} iot_brm_cache_cr_t;
|
||
|
|
||
|
#if IOT_BRM_ENABLE
|
||
|
|
||
|
/**
|
||
|
* @brief iot_brm_cache_insert() - insert data into cache.
|
||
|
* @param addr: owner address of the data
|
||
|
* @param type: data type, see iot_brm_cache_data_type_t.
|
||
|
* @param data: pointer to data
|
||
|
* @retval ERR_OK - for success case, othersie - error code.
|
||
|
*/
|
||
|
uint32_t iot_brm_cache_insert(uint8_t *addr,
|
||
|
iot_brm_cache_data_type_t type, void *data);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_brm_cache_find() - find the data of the specified address and time.
|
||
|
* @param addr: specified address
|
||
|
* @param type: data type, see iot_brm_cache_data_type_t.
|
||
|
* @param ts: specified timestamp
|
||
|
* @param margin: if the specified time cannot be found, the earlier time data
|
||
|
* is used. This is the allowable time margin.
|
||
|
* @retval: pointer to the data block found or NULL if no wafound.
|
||
|
*/
|
||
|
void* iot_brm_cache_find(uint8_t *addr, iot_brm_cache_data_type_t type,
|
||
|
uint32_t ts, uint32_t margin);
|
||
|
|
||
|
/**
|
||
|
* @brief iot_brm_cache_init() - initializing the BRM cache module.
|
||
|
* @retval ERR_OK - for success case, othersie - error code.
|
||
|
*/
|
||
|
uint32_t iot_brm_cache_init(void);
|
||
|
|
||
|
#endif /* IOT_BRM_ENABLE */
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* __IOT_BRM_CACHE_H */
|