/**
 * @file adcs_cube_dtypes.h
 *
 * @brief This file contains defined datatypes and Sensor/actuator
 *        interface function result enumeration
 *
 * @copyright Copyright 2023 Antaris, Inc.
 */


#ifndef _TYPES_H_
#define _TYPES_H_

#include "stdint.h"
#include "exo_types.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef _Bool Boolean;

#define FALSE ((Boolean)0U)   ///< False
#define TRUE  ((Boolean)1U)   ///< True

/**
 * @brief Define the type for datatypes
 */
typedef uint8 U8;
typedef int8 S8;
typedef uint16 U16;
typedef int16 S16;
typedef uint32 U32;
typedef uint32 S32;
typedef uint64_t U64;
typedef int64_t S64;
typedef float F32;
typedef double F64;
typedef char Text;

/// Sensor/actuator interface function result enumeration
typedef enum
{
    CubeLibOk             = 0,    ///< Cubelibrary ok
    PointerIsNull         = 1,    ///< pointer is null
    TcInvalidParam        = 2,    ///< Telcommand is invalid parameter
    TlmRangeError         = 3,    ///< Telemetry range error
    TcAckTimeout          = 4     ///< Telecommand acknowledgement timeout
}CUBEADCS_Result_t;

#ifdef __cplusplus
}
#endif
#endif /* _TYPES_H_ */
