summaryrefslogtreecommitdiff
path: root/include/avsys-audio-path.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/avsys-audio-path.h')
-rw-r--r--include/avsys-audio-path.h232
1 files changed, 232 insertions, 0 deletions
diff --git a/include/avsys-audio-path.h b/include/avsys-audio-path.h
new file mode 100644
index 0000000..2f20b46
--- /dev/null
+++ b/include/avsys-audio-path.h
@@ -0,0 +1,232 @@
+/*
+ * avsystem
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jonghyuk Choi <jhchoi.choi@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __AVSYS_AUDIO_PATH_H__
+#define __AVSYS_AUDIO_PATH_H__
+
+#include "avsys-audio.h"
+#include "avsys-audio-handle.h"
+
+#include <sys/types.h>
+#include <stdbool.h>
+
+enum {
+ AVSYS_AUDIO_INSERTED_NONE = 0,
+ AVSYS_AUDIO_INSERTED_3,
+ AVSYS_AUDIO_INSERTED_4,
+ AVSYS_AUDIO_INSERTED_AV
+};
+
+enum avsys_audio_playback_gain{
+ AVSYS_AUDIO_PLAYBACK_GAIN_AP = 0,
+ AVSYS_AUDIO_PLAYBACK_GAIN_FMRADIO,
+ AVSYS_AUDIO_PLAYBACK_GAIN_VOICECALL,
+ AVSYS_AUDIO_PLAYBACK_GAIN_VIDEOCALL,
+ AVSYS_AUDIO_PLAYBACK_GAIN_CALLALERT,
+ AVSYS_AUDIO_PLAYBACK_GAIN_MAX
+};
+
+enum avsys_audio_capture_gain{
+ AVSYS_AUDIO_CAPTURE_GAIN_AP = 0,
+ AVSYS_AUDIO_CAPTURE_GAIN_FMRADIO,
+ AVSYS_AUDIO_CAPTURE_GAIN_VOICECALL,
+ AVSYS_AUDIO_CAPTURE_GAIN_VIDEOCALL,
+ AVSYS_AUDIO_CAPTURE_GAIN_MAX
+};
+
+enum avsys_audio_ear_ctrl {
+ AVSYS_AUDIO_EAR_SWITCH_MANUAL,
+ AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE,
+ AVSYS_AUDIO_EAR_SWITCH_AUTO_WITHOUT_MUTE,
+};
+
+struct avsys_audio_jack_event {
+ struct timeval time;
+ unsigned short type;
+ unsigned short code;
+ int value;
+};
+
+#define PATH_MASK_MAX 23
+#define GAIN_MASK_MAX 30
+/* sound path status bit */
+#define PS_PATH_NONE (0)
+#define PS_AP_TO_SPK (1 << 0)
+#define PS_AP_TO_HEADSET (1 << 1)
+#define PS_AP_TO_RECV (1 << 2)
+#define PS_AP_TO_HDMI (1 << 3)
+#define PS_AP_TO_BT (1 << 4)
+#define PS_AP_TO_MODEM (1 << 5)
+#define PS_MODEM_TO_SPK (1 << 6)
+#define PS_MODEM_TO_HEADSET (1 << 7)
+#define PS_MODEM_TO_RECV (1 << 8)
+#define PS_MODEM_TO_BT (1 << 9)
+#define PS_MODEM_TO_AP (1 << 10)
+#define PS_FMRADIO_TO_SPK (1 << 11)
+#define PS_FMRADIO_TO_HEADSET (1 << 12)
+#define PS_MAINMIC_TO_AP (1 << 13)
+#define PS_MAINMIC_TO_MODEM (1 << 14)
+#define PS_SUBMIC_TO_AP (1 << 15)
+#define PS_SUBMIC_TO_MODEM (1 << 16)
+#define PS_STEREOMIC_TO_AP (1 << 17)
+#define PS_EARMIC_TO_AP (1 << 18)
+#define PS_EARMIC_TO_MODEM (1 << 19)
+#define PS_BTMIC_TO_AP (1 << 20)
+#define PS_BTMIC_TO_MODEM (1 << 21)
+#define PS_FMRADIO_TO_AP (1 << 22)
+#define PS_CODEC_DISABLE_ON_SUSPEND (1 << 23)
+#define PS_CP_TO_AP (1 << PATH_MASK_MAX)
+
+
+/* hw gain status enum */
+#define GS_GAIN_NONE (0)
+#define GS_AP_TO_SPK (1 << 0)
+#define GS_AP_TO_SPK_CALLALERT (1 << 1)
+#define GS_AP_TO_HEADSET (1 << 2)
+#define GS_AP_TO_HEADSET_CALLALERT (1 << 3)
+#define GS_AP_TO_RECV (1 << 4)
+#define GS_AP_TO_HDMI (1 << 5)
+#define GS_AP_TO_BT (1 << 6)
+#define GS_AP_TO_MODEM (1 << 7)
+#define GS_MODEM_TO_SPK_VOICE (1 << 8)
+#define GS_MODEM_TO_HEADSET_VOICE (1 << 9)
+#define GS_MODEM_TO_RECV_VOICE (1 << 10)
+#define GS_MODEM_TO_BT_VOICE (1 << 11)
+#define GS_MODEM_TO_AP_VOICE (1 << 12)
+#define GS_MODEM_TO_SPK_VIDEO (1 << 13)
+#define GS_MODEM_TO_HEADSET_VIDEO (1 << 14)
+#define GS_MODEM_TO_RECV_VIDEO (1 << 15)
+#define GS_MODEM_TO_BT_VIDEO (1 << 16)
+#define GS_MODEM_TO_AP_VIDEO (1 << 17)
+#define GS_FMRADIO_TO_SPK (1 << 18)
+#define GS_FMRADIO_TO_HEADSET (1 << 19)
+#define GS_MAINMIC_TO_AP (1 << 20)
+#define GS_MAINMIC_TO_MODEM_VOICE (1 << 21)
+#define GS_SUBMIC_TO_AP (1 << 22)
+#define GS_SUBMIC_TO_MODEM_VOICE (1 << 23)
+#define GS_STEREOMIC_TO_AP (1 << 24)
+#define GS_EARMIC_TO_AP (1 << 25)
+#define GS_EARMIC_TO_MODEM_VOICE (1 << 26)
+#define GS_BTMIC_TO_AP (1 << 27)
+#define GS_BTMIC_TO_MODEM_VOICE (1 << 28)
+#define GS_FMRADIO_TO_AP (1 << 29)
+#define GS_CP_TO_AP (1 << GAIN_MASK_MAX)
+
+#define TYPE_EVENT_SWITCH 0x05
+#define CODE_HEADPHONE_INSERT 0x02
+#define CODE_MICROPHONE_INSERT 0x04
+#define CODE_LINEOUT_INSERT 0x06
+#define CODE_JACK_PHYSICAL_INSERT 0x07
+
+#define PATH_FIXED_NONE (0x00000000)
+#define PATH_FIXED_WITH_FMRADIO (1 << PATH_FIXED_TYPE_FMRADIO) /* 0x00000001 */
+#define PATH_FIXED_WITH_CALL (1 << PATH_FIXED_TYPE_CALL) /* 0x00000002 */
+
+enum avsys_audio_amp_t {
+ AVSYS_AUDIO_AMP_OFF = 0, /**< AMP OFF in pda out */
+ AVSYS_AUDIO_AMP_ON, /**< AMP ON in pda out */
+ AVSYS_AUDIO_AMP_OFF_ALL,
+};
+
+enum path_fixed_type_t {
+ PATH_FIXED_TYPE_FMRADIO = 0,
+ PATH_FIXED_TYPE_CALL,
+ PATH_FIXED_TYPE_MAX,
+};
+
+struct audio_route_info_t {
+ int playback;
+ int capture;
+};
+
+typedef struct audio_route_info_t gain_info_t;
+typedef struct audio_route_info_t path_info_t;
+typedef struct audio_route_info_t option_info_t;
+typedef struct audio_route_info_t gain_status_t;
+typedef struct audio_route_info_t path_status_t;
+
+typedef struct {
+ gain_info_t gain;
+ path_info_t path;
+
+ gain_info_t backup_gain;
+ path_info_t backup_path;
+
+ gain_info_t pregain;
+ gain_info_t reqgain;
+
+ option_info_t option;
+
+ /* path fixed information */
+ int path_fixed;
+ pid_t path_fixed_pid[PATH_FIXED_TYPE_MAX];
+
+ /* hw mute */
+ int mute;
+
+ /* For earphone control */
+ int inserted;
+ int ear_auto;
+
+ /* for alsa scenario, aquila */
+ gain_status_t gain_status;
+ path_status_t path_status;
+
+ gain_status_t p_gain_status;
+ path_status_t p_path_status;
+
+ int lvol_dev_type;
+ int gain_debug_mode;
+
+ /* For Lock debugging */
+ pid_t pathlock_pid[AVSYS_AUDIO_LOCK_SLOT_MAX];
+
+ /* system route policy */
+ avsys_audio_route_policy_t route_policy;
+ int a2dp_status;
+ int earpiece_on;
+} avsys_audio_path_ex_info_t;
+
+int avsys_audio_path_ex_init(void);
+int avsys_audio_path_ex_fini(void);
+int avsys_audio_path_ex_reset(int forced);
+int avsys_audio_path_ex_dump(void);
+int avsys_audio_path_ex_set_path(int gain, int out, int in, int option);
+int avsys_audio_path_ex_get_path(int *gain, int *out, int *in, int *option);
+int avsys_audio_path_manage_earjack(void);
+int avsys_audio_path_ex_set_amp(const int onoff);
+int avsys_audio_path_ex_set_mute(const int mute);
+int avsys_audio_path_ex_get_mute(int *mute);
+int avsys_audio_path_set_volume(int handle);
+
+int avsys_audio_path_earjack_init(int *init_type, int *outfd);
+int avsys_audio_path_earjack_wait(int fd, int *current_type, int *new_type, int *is_auto_mute);
+int avsys_audio_path_earjack_process(int new_type);
+int avsys_audio_path_earjack_deinit(int fd);
+int avsys_audio_path_earjack_unlock(void);
+
+int avsys_audio_path_set_route_policy(avsys_audio_route_policy_t route);
+int avsys_audio_path_get_route_policy(avsys_audio_route_policy_t *route);
+int avsys_audio_path_check_loud(bool *loud);
+int avsys_audio_path_check_cp_audio(bool *cpaudio, bool *btpath);
+int avsys_audio_path_set_single_ascn(char *str);
+
+#endif /* __AVSYS_AUDIO_PATH_H__ */