162 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			162 lines
		
	
	
		
			5.3 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_VERSION_H
 | ||
|  | #define IOT_VERSION_H
 | ||
|  | 
 | ||
|  | #include "iot_config.h"
 | ||
|  | /* export includes */ | ||
|  | #include "iot_version_api.h"
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | typedef enum { | ||
|  |     IOT_FIRMWARE_TYPE_KL = 0, | ||
|  |     /* KL2 type III collector Series equipment */ | ||
|  |     IOT_FIRMWARE_TYPE_KL2_BRM, | ||
|  |     IOT_FIRMWARE_TYPE_KL3, | ||
|  |     /* KL2 topology recognition module */ | ||
|  |     IOT_FIREWARE_TYPE_KL2_BSRM, | ||
|  |     /* KL2 measurement circuit breaker module */ | ||
|  |     IOT_FIREWARE_TYPE_KL2_BRK, | ||
|  |     /* KL1 ckb image type */ | ||
|  |     IOT_FIREWARE_TYPE_KL1_CKB, | ||
|  |     /* KL3 ckb image type */ | ||
|  |     IOT_FIREWARE_TYPE_KL3_CKB, | ||
|  |     /* KL3 type III collector Series equipment */ | ||
|  |     IOT_FIREWARE_TYPE_KL3_BRM, | ||
|  |     /* kl3 measurement circuit breaker module */ | ||
|  |     IOT_FIREWARE_TYPE_KL3_BRK, | ||
|  |     /* KL1 new type cco */ | ||
|  |     IOT_FIREWARE_TYPE_KL1_NEW_TYPE_CCO, | ||
|  |     /* KL3 new type cco */ | ||
|  |     IOT_FIREWARE_TYPE_KL3_NEW_TYPE_CCO, | ||
|  |     /* KL3 for no rf device */ | ||
|  |     IOT_FIRMWARE_TYPE_KL3_NO_RF, | ||
|  |     /* KL3 type III collector Series equipment without RF hardware */ | ||
|  |     IOT_FIREWARE_TYPE_KL3_BRM_NO_RF, | ||
|  |     /* KL3 measurement circuit breaker module without RF hardware */ | ||
|  |     IOT_FIREWARE_TYPE_KL3_BRK_NO_RF, | ||
|  |     /* max image type value */ | ||
|  |     IOT_FIREWARE_TYPE_MAX = 255, | ||
|  | } FIRMWARE_IMAGE_TYPE; | ||
|  | 
 | ||
|  | /* Image type: see IOT_FIRMWARE_TYPE_XXX */ | ||
|  | #ifndef AP_FIRMWARE_IMAGE_TYPE
 | ||
|  | 
 | ||
|  | #if (TARGET_VERSION == TARGET_KUNLUN)
 | ||
|  | 
 | ||
|  | #if (IOT_STA_CONTROL_MODE > 0)
 | ||
|  | /* KL1 CKB FW. */ | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIREWARE_TYPE_KL1_CKB)
 | ||
|  | #elif (INCLUDE_VIRTUAL_CHANNEL && PLC_SUPPORT_CCO_ROLE)
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIREWARE_TYPE_KL1_NEW_TYPE_CCO)
 | ||
|  | #else /* (IOT_STA_CONTROL_MODE > 0) */
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIRMWARE_TYPE_KL)
 | ||
|  | #endif /* (IOT_STA_CONTROL_MODE > 0) */
 | ||
|  | 
 | ||
|  | #elif (TARGET_VERSION == TARGET_KUNLUN2)
 | ||
|  | 
 | ||
|  | #if (IOT_APP_DEF_14_BSRM == IOT_APP_SELECTION)
 | ||
|  | /* KL2 BSRM FW. */ | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIREWARE_TYPE_KL2_BSRM)
 | ||
|  | #elif (IOT_APP_DEF_16_BSRM_CUS_APP == IOT_APP_SELECTION)
 | ||
|  | /* KL2 BSRM CUS FW. */ | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIREWARE_TYPE_KL2_BRK)
 | ||
|  | #else
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIRMWARE_TYPE_KL2_BRM)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #elif (TARGET_VERSION == TARGET_KUNLUN3)
 | ||
|  | 
 | ||
|  | #if (IOT_STA_CONTROL_MODE > 0)
 | ||
|  | /* KL3 CKB FW. */ | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIREWARE_TYPE_KL3_CKB)
 | ||
|  | #elif (IOT_APP_DEF_11_BRM == IOT_APP_SELECTION)
 | ||
|  | #if HPLC_RF_DEV_SUPPORT
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE   (IOT_FIREWARE_TYPE_KL3_BRM)
 | ||
|  | #else
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE   (IOT_FIREWARE_TYPE_KL3_BRM_NO_RF)
 | ||
|  | #endif
 | ||
|  | #elif (IOT_APP_DEF_16_BSRM_CUS_APP == IOT_APP_SELECTION)
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE   (IOT_FIREWARE_TYPE_KL3_BRK)
 | ||
|  | #elif (INCLUDE_VIRTUAL_CHANNEL && PLC_SUPPORT_CCO_ROLE)
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIREWARE_TYPE_KL3_NEW_TYPE_CCO)
 | ||
|  | #else
 | ||
|  | #if HPLC_RF_DEV_SUPPORT
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIRMWARE_TYPE_KL3)
 | ||
|  | #else
 | ||
|  | #define AP_FIRMWARE_IMAGE_TYPE    (IOT_FIRMWARE_TYPE_KL3_NO_RF)
 | ||
|  | #endif
 | ||
|  | #endif /* (IOT_STA_CONTROL_MODE > 0) */
 | ||
|  | 
 | ||
|  | #else
 | ||
|  | #error "!!Unknown target version!!"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif /* AP_FIRMWARE_IMAGE_TYPE */
 | ||
|  | 
 | ||
|  | /* Build type: Release/Debug-(0/1) */ | ||
|  | #define AP_FIRMWARE_VERSION_TYPE (1)
 | ||
|  | 
 | ||
|  | /* The major version 5 bits: 0~31 */ | ||
|  | #define AP_FIRMWARE_VERSION_MAJOR (11)
 | ||
|  | 
 | ||
|  | /* The minor version 7 bits: 0~127 */ | ||
|  | #define AP_FIRMWARE_VERSION_MINOR (0)
 | ||
|  | 
 | ||
|  | /* The micro version 4 bits: 0~15 */ | ||
|  | #define AP_FIRMWARE_VERSION_MICRO (0)
 | ||
|  | 
 | ||
|  | /* The build version 16 bits: 0~65535. note that only lower 6 bits can be used
 | ||
|  |  * if app version is not 0. app version will use higher 10 bits for | ||
|  |  * iot_version_hex function. | ||
|  |  */ | ||
|  | #define AP_FIRMWARE_VERSION_BUILD (1)
 | ||
|  | 
 | ||
|  | /* Numerically encoded version, like 0x01020304 */ | ||
|  | #define AP_FIRMWARE_VERSION_HEX ((AP_FIRMWARE_VERSION_MAJOR << 27) |  \
 | ||
|  |                                  (AP_FIRMWARE_VERSION_MINOR << 20) |  \ | ||
|  |                                  (AP_FIRMWARE_VERSION_MICRO << 16) |  \ | ||
|  |                                  (AP_FIRMWARE_VERSION_BUILD )) | ||
|  | 
 | ||
|  | /* hw version cmd parameters */ | ||
|  | #define IOT_HW_VER_LOW_OFFSET     (0)
 | ||
|  | #define IOT_HW_VER_HIGH_OFFSET    (8)
 | ||
|  | #define IOT_HW_VER_LOW_MASK       (0xFF)
 | ||
|  | #define IOT_HW_VER_HIGH_MASK      (0xFF << 8)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief           set user build info | ||
|  |  * @param info:     user build info to be set. if not set, user build info will | ||
|  |  *                  same as buld info. | ||
|  |  */ | ||
|  | void iot_version_set_user_build_info(iot_build_info_t *info); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_image_type() - image's build type | ||
|  |  * | ||
|  |  * @return            image type see - IOT_FIRMWARE_TYPE_XXX | ||
|  |  * | ||
|  |  */ | ||
|  | uint8_t iot_image_type(void); | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif /* IOT_VERSION_H */
 |