Files
kunlun/app/brm/inc/iot_brm_cache.h

91 lines
3.1 KiB
C
Raw Normal View History

2024-09-28 14:24:04 +08:00
/****************************************************************************
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 */