#ifndef _MODULE_NAME_PARSING_H_
#define _MODULE_NAME_PARSING_H_

//------------------------------------------------------------------------------
#include <stdint.h>

//------------------------------------------------------------------------------
#define BADKEY                                  (-1)

//------------------------------------------------------------------------------
// model type key
//------------------------------------------------------------------------------
#define MODEL_AC                                (0x01) //Ac EVse Cordset
#define MODEL_AW                                (0x02) //Ac EVse Wallmount
#define MODEL_AP                                (0x03) //Ac EVse Pedestal
#define MODEL_DW                                (0x04) //Dc EVse Wallmount
#define MODEL_DS                                (0x05) //Dc EVse Standalone
#define MODEL_DM                                (0x06) //Dc EVse Moveable (Battery equipped)
#define MODEL_DR                                (0x07) //Dc EVse Power Rack (without cabinet)
//#define MODEL_DM                                (0x08) //Dc EVse Moveable (移動)
#define MODEL_DD                                (0x09) //Dc EVse Dispenser
#define MODEL_DO                                (0x0A) //Dc EVse Output power cabinet

//------------------------------------------------------------------------------
// regulation key
//------------------------------------------------------------------------------
#define REG_CE                                  (0x01) // CE / European Market
#define REG_UL                                  (0x02) // UL / North America Market
#define REG_GB                                  (0x03) // GB / China Market
#define REG_CNS                                 (0x04) // CNS / Taiwan Market
#define REG_JARI                                (0x05) // JARI / Japan Market
#define REG_TR25                                (0x06) // TR25 / Singapor Market
#define REG_KC                                  (0x07) // KC / Korea Market
#define REG_B                                   (0x08) // British / UK Market
#define REG_Z                                   (0x09) // EV ready / French Market
#define REG_M                                   (0x0A) // E + MID Meter
#define REG_P                                   (0x0B) // E + PTB certification
#define REG_I                                   (0x0C) // Z + TIC Meter pcb
#define REG_F                                   (0x0D) // Z + MID Meter
#define REG_L                                   (0x0E) // U + UL meter

//------------------------------------------------------------------------------
// rate power key
//------------------------------------------------------------------------------
#define POWER_30W                               (0x01)
#define POWER_60W                               (0x02)
#define POWER_90W                               (0x03)
#define POWER_120W                              (0x04)
#define POWER_150W                              (0x05)
#define POWER_180W                              (0x06)
#define POWER_240W                              (0x07)
#define POWER_360W                              (0x08)
#define POWER_480W                              (0x09)
#define POWER_720W                              (0x0A)

//------------------------------------------------------------------------------
// gun type key
//------------------------------------------------------------------------------
#define GUN_TYPE_0                              (0x00) //none
#define GUN_TYPE_1                              (0x01) //IEC 62196-2 Type 1/SAE J1772 Plug
#define GUN_TYPE_2                              (0x02) //IEC 62196-2 Type 1/SAE J1772 Socket
#define GUN_TYPE_3                              (0x03) //IEC 62196-2 Type 2 Plug
#define GUN_TYPE_4                              (0x04) //IEC 62196-2 Type 2 Socket
#define GUN_TYPE_5                              (0x05) //GB/T AC Plug
#define GUN_TYPE_6                              (0x06) //GB/T AC Socket
#define GUN_TYPE_7                              (0x07) //CS2 AC Plug
#define GUN_TYPE_8                              (0x08) //Type E socket
#define GUN_TYPE_J                              (0x09) //CHAdeMO
#define GUN_TYPE_U                              (0x0A) //Natural cooling CCS1 combo
#define GUN_TYPE_V                              (0x0B) //Liquid cooling CCS1 combo
#define GUN_TYPE_E                              (0x0C) //Natural cooling CCS2 combo
#define GUN_TYPE_F                              (0x0D) //Liquid cooling CCS2 combo
#define GUN_TYPE_G                              (0x0E) //GBT DC
#define GUN_TYPE_T                              (0x0F) //Rema CCS1
#define GUN_TYPE_D                              (0x10) //Rema CCS2
#define GUN_TYPE_K                              (0x11) //CHAdeMO 200A/500V
#define GUN_TYPE_M                              (0x12) //CCS2 80A
#define GUN_TYPE_N                              (0x13) //CCS1 80A
#define GUN_TYPE_P                              (0x14) //Phoenix CCS2 500A 水冷
#define GUN_TYPE_R                              (0x15) //Phoenix CCS1 500A 水冷

