You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							32 lines
						
					
					
						
							755 B
						
					
					
				
			
		
		
	
	
							32 lines
						
					
					
						
							755 B
						
					
					
				#pragma once
 | 
						|
#include <map>
 | 
						|
#include "cereal/gen/cpp/log.capnp.h"
 | 
						|
 | 
						|
#if defined(QCOM)
 | 
						|
#include <SLES/OpenSLES.h>
 | 
						|
#include <SLES/OpenSLES_Android.h>
 | 
						|
#endif
 | 
						|
 | 
						|
typedef cereal::CarControl::HUDControl::AudibleAlert AudibleAlert;
 | 
						|
 | 
						|
class Sound {
 | 
						|
 public:
 | 
						|
  Sound() = default;
 | 
						|
  bool init(int volume);
 | 
						|
  bool play(AudibleAlert alert);
 | 
						|
  void stop();
 | 
						|
  void setVolume(int volume);
 | 
						|
  ~Sound();
 | 
						|
 | 
						|
#if defined(QCOM)
 | 
						|
 private:
 | 
						|
  SLObjectItf engine_ = nullptr;
 | 
						|
  SLObjectItf outputMix_ = nullptr;
 | 
						|
  int last_volume_ = 0;
 | 
						|
  double last_set_volume_time_ = 0.;
 | 
						|
  AudibleAlert currentSound_ = AudibleAlert::NONE;
 | 
						|
  struct Player;
 | 
						|
  std::map<AudibleAlert, Player *> player_;
 | 
						|
  friend void SLAPIENTRY slplay_callback(SLPlayItf playItf, void *context, SLuint32 event);
 | 
						|
#endif
 | 
						|
};
 | 
						|
 |