1
1
Files
zyxel-vmg8825_b50b-cfw/tools/ramips/trx/src/mrd.h
T
2026-04-17 18:33:03 +02:00

119 lines
4.2 KiB
C
Executable File

#ifndef _MRD_STRUCTURE_
#define _MRD_STRUCTURE_
#if 0
/*-------------------------------------------------------------------
* MRD structdure reference from Econet platform
*/
#define MRD_OFFSET 0xff00
#define MRD_SIZE 0x100
#define MRD_SERIAL_NUM_LEN 14
#define MRD_IMEI_NUM_LEN 18
#define MRD_VENDOR_NAME_LEN 32
#define MRD_PRODUCT_NAME_LEN 32
#define MRD_MAC_ADDR_LEN 6
#define MRD_FEATUREBITS_LEN 30
typedef struct mrd {
unsigned char SDRAM_CONF_array[4];
unsigned char VENDOR_NAME[MRD_VENDOR_NAME_LEN];
unsigned char PRODUCT_NAME[MRD_PRODUCT_NAME_LEN];
unsigned char FUNC_BYTE[4];
unsigned char ETHER_ADDR[MRD_MAC_ADDR_LEN];
unsigned char SNMP_SYSOBJID_array[22];
unsigned char COUNTRY_array;
unsigned char ether_gpio;
unsigned char power_gpio[2];
unsigned char restore_flag;
unsigned char unused1[32];
unsigned char lte_gpio;
unsigned char internet_gpio;
unsigned char multi_upgrade_gpio[16];
unsigned char id_76xx;
unsigned char onu_type; //byte 0~156
//IMEI number
#if 1
unsigned char IMEI[MRD_IMEI_NUM_LEN];
#else
unsigned char SN[18];
#endif
/* --- ZyXEL related --- start --- */
unsigned char SerialNumber[MRD_SERIAL_NUM_LEN];
unsigned char NumMacAddrs;
unsigned char MrdVer;
unsigned char EngDebugFlag;
unsigned char BootingFlag;
unsigned char MainFeatureBit;
unsigned char FeatureBits[MRD_FEATUREBITS_LEN];
unsigned char HTP_Switch;
unsigned char WpaPskKey[16];
// bootloader related information
unsigned char BM_VER_MAJ;
unsigned char BM_VER_MIN;
unsigned char BM_VER_ECO;
unsigned char builddate[4];
unsigned char buildtime[3]; //byte 0~72
/* --- ZyXEL related --- end --- */
#ifdef BOOTROM_LARGE_SIZE //For ZyXEL project, we always enable "BOOTROM_LARGE_SIZE"
// mic.conf will located at the end of block 0.
// boot_crc32 will located at the last 4 bytes of block 1.
unsigned char unused2[6]; // let total structure have 256 bytes.
#else
// if MRD structure locate at the end of boot.bin, need reserve 4 bytes for crc.
unsigned char unused[2]; // let total structure have 256 bytes
unsigned char boot_crc32[4]; //filled by trx.c
#endif
} __attribute__((packed)) MRD_DATA, *PMRD_DATA;
#else
/*-------------------------------------------------------------------
* MRD structdure from MSTC manufacuring
*/
#define MRD_OFFSET 0xfe00
#define MRD_SIZE 0x200
#define MRD_DATA_SIZE 512
#define NUM_OF_NAME_BYTES 32
#define NUM_OF_SERIAL_NUMBER_BYTES 14
#define NUM_OF_MAC_BYTES 6
#define NUM_OF_COUNTRY_CODE_BYTES 2
#define NUM_OF_FEATURE_BYTES 32
#define NUM_OF_MAGIC_BYTES 4
#define NUM_OF_BUILDINFO_BYTES 10
#define NUM_OF_HARDWARE_VER_BYTES 4
#define NUM_OF_RESERVED_BYTES (MRD_DATA_SIZE - (NUM_OF_NAME_BYTES * 4) - NUM_OF_SERIAL_NUMBER_BYTES - \
NUM_OF_MAC_BYTES - 2 - NUM_OF_COUNTRY_CODE_BYTES - NUM_OF_FEATURE_BYTES - 1 - \
NUM_OF_BUILDINFO_BYTES - NUM_OF_HARDWARE_VER_BYTES - 1 - 1 - 1) //- 1 - 1 - 1 - 4 - 3)
typedef struct mrd {
unsigned char VendorName[NUM_OF_NAME_BYTES];
unsigned char ProductName[NUM_OF_NAME_BYTES];
unsigned char NameReserved[NUM_OF_NAME_BYTES];
unsigned char SerialNumber[NUM_OF_SERIAL_NUMBER_BYTES];
unsigned char BaseMacAddr[NUM_OF_MAC_BYTES];
unsigned char MacAddrQuantity;
unsigned char EngDebugFlag;
unsigned char CountryCode[NUM_OF_COUNTRY_CODE_BYTES];
unsigned char FeatureBits[NUM_OF_FEATURE_BYTES];
unsigned char MainFeatureBits;
unsigned char BuildInfo[NUM_OF_BUILDINFO_BYTES];
unsigned char ProductExtName[NUM_OF_NAME_BYTES];
unsigned char HardwareVersion[NUM_OF_HARDWARE_VER_BYTES];
unsigned char COUNTRY_array;
unsigned char COUNTRY_array_reserve;
unsigned char BootingFlag;
//unsigned char BM_VER_MAJ;
//unsigned char BM_VER_MIN;
//unsigned char BM_VER_ECO;
//unsigned char builddate[4];
//unsigned char buildtime[3];
unsigned char Reserved[NUM_OF_RESERVED_BYTES];
} __attribute__((packed)) MRD_DATA, *PMRD_DATA;
#endif //ZYXEL or MSTC manufacturing MRD structure.
#endif