feature:add audio AUDIOIOC_SETPARAMTER ioctl command

add AUDIOIOC_SETPARAMTER iotcl command in include/nuttx/audio/audio.h

Signed-off-by: genghuihui <genghuihui@xiaomi.com>
Change-Id: I8d88c649a87cb5fbdd0fb1f83c111a1fff380507
This commit is contained in:
genghuihui
2021-07-28 19:14:12 +08:00
committed by xiaoxiang
parent d8c0f7279e
commit 11a0bb3e98
2 changed files with 45 additions and 1 deletions
+44 -1
View File
@@ -59,7 +59,7 @@ typedef enum
{
DEFAULT_OUTPUT_SPEAKER = 0,
SCO_OUTPUT,
VoIP,
VOIP,
}aw88266a_dev_t;
typedef struct
@@ -124,6 +124,12 @@ struct aw88266a_dev_s
bool mute; /* True: Output is muted */
};
typedef struct
{
aw88266a_dev_t dev; /* aw88266a device type */
FAR char *dev_str; /* aw88266a device string */
}aw88266a_dev_info_t;
/****************************************************************************
* Private Function Prototypes
****************************************************************************/
@@ -339,6 +345,13 @@ static const struct audio_ops_s g_audioops =
.release = aw88266a_release,
};
static const aw88266a_dev_info_t g_aw88266a_device_mode[] =
{
{DEFAULT_OUTPUT_SPEAKER, "speaker"},
{SCO_OUTPUT, "sco"},
{VOIP, "voip"}
};
/****************************************************************************
* Private Functions
****************************************************************************/
@@ -1146,6 +1159,36 @@ static int aw88266a_resume(FAR struct audio_lowerhalf_s *dev)
static int aw88266a_ioctl(FAR struct audio_lowerhalf_s *dev, int cmd,
unsigned long arg)
{
FAR const char *ptr = (FAR const char *)arg;
uint8_t i;
FAR struct aw88266a_dev_s *priv = (FAR struct aw88266a_dev_s *)dev;
switch (cmd)
{
case AUDIOIOC_SETPARAMTER:
if ((strncmp(ptr, "mode=", 5)) == 0)
{
ptr = ptr + 5;
for (i = 0; i < ARRAY_SIZE(g_aw88266a_device_mode); i++)
{
if (strncmp(ptr, g_aw88266a_device_mode[i].dev_str,
strlen(g_aw88266a_device_mode[i].dev_str)) == 0)
{
aw88266a_set_device(priv, g_aw88266a_device_mode[i].dev);
}
}
}
break;
case AUDIOIOC_HWRESET:
audinfo("AUDIOIOC_HWRESET\n");
break;
default:
break;
}
audinfo("Return OK\n");
return OK;
}
+1
View File
@@ -112,6 +112,7 @@
#define AUDIOIOC_UNREGISTERMQ _AUDIOIOC(15)
#define AUDIOIOC_HWRESET _AUDIOIOC(16)
#define AUDIOIOC_SETBUFFERINFO _AUDIOIOC(17)
#define AUDIOIOC_SETPARAMTER _AUDIOIOC(18)
/* Audio Device Types *******************************************************/