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