UI_PSF_record.c File Reference


Detailed Description

This module provides parent record state handle.

REVISION

Definition in file UI_PSF_record.c.

#include "../SYSTEM/sys_main.h"
#include "../SYSTEM/sys_hardware.h"
#include "../SYSTEM/sys_param.h"
#include "../SYSTEM/sys_clock.h"
#include "../AUDIO/audio.h"
#include "../encoder/encoder.h"
#include "../coder/coder.h"
#include "../BATTERY/battery.h"
#include "ui.h"

Include dependency graph for UI_PSF_record.c:

Include dependency graph

Go to the source code of this file.

Functions

PARENT_STATE UI_PSF_record (st_MSG *msgIN)
 Function serves as the parent record state handle.


Function Documentation

PARENT_STATE UI_PSF_record st_MSG msgIN  ) 
 

Function serves as the parent record state handle.

Parameters:
msgIN Input message.
Returns:
Next state.

Definition at line 83 of file UI_PSF_record.c.

References AI_START, Audio, AUDIO_initInterface(), AUDIO_setInterface(), CLOCK_MP3RECORD, ENCODER_getAudioFormat(), ENCODER_getAudioMode(), ENCODER_setSource(), ES_SOURCE, st_AUDIOENERGY::FastPeak, st_AUDIOENERGY::FastPeakdB, FAT_delete(), FAT_freeSpace(), st_UI::fname, st_AUDIO::freeSpace, GEN_int2ASCII(), MENU_buf, st_AUDIO::mode, st_UI::path, st_SYSPARAM::recordTime, SAUDIOTIME_UPDT, st_AUDIOENERGY::SlowPeak, st_AUDIOENERGY::SlowPeakdB, SMEDIAFULL, SMSGBOX_EXIT, SSTATE_END, SSTATE_START, SYS_clockSetup(), TMR_create(), TMR_RECORDER, TMR_RECORDER_VU, and UI_msgbxCreate().

00084 {   
00085     MSG_ID          id = msgIN->id;     
00086     MSG_DATA        d1 = msgIN->d1; 
00087     MSG_DATA        d2 = msgIN->d2;
00088 //DeepB
00089 /*
00090     ULONG           recordIconList[4] = {   (ULONG)graf_icon_record1,
00091                                             (ULONG)graf_icon_record2,
00092                                             (ULONG)graf_icon_record3,
00093                                             (ULONG)graf_icon_record4};
00094 */
00095     switch(id)
00096     {
00097     case SYS_MSG_ID:
00098         
00099         switch(d1)
00100         {
00101             case SSTATE_START:
00102             {
00103                 SYS_clockSetup(CLOCK_MP3RECORD);
00104                 BAT_setLowThreshold(0x3a66); //3.65V*4096.
00105                 
00106                 ENCODER_setSource((ES_SOURCE)d2);
00107                 
00108                 Audio.freeSpace = FAT_freeSpace(SYS_isHDDpresent()?DISK_C:DISK_D);
00109                 if(Audio.freeSpace < DISK_RESERVED_SPACE)
00110                 {
00111                     UI_msgbxCreate(MSGBX_DISKFULL);
00112                     return P_RECORD;
00113                 }
00114                 
00115                 if(RFC_SUCCESS != _createRecFile(Ui.path, (ES_SOURCE)d2))
00116                 {
00117                     return P_NULL;
00118                 }
00119                 
00120                 AUDIO_initInterface(ENCODER_getAudioMode((USHORT)d2), 
00121                                     ENCODER_getAudioFormat(), 0, 0);
00122                 AUDIO_setInterface(AI_START);
00123 
00124                 _loadRecorderTmplt(Ui.fname, (int)d2);
00125                 menu = mMENU_create((void *)&MENU_buf[0]);
00126                 _gainDisplay();
00127                 _updateRecordTime(0);
00128                 mMENU_update(menu, 11, 0, FALSE);
00129                 TMR_create(TMR_RECORDER_VU, 10, TRECVUMETER, 0, AUTO_RELOAD);
00130                 if (sysParam.recordTime > 0) TMR_create(TMR_RECORDER, 39, TRECANIMATION, 0, AUTO_RELOAD);
00131 //              iconCount = 0;
00132                 if (sysParam.recordTime > 0) _togglePause();
00133                 return P_RECORD;
00134             }
00135             case SSTATE_END:
00136             {
00137                 _stopRecord();
00138                 return P_RECORDDONE;
00139             }
00140             case SAUDIOTIME_UPDT:
00141             {
00142                 _updateRecordTime(SYS_getCurRecordDuration());
00143                 return P_RECORD;
00144             }
00145             case SMSGBOX_EXIT:
00146             {
00147                 if(MENU_curMsgbx() == MSGBX_DISKFULL) 
00148                 {
00149                     SYS_usbEnabled();
00150                     SYS_recordNotActive();
00151                     return (Audio.mode == AM_RECFM) ? P_RADIO: P_NULL;
00152                 }
00153                 break;
00154             }
00155             case SMEDIAFULL:
00156             {
00157             }
00158         }   
00159         break;
00160     
00161     case TMR_MSG_ID:
00162         switch(d1)
00163         {
00164             case TRECVUMETER:
00165             {
00166                 unsigned short  i;
00167                 char            strLevel[8];
00168                 LeftInputEnergy.SlowPeakdB = AUDIO_Convert2dB(&LeftInputEnergy.SlowPeak);
00169                 RightInputEnergy.SlowPeakdB = AUDIO_Convert2dB(&RightInputEnergy.SlowPeak);
00170                 LeftInputEnergy.FastPeakdB = AUDIO_Convert2dB(&LeftInputEnergy.FastPeak);
00171                 RightInputEnergy.FastPeakdB = AUDIO_Convert2dB(&RightInputEnergy.FastPeak);
00172                 
00173                 LeftInputEnergy.FastPeakdB = (LeftInputEnergy.FastPeakdB > 60)? 60 : LeftInputEnergy.FastPeakdB;
00174                 RightInputEnergy.FastPeakdB = (RightInputEnergy.FastPeakdB > 60)? 60 : RightInputEnergy.FastPeakdB;
00175                 
00176                 lpeak = (lpeak < LeftInputEnergy.SlowPeakdB) ? lpeak : LeftInputEnergy.SlowPeakdB;
00177                 rpeak = (rpeak < RightInputEnergy.SlowPeakdB) ? rpeak : RightInputEnergy.SlowPeakdB;
00178                 
00179                 // Do Left Level
00180                 i = 0;
00181                 if (LeftInputEnergy.SlowPeakdB != 0) strLevel[i++] = '-';
00182                 i += GEN_int2ASCII( LeftInputEnergy.SlowPeakdB, &strLevel[i], FALSE, 0);
00183                 strLevel[i++] = 'd';
00184                 strLevel[i++] = 'B';
00185                 strLevel[i++] = '\0';
00186                 mMENU_update(menu, 5, (ULONG)strLevel, FALSE);
00187                 i = 0;
00188                 if (lpeak != 0) strLevel[i++] = '-';
00189                 i += GEN_int2ASCII( lpeak, &strLevel[i], FALSE, 0);
00190                 strLevel[i++] = '\0';
00191                 mMENU_update(menu, 8, (ULONG)strLevel, FALSE);
00192         
00193                 // Do Right Level       
00194                 i = 0;
00195                 if (RightInputEnergy.SlowPeakdB != 0) strLevel[i++] = '-';
00196                 i += GEN_int2ASCII( RightInputEnergy.SlowPeakdB, &strLevel[i], FALSE, 0);
00197                 strLevel[i++] = 'd';
00198                 strLevel[i++] = 'B';
00199                 strLevel[i++] = '\0';
00200                 mMENU_update(menu, 6, (ULONG)strLevel, FALSE);
00201                 i = 0;
00202                 if (rpeak != 0) strLevel[i++] = '-';
00203                 i += GEN_int2ASCII( rpeak, &strLevel[i], FALSE, 0);
00204                 strLevel[i++] = '\0';
00205                 mMENU_update(menu, 9, (ULONG)strLevel, FALSE);
00206                 _updateLevelBarGraphs();
00207                 mMENU_refresh(menu);
00208                 break;  
00209             }
00210             case TRECANIMATION:
00211             {
00212                 if ((SYS_getCurRecordDuration()) >= (sysParam.recordTime * 60) && (sysParam.recordTime != 0) )
00213                 {
00214                     _stopRecord();
00215                     return P_RECORDDONE;
00216                 }
00217                 break;
00218             }
00219         }
00220         break;
00221         
00222     case KBD_MSG_ID:
00223         switch(d1)
00224         {
00225             case KEY_HSELECT:
00226                 lpeak = 255;
00227                 rpeak = lpeak;
00228                 break;
00229 //DeepB
00230 // Stop recordings only with the HiSi button
00231 //          case KEY_BACK:
00232             case KEY_HISI:
00233                 _stopRecord();
00234                 
00235                 if( 5 > SYS_getCurRecordDuration())
00236                 {
00237                     FAT_delete(Ui.path);
00238                     
00239                     if (SYS_isHDDpresent()) HDD_setPowerMode(HDD_POWEROFF, 0);
00240                     
00241                     return (SYS_isRadioActive())? P_RADIO: P_NULL;
00242                 }
00243 
00244                 return P_RECORDDONE;
00245                 
00246             case KEY_PLAY:
00247                 _togglePause();
00248                 return P_RECORD;
00249                 
00250             case KEY_FORWARD:           
00251             case KEY_RFORWARD:          
00252             case KEY_HFORWARD:          
00253                 _timeUp();
00254                 return P_RECORD;
00255                 
00256             case KEY_REWIND:    
00257             case KEY_RREWIND:
00258             case KEY_HREWIND:
00259                 _timeDown();
00260                 return P_RECORD;
00261             case KEY_HUP:
00262             case KEY_UP:
00263             case KEY_RUP:
00264                 _gainUp();
00265                 return P_RECORD;
00266             case KEY_HDOWN:
00267             case KEY_DOWN:
00268             case KEY_RDOWN:
00269                 _gainDown();
00270                 return P_RECORD;
00271         }
00272         break;
00273     }
00274     
00275     return P_RECORD;
00276 }

Here is the call graph for this function:


Generated on Wed Jan 19 01:13:33 2005 for neuros-firmware by  doxygen 1.3.9.1