/**************************************************************************** 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 */