|
| 1 | +/****************************************************************************** |
| 2 | +* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved. |
| 3 | +* |
| 4 | +* This software is owned and published by: |
| 5 | +* Huada Semiconductor Co.,Ltd ("HDSC"). |
| 6 | +* |
| 7 | +* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND |
| 8 | +* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. |
| 9 | +* |
| 10 | +* This software contains source code for use with HDSC |
| 11 | +* components. This software is licensed by HDSC to be adapted only |
| 12 | +* for use in systems utilizing HDSC components. HDSC shall not be |
| 13 | +* responsible for misuse or illegal use of this software for devices not |
| 14 | +* supported herein. HDSC is providing this software "AS IS" and will |
| 15 | +* not be responsible for issues arising from incorrect user implementation |
| 16 | +* of the software. |
| 17 | +* |
| 18 | +* Disclaimer: |
| 19 | +* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE, |
| 20 | +* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS), |
| 21 | +* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING, |
| 22 | +* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED |
| 23 | +* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED |
| 24 | +* WARRANTY OF NONINFRINGEMENT. |
| 25 | +* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT, |
| 26 | +* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT |
| 27 | +* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, |
| 28 | +* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR |
| 29 | +* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT, |
| 30 | +* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA, |
| 31 | +* SAVINGS OR PROFITS, |
| 32 | +* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. |
| 33 | +* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR |
| 34 | +* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED |
| 35 | +* FROM, THE SOFTWARE. |
| 36 | +* |
| 37 | +* This software may be replicated in part or whole for the licensed use, |
| 38 | +* with the restriction that this Disclaimer and Copyright notice must be |
| 39 | +* included with each copy of this software, whether used in part or whole, |
| 40 | +* at all times. |
| 41 | +*/ |
| 42 | +/******************************************************************************/ |
| 43 | +/** \file base_types.h |
| 44 | + ** |
| 45 | + ** base type common define. |
| 46 | + ** @link SampleGroup Some description @endlink |
| 47 | + ** |
| 48 | + ** - 2018-03-09 1.0 Lux First version. |
| 49 | + ** |
| 50 | + ******************************************************************************/ |
| 51 | + |
| 52 | +#ifndef __BASE_TYPES_H__ |
| 53 | +#define __BASE_TYPES_H__ |
| 54 | + |
| 55 | +/*****************************************************************************/ |
| 56 | +/* Include files */ |
| 57 | +/*****************************************************************************/ |
| 58 | +#include <stdio.h> |
| 59 | +#include <string.h> |
| 60 | +#include <stddef.h> |
| 61 | +#include <stdint.h> |
| 62 | +#include <assert.h> |
| 63 | + |
| 64 | + |
| 65 | +/*****************************************************************************/ |
| 66 | +/* Global pre-processor symbols/macros ('#define') */ |
| 67 | +/*****************************************************************************/ |
| 68 | +#ifndef TRUE |
| 69 | + /** Value is true (boolean_t type) */ |
| 70 | + #define TRUE ((boolean_t) 1u) |
| 71 | +#endif |
| 72 | + |
| 73 | +#ifndef FALSE |
| 74 | + /** Value is false (boolean_t type) */ |
| 75 | + #define FALSE ((boolean_t) 0u) |
| 76 | +#endif |
| 77 | + |
| 78 | +#if defined (__ICCARM__) |
| 79 | +#define __WEAKDEF __WEAK __ATTRIBUTES |
| 80 | +#elif defined (__CC_ARM) |
| 81 | +#define __WEAKDEF __weak |
| 82 | +#else |
| 83 | +#error "unsupported compiler!!" |
| 84 | +#endif |
| 85 | + |
| 86 | +/** Returns the minimum value out of two values */ |
| 87 | +#define MINIMUM( X, Y ) ((X) < (Y) ? (X) : (Y)) |
| 88 | + |
| 89 | +/** Returns the maximum value out of two values */ |
| 90 | +#define MAXIMUM( X, Y ) ((X) > (Y) ? (X) : (Y)) |
| 91 | + |
| 92 | +/** Returns the dimension of an array */ |
| 93 | +#define ARRAY_SZ( X ) (sizeof(X) / sizeof((X)[0])) |
| 94 | + |
| 95 | +#ifdef __DEBUG_ASSERT |
| 96 | + #define ASSERT(x) do{ assert((x)> 0u) ; }while(0); |
| 97 | +#else |
| 98 | + #define ASSERT(x) {} |
| 99 | +#endif |
| 100 | +/****************************************************************************** |
| 101 | + * Global type definitions |
| 102 | + ******************************************************************************/ |
| 103 | + |
| 104 | +/** logical datatype (only values are TRUE and FALSE) */ |
| 105 | +typedef uint8_t boolean_t; |
| 106 | + |
| 107 | +/** single precision floating point number (4 byte) */ |
| 108 | +typedef float float32_t; |
| 109 | + |
| 110 | +/** double precision floating point number (8 byte) */ |
| 111 | +typedef double float64_t; |
| 112 | + |
| 113 | +/** ASCII character for string generation (8 bit) */ |
| 114 | +typedef char char_t; |
| 115 | + |
| 116 | +/** function pointer type to void/void function */ |
| 117 | +typedef void (*func_ptr_t)(void); |
| 118 | + |
| 119 | +/** function pointer type to void/uint8_t function */ |
| 120 | +typedef void (*func_ptr_arg1_t)(uint8_t u8Param); |
| 121 | + |
| 122 | +/** generic error codes */ |
| 123 | +typedef enum en_result |
| 124 | +{ |
| 125 | + Ok = 0u, ///< No error |
| 126 | + Error = 1u, ///< Non-specific error code |
| 127 | + ErrorAddressAlignment = 2u, ///< Address alignment does not match |
| 128 | + ErrorAccessRights = 3u, ///< Wrong mode (e.g. user/system) mode is set |
| 129 | + ErrorInvalidParameter = 4u, ///< Provided parameter is not valid |
| 130 | + ErrorOperationInProgress = 5u, ///< A conflicting or requested operation is still in progress |
| 131 | + ErrorInvalidMode = 6u, ///< Operation not allowed in current mode |
| 132 | + ErrorUninitialized = 7u, ///< Module (or part of it) was not initialized properly |
| 133 | + ErrorBufferFull = 8u, ///< Circular buffer can not be written because the buffer is full |
| 134 | + ErrorTimeout = 9u, ///< Time Out error occurred (e.g. I2C arbitration lost, Flash time-out, etc.) |
| 135 | + ErrorNotReady = 10u, ///< A requested final state is not reached |
| 136 | + OperationInProgress = 11u ///< Indicator for operation in progress |
| 137 | +} en_result_t; |
| 138 | + |
| 139 | + |
| 140 | +/*****************************************************************************/ |
| 141 | +/* Global variable declarations ('extern', definition in C source) */ |
| 142 | +/*****************************************************************************/ |
| 143 | + |
| 144 | +/*****************************************************************************/ |
| 145 | +/* Global function prototypes ('extern', definition in C source) */ |
| 146 | +/*****************************************************************************/ |
| 147 | + |
| 148 | +#endif /* __BASE_TYPES_H__ */ |
| 149 | + |
| 150 | +/******************************************************************************/ |
| 151 | +/* EOF (not truncated) */ |
| 152 | +/******************************************************************************/ |
| 153 | + |
| 154 | + |
| 155 | + |
0 commit comments