Files
kunlun/inc/driver/iot_board.h
2024-10-29 19:28:39 +08:00

620 lines
26 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_BOARD_INFO_H
#define IOT_BOARD_INFO_H
#include "iot_board_api.h"
#include "iot_version.h"
#include "iot_config_api.h"
#ifdef __cplusplus
extern "C" {
#endif
/* [NOTE]:the newly defined hardware version number needs to be added to
* iot_hardware_version_check.
*/
/************************ distribution network project ************************/
/* define the hardware version number of the old version of PW CCO module,
* the module has stopped production. The definition here is only for
* compatibility consideration
*/
#define HW_VERSION_DEFAULT 0x00000000 //00.00.00.00
#define HW_VERSION_INVALID 0xFFFFFFFF //255.255.255.255
#define HW_VERSION_CCO_PW_V1 0x4B0B0204 //75.11.02.04
#define HW_VERSION_CCO_PW_V2 0x4B0C0104 //75.12.01.04
#define HW_VERSION_CCO_PW_V3 0x4B0D0104 //75.13.01.04
/* define sta and 3ps(PW, has tsfm load sending function) hardware version */
#define HW_VERSION_STA_3PS_PW_LOAD_V1_0 0x4F0A0104 //79.10.01.04
#define HW_VERSION_STA_PW_LOAD_V2_0 0x4F140104 //79.20.01.04
#define HW_VERSION_STA_PW_LOAD_V3_0 0x4F1E010A //79.30.01.10
#define HW_VERSION_IIC_PW_LOAD_V1_0 0x530A0104 //83.10.01.04
#define HW_VERSION_3PS_PW_LOAD_V1_0 0x540A0104 //84.10.01.04
#define HW_VERSION_3PS_PW_LOAD_V2_0 0x541E010A //84.30.01.10
/* the old version of BRMT hardware has been abandoned, but the modules that
* have been shipped need to be supported.
*/
#define HW_VERSION_BRMT_I3C_V1 0x480A0104 //72.10.01.04
#define HW_VERSION_BRMT_I3C_V1_3 0x480D0304 //72.13.03.04
#define HW_VERSION_BRMT_I3C_V1_5 0x480F0104 //72.15.01.04
#define HW_VERSION_BRMT_I3C_V2_0 0x48140104 //72.20.01.04
#define HW_VERSION_BRMT_I3C_V2_2 0x48160104 //72.22.01.04
#define HW_VERSION_BRMT_I3C_V2_3 0x48170104 //72.23.01.04
#define HW_VERSION_BRMT_I3C_V2_4 0x48180104 //72.24.01.04
#define HW_VERSION_BRMT_I3C_V2_5 0x48190104 //72.25.01.04
#define HW_VERSION_BRMT_I3C_V2_5_2 0x48190105 //72.25.01.05
/* miniaturized I3C, the small load transmitting circuit is 2A constant
* resistance.
*/
#define HW_VERSION_BRMT_TLOAD_RZC_V1_1 0x48290101 //72.41.01.01
/* I3C, the small load transmitting circuit is 2A constant resistance */
#define HW_VERSION_BRMT_TLOAD_RZC_V1_0 0x48380105 //72.56.01.05
/* miniaturized I3C, the small load transmitting circuit is 400mA constant
* current.
*/
#define HW_VERSION_BRMT_TLOAD_400MA_RZC_V1_1 0x48290105 //72.41.01.05
#define HW_VERSION_BRMT_TLOAD_RPA_V1_0 0x48380106 //72.56.01.06
/* define BRMT I3C class B V1.0 hardware version,
* the hardware is changed from 72.23.01.04
*/
#define HW_VERSION_BRMT_I3C_B_V1_0 0x48500104 //72.80.01.04
#define HW_VERSION_BRMT_I3C_B_V1_1 0x48510104 //72.81.01.04
/* Hardware identification code of old version of TFMT */
#define HW_VERSION_TFMT_I3C_V1_2 0x470C0104 //71.12.01.04
#define HW_VERSION_TFMT_I3C_V1_3 0x470D0104 //71.13.01.04
#define HW_VERSION_TFMT_I3C_V1_5 0x470F0100 //71.15.01.00
/* define BRK I3C V2 hardware version */
#define HW_VERSION_BRK_I3C_V2 0x4D140104 //77.20.01.04
#define HW_VERSION_BRK_I3C_V2_1 0x4D150104 //77.21.01.04
/* define 630A-BRK I3C V2 hardware version */
#define HW_VERSION_BRK_630A_I3C_V1 0x500A0104 //80.10.01.04
/* define Non-electric control BRK hardware version */
#define HW_VERSION_BRK_NECTL_V1 0x510A0104 //81.10.01.04
#define HW_VERSION_BRK_NECTL_PA_V1 0x510A010C //81.10.01.12
#define HW_VERSION_BRK_NECTL_TLAOD_RZC_V1 0x550A0104 //85.10.01.04
#define HW_VERSION_BRK_NECTL_TLOAD_RPA_V1 0x550A010C //85.10.01.12
/* define BSRM hardware version */
#define HW_VERSION_BSRM_V1 0x560A0100 //86.10.1.0
/* hardware version code of Zhengtai measurement switch module */
#define HW_VERSION_BRKSTA_V1_0 0x590A0100 //89.10.1.0
/**************************** state grid project ******************************/
/* sta specially supplied to gansu, uses software for in-situ detection */
#define HW_VERSION_GS_NO_IPD_STA 0x01030101 //01.03.01.01(old naming rules)
/* 3ps/cco specially supplied to gansu, uses software for in-situ detection */
#define HW_VERSION_GS_NO_IPD_STA_3P 0x01020101 //01.02.01.01(old naming rules)
/* The hardware version number of 6 pass zero detection GPIO version 1. */
#define HW_VERSION_CCO_6_ZC_V1 0x330A0100 //51.10.01.00
/* The hardware version number of 6 pass zero detection GPIO version 2. */
#define HW_VERSION_CCO_6_ZC_V2 0x200C0801 //32.12.08.01
/* define cco (ntb and 3 zc) hardware version */
#define HW_VERSION_CCO_3_ZC_V1 0x1E320802 //30.50.08.02
/* define the hardware version number of new CCO V1 version of USB (FT232) */
#define HW_VERSION_CCO_USB_V1 0x1F0A0100 //31.10.01.00
/* define the hardware version number of new CCO V2 version of USB (STM32) */
#define HW_VERSION_CCO_USB_V2 0x1F140200 //31.20.02.00
/* define the hardware version number of new CCO V3 version of USB (GD32) */
#define HW_VERSION_CCO_USB_V3 0x1F140201 //31.20.02.01
/* dual mode cco version 1 */
#define HW_VERSION_CCO_DM_V1 0x0D0A0200 //13.10.02.00
/* define hx oversea hardware version*/
#define HW_VERSION_CCO_DM_V2 0x0D0A080B //13.10.08.11
/* define hx and kx oversea hardware version*/
#define HW_VERSION_CCO_DM_V3 0x0D0A080C //13.10.08.12
/* define iic (psram) hardware version */
#define HW_VERSION_IIC_PSRAM 0x3D0A0108 //61.10.01.08
/* define iic (extern flash) hardware version */
#define HW_VERSION_IIC_FLASH_EXT 0x3E140200 //62.20.02.00
/* define iic (ntb and extern flash) hardware version */
#define HW_VERSION_IIC_ZC_V1_FLASH_EXT 0x3E140908 //62.20.09.08
/* define MT iic (extern flash) hardware version */
#define HW_VERSION_IIC_MT_FLASH_EXT 0x3E140909 //62.20.09.09
/* define iic (load for zhejiang) hardware version */
#define HW_VERSION_IIC_LOAD_V1 0x3F0A0909 //63.10.09.09
/* dual mode(plc + rf) iic (load) version 1 */
#define HW_VERSION_IIC_DM_LOAD_V1 0x0D0A041D //13.10.04.29
/* define sta and 3ps (extern flash) hardware version */
#define HW_VERSION_STA_3PS_FLASH_EXT 0x290A0100 //41.10.01.00
/* define sta and 3ps (ntb tsfm for LiaoNing) hardware version */
#define HW_VERSION_STA_3PS_ZC_V1 0x290A0909 //41.10.09.09
/* define sta and 3ps (load for zhejiang) hardware version */
#define HW_VERSION_STA_3PS_LOAD_V1 0x2A0A0909 //42.10.09.09
/* define sta and 3ps (load for nw 21) hardware version */
#define HW_VERSION_STA_3PS_LOAD_V2 0x540E0201 //84.14.02.01
/* define sta (pw zc for beijing) hardware version */
#define HW_VERSION_STA_3PS_ZC_V2 0x29140200 //41.20.02.00
/* define sta and 3ps (ntb nw21) hardware version */
#define HW_VERSION_STA_3PS_ZC_V3 0x28330101 //40.51.01.01
/* define sta and 3ps (ntb tsfm and extern flash) hardware version */
#define HW_VERSION_STA_3PS_ZC_V1_FLASH_EXT 0x290A0908 //41.10.09.08
/* define sta and 3ps (ntb tsfm and load zhejiang) hardware version */
#define HW_VERSION_STA_3PS_ZC_V1_LOAD_V1 0x2A0A0908 //42.10.09.08
/* define sta and 3ps (SW overseas) hardware version */
#define HW_VERSION_STA_3PS_SW_OVERSEAS 0x2A0A0907 //42.10.09.07
/* define sta and 3ps (SX overseas) hardware version */
#define HW_VERSION_STA_3PS_SX_OVERSEAS 0x2A0A0906 //42.10.09.06
/* dual mode sta and 3ps version 1 */
#define HW_VERSION_STA_3PS_DM_V1 0x0D0A0109 //13.10.01.09
/* dual mode sta and 3ps version 2, for htzd */
#define HW_VERSION_STA_3PS_DM_V2 0x0D0A020B //13.10.02.11
/* dual mode sta and 3ps version 3, for sumsung oversea */
#define HW_VERSION_STA_3PS_DM_V3 0x0D0A020C //13.10.02.12
/* dual mode sta version 4, for hx oversea */
#define HW_VERSION_STA_DM_V4 0x0D0A020D //13.10.02.13
/* dual mode sta and 3ps version 4, for hx oversea */
#define HW_VERSION_STA_3PS_DM_V4 0x0D0A020E //13.10.02.14
/* dual mode sta version 5, for hx oversea kx ver */
#define HW_VERSION_STA_DM_V5 0x0D0A020F //13.10.02.15
/* dual mode sta and 3ps (load) version 1 */
#define HW_VERSION_STA_3PS_DM_LOAD_V1 0x0D0A011D //13.10.1.29
/* dual mode sta and 3ps (extern flash) version 1 */
#define HW_VERSION_STA_3PS_DM_FLASH_EXT_V1 0x0D0F0109 //13.15.1.9
/* dual mode sta and 3ps (load and extern flash) version 2 */
#define HW_VERSION_STA_3PS_DM_LOAD_FLASH_EXT_V2 0x0D0F010D //13.15.1.13
/* define sta(load for tongke nw 21) hardware version */
#define HW_VERSION_STA_LOAD_V3 0x0D28010B //13.40.01.11
/* define 3ps (load and extern flash for tongke nw 21) hardware version */
#define HW_VERSION_3PS_LOAD_FLASH_EXT_V3 0x0D28020D //13.40.02.13
/* dual mode spg 3ps (extern flash) version 1, for southern power grid version */
#define HW_VERSION_3PS_SPG_DM_FLASH_EXT_V1 0x0D0A0210 //13.10.02.16
/* dual mode xvji bsrm version 1 */
#define HW_VERSION_BSRM_DM_V1 0x0D0A010A //13.10.01.10
/* define sta03 run in cco03 for CKQ version*/
#define HW_VERSION_STA_CKQ_DM_V1 0x0D0A010C //13.10.01.12
/* dual mode spg sta(extern flash) version 1, for southern power grid version */
#define HW_VERSION_STA_SPG_DM_FLASH_EXT_V1 0x0D0A010D //13.10.01.13
/* define dt cco dm hardware version*/
#define HW_VERSION_DT_CCO_DM_V1 0x0D0A083D //13.10.08.61
/* define dt 3ps dm hardware version*/
#define HW_VERSION_DT_3PS_DM_V1 0x0D0A023D //13.10.02.61
/* define dt 3ps dm (load) hardware version*/
#define HW_VERSION_DT_3PS_DM_LOAD_V1 0x0D0A023E //13.10.02.62
/* define dt sta03 dm hardware version*/
#define HW_VERSION_DT_STA_DM_V1 0x0D0A013D //13.10.01.61
/* define dt sta03 dm (load) hardware version*/
#define HW_VERSION_DT_STA_DM_LOAD_V1 0x0D0A013E //13.10.01.62
/* define dt iic dm hardware version*/
#define HW_VERSION_DT_IIC_DM_V1 0x0D0B043D //13.11.04.61
/* define dt iic dm (load) hardware version*/
#define HW_VERSION_DT_IIC_DM_LOAD_V1 0x0D0B043E //13.11.04.62
/* define yp 3ps dm hardware version */
#define HW_VERSION_YP_3PS_DM_V1 0x0D0A0247 //13.10.02.71
/* define yp sta03 dm hardware version */
#define HW_VERSION_YP_STA_DM_V1 0x0D0A0147 //13.10.01.71
/*************************** mask subid chip **********************************/
/* define qj coated chip hardware version*/
#define HW_VERSION_QJ_MASKCHIP_V1 0x0D0A0801 //13.10.08.01
/* define qj sta (extern flash) version*/
#define HW_VERSION_QJ_STA_DM_FLASH_EXT_V1 0x0D0A0115 //13.10.01.21
/* define qj 3ps dm hardware version*/
#define HW_VERSION_STA_QJ_3PS_DM_V1 0x0D0A0215 //13.10.02.21
/* define qj spg sta dm hardware version1,for southern power grid version */
#define HW_VERSION_QJ_STA_SPG_DM_V1 0x0D0A0116 //13.10.01.22
/* define qj spg 3ps dm hardware version1,for southern power grid version */
#define HW_VERSION_QJ_3PS_SPG_DM_V1 0x0D0A0216 //13.10.02.22
/* define flx coated chip hardware version*/
#define HW_VERSION_FLX_MASKCHIP_V1 0x0D0A0802 //13.10.08.02
/* define flx 3ps dm hardware version*/
#define HW_VERSION_STA_FLX_3PS_DM_V0 0x0D0C021E //13.12.02.30
/* define flx 3ps dm hardware version*/
#define HW_VERSION_STA_FLX_3PS_DM_V1 0x0D0A021F //13.10.02.31
/* define spe coated chip hardware version*/
#define HW_VERSION_SPE_MASKCHIP_V1 0x0D0A0803 //13.10.08.03
/* define gx coated chip hardware version*/
#define HW_VERSION_GX_MASKCHIP_V1 0x0D0A0804 //13.10.08.04
/*************************** iot project **************************************/
/* iot ledc module, stamps package, 22 pins, old version */
#define HW_VERSION_IOT22P_CCO_STA_V1_0 0x640A0100 //100.10.01.00
/* iot ledc module, goldenfinger package, 17 pins, old version */
#define HW_VERSION_IOT17P_CCO_V1_0 0x650A0100 //101.10.01.00
#define HW_VERSION_IOT17P_STA_V1_0 0x650A010A //101.10.01.10
/* iot ledc module, stamps package, yonglin */
#define HW_VERSION_IOT_Y001S 0x640B0100 // 100.11.1.00
/* iot ledc module, stamps package, yonglin, kl3 */
#define HW_VERSION_IOT_Y001S_KL3 0x640B011E // 100.11.1.30
/* iot ledc module, goldenfinger package, yonglin and ouzitong */
#define HW_VERSION_IOT_Q111N_ISC 0x65140100 // 101.20.1.00
/* iot ledc module, goldenfinger package, yonglin and ouzitong, kl3 */
#define HW_VERSION_IOT_Q111N_ISC_KL3 0x6514011E // 101.20.1.30
/* iot ledc module, stamps package, ouzitong */
#define HW_VERSION_IOT_Q111N_ISF 0x660A0100 // 102.10.1.00
/* iot ledc module, stamps package, ouzitong, kl3 */
#define HW_VERSION_IOT_Q111N_ISF_KL3 0x660A011E // 102.10.1.30
/* iot ledc module, stamps package, ouzitong */
#define HW_VERSION_IOT_Q111N_H 0x670A0100 // 103.10.1.00
/* iot ledc module, stamps package, ouzitong, kl3 */
#define HW_VERSION_IOT_Q111N_H_KL3 0x670A011E // 103.10.1.30
/* iot ledc module, stamps package, ouzitong */
#define HW_VERSION_IOT_Q111N_HS 0x680A0100 // 104.10.1.00
/* iot ledc module, stamps package, ouzitong, kl3 */
#define HW_VERSION_IOT_Q111N_HS_KL3 0x680A011E // 104.10.1.30
/* iot ledc module, goldenfinger package, huawei and ouzitong */
#define HW_VERSION_IOT_Q111N_ISG 0x690A0100 // 105.10.1.00
/* iot ledc module, goldenfinger package, huawei and ouzitong, kl3 */
#define HW_VERSION_IOT_Q111N_ISG_KL3 0x690A011E // 105.10.1.30
/* iot ledc module, customization(BOARD_SI301X_30P), siqi */
#define HW_VERSION_IOT_CUS_SI301X 0x6B0A0100 // 107.10.1.00
/* iot ledc module, customization(BOARD_SI303X_30P), siqi kl3 */
#define HW_VERSION_IOT_CUS_SI303X_KL3 0x6B0A011E // 107.10.1.30
/* iot module, version 2.0, with psram */
#define HW_VERSION_IOT_LEDC_V2_0_P 0x6A0A0100 // 106.10.1.00
/* iot module, version 2.0, with psram, kl3 */
#define HW_VERSION_IOT_LEDC_V2_0_P_KL3 0x6A0A011E // 106.10.1.30
/* iot module, version 2.0, without psram */
#define HW_VERSION_IOT_LEDC_V2_0 0x6A0A0108 // 106.10.1.08
/* iot collector module, jingyi */
#define HW_VERSION_IOT_LEDC_V3_0_JY 0x6C0A0100 // 108.10.1.00
/* iot collector module, jingyi kl3 */
#define HW_VERSION_IOT_LEDC_V3_0_JY_KL3 0x6C0A011E // 108.10.1.30
/* iot concentrator module, version 2.0 */
#define HW_VERSION_IOT_CCTT_V2_0 0x5D0B0100 //93.11.01.00
/* D2D module, version 1.0 */
#define HW_VERSION_D2D_V1_0 0x6E0A0100 //110.10.01.00
/* iot concentrator module, version 3.0 */
#define HW_VERSION_IOT_CCTT_V3_0 0x720A0100 //114.10.01.00
/* iot concentrator module, version 2.5 */
#define HW_VERSION_IOT_CCTT_V2_5 0x750A0100 //117.10.01.00
/* iot concentrator module, version 3.5 */
#define HW_VERSION_IOT_CCTT_V3_5 0x760A0100 //118.10.01.00
/* iot solar mppt sta, version 1.0 */
#define HW_VERSION_IOT_MPPT_V1_0 0x630A0100 //99.10.01.00
/* hw ver: SPM_STA_RSD_EI11_V1.0
* hw ver num: 97.10.01.00
* application scene: external junction box
* main functions: rsd; current, voltage, temperature acquisition;
* isolation self-check; overload break;
* no boot with underpower; power on with no output default.
* release date: 2021-12-09
*/
#define HW_VERSION_PV_STA_RSD_EI11_V1_0 0x610A0100
/* hw ver: SPM_STA_RSD_EI12_V1.0
* hw ver num: 96.10.01.00
* application scene: external junction box (one with two)
* main functions: rsd; current, voltage, temperature acquisition;
* isolation self-check; overload break;
* no boot with underpower; power on with no output default.
* release date:
*/
#define HW_VERSION_PV_STA_RSD_EI12_V1_0 0x600A0100
/* dual mode sta version 7, for Indonesia oversea */
#define HW_VERSION_STA_DM_V7 0x0D0A0113 //13.10.1.19
/* board id should not change and keep same as xxx_OEM.ini */
typedef enum board_id_t {
BOARD_WQRDCCO01 = 1,
BOARD_WQRDSTA01 = 2,
BOARD_WQRDIIC01 = 3,
BOARD_HTZDCCO01 = 4,
BOARD_HTZDSTA01 = 5,
BOARD_HTZDIIC01 = 6,
BOARD_JSMTCCO01 = 7,
BOARD_JSMTSTA01 = 8,
BOARD_JSMTIIC01 = 9,
BOARD_GLDQCCO01 = 10,
BOARD_GLDQSTA01 = 11,
BOARD_GLDQIIC01 = 12,
BOARD_KL2CCO02 = 13,
BOARD_WQRDSTA02 = 14,
BOARD_DMPLSTA01 = 15, /* Device manage platform with ADC module. Ver:01 */
BOARD_KL2AI02 = 16,
BOARD_LEDCSTA01 = 17, /* LED controller */
BOARD_GPRSCCO01 = 18, /* UPLINK : ETH / GPRS(N11 CHIP) / UART */
BOARD_HTZDSTA02 = 19,
BOARD_TIDECCO01 = 20, /* tide MPLC */
BOARD_TIDESTA01 = 21, /* tide MODEM */
BOARD_TIDEBRG01 = 22, /* tide BRIGE */
BOARD_CPLTCCO02 = 23, /* Charge plartform CCO. */
BOARD_CPLTSTA02 = 24, /* Charge plartform STA. */
BOARD_LEDCCCO01 = 25,
BOARD_BRMTCCO01 = 26,
BOARD_BRMTSTA01 = 27,
BOARD_BRMTI3C02 = 28,
BOARD_IICCCO01 = 29, /* IIC CCO board */
BOARD_BRKI3C02 = 30, /* JR breaker STA. */
BOARD_TFMTI3C02 = 31, /* transformer monitor */
BOARD_FLXCCO01 = 32,
BOARD_FLXSTA01 = 33,
BOARD_FLXIIC01 = 34,
BOARD_FLX3PS01 = 35,
BOARD_SOLRSTA01 = 36, /* solar sta project, cco same as BOARD_HTZDCCO01 */
BOARD_SOLRADC01 = 37, /* solar current detect project */
BOARD_SOLRADC02 = 38, /* Current collect for photovoltatic project. */
BOARD_SOLRBRM02 = 39, /* Branch idenfication for photovoltatic project. */
BOARD_BSRM02 = 40,
BOARD_STAMP01 = 41, /* iot module, stamps package, 22 pins */
BOARD_GOLDFINGER01 = 42,/* iot module, goldenfinger package, 17 pins */
BOARD_BRKSTA02 = 43, /* Breaker STA, branch idenfication inside. */
BOARD_HTZDSTA03 = 44,
BOARD_HTZDCCO03 = 45,
BOARD_SI301X_30P = 46, /* iot module, SI301X, 30 pins */
BOARD_LEDC3P001 = 47, /* iot module ledc3.0 */
BOARD_EVB3031 = 48, /* kl3 evb, chip 3031(k48, 6*6, 2m flash) */
BOARD_EVB3201 = 49, /* kl3 evb, chip 3201(k76, 9*9, 4m flash, 8m psram) */
BOARD_EVB3211 = 50, /* kl3 evb, chip 3211(k76, 9*9, 4m flash) */
BOARD_HTZD3PS03 = 51, /* kl3 htzd 3-phase sta */
BOARD_FPGASTA03 = 52, /* kl3 FPGA sta */
BOARD_FPGACCO03 = 53, /* kl3 FPGA cco */
BOARD_LEDCSTA03 = 54, /* kl3 LED controller */
BOARD_GOLDFINGER03 = 55,/* kl3 iot module, goldenfinger package, 17 pins */
BOARD_HTZDIIC03 = 56, /* kl3 htzd iic */
BOARD_STAMP03 = 57, /* kl3 iot module, stamps package, 22 pins */
BOARD_SI303X_30P = 58, /* kl3 iot module, upgrade form BOARD_SI301X_30P */
BOARD_LEDC3P003 = 59, /* kl3 iot module, ledc3.0 */
BOARD_SOLRSTA03 = 60, /* kl3 iot module, solar sta project */
BOARD_QJSTA03 = 61, /* kl3 QJ sta */
BOARD_QJ3PS03 = 62, /* kl3 QJ 3-phase sta */
BOARD_QJCCO03 = 63, /* kl3 QJ cco */
BOARD_EVB5580D = 64, /* kl3 QJ evb, chip 5580D(k76, 9*9, 4m flash, 8m psram) */
BOARD_EVB5582D = 65, /* kl3 QJ evb, chip 5582D(k76, 9*9, 4m flash) */
BOARD_EVB6710 = 66, /* kl3 FLX evb, chip 6710(k76, 9*9, 4m flash, 8m psram) */
BOARD_EVB6711 = 67, /* kl3 FLX evb, chip 6711(k76, 9*9, 4m flash) */
BOARD_FLXCCO03 = 68, /* kl3 FLX cco */
BOARD_FLXSTA03 = 69, /* kl3 FLX sta */
BOARD_FLXIIC03 = 70, /* kl3 FLX iic */
BOARD_FLX3PS03 = 71, /* kl3 FLX 3-phase sta */
BOARD_QJIIC03 = 72, /* kl3 QJ IIC */
BOARD_HTZDCKB03 = 73, /* kl3 htzd ckb */
BOARD_SPEIIC03 = 74, /* kl3 SPE IIC */
BOARD_SPESTA03 = 75, /* kl3 SPE STA */
BOARD_SPE3PS03 = 76, /* kl3 SPE 3PS */
BOARD_SPECCO03 = 77, /* kl3 SPE CCO */
BOARD_D2DCCO01 = 78, /* kl1 d2d cco with eth driver */
BOARD_D2DSTA01 = 79, /* kl1 d2d sta with eth driver */
BOARD_GXSTA03 = 80, /* KL3 GX sta */
BOARD_GX3PS03 = 81, /* KL3 GX 3-phase sta */
BOARD_GXCCO03 = 82, /* KL3 GX cco */
BOARD_GXIIC03 = 83, /* KL3 GX iic */
BOARD_EVB5202 = 84, /* kl3 evb, chip 5202(k76, 9*9, 4m flash, 8m psram) */
BOARD_MICROCCTT01 = 85, /* k1l micro cctt 01 */
BOARD_FLXCKB03 = 86, /* kl3 flx ckb */
BOARD_GXCKB03 = 87, /* kl3 gx ckb */
BOARD_QJCKB03 = 88, /* kl3 qj ckb */
BOARD_SPECKB03 = 89, /* kl3 spe ckb */
BOARD_HTZDBSRM03 = 90, /* kl3 htzd bsrm */
BOARD_DTCCO03 = 91, /* KL3 DT cco */
BOARD_DT3PS03 = 92, /* KL3 DT 3-phase sta */
BOARD_DTSTA03 = 93, /* KL3 DT sta */
BOARD_BRMTI3C03 = 94, /* KL3 ⅢC */
BOARD_DTIIC03 = 95, /* KL3 DT iic */
BOARD_SOLRMPPT01 = 96, /* solar mppt sta project */
BOARD_EVB3201RFIN = 97, /* KL3 RF in CCO */
BOARD_EVB3211RFIN = 98, /* KL3 RF in STA */
BOARD_HTZDPT03 = 99, /* KL3 HTZD PT board */
BOARD_YPSTA03 = 100, /* KL3 YP sta */
BOARD_YP3PS03 = 101, /* KL3 YP 3-phase sta */
BOARD_YPCCO03 = 102, /* KL3 YP cco */
BOARD_YPCKB03 = 103, /* KL3 YP ckb */
BOARD_DTCKB03 = 104, /* KL3 DT ckb */
BOARD_HTR01 = 105, /* kl1 iot module, 14 pins */
BOARD_YPIIC03 = 106, /* kl3 yp iic */
} board_id_t;
typedef struct _chip_info {
/* fw start address on the chip */
uint32_t fw_start_addr;
/* chip magic number */
uint16_t magic_no;
/* chip name */
uint8_t name[IOT_CHIP_NAME_BUFFER_MIN_LEN];
/* chip name length */
uint8_t name_len;
} chip_info_t;
typedef struct _board_info_t {
uint32_t board_id;
uint32_t hw_ver;
uint8_t pin_num;
void *pin;
chip_info_t chip_info;
} board_info_t;
typedef struct board_status_t{
uint32_t rst_pwr_cnt;
uint32_t rst_wdt_cnt;
uint32_t rst_soft_cnt;
uint8_t rst_reason;
uint8_t rst_soft_reason;
}board_status;
void iot_board_cfg_init();
void iot_board_cfg_dump();
/**
* @brief iot_board_reset_get_and_set - get the reason of system reset and
* set default reset reason. call early in fw startup.
* @param NULL
* @return NULL
*/
void iot_board_reset_get_and_set(void);
/**
* @brief iot_board_reset_check - check the reason of systrm reset
* @param NULL
* @return NULL
*/
void iot_board_reset_check(void);
/**
* @brief iot_board_soft_reset_mark - set mark when soft reset occurs
* @param NULL
* @return NULL
*/
void iot_board_soft_reset_mark(void);
/**
* @brief load user build info from board config
*/
void iot_board_load_user_build_info(void);
/**
* @brief save user build info to board config
* @param info: build info to be saved
*/
void iot_board_save_user_build_info(iot_build_info_t *info);
/**
* @brief save user vendor id to board config
* @param vendor_id: vendor id to be saved
*/
void iot_board_save_user_vendor_id(uint16_t vendor_id);
/**
* @brief save user passcode to board config
* @param passcode: passcode to be saved
*/
void iot_board_set_user_passcode(uint16_t passcode);
/**
* @brief bond/unbond debug uart pin
* @param enable:
* true -- bond uart pin;
* false -- unbond uart pin;
*/
void iot_board_debug_uart_pin_bond(bool_t enable);
/**
* @brief if the port is rs485 uart
* @param enable:
* true -- is rs485 uart;
* false -- is not rs485 uart;
*/
bool_t iot_board_check_uart_is_rs485(uint8_t port);
/**
* @brief Get cert test uart port.
*/
uint8_t iot_board_get_cert_test_uart(void);
/**
* @brief Get number of external UART port.
*/
uint8_t iot_board_get_external_uart_port_num(void);
/**
* @brief Get number of virtual UART port.
*/
uint8_t iot_board_get_virtual_uart_port_num(void);
/**
* @brief Get number of DMA UART port.
*/
uint8_t iot_board_get_dma_uart_port_num(void);
/**
* @brief Get number of UART port on KL chip.
*/
uint8_t iot_board_get_onchip_uart_port_num(void);
/**
* @brief Get number of interkernel communication UART port.
*/
uint8_t iot_board_get_interkernel_communication_uart_port_num(void);
/**
* @brief iot_board_hw_version_reload: reload the hw version hex info.
*/
void iot_board_hw_version_reload();
/**
* @brief iot_board_uart_tx_pin_set: save uart tx pin.
* @param port: uart port
* @param pin: TX GPIO
*/
void iot_board_uart_tx_pin_set(uint8_t port, uint8_t pin);
/**
* @brief iot_board_uart_tx_pin_get: get uart tx pin.
* @param port: uart port
*
* @return TX GPIO
*/
uint8_t iot_board_uart_tx_pin_get(uint8_t port);
/**
* @brief iot_board_uart_rx_pin_set: save uart rx pin.
* @param port: uart port
* @param pin: RX GPIO
*/
void iot_board_uart_rx_pin_set(uint8_t port, uint8_t pin);
/**
* @brief iot_board_uart_rx_pin_get: get uart rx pin.
* @param port: uart port
*
* @return RX GPIO
*/
uint8_t iot_board_uart_rx_pin_get(uint8_t port);
/**
* @brief check if this board is 5v power in or not.
*
* @return true - this board is 5v power in.
* false - this board is not 5v power in.
*/
bool_t iot_board_is_5v_power_in(void);
/**
* @brief check if this board is an overseas band.
*
* @return true - this board is 5v power in.
* false - this board is not 5v power in.
*/
bool_t iot_board_is_overseas_rf_band(void);
void write_hw_version(uint32_t hw_ver);
#ifdef __cplusplus
}
#endif
#endif /* IOT_BOARD_INFO_H */