/**
*   @file    Platform_Types.h
*   @version
*
*   @brief   AUTOSAR general types define
*
*   @addtogroup GENERAL
*   @{
*/
/*==================================================================================================
*   Project              : YTMicro AUTOSAR 4.4.0 MCAL
*   Platform             : ARM
*   Dependencies         : none
*
*   Autosar Version      : V4.4.0
*   Autosar Revision     : ASR_REL_4_4_REV_0000
*   Autosar Conf.Variant :
*   SW Version           : V0.8.0
*
*
*   (c) Copyright 2020-2026 Yuntu Microelectronics co.,ltd.
*   All Rights Reserved.
==================================================================================================*/
/*==================================================================================================
==================================================================================================*/
#ifndef PLATFORM_TYPES_H
#define PLATFORM_TYPES_H

#ifdef __cplusplus
extern "C"
{
#endif

/*==================================================================================================
*                               SOURCE FILE VERSION INFORMATION
==================================================================================================*/
#ifdef MCAL_HAS_PLATFORM_TYPES_DEFINE
#define PLATFORM_VENDOR_ID                      (180)
#define PLATFORM_AR_RELEASE_MAJOR_VERSION       (4)
#define PLATFORM_AR_RELEASE_MINOR_VERSION       (4)
#define PLATFORM_AR_RELEASE_REVISION_VERSION    (0)
#define PLATFORM_SW_MAJOR_VERSION               (0)
#define PLATFORM_SW_MINOR_VERSION               (8)
#define PLATFORM_SW_PATCH_VERSION               (0)
#endif


/*==================================================================================================
*                                       DEFINES AND MACROS
==================================================================================================*/
/**
 * @brief          This standard AUTOSAR type shall be of 8 bit signed.
 * @autosar        SWS_Platform_00016
 */
typedef signed char sint8;
/**
 * @brief          This standard AUTOSAR type shall be of 8 bit unsigned.
 * @autosar        SWS_Platform_00013
 */
typedef unsigned char uint8;
/**
 * @brief          This standard AUTOSAR type shall be of 16 bit signed.
 * @autosar        SWS_Platform_00017
 */
typedef signed short sint16;
/**
 * @brief          This standard AUTOSAR type shall be of 16 bit unsigned.
 * @autosar        SWS_Platform_00014
 */
typedef unsigned short uint16;
/**
 * @brief          This standard AUTOSAR type shall be 32 bit signed.
 * @autosar        SWS_Platform_00018
 */
typedef signed long sint32;
/**
 * @brief          This standard AUTOSAR type shall be 32 bit unsigned.
 * @autosar        SWS_Platform_00015
 */
typedef unsigned long       uint32;
/**
 * @brief          This standard AUTOSAR type shall be 64 bit signed.
 * @autosar        SWS_Platform_00067
 */
typedef signed long long sint64;
/**
 * @brief          This standard AUTOSAR type shall be 64 bit unsigned.
 * @autosar        SWS_Platform_00066
 */
typedef unsigned long long uint64;

/**
 * @brief          This optimized AUTOSAR type shall be at least 8 bit unsigned.
 * @autosar        SWS_Platform_00020
 */
typedef unsigned char uint8_least;
/**
 * @brief          This optimized AUTOSAR type shall be at least 16 bit unsigned.
 * @autosar        SWS_Platform_00021
 */
typedef unsigned short uint16_least;
/**
 * @brief          This optimized AUTOSAR type shall be at least 32 bit unsigned.
 * @autosar        SWS_Platform_00022
 */
typedef unsigned long uint32_least;
/**
 * @brief          This optimized AUTOSAR type shall be at least 8 bit signed.
 * @autosar        SWS_Platform_00023
 */
typedef signed char sint8_least;
/**
 * @brief          This optimized AUTOSAR type shall be at least 16 bit signed.
 * @autosar        SWS_Platform_00024
 */
typedef signed short sint16_least;
/**
 * @brief          This optimized AUTOSAR type shall be at least 32 bit signed.
 * @autosar        SWS_Platform_00025
 */
typedef signed long sint32_least;

/**
 * @brief          This standard AUTOSAR type shall follow the 32-bit binary interchange format according to IEEE 754-2008 with encoding parameters specified in chapter 3.6, table 3.5, column "binary32".
 * @autosar        SWS_Platform_00041
 */
typedef float float32;
/**
 * @brief          This standard AUTOSAR type shall follow the 64-bit binary interchange format according to IEEE 754-2008 with encoding parameters specified in chapter 3.6, table 3.5, column "binary64".
 * @autosar        SWS_Platform_00042
 */
typedef double float64;

/**
 * @brief          This standard AUTOSAR type shall only be used together with the definitions TRUE and FALSE.
 * @autosar        SWS_Platform_00026
 */
typedef unsigned char boolean;

/**
 * @brief          This standard AUTOSAR type shall be a void pointer to const. This type shall be used for buffers that are passed to the callee.
 * @autosar        SWS_Platform_91002
 */
typedef const void *ConstVoidPtr;

/**
 * @brief          This standard AUTOSAR type shall be a void pointer. This type shall be used for buffers that contain data returned to the caller.
 * @autosar        SWS_Platform_91001
 */
typedef void *VoidPtr;
/**
 * @brief CPU_TYPE
 */
#define CPU_TYPE_8        8
#define CPU_TYPE_16       16
#define CPU_TYPE_32       32
#define CPU_TYPE_64       64

/**
 * @brief CPU_BIT_ORDER
 */
#define MSB_FIRST         0                 /**< Big endian bit ordering        */
#define LSB_FIRST         1                 /**< Little endian bit ordering     */

/**
 * @brief CPU_BYTE_ORDER
 */
#define HIGH_BYTE_FIRST   0                 /**< Big endian byte ordering       */
#define LOW_BYTE_FIRST    1                 /**< Little endian byte ordering    */


#define CPU_TYPE          (CPU_TYPE_32)
#define CPU_BIT_ORDER     (LSB_FIRST)
#define CPU_BYTE_ORDER    (LOW_BYTE_FIRST)

#ifndef TRUE
#define TRUE      1U
#endif

#ifndef FALSE
#define FALSE     0U
#endif

#ifdef __cplusplus
}
#endif

#endif /* PLATFORM_TYPES_H */
/** @} */