//------------------------------------------------------------------------------
// rating current parameters
//------------------------------------------------------------------------------
#define RC_0A                                   (0)
#define RC_60A                                  (600)
#define RC_65A                                  (650)
#define RC_80A                                  (800)
#define RC_125A                                 (1250)
#define RC_200A                                 (2000)
#define RC_250A                                 (2500)
#define RC_300A                                 (3000)
#define RC_500A                                 (5000)

//------------------------------------------------------------------------------
// maximum voltage parameters
//------------------------------------------------------------------------------
#define VOL_CHADEMO                             (5000)
#define VOL_CCS                                 (9500)
#define VOL_GBT                                 (7500)

#define DC_ONE                                  (7)
#define DC_SEC                                  (9)
#define AC_ONE                                  (8)

//------------------------------------------------------------------------------
// power parameters
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// rating current case
//------------------------------------------------------------------------------
//J
#define DW_CE_30_J                              ((uint32_t)((MODEL_DW << 24) | (REG_CE << 16) | (POWER_30W << 8) | GUN_TYPE_J))
#define DM_CE_30_J                              ((uint32_t)((MODEL_DM << 24) | (REG_CE << 16) | (POWER_30W << 8) | GUN_TYPE_J))

#define DW_UL_30_J                              ((uint32_t)((MODEL_DW << 24) | (REG_UL << 16) | (POWER_30W << 8) | GUN_TYPE_J))
#define DM_UL_30_J                              ((uint32_t)((MODEL_DM << 24) | (REG_UL << 16) | (POWER_30W << 8) | GUN_TYPE_J))

#define DW_CNS_30_J                             ((uint32_t)((MODEL_DW << 24) | (REG_CNS << 16) | (POWER_30W << 8) | GUN_TYPE_J))
#define DM_CNS_30_J                             ((uint32_t)((MODEL_DM << 24) | (REG_CNS << 16) | (POWER_30W << 8) | GUN_TYPE_J))

#define DS_CE_60_J                              ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_60W << 8) | GUN_TYPE_J))
#define DS_CE_90_J                              ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_90W << 8) | GUN_TYPE_J))
#define DS_CE_120_J                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_120W << 8) | GUN_TYPE_J))
#define DS_CE_150_J                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_150W << 8) | GUN_TYPE_J))
#define DS_CE_180_J                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_J))

#define DS_UL_60_J                              ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_60W << 8) | GUN_TYPE_J))
#define DS_UL_90_J                              ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_90W << 8) | GUN_TYPE_J))
#define DS_UL_120_J                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_120W << 8) | GUN_TYPE_J))
#define DS_UL_150_J                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_150W << 8) | GUN_TYPE_J))
#define DS_UL_180_J                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_J))

#define DS_CNS_60_J                             ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_60W << 8) | GUN_TYPE_J))
#define DS_CNS_90_J                             ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_90W << 8) | GUN_TYPE_J))
#define DS_CNS_120_J                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_120W << 8) | GUN_TYPE_J))
#define DS_CNS_150_J                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_150W << 8) | GUN_TYPE_J))
#define DS_CNS_180_J                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_J))

//U
#define DD_CE_180_U                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_U))
#define DD_CE_360_U                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_U))

#define DW_UL_30_U                              ((uint32_t)((MODEL_DW << 24) | (REG_UL << 16) | (POWER_30W << 8) | GUN_TYPE_U))
#define DM_UL_30_U                              ((uint32_t)((MODEL_DM << 24) | (REG_UL << 16) | (POWER_30W << 8) | GUN_TYPE_U))

#define DW_CNS_30_U                             ((uint32_t)((MODEL_DW << 24) | (REG_CNS << 16) | (POWER_30W << 8) | GUN_TYPE_U))
#define DM_CNS_30_U                             ((uint32_t)((MODEL_DM << 24) | (REG_CNS << 16) | (POWER_30W << 8) | GUN_TYPE_U))

#define DS_UL_60_U                              ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_60W << 8) | GUN_TYPE_U))
#define DS_UL_90_U                              ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_90W << 8) | GUN_TYPE_U))
#define DS_UL_120_U                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_120W << 8) | GUN_TYPE_U))
#define DS_UL_150_U                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_150W << 8) | GUN_TYPE_U))
#define DS_UL_180_U                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_U))

#define DD_UL_180_U                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_U))
#define DD_UL_360_U                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_360W << 8) | GUN_TYPE_U))

#define DS_CNS_60_U                             ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_60W << 8) | GUN_TYPE_U))
#define DS_CNS_90_U                             ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_90W << 8) | GUN_TYPE_U))
#define DS_CNS_120_U                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_120W << 8) | GUN_TYPE_U))
#define DS_CNS_150_U                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_150W << 8) | GUN_TYPE_U))
#define DS_CNS_180_U                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_U))

#define DD_CNS_180_U                             ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_U))
#define DD_CNS_360_U                            ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_360W << 8) | GUN_TYPE_U))

//V
#define DD_CE_180_V                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_V))
#define DD_UL_180_V                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_V))
#define DD_CNS_180_V                            ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_V))

#define DD_CE_360_V                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_V))
#define DD_UL_360_V                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_360W << 8) | GUN_TYPE_V))
#define DD_CNS_360_V                            ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_360W << 8) | GUN_TYPE_V))

#define DO_CE_180_V                             ((uint32_t)((MODEL_DO << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_V))
#define DO_UL_180_V                             ((uint32_t)((MODEL_DO << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_V))
#define DO_CNS_180_V                            ((uint32_t)((MODEL_DO << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_V))

#define DO_CE_360_V                             ((uint32_t)((MODEL_DO << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_V))
#define DO_UL_360_V                             ((uint32_t)((MODEL_DO << 24) | (REG_UL << 16) | (POWER_360W << 8) | GUN_TYPE_V))
#define DO_CNS_360_V                            ((uint32_t)((MODEL_DO << 24) | (REG_CNS << 16) | (POWER_360W << 8) | GUN_TYPE_V))

//E
#define DW_CE_30_E                              ((uint32_t)((MODEL_DW << 24) | (REG_CE << 16) | (POWER_30W << 8) | GUN_TYPE_E))
#define DM_CE_30_E                              ((uint32_t)((MODEL_DM << 24) | (REG_CE << 16) | (POWER_30W << 8) | GUN_TYPE_E))

#define DS_CE_60_E                              ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_60W << 8) | GUN_TYPE_E))
#define DS_CE_90_E                              ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_90W << 8) | GUN_TYPE_E))
#define DS_CE_120_E                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_120W << 8) | GUN_TYPE_E))
#define DS_CE_150_E                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_150W << 8) | GUN_TYPE_E))
#define DS_CE_180_E                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_E))

//F
#define DD_CE_360_F                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_F))

#define DO_CE_360_F                             ((uint32_t)((MODEL_DO << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_F))

//G
#define DM_CNS_30_G                             ((uint32_t)((MODEL_DM << 24) | (REG_CNS << 16) | (POWER_30W << 8) | GUN_TYPE_G))

#define DS_UL_30_G                              ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_30W << 8) | GUN_TYPE_G))
#define DS_CNS_120_G                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_120W << 8) | GUN_TYPE_G))

//T
#define DS_CE_90_T                              ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_90W << 8) | GUN_TYPE_T))
#define DS_CE_120_T                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_120W << 8) | GUN_TYPE_T))
#define DS_CE_150_T                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_150W << 8) | GUN_TYPE_T))
#define DS_CE_180_T                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_T))

#define DD_CE_180_T                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_T))
#define DD_CE_360_T                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_T))

#define DS_UL_90_T                              ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_90W << 8) | GUN_TYPE_T))
#define DS_UL_120_T                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_120W << 8) | GUN_TYPE_T))
#define DS_UL_150_T                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_150W << 8) | GUN_TYPE_T))
#define DS_UL_180_T                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_T))

#define DD_UL_180_T                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_T))
#define DD_UL_360_T                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_360W << 8) | GUN_TYPE_T))

#define DS_CNS_90_T                             ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_90W << 8) | GUN_TYPE_T))
#define DS_CNS_120_T                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_120W << 8) | GUN_TYPE_T))
#define DS_CNS_150_T                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_150W << 8) | GUN_TYPE_T))
#define DS_CNS_180_T                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_T))

#define DD_CNS_180_T                            ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_T))
#define DD_CNS_360_T                            ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_360W << 8) | GUN_TYPE_T))

//D
#define DS_CE_90_D                              ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_90W << 8) | GUN_TYPE_D))
#define DS_CE_120_D                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_120W << 8) | GUN_TYPE_D))
#define DS_CE_150_D                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_150W << 8) | GUN_TYPE_D))
#define DS_CE_180_D                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_D))

#define DD_CE_180_D                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_D))
#define DD_CE_360_D                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_D))

#define DS_UL_90_D                              ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_90W << 8) | GUN_TYPE_D))
#define DS_UL_120_D                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_120W << 8) | GUN_TYPE_D))
#define DS_UL_150_D                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_150W << 8) | GUN_TYPE_D))
#define DS_UL_180_D                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_D))

#define DD_UL_180_D                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_D))
#define DD_UL_360_D                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_360W << 8) | GUN_TYPE_D))

#define DS_CNS_90_D                             ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_90W << 8) | GUN_TYPE_D))
#define DS_CNS_120_D                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_120W << 8) | GUN_TYPE_D))
#define DS_CNS_150_D                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_150W << 8) | GUN_TYPE_D))
#define DS_CNS_180_D                            ((uint32_t)((MODEL_DS << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_D))

#define DD_CNS_180_D                            ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_180W << 8) | GUN_TYPE_D))
#define DD_CNS_360_D                            ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_360W << 8) | GUN_TYPE_D))

//K
#define DS_CE_90_K                              ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_90W << 8) | GUN_TYPE_K))
#define DS_CE_120_K                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_120W << 8) | GUN_TYPE_K))
#define DS_CE_150_K                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_150W << 8) | GUN_TYPE_K))
#define DS_CE_180_K                             ((uint32_t)((MODEL_DS << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_K))

#define DD_CE_180_K                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_180W << 8) | GUN_TYPE_K))
#define DD_CE_360_K                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_K))

#define DS_UL_90_K                              ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_90W << 8) | GUN_TYPE_K))
#define DS_UL_120_K                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_120W << 8) | GUN_TYPE_K))
#define DS_UL_150_K                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_150W << 8) | GUN_TYPE_K))
#define DS_UL_180_K                             ((uint32_t)((MODEL_DS << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_K))

#define DD_UL_180_K                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_180W << 8) | GUN_TYPE_K))
#define DD_UL_360_K                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_360W << 8) | GUN_TYPE_K))

//M
#define DW_CE_30_M                              ((uint32_t)((MODEL_DW << 24) | (REG_CE << 16) | (POWER_30W << 8) | GUN_TYPE_M))
#define DM_CE_30_M                              ((uint32_t)((MODEL_DM << 24) | (REG_CE << 16) | (POWER_30W << 8) | GUN_TYPE_M))

//N
#define DW_UL_30_N                              ((uint32_t)((MODEL_DW << 24) | (REG_UL << 16) | (POWER_30W << 8) | GUN_TYPE_N))
#define DM_UL_30_N                              ((uint32_t)((MODEL_DM << 24) | (REG_UL << 16) | (POWER_30W << 8) | GUN_TYPE_N))

#define DW_CNS_30_N                             ((uint32_t)((MODEL_DW << 24) | (REG_CNS << 16) | (POWER_30W << 8) | GUN_TYPE_N))
#define DM_CNS_30_N                             ((uint32_t)((MODEL_DM << 24) | (REG_CNS << 16) | (POWER_30W << 8) | GUN_TYPE_N))

//P
#define DD_CE_360_P                             ((uint32_t)((MODEL_DD << 24) | (REG_CE << 16) | (POWER_360W << 8) | GUN_TYPE_P))

//R
#define DD_UL_360_R                             ((uint32_t)((MODEL_DD << 24) | (REG_UL << 16) | (POWER_360W << 8) | GUN_TYPE_R))

#define DD_CNS_360_R                            ((uint32_t)((MODEL_DD << 24) | (REG_CNS << 16) | (POWER_360W << 8) | GUN_TYPE_R))

//------------------------------------------------------------------------------
typedef enum EnGunType {
    Gun_Type_Chademo = 0,
    Gun_Type_CCS_2,
    Gun_Type_GB,
    Gun_Type_AC,
} GunType;

typedef struct StSymStruct {
    char *key;
    int val;
} SymStruct;

typedef struct StGunTypeAndVolInfo {
    uint8_t GunType;
    uint16_t GunVoltage;
} GunTypeAndVolInfo;

typedef struct StRateCurInfo {
    uint8_t GunType;
    uint16_t Current;       //* 0.1A
    uint16_t Voltage;       //* 0.1V
    uint8_t Reserved[3];
} RateCurInfo;

typedef struct StParsingRatingCur {
    uint8_t GetGunCount;
    uint16_t Power;
    RateCurInfo ParsingInfo[3];
    uint8_t Reserved;
} ParsingRatedCur;

//------------------------------------------------------------------------------
int RatedCurrentParsing(char *pModuleName, void *pDestStruct);
void TestParsingRatingCurrent(void);

#endif /* _MODULE_NAME_PARSING_H_ */