0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /****************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 /* File Name: audio_mode_volume.c */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 /* Purpose: This file contains all the functions used for audio mode */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 /* speaker volume services. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 /* Version 0.1 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 /* Date Modification */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 /* ------------------------------------------------------------------------*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 /* 14 Jan 2002 Create */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 /* Author Francois Mazard */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 /****************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 #include "rv/rv_defined_swe.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #ifdef RVM_AUDIO_MAIN_SWE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #ifndef _WINDOWS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #include "config/swconfig.cfg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #include "config/sys.cfg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 #include "config/chipset.cfg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #include "l1_confg.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "rv/rv_general.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "rvm/rvm_gen.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "audio/audio_ffs_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "audio/audio_api.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "audio/audio_structs_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "audio/audio_error_hdlr_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "audio/audio_var_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "audio/audio_messages_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "audio/audio_macro_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "rvf/rvf_target.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "audio/audio_const_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 /* include the usefull L1 header */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #ifdef _WINDOWS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #define BOOL_FLAG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 //#define CHAR_FLAG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "l1_types.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "l1audio_const.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 #include "l1audio_cust.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 #include "l1audio_defty.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 #include "l1audio_msgty.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 #include "l1audio_signa.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 #if TESTMODE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 #include "l1tm_defty.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 #if (L1_GTT == 1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 #include "l1gtt_const.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 #include "l1gtt_defty.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 #include "l1_const.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 #include "l1_defty.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 #include "l1_msgty.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 #include "l1_signa.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 #ifdef _WINDOWS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 #define L1_ASYNC_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 #include "l1_varex.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 #ifdef _WINDOWS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 #include "audio/tests/audio_test.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 /* external functions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 /* write */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 extern T_AUDIO_RET audio_mode_speaker_volume_write (T_AUDIO_SPEAKER_LEVEL *data);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 /* read */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 extern T_AUDIO_RET audio_mode_speaker_volume_read (T_AUDIO_SPEAKER_LEVEL *data);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 /********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 /* Function Name: audio_mode_speaker_volume_send_status */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 /* Purpose: This function sends the audio mode speaker volume status to */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 /* the entity. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 /* Input Parameters: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 /* status, */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 /* return path */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 /* Output Parameters: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 /* None. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 /* Note: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 /* None. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 /* Revision History: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 /* None. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 /********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 void audio_mode_speaker_volume_send_status (T_AUDIO_RET status, T_RV_RETURN return_path)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 void *p_send_message = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 T_RVF_MB_STATUS mb_status = RVF_RED;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 while (mb_status == RVF_RED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 /* allocate the message buffer */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 mb_status = rvf_get_buf (p_audio_gbl_var->mb_external,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 sizeof (T_AUDIO_VOLUME_DONE),
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 (T_RVF_BUFFER **) (&p_send_message));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 /* If insufficient resources, then report a memory error and abort. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 /* and wait until more ressource is given */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 if (mb_status == RVF_RED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 audio_mode_error_trace(AUDIO_ENTITY_NO_MEMORY);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 rvf_delay(RVF_MS_TO_TICKS(1000));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 /*fill the header of the message */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 ((T_AUDIO_VOLUME_DONE *)(p_send_message))->os_hdr.msg_id =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 AUDIO_SPEAKER_VOLUME_DONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 /* fill the status parameters */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 ((T_AUDIO_VOLUME_DONE *)(p_send_message))->status = status;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 if (return_path.callback_func == NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 /* send the message to the entity */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 rvf_send_msg (return_path.addr_id,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 p_send_message);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 /* call the callback function */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 (*return_path.callback_func)((void *)(p_send_message));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 rvf_free_buf((T_RVF_BUFFER *)p_send_message);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 /********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 /* Function Name: audio_mode_speaker_volume_manager */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 /* Purpose: This function manage the audio mode save services. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 /* Input Parameters: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 /* Audio message. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 /* Output Parameters: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 /* None. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 /* Note: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 /* None. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 /* Revision History: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 /* None. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 /********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 void audio_mode_speaker_volume_manager (T_RV_HDR *p_message)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 T_AUDIO_SPEAKER_LEVEL volume;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 #ifndef _WINDOWS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 T_FFS_FD audio_volume_ffs_fd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 switch (((T_AUDIO_SPEAKER_VOLUME_REQ *)p_message)->volume.volume_action)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 case AUDIO_SPEAKER_VOLUME_INCREASE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 if ( (audio_mode_speaker_volume_read(&volume)) == AUDIO_ERROR )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 AUDIO_SEND_TRACE("AUDIO MODE SPEAKER VOLUME: can't read the current volume", RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 audio_mode_speaker_volume_send_status (AUDIO_ERROR,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 ((T_AUDIO_SPEAKER_VOLUME_REQ *)p_message)->return_path);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 if (volume.audio_speaker_level == AUDIO_SPEAKER_VOLUME_MUTE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 volume.audio_speaker_level = AUDIO_SPEAKER_VOLUME_24dB;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 if (volume.audio_speaker_level == AUDIO_SPEAKER_VOLUME_24dB)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 volume.audio_speaker_level = AUDIO_SPEAKER_VOLUME_18dB;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 if (volume.audio_speaker_level == AUDIO_SPEAKER_VOLUME_0dB)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 volume.audio_speaker_level = AUDIO_SPEAKER_VOLUME_0dB;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 volume.audio_speaker_level += 50;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 case AUDIO_SPEAKER_VOLUME_DECREASE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 if ( (audio_mode_speaker_volume_read(&volume)) == AUDIO_ERROR )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 AUDIO_SEND_TRACE("AUDIO MODE SPEAKER VOLUME: can't read the current volume", RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 audio_mode_speaker_volume_send_status (AUDIO_ERROR,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 ((T_AUDIO_SPEAKER_VOLUME_REQ *)p_message)->return_path);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 if (volume.audio_speaker_level == AUDIO_SPEAKER_VOLUME_MUTE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 volume.audio_speaker_level = AUDIO_SPEAKER_VOLUME_MUTE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 if (volume.audio_speaker_level == AUDIO_SPEAKER_VOLUME_24dB)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 volume.audio_speaker_level = AUDIO_SPEAKER_VOLUME_MUTE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 if (volume.audio_speaker_level == AUDIO_SPEAKER_VOLUME_18dB)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 volume.audio_speaker_level = AUDIO_SPEAKER_VOLUME_24dB;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 volume.audio_speaker_level -= 50;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 case AUDIO_SPEAKER_VOLUME_SET:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 volume.audio_speaker_level = ((T_AUDIO_SPEAKER_VOLUME_REQ *)p_message)->volume.value;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 /* Open the volume file */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 #ifndef _WINDOWS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 audio_volume_ffs_fd = ffs_open(p_audio_gbl_var->audio_mode_var.audio_volume_var.audio_volume_path_name,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 FFS_O_CREATE | FFS_O_WRONLY | FFS_O_TRUNC | FFS_O_APPEND);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 if (audio_volume_ffs_fd <= 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 AUDIO_SEND_TRACE("AUDIO MODE SPEAKER VOLUME: can't open the current volume file", RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 /* Close the file */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 ffs_close(audio_volume_ffs_fd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 audio_mode_speaker_volume_send_status (AUDIO_ERROR,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 ((T_AUDIO_SPEAKER_VOLUME_REQ *)p_message)->return_path);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 /* Save the audio speaker volume structure from the FFS */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 if ( (ffs_write (audio_volume_ffs_fd,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 &volume,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 sizeof(T_AUDIO_SPEAKER_LEVEL))) < EFFS_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 AUDIO_SEND_TRACE("AUDIO MODE SPEAKER VOLUME: impossible to save the current speaker volume", RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 /* Close the file */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 ffs_close(audio_volume_ffs_fd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 /* send the status message */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 audio_mode_speaker_volume_send_status (AUDIO_ERROR,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 ((T_AUDIO_SPEAKER_VOLUME_REQ *)p_message)->return_path);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 /* Close the file */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 ffs_close(audio_volume_ffs_fd);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 #if ((AUDIO_REGR == SW_COMPILED) || (AUDIO_MISC == SW_COMPILED))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 p_audio_test->speaker_volume_1.audio_speaker_level = volume.audio_speaker_level;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 /* Fill the audio volume structure */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 if ( (audio_mode_speaker_volume_write(&volume)) == AUDIO_ERROR)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 AUDIO_SEND_TRACE("AUDIO MODE LOAD: error in the the audio speaker volume set function", RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 /* send the status message */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 audio_mode_speaker_volume_send_status (AUDIO_ERROR,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 ((T_AUDIO_SPEAKER_VOLUME_REQ *)p_message)->return_path);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 /* send the good status message */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 audio_mode_speaker_volume_send_status (AUDIO_OK,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 ((T_AUDIO_SPEAKER_VOLUME_REQ *)p_message)->return_path);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 #endif /* RVM_AUDIO_MAIN_SWE */
|