00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef OSDL_COMMAND_MANAGER_H_
00028 #define OSDL_COMMAND_MANAGER_H_
00029
00030
00031
00032 #include "OSDLAudioCommon.h"
00033 #include "OSDLException.h"
00034
00035
00036 #include "Ceylan.h"
00037
00038 #include <string>
00039
00040
00041
00042
00043 #if defined(OSDL_ARCH_NINTENDO_DS) && OSDL_ARCH_NINTENDO_DS
00044
00045
00046
00047
00048 namespace OSDL
00049 {
00050
00051
00052
00053 namespace Audio
00054 {
00055
00056 class Sound ;
00057 class Music ;
00058
00059 }
00060
00061
00062
00064 class CommandException: public OSDL::Exception
00065 {
00066 public:
00067
00068 explicit CommandException( const std::string & reason ) ;
00069
00070 virtual ~CommandException() throw() ;
00071
00072 } ;
00073
00074
00075
00076
00077 class CommandManager ;
00078
00079
00080
00089 struct CommandManagerSettings
00090 {
00091
00092
00102
00103 CommandManager * _commandManager ;
00104
00105
00106
00108 Audio::BufferSize _bufferSize ;
00109
00110
00111
00120 Ceylan::Byte * _doubleBuffer ;
00121
00122
00123
00125 Ceylan::Byte * _secondBuffer ;
00126
00127
00128 } ;
00129
00130
00131
00132
00137 class OSDL_DLL CommandManager: public Ceylan::System::FIFO
00138 {
00139
00140
00141
00142 public:
00143
00144
00145
00153 CommandManager() ;
00154
00155
00156
00158 virtual ~CommandManager() throw() ;
00159
00160
00161
00162
00163
00164
00165
00166
00179 virtual void playSound( Audio::Sound & sound ) ;
00180
00181
00182
00190 virtual void enableMusicSupport() ;
00191
00192
00193
00202 virtual void disableMusicSupport() ;
00203
00204
00205
00211 virtual Audio::BufferSize getMusicBufferSize() const ;
00212
00213
00214
00221 virtual Ceylan::Byte * getMusicBuffer() const ;
00222
00223
00224
00239 virtual void playMusic( Audio::Music & music ) ;
00240
00241
00242
00262 virtual void playMusicWithFadeIn( Audio::Music & music,
00263 Ceylan::System::Millisecond fadeInMaxDuration ) ;
00264
00265
00266
00277 virtual void stopMusic() ;
00278
00279
00280
00291 virtual void fadeInMusic(
00292 Ceylan::System::Millisecond fadeInMaxDuration ) ;
00293
00294
00295
00306 virtual void fadeOutMusic(
00307 Ceylan::System::Millisecond fadeOutMaxDuration ) ;
00308
00309
00310
00320 virtual void setMusicVolume( Audio::Volume newVolume ) ;
00321
00322
00323
00333 virtual void pauseMusic() ;
00334
00335
00336
00344 virtual void unpauseMusic() ;
00345
00346
00347
00355 virtual void notifyEndOfEncodedStreamReached() ;
00356
00357
00358
00364 virtual void unsetCurrentMusic( Audio::Music & music ) ;
00365
00366
00367
00375 virtual std::string interpretLastARM7ErrorCode() ;
00376
00377
00378
00389 virtual const std::string toString(
00390 Ceylan::VerbosityLevels level = Ceylan::high ) const ;
00391
00392
00393
00394
00395
00396
00397
00398
00399
00404 static bool HasExistingCommandManager() ;
00405
00406
00407
00415 static CommandManager & GetExistingCommandManager() ;
00416
00417
00418
00425 static CommandManager & GetCommandManager() ;
00426
00427
00428
00429
00430
00431 protected:
00432
00433
00434
00442 Audio::Music * _currentMusic ;
00443
00444
00445
00452 Ceylan::Byte * _doubleBuffer ;
00453
00454
00455
00457 Audio::BufferSize _bufferSize ;
00458
00459
00460
00462 CommandManagerSettings * _settings ;
00463
00464
00465
00484 virtual void handleReceivedIntegratingLibrarySpecificCommand(
00485 FIFOCommandID commandID,
00486 Ceylan::System::FIFOElement firstElement ) ;
00487
00488
00489
00491 static CommandManager * _IPCManager ;
00492
00493
00494
00495
00496 private:
00497
00498
00507 explicit CommandManager( const CommandManager & source ) ;
00508
00509
00510
00519 CommandManager & operator = ( const CommandManager & source ) ;
00520
00521
00522
00523 } ;
00524
00525
00526
00527 }
00528
00529
00530 #endif // defined(OSDL_ARCH_NINTENDO_DS) && OSDL_ARCH_NINTENDO_DS
00531
00532
00533 #endif // OSDL_COMMAND_MANAGER_H_
00534