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
29extern "C" {
30#endif /* __cplusplus */
31
32
33/****************************************************************************************/
34/*                                                                                      */
35/*  definitions                                                                         */
36/*                                                                                      */
37/****************************************************************************************/
38
39#define LVM_NULL                0                   /* NULL pointer */
40
41#define LVM_TRUE                1                   /* Booleans */
42#define LVM_FALSE               0
43
44#define LVM_MAXINT_8            127                 /* Maximum positive integer size */
45#define LVM_MAXINT_16           32767
46#define LVM_MAXINT_32           2147483647
47#define LVM_MAXENUM             2147483647
48
49#define LVM_MODULEID_MASK       0xFF00              /* Mask to extract the calling module ID from callbackId */
50#define LVM_EVENTID_MASK        0x00FF              /* Mask to extract the callback event from callbackId */
51
52/* Memory table*/
53#define LVM_MEMREGION_PERSISTENT_SLOW_DATA      0   /* Offset to the instance memory region */
54#define LVM_MEMREGION_PERSISTENT_FAST_DATA      1   /* Offset to the persistent data memory region */
55#define LVM_MEMREGION_PERSISTENT_FAST_COEF      2   /* Offset to the persistent coefficient memory region */
56#define LVM_MEMREGION_TEMPORARY_FAST            3   /* Offset to temporary memory region */
57
58#define LVM_NR_MEMORY_REGIONS                   4   /* Number of memory regions */
59
60/* Memory partition type */
61#define LVM_MEM_PARTITION0      0                   /* 1st memory partition */
62#define LVM_MEM_PARTITION1      1                   /* 2nd memory partition */
63#define LVM_MEM_PARTITION2      2                   /* 3rd memory partition */
64#define LVM_MEM_PARTITION3      3                   /* 4th memory partition */
65
66/* Use type */
67#define LVM_MEM_PERSISTENT      0                   /* Persistent memory type */
68#define LVM_MEM_SCRATCH         4                   /* Scratch  memory type */
69
70/* Access type */
71#define LVM_MEM_INTERNAL        0                   /* Internal (fast) access memory */
72#define LVM_MEM_EXTERNAL        8                   /* External (slow) access memory */
73
74/* Platform specific */
75#define LVM_PERSISTENT          LVM_MEM_PARTITION0+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL
76#define LVM_PERSISTENT_DATA     LVM_MEM_PARTITION1+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL
77#define LVM_PERSISTENT_COEF     LVM_MEM_PARTITION2+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL
78#define LVM_SCRATCH             LVM_MEM_PARTITION3+LVM_MEM_SCRATCH+LVM_MEM_INTERNAL
79
80/****************************************************************************************/
81/*                                                                                      */
82/*  Basic types                                                                         */
83/*                                                                                      */
84/****************************************************************************************/
85
86typedef     char                LVM_CHAR;           /* ASCII character */
87
88typedef     char                LVM_INT8;           /* Signed 8-bit word */
89typedef     unsigned char       LVM_UINT8;          /* Unsigned 8-bit word */
90
91typedef     short               LVM_INT16;          /* Signed 16-bit word */
92typedef     unsigned short      LVM_UINT16;         /* Unsigned 16-bit word */
93
94typedef     long                LVM_INT32;          /* Signed 32-bit word */
95typedef     unsigned long       LVM_UINT32;         /* Unsigned 32-bit word */
96
97
98/****************************************************************************************/
99/*                                                                                      */
100/*  Standard Enumerated types                                                           */
101/*                                                                                      */
102/****************************************************************************************/
103
104/* Operating mode */
105typedef enum
106{
107    LVM_MODE_OFF    = 0,
108    LVM_MODE_ON     = 1,
109    LVM_MODE_DUMMY  = LVM_MAXENUM
110} LVM_Mode_en;
111
112
113/* Format */
114typedef enum
115{
116    LVM_STEREO          = 0,
117    LVM_MONOINSTEREO    = 1,
118    LVM_MONO            = 2,
119    LVM_SOURCE_DUMMY    = LVM_MAXENUM
120} LVM_Format_en;
121
122
123/* LVM sampling rates */
124typedef enum
125{
126    LVM_FS_8000  = 0,
127    LVM_FS_11025 = 1,
128    LVM_FS_12000 = 2,
129    LVM_FS_16000 = 3,
130    LVM_FS_22050 = 4,
131    LVM_FS_24000 = 5,
132    LVM_FS_32000 = 6,
133    LVM_FS_44100 = 7,
134    LVM_FS_48000 = 8,
135    LVM_FS_INVALID = LVM_MAXENUM-1,
136    LVM_FS_DUMMY = LVM_MAXENUM
137} LVM_Fs_en;
138
139
140/* Memory Types */
141typedef enum
142{
143    LVM_PERSISTENT_SLOW_DATA    = LVM_MEMREGION_PERSISTENT_SLOW_DATA,
144    LVM_PERSISTENT_FAST_DATA    = LVM_MEMREGION_PERSISTENT_FAST_DATA,
145    LVM_PERSISTENT_FAST_COEF    = LVM_MEMREGION_PERSISTENT_FAST_COEF,
146    LVM_TEMPORARY_FAST          = LVM_MEMREGION_TEMPORARY_FAST,
147    LVM_MEMORYTYPE_DUMMY        = LVM_MAXENUM
148} LVM_MemoryTypes_en;
149
150
151/* Memory region definition */
152typedef struct
153{
154    LVM_UINT32                  Size;                   /* Region size in bytes */
155    LVM_MemoryTypes_en          Type;                   /* Region type */
156    void                        *pBaseAddress;          /* Pointer to the region base address */
157} LVM_MemoryRegion_st;
158
159
160/* Memory table containing the region definitions */
161typedef struct
162{
163    LVM_MemoryRegion_st         Region[LVM_NR_MEMORY_REGIONS];  /* One definition for each region */
164} LVM_MemoryTable_st;
165
166
167/****************************************************************************************/
168/*                                                                                      */
169/*  Standard Function Prototypes                                                        */
170/*                                                                                      */
171/****************************************************************************************/
172typedef LVM_INT32 (*LVM_Callback)(void          *pCallbackData,     /* Pointer to the callback data structure */
173                                  void          *pGeneralPurpose,   /* General purpose pointer (e.g. to a data structure needed in the callback) */
174                                  LVM_INT16     GeneralPurpose );   /* General purpose variable (e.g. to be used as callback ID) */
175
176
177/****************************************************************************************/
178/*                                                                                      */
179/*  End of file                                                                         */
180/*                                                                                      */
181/****************************************************************************************/
182
183#ifdef __cplusplus
184}
185#endif /* __cplusplus */
186
187#endif  /* LVM_TYPES_H */
188