1 /* 2 * Copyright (C) 2004-2010 NXP Software 3 * Copyright (C) 2010 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 /****************************************************************************************/ 19 /* */ 20 /* Header file defining the standard LifeVibes types for use in the application layer */ 21 /* interface of all LifeVibes modules */ 22 /* */ 23 /****************************************************************************************/ 24 25 #ifndef LVM_TYPES_H 26 #define LVM_TYPES_H 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif /* __cplusplus */ 31 32 #include <stdint.h> 33 34 /****************************************************************************************/ 35 /* */ 36 /* definitions */ 37 /* */ 38 /****************************************************************************************/ 39 40 #define LVM_NULL 0 /* NULL pointer */ 41 42 #define LVM_TRUE 1 /* Booleans */ 43 #define LVM_FALSE 0 44 45 #define LVM_MAXINT_8 127 /* Maximum positive integer size */ 46 #define LVM_MAXINT_16 32767 47 #ifdef BUILD_FLOAT 48 #define LVM_MAXFLOAT 1.0f 49 #endif 50 #define LVM_MAXINT_32 2147483647 51 #define LVM_MAXENUM 2147483647 52 53 #define LVM_MODULEID_MASK 0xFF00 /* Mask to extract the calling module ID from callbackId */ 54 #define LVM_EVENTID_MASK 0x00FF /* Mask to extract the callback event from callbackId */ 55 56 /* Memory table*/ 57 #define LVM_MEMREGION_PERSISTENT_SLOW_DATA 0 /* Offset to the instance memory region */ 58 #define LVM_MEMREGION_PERSISTENT_FAST_DATA 1 /* Offset to the persistent data memory region */ 59 #define LVM_MEMREGION_PERSISTENT_FAST_COEF 2 /* Offset to the persistent coefficient memory region */ 60 #define LVM_MEMREGION_TEMPORARY_FAST 3 /* Offset to temporary memory region */ 61 62 #define LVM_NR_MEMORY_REGIONS 4 /* Number of memory regions */ 63 64 /* Memory partition type */ 65 #define LVM_MEM_PARTITION0 0 /* 1st memory partition */ 66 #define LVM_MEM_PARTITION1 1 /* 2nd memory partition */ 67 #define LVM_MEM_PARTITION2 2 /* 3rd memory partition */ 68 #define LVM_MEM_PARTITION3 3 /* 4th memory partition */ 69 70 /* Use type */ 71 #define LVM_MEM_PERSISTENT 0 /* Persistent memory type */ 72 #define LVM_MEM_SCRATCH 4 /* Scratch memory type */ 73 74 /* Access type */ 75 #define LVM_MEM_INTERNAL 0 /* Internal (fast) access memory */ 76 #define LVM_MEM_EXTERNAL 8 /* External (slow) access memory */ 77 78 /* Platform specific */ 79 #define LVM_PERSISTENT (LVM_MEM_PARTITION0+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL) 80 #define LVM_PERSISTENT_DATA (LVM_MEM_PARTITION1+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL) 81 #define LVM_PERSISTENT_COEF (LVM_MEM_PARTITION2+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL) 82 #define LVM_SCRATCH (LVM_MEM_PARTITION3+LVM_MEM_SCRATCH+LVM_MEM_INTERNAL) 83 84 /****************************************************************************************/ 85 /* */ 86 /* Basic types */ 87 /* */ 88 /****************************************************************************************/ 89 90 typedef char LVM_CHAR; /* ASCII character */ 91 92 typedef int8_t LVM_INT8; /* Signed 8-bit word */ 93 typedef uint8_t LVM_UINT8; /* Unsigned 8-bit word */ 94 95 typedef int16_t LVM_INT16; /* Signed 16-bit word */ 96 typedef uint16_t LVM_UINT16; /* Unsigned 16-bit word */ 97 98 typedef int32_t LVM_INT32; /* Signed 32-bit word */ 99 typedef uint32_t LVM_UINT32; /* Unsigned 32-bit word */ 100 101 #ifdef BUILD_FLOAT 102 typedef float LVM_FLOAT; /* single precission floating point*/ 103 #endif 104 /****************************************************************************************/ 105 /* */ 106 /* Standard Enumerated types */ 107 /* */ 108 /****************************************************************************************/ 109 110 /* Operating mode */ 111 typedef enum 112 { 113 LVM_MODE_OFF = 0, 114 LVM_MODE_ON = 1, 115 LVM_MODE_DUMMY = LVM_MAXENUM 116 } LVM_Mode_en; 117 118 119 /* Format */ 120 typedef enum 121 { 122 LVM_STEREO = 0, 123 LVM_MONOINSTEREO = 1, 124 LVM_MONO = 2, 125 LVM_SOURCE_DUMMY = LVM_MAXENUM 126 } LVM_Format_en; 127 128 129 /* LVM sampling rates */ 130 typedef enum 131 { 132 LVM_FS_8000 = 0, 133 LVM_FS_11025 = 1, 134 LVM_FS_12000 = 2, 135 LVM_FS_16000 = 3, 136 LVM_FS_22050 = 4, 137 LVM_FS_24000 = 5, 138 LVM_FS_32000 = 6, 139 LVM_FS_44100 = 7, 140 LVM_FS_48000 = 8, 141 #ifdef HIGHER_FS 142 LVM_FS_96000 = 9, 143 LVM_FS_192000 = 10, 144 #endif 145 LVM_FS_INVALID = LVM_MAXENUM-1, 146 LVM_FS_DUMMY = LVM_MAXENUM 147 } LVM_Fs_en; 148 149 150 /* Memory Types */ 151 typedef enum 152 { 153 LVM_PERSISTENT_SLOW_DATA = LVM_MEMREGION_PERSISTENT_SLOW_DATA, 154 LVM_PERSISTENT_FAST_DATA = LVM_MEMREGION_PERSISTENT_FAST_DATA, 155 LVM_PERSISTENT_FAST_COEF = LVM_MEMREGION_PERSISTENT_FAST_COEF, 156 LVM_TEMPORARY_FAST = LVM_MEMREGION_TEMPORARY_FAST, 157 LVM_MEMORYTYPE_DUMMY = LVM_MAXENUM 158 } LVM_MemoryTypes_en; 159 160 161 /* Memory region definition */ 162 typedef struct 163 { 164 LVM_UINT32 Size; /* Region size in bytes */ 165 LVM_MemoryTypes_en Type; /* Region type */ 166 void *pBaseAddress; /* Pointer to the region base address */ 167 } LVM_MemoryRegion_st; 168 169 170 /* Memory table containing the region definitions */ 171 typedef struct 172 { 173 LVM_MemoryRegion_st Region[LVM_NR_MEMORY_REGIONS]; /* One definition for each region */ 174 } LVM_MemoryTable_st; 175 176 177 /****************************************************************************************/ 178 /* */ 179 /* Standard Function Prototypes */ 180 /* */ 181 /****************************************************************************************/ 182 typedef LVM_INT32 (*LVM_Callback)(void *pCallbackData, /* Pointer to the callback data structure */ 183 void *pGeneralPurpose, /* General purpose pointer (e.g. to a data structure needed in the callback) */ 184 LVM_INT16 GeneralPurpose ); /* General purpose variable (e.g. to be used as callback ID) */ 185 186 187 /****************************************************************************************/ 188 /* */ 189 /* End of file */ 190 /* */ 191 /****************************************************************************************/ 192 193 #ifdef __cplusplus 194 } 195 #endif /* __cplusplus */ 196 197 #endif /* LVM_TYPES_H */ 198