Files
kunlun/inc/iot_version.h

162 lines
5.3 KiB
C
Raw Permalink 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_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 */