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