update version to v2.1.7

This commit is contained in:
Artery-MCU
2025-11-27 18:18:48 +08:00
parent f4e3505c4a
commit 256ea4c81b
973 changed files with 4232 additions and 4335 deletions

View File

@@ -3,7 +3,8 @@
* @file audio_conf.h
* @brief usb audio config
**************************************************************************
* Copyright notice & Disclaimer
*
* Copyright (c) 2025, Artery Technology, All rights reserved.
*
* The software Board Support Package (BSP) that is made available to
* download from Artery official website is the copyrighted work of Artery.

View File

@@ -3,7 +3,8 @@
* @file audio_class.c
* @brief usb audio class type
**************************************************************************
* Copyright notice & Disclaimer
*
* Copyright (c) 2025, Artery Technology, All rights reserved.
*
* The software Board Support Package (BSP) that is made available to
* download from Artery official website is the copyrighted work of Artery.
@@ -580,32 +581,75 @@ static void audio_req_get_cur(void *udev, usb_setup_type *setup)
{
usbd_core_type *pudev = (usbd_core_type *)udev;
usb_audio_hid_type *paudio_hid = (usb_audio_hid_type *)pudev->class_handler->pdata;
if(HBYTE(setup->wIndex) == AUDIO_SPK_FEATURE_UNIT_ID)
switch(setup->bmRequestType & AUDIO_REQ_CONTROL_MASK)
{
if(HBYTE(setup->wValue) == AUDIO_MUTE_CONTROL)
{
paudio_hid->g_audio_cur[0] = paudio_hid->spk_mute;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_volume;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
}
else
{
if(HBYTE(setup->wValue) == AUDIO_MUTE_CONTROL)
{
paudio_hid->g_audio_cur[0] = paudio_hid->mic_mute;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_volume;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
case AUDIO_REQ_CONTROL_INTERFACE:
if(HBYTE(setup->wIndex) == AUDIO_SPK_FEATURE_UNIT_ID)
{
if(HBYTE(setup->wValue) == AUDIO_MUTE_CONTROL)
{
paudio_hid->g_audio_cur[0] = paudio_hid->spk_mute;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else if(HBYTE(setup->wValue) == AUDIO_VOLUME_CONTROL)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_volume;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
usbd_ctrl_unsupport(pudev);
}
}
else if(HBYTE(setup->wIndex) == AUDIO_MIC_FEATURE_UNIT_ID)
{
if(HBYTE(setup->wValue) == AUDIO_MUTE_CONTROL)
{
paudio_hid->g_audio_cur[0] = paudio_hid->mic_mute;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else if(HBYTE(setup->wValue) == AUDIO_VOLUME_CONTROL)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_volume;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
usbd_ctrl_unsupport(pudev);
}
}
else
{
usbd_ctrl_unsupport(pudev);
}
break;
case AUDIO_REQ_CONTROL_ENDPOINT:
if(HBYTE(setup->wValue) == AUDIO_SAMPLING_FREQ_CONTROL)
{
if(setup->wIndex == USBD_AUHID_AUDIO_MIC_IN_EPT)
{
*((uint32_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_freq;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else if(setup->wIndex == USBD_AUHID_AUDIO_SPK_OUT_EPT)
{
*((uint32_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_freq;
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
usbd_ctrl_unsupport(pudev);
}
}
else
{
usbd_ctrl_unsupport(pudev);
}
break;
default:
usbd_ctrl_unsupport(pudev);
break;
}
}
@@ -619,6 +663,7 @@ static void audio_req_set_cur(void *udev, usb_setup_type *setup)
{
usbd_core_type *pudev = (usbd_core_type *)udev;
usb_audio_hid_type *paudio_hid = (usb_audio_hid_type *)pudev->class_handler->pdata;
if(setup->wLength > 0)
{
usbd_ctrl_recv(pudev, paudio_hid->g_audio_cur, setup->wLength);
@@ -634,19 +679,35 @@ static void audio_req_set_cur(void *udev, usb_setup_type *setup)
{
paudio_hid->request_no = AUDIO_MUTE_CONTROL;
}
else
else if(HBYTE(setup->wValue) == AUDIO_VOLUME_CONTROL)
{
paudio_hid->request_no = AUDIO_VOLUME_CONTROL;
}
else
{
usbd_ctrl_unsupport(pudev);
}
break;
case AUDIO_REQ_CONTROL_ENDPOINT:
paudio_hid->enpd = setup->wIndex;
paudio_hid->request_no = AUDIO_FREQ_SET_CONTROL;
if(HBYTE(setup->wValue) == AUDIO_SAMPLING_FREQ_CONTROL)
{
paudio_hid->enpd = setup->wIndex;
paudio_hid->request_no = AUDIO_FREQ_SET_CONTROL;
}
else
{
usbd_ctrl_unsupport(pudev);
}
break;
default:
usbd_ctrl_unsupport(pudev);
break;
}
}
else
{
usbd_ctrl_unsupport(pudev);
}
}
/**
@@ -659,15 +720,31 @@ static void audio_req_get_min(void *udev, usb_setup_type *setup)
{
usbd_core_type *pudev = (usbd_core_type *)udev;
usb_audio_hid_type *paudio_hid = (usb_audio_hid_type *)pudev->class_handler->pdata;
if(HBYTE(setup->wIndex) == AUDIO_SPK_FEATURE_UNIT_ID)
switch(setup->bmRequestType & AUDIO_REQ_CONTROL_MASK)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_volume_limits[0];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_volume_limits[0];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
case AUDIO_REQ_CONTROL_INTERFACE:
if(HBYTE(setup->wIndex) == AUDIO_SPK_FEATURE_UNIT_ID)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_volume_limits[0];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else if(HBYTE(setup->wIndex) == AUDIO_MIC_FEATURE_UNIT_ID)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_volume_limits[0];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
usbd_ctrl_unsupport(pudev);
}
break;
case AUDIO_REQ_CONTROL_ENDPOINT:
usbd_ctrl_unsupport(pudev);
break;
default:
usbd_ctrl_unsupport(pudev);
break;
}
}
@@ -681,15 +758,31 @@ static void audio_req_get_max(void *udev, usb_setup_type *setup)
{
usbd_core_type *pudev = (usbd_core_type *)udev;
usb_audio_hid_type *paudio_hid = (usb_audio_hid_type *)pudev->class_handler->pdata;
if(HBYTE(setup->wIndex) == AUDIO_SPK_FEATURE_UNIT_ID)
switch(setup->bmRequestType & AUDIO_REQ_CONTROL_MASK)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_volume_limits[1];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_volume_limits[1];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
case AUDIO_REQ_CONTROL_INTERFACE:
if(HBYTE(setup->wIndex) == AUDIO_SPK_FEATURE_UNIT_ID)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_volume_limits[1];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else if(HBYTE(setup->wIndex) == AUDIO_MIC_FEATURE_UNIT_ID)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_volume_limits[1];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
usbd_ctrl_unsupport(pudev);
}
break;
case AUDIO_REQ_CONTROL_ENDPOINT:
usbd_ctrl_unsupport(pudev);
break;
default:
usbd_ctrl_unsupport(pudev);
break;
}
}
@@ -703,15 +796,31 @@ static void audio_req_get_res(void *udev, usb_setup_type *setup)
{
usbd_core_type *pudev = (usbd_core_type *)udev;
usb_audio_hid_type *paudio_hid = (usb_audio_hid_type *)pudev->class_handler->pdata;
if(HBYTE(setup->wIndex) == AUDIO_SPK_FEATURE_UNIT_ID)
switch(setup->bmRequestType & AUDIO_REQ_CONTROL_MASK)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_volume_limits[2];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_volume_limits[2];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
case AUDIO_REQ_CONTROL_INTERFACE:
if(HBYTE(setup->wIndex) == AUDIO_SPK_FEATURE_UNIT_ID)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->spk_volume_limits[2];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else if(HBYTE(setup->wIndex) == AUDIO_MIC_FEATURE_UNIT_ID)
{
*((uint16_t *)paudio_hid->g_audio_cur) = paudio_hid->mic_volume_limits[2];
usbd_ctrl_send(pudev, paudio_hid->g_audio_cur, setup->wLength);
}
else
{
usbd_ctrl_unsupport(pudev);
}
break;
case AUDIO_REQ_CONTROL_ENDPOINT:
usbd_ctrl_unsupport(pudev);
break;
default:
usbd_ctrl_unsupport(pudev);
break;
}
}
@@ -770,7 +879,10 @@ static void audio_get_interface(void *udev, usb_setup_type *setup)
{
usbd_ctrl_send(pudev, (uint8_t *)&paudio_hid->mic_alt_setting, 1);
}
else
{
usbd_ctrl_unsupport(pudev);
}
}
/**

View File

@@ -3,7 +3,8 @@
* @file audio_class.h
* @brief usb audio class file
**************************************************************************
* Copyright notice & Disclaimer
*
* Copyright (c) 2025, Artery Technology, All rights reserved.
*
* The software Board Support Package (BSP) that is made available to
* download from Artery official website is the copyrighted work of Artery.
@@ -86,6 +87,7 @@ extern "C" {
#define AUDIO_MUTE_CONTROL 0x01
#define AUDIO_VOLUME_CONTROL 0x02
#define AUDIO_FREQ_SET_CONTROL 0x03
#define AUDIO_SAMPLING_FREQ_CONTROL 0x01
/**
* @brief audio descriptor type

View File

@@ -3,7 +3,8 @@
* @file audio_desc.c
* @brief usb audio device descriptor
**************************************************************************
* Copyright notice & Disclaimer
*
* Copyright (c) 2025, Artery Technology, All rights reserved.
*
* The software Board Support Package (BSP) that is made available to
* download from Artery official website is the copyrighted work of Artery.

View File

@@ -3,7 +3,8 @@
* @file audio_desc.h
* @brief usb audio descriptor header file
**************************************************************************
* Copyright notice & Disclaimer
*
* Copyright (c) 2025, Artery Technology, All rights reserved.
*
* The software Board Support Package (BSP) that is made available to
* download from Artery official website is the copyrighted work of Artery.