nxdrvlinux/examples/tcpserver/Marshaller/APIHeader/HilFileHeader.h

220 lines
12 KiB
C
Raw Permalink Normal View History

/**************************************************************************************
Copyright (c) Hilscher Gesellschaft fuer Systemautomation mbH. All Rights Reserved.
***************************************************************************************
$Id: HilFileHeader.h 13107 2019-08-15 08:42:43Z Robert $:
Description:
Definition for the universal Hilscher File Header
Changes:
Date Description
-----------------------------------------------------------------------------------
2019-06-03 Renamed __HIL_PACKED_PRE/__HIL_PACKED_POST due to conflicts
2010-03-23 File created.
**************************************************************************************/
#ifndef __HILFILEHEADER__H
#define __HILFILEHEADER__H
/*---------------------------------------------------------------------------*/
/* Compiler settings */
#ifdef _MSC_VER
#if _MSC_VER >= 1000
#define __RCX_PACKED_PRE
#define __RCX_PACKED_POST
#pragma once
#pragma pack(1) /* Always align structures to byte boundery */
#ifndef STRICT /* Check Typdefinition */
#define STRICT
#endif
#endif /* _MSC_VER >= 1000 */
#endif /* _MSC_VER */
/* support for GNU compiler */
#ifdef __GNUC__
#define __RCX_PACKED_PRE
#define __RCX_PACKED_POST __attribute__((__packed__))
#endif
/* support for REALVIEW ARM compiler */
#if defined (__ADS__) || defined (__REALVIEW__)
#define __RCX_PACKED_PRE __packed
#define __RCX_PACKED_POST
#endif
#include <stdint.h>
/*****************************************************************************/
/*! \file HilFileHeader.h
* Definition for the universal Hilscher File Header */
/*****************************************************************************/
#define HIL_FILE_HEADER_MODULE_COOKIE 0x4D584E2E
#define HIL_FILE_HEADER_DATABASE_COOKIE 0x44584E2E
#define HIL_FILE_HEADER_LICENSE_COOKIE 0x4C584E2E
#define HIL_FILE_HEADER_BINARY_COOKIE 0x42584E2E
#define HIL_FILE_HEADER_FIRMWARE_COOKIE 0xF8BEAF00
#define HIL_FILE_HEADER_FIRMWARE_8_COOKIE 0xF8BEAF08
#define HIL_FILE_HEADER_FIRMWARE_16_COOKIE 0xF8BEAF16
#define HIL_FILE_HEADER_FIRMWARE_32_COOKIE 0xF8BEAF32
/* Valid Hilscher file extensions */
#define HIL_FILE_EXTENSION_FIRMWARE ".NXF"
#define HIL_FILE_EXTENSION_MODULE ".NXM"
#define HIL_FILE_EXTENSION_LICENSE ".NXL"
#define HIL_FILE_EXTENSION_DATABASE ".NXD"
#define HIL_FILE_EXTENSION_BINARY ".NXB"
/*****************************************************************************/
/*! File structure preceeding every Hilscher generated file */
/*****************************************************************************/
/*-------------------------------------------------------*/
/* 64 Byte DEFAULT FILE HEADER */
/*-------------------------------------------------------*/
typedef __RCX_PACKED_PRE struct HIL_FILE_DEFAULT_HEADERtag
{
uint32_t ulMagCookie; /**< Magic cookie */
uint32_t tReserved[15]; /**< Reserved area */
} __RCX_PACKED_POST HIL_FILE_DEFAULT_HEADER, *PHIL_FILE_DEFAULT_HEADER;
#define HIL_FILE_COMMON_HEADER_VERSION_1 0x00010000 /**< High Word = Major, Low Word = Minor Version */
#define HIL_FILE_COMMON_HEADER_VERSION_2 0x00020000 /**< High Word = Major, Low Word = Minor Version */
/*-------------------------------------------------------*/
/* 64 Byte COMMON FILE HEADER */
/*-------------------------------------------------------*/
typedef __RCX_PACKED_PRE struct HIL_FILE_COMMON_HEADERtag
{
uint32_t ulHeaderVersion; /**< Header version (over all) */
uint32_t ulHeaderLength; /**< Header length (over all) */
uint32_t ulFileSize; /**< File Size in Bytes */
uint32_t ulDataStartOffset; /**< Start of the binary data */
uint32_t ulTagListOffset; /**< Start of the tag list */
uint32_t aulMD5[4]; /**< MD5 checksum */
uint16_t usManufacturer; /**< Hardware Manufacturer identification */
uint16_t usReserved; /**< reserved */
uint32_t aulReserved[5]; /**< reserved / unused */
uint32_t ulChksum; /**< CRC-32 checksum (common header) */
} __RCX_PACKED_POST HIL_FILE_COMMON_HEADER, *PHIL_FILE_COMMON_HEADER;
/*-------------------------------------------------------*/
/* FIRMWARE FILE HEADER */
/*-------------------------------------------------------*/
/* FIRMWARE file specific header */
typedef __RCX_PACKED_PRE struct HIL_FILE_FIRMWARE_HEADERtag
{
HIL_FILE_DEFAULT_HEADER tDefaultHeader; /**< Default File Header */
HIL_FILE_COMMON_HEADER tCommonHeader; /**< Common File Header */
uint16_t usDeviceClass; /**< netX Device Class */
uint8_t bHwCompatibility; /**< Hardware Compatibility ID */
uint16_t ausHwOptions[4]; /**< Hardware Assembly Option */
uint32_t ulLicenseFlags1; /**< NetX License Flags 1 */
uint32_t ulLicenseFlags2; /**< NetX License Flags 2 */
uint16_t usNetXLicenseID; /**< NetX License ID */
uint16_t usNetXLicenseFlags; /**< NetX License Flags */
uint32_t aulSwRevision[3]; /**< Software Revision (major, minor, build) */
uint32_t ulSwNumber; /**< Software Number */
uint16_t usCommunicationClass; /**< Communication Class */
uint16_t usProtocolClass; /**< Protocol Class */
uint8_t abName[64]; /**< Readable Name */
uint32_t aulDBVersion[2]; /**< Version of DB structure */
uint32_t ulSDN; /**< SDN */
} __RCX_PACKED_POST HIL_FILE_FIRMWARE_HEADER, *PHIL_FILE_FIRMWARE_HEADER;
/*-------------------------------------------------------*/
/* MODULE FILE HEADER */
/*-------------------------------------------------------*/
/* MODULE file specific header */
typedef __RCX_PACKED_PRE struct HIL_FILE_MODULE_HEADERtag
{
HIL_FILE_DEFAULT_HEADER tDefaultHeader; /**< Default File Header */
HIL_FILE_COMMON_HEADER tCommonHeader; /**< Common File Header */
uint16_t usDeviceClass; /**< netX Device Class */
uint8_t bHwCompatibility; /**< Hardware Compatibility ID */
uint16_t ausHwOptions[4]; /**< Hardware Assembly Option */
uint32_t ulLicenseFlags1; /**< NetX License Flags 1 */
uint32_t ulLicenseFlags2; /**< NetX License Flags 2 */
uint16_t usNetXLicenseID; /**< NetX License ID */
uint16_t usNetXLicenseFlags; /**< NetX License Flags */
uint32_t aulSwRevision[3]; /**< Software Revision (major, minor, build) */
uint32_t ulSwNumber; /**< Software Number */
uint16_t usCommunicationClass; /**< Communication Class */
uint16_t usProtocolClass; /**< Protocol Class */
uint8_t abName[64]; /**< Readable Name */
uint32_t aulDBVersion[2]; /**< Version of DB structure */
uint32_t ulSDN; /**< SDN */
} __RCX_PACKED_POST HIL_FILE_MODULE_HEADER, *PHIL_FILE_MODULE_HEADER;
/*-------------------------------------------------------*/
/* DATABASE / CONFIGURATION FILE HEADER */
/*-------------------------------------------------------*/
/* DATABASE / CONFIGURATION file specific header */
typedef __RCX_PACKED_PRE struct HIL_FILE_DATABASE_HEADERtag
{
HIL_FILE_DEFAULT_HEADER tDefaultHeader; /**< Default File Header */
HIL_FILE_COMMON_HEADER tCommonHeader; /**< Common File Header */
uint32_t aulDBVersion[2]; /**< Version of DB structure */
} __RCX_PACKED_POST HIL_FILE_DATABASE_HEADER, *PHIL_FILE_DATABASE_HEADER;
/*-------------------------------------------------------*/
/* LICENSE FILE HEADER */
/*-------------------------------------------------------*/
/* LICENSE file specific header */
#define LICENSE_CHIPTYPE_NETX500 1 /* ARM code for netX500 */
#define LICENSE_CHIPTYPE_NETX100 2 /* ARM code for netX100 */
#define LICENSE_CHIPTYPE_NETX50 3 /* ARM code for netX50 */
#define LICENSE_CHIPTYPE_NETX51 4 /* ARM code for netX51 */
#define LICENSE_CHIPTYPE_NETX52 5 /* ARM code for netX52 */
#define LICENSE_CHIPTYPE_XPEC500 0x40 /* XPEC code for netX500 */
#define LICENSE_CHIPTYPE_XPEC100 0x41 /* XPEC code for netX100 */
#define LICENSE_CHIPTYPE_XPEC50 0x42 /* XPEC code for netX50 */
#define LICENSE_CHIPTYPE_XPEC51 0x43 /* XPEC code for netX51 */
#define LICENSE_CHIPTYPE_XPEC52 0x44 /* XPEC code for netX52 */
typedef __RCX_PACKED_PRE struct HIL_FILE_LICENSE_HEADERtag
{
HIL_FILE_DEFAULT_HEADER tDefaultHeader; /**< Default File Header */
HIL_FILE_COMMON_HEADER tCommonHeader; /**< Common File Header */
uint32_t ulChipType; /**< 1 = netX500, 2=netX100, 3=netX50, 0x40=xpec500, 0x41=xpec100, 0x42=xpec50 */
uint32_t ulManufacturer; /**< Manufacturer identification */
uint32_t ulDeviceNr; /**< Device number */
uint32_t ulSerialNr; /**< Serial number */
uint32_t ulLicenseFlags1; /**< License flags 1 */
uint32_t ulLicenseFlags2; /**< License flags 2 */
uint32_t ulNetXLicense; /**< netX license flags <<16 | netX license ID */
uint32_t ulXcUnit; /**< Number of XC Unit the update will be performed */
uint32_t aulReserved[8]; /**< reserved = {0,0,0,0,0,0,0,0,0}; */
} __RCX_PACKED_POST HIL_FILE_LICENSE_HEADER, *PHIL_FILE_LICENSE_HEADER;
/*-------------------------------------------------------*/
/* BINARY FILE HEADER */
/*-------------------------------------------------------*/
/* BINARY file specific header */
typedef __RCX_PACKED_PRE struct HIL_FILE_BINARY_HEADERtag
{
HIL_FILE_DEFAULT_HEADER tDefaultHeader; /**< Default File Header */
HIL_FILE_COMMON_HEADER tCommonHeader; /**< Common File Header */
} __RCX_PACKED_POST HIL_FILE_BINARY_HEADER, *PHIL_FILE_BINARY_HEADER;
/*---------------------------------------------------------------------------*/
/* Compiler settings */
#ifdef _MSC_VER
#if _MSC_VER >= 1000
#pragma pack() /* Always align structures to compiler settings */
#endif /* _MSC_VER >= 1000 */
#endif /* _MSC_VER */
/*---------------------------------------------------------------------------*/
#undef __RCX_PACKED_PRE
#undef __RCX_PACKED_POST
#endif /* __HILFILEHEADER__H */