first
This commit is contained in:
52
apps/earphone/wireless_mic/idev/adapter_idev.c
Normal file
52
apps/earphone/wireless_mic/idev/adapter_idev.c
Normal file
@ -0,0 +1,52 @@
|
||||
#include "adapter_idev.h"
|
||||
#include "app_config.h"
|
||||
|
||||
#if TCFG_WIRELESS_MIC_ENABLE
|
||||
|
||||
struct idev *adapter_idev_open(u16 id, void *parm)
|
||||
{
|
||||
struct idev *dev = NULL;
|
||||
list_for_each_adapter_idev(dev) {
|
||||
if (dev->id == id) {
|
||||
if (dev->open) {
|
||||
dev->open(parm);
|
||||
}
|
||||
return dev;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void adapter_idev_close(struct idev *dev)
|
||||
{
|
||||
if (dev && dev->close) {
|
||||
dev->close();
|
||||
}
|
||||
}
|
||||
|
||||
int adapter_idev_start(struct idev *dev, struct adapter_media *media)
|
||||
{
|
||||
if (dev && dev->start) {
|
||||
return dev->start(media);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void adapter_idev_stop(struct idev *dev)
|
||||
{
|
||||
if (dev && dev->stop) {
|
||||
dev->stop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int adapter_idev_event_deal(struct idev *dev, struct sys_event *event)
|
||||
{
|
||||
if (dev && dev->event_fun) {
|
||||
return dev->event_fun(event);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
43
apps/earphone/wireless_mic/idev/adapter_idev.h
Normal file
43
apps/earphone/wireless_mic/idev/adapter_idev.h
Normal file
@ -0,0 +1,43 @@
|
||||
#ifndef __ADAPTER_IDEV_H__
|
||||
#define __ADAPTER_IDEV_H__
|
||||
|
||||
#include "generic/typedef.h"
|
||||
#include "adapter_media.h"
|
||||
#include "wireless_mic_test.h"
|
||||
#include "app_config.h"
|
||||
|
||||
|
||||
enum adapter_idev_type {
|
||||
ADAPTER_IDEV_USB = 0x0,
|
||||
ADAPTER_IDEV_MIC,
|
||||
ADAPTER_IDEV_BT,
|
||||
};
|
||||
|
||||
|
||||
struct idev {
|
||||
u16 id;
|
||||
int (*open)(void *parm);
|
||||
void (*close)(void);
|
||||
int (*start)(struct adapter_media *media);
|
||||
void (*stop)(void);
|
||||
int (*event_fun)(struct sys_event *);
|
||||
//其他操作
|
||||
};
|
||||
|
||||
struct idev *adapter_idev_open(u16 id, void *parm);
|
||||
void adapter_idev_close(struct idev *dev);
|
||||
int adapter_idev_start(struct idev *dev, struct adapter_media *media);
|
||||
void adapter_idev_stop(struct idev *dev);
|
||||
int adapter_idev_event_deal(struct idev *dev, struct sys_event *event);
|
||||
|
||||
#define REGISTER_ADAPTER_IDEV(ops) \
|
||||
const struct idev ops sec(.adapter_idev)
|
||||
|
||||
extern const struct idev adapter_idev_begin[];
|
||||
extern const struct idev adapter_idev_end[];
|
||||
|
||||
#define list_for_each_adapter_idev(p) \
|
||||
for (p = adapter_idev_begin; p < adapter_idev_end; p++)
|
||||
|
||||
#endif//__ADAPTER_IDEV_H__
|
||||
|
||||
118
apps/earphone/wireless_mic/idev/idev_bt/adapter_idev_bt.c
Normal file
118
apps/earphone/wireless_mic/idev/idev_bt/adapter_idev_bt.c
Normal file
@ -0,0 +1,118 @@
|
||||
#include "adapter_idev.h"
|
||||
#include "adapter_idev_bt.h"
|
||||
#include "adapter_idev_ble.h"
|
||||
#include "list.h"
|
||||
#include "os/os_api.h"
|
||||
#include "circular_buf.h"
|
||||
#include "app_config.h"
|
||||
#include "adapter_process.h"
|
||||
#include "bt_edr_fun.h"
|
||||
#if TCFG_WIRELESS_MIC_ENABLE
|
||||
|
||||
#define LOG_TAG_CONST WIRELESSMIC
|
||||
#define LOG_TAG "[IDEV_BT]"
|
||||
#define LOG_ERROR_ENABLE
|
||||
#define LOG_DEBUG_ENABLE
|
||||
#define LOG_INFO_ENABLE
|
||||
#define LOG_DUMP_ENABLE
|
||||
#define LOG_CLI_ENABLE
|
||||
#include "debug.h"
|
||||
|
||||
struct _idev_bt idev_bt;
|
||||
#define __this (&idev_bt)
|
||||
|
||||
static int adapter_idev_bt_open(void *parm)
|
||||
{
|
||||
r_printf("adapter_idev_bt_open\n");
|
||||
|
||||
memset(__this, 0, sizeof(struct _idev_bt));
|
||||
|
||||
set_bt_dev_role(BT_AS_IDEV);
|
||||
|
||||
__this->parm = (struct _idev_bt_parm *)parm;
|
||||
|
||||
if (__this->parm->mode & BIT(IDEV_BLE)) {
|
||||
adapter_idev_ble_open(&__this->parm->ble_parm);
|
||||
}
|
||||
|
||||
bt_init();
|
||||
|
||||
__this->ble = &idev_ble;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int adapter_idev_bt_start(struct adapter_media *media)
|
||||
{
|
||||
printf("adapter_idev_bt_start\n");
|
||||
|
||||
if (__this->parm->mode & BIT(IDEV_BLE)) {
|
||||
adapter_idev_ble_start(NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int adapter_idev_bt_office(struct sys_event *event)
|
||||
{
|
||||
int ret = 0;
|
||||
if ((u32)event->arg == SYS_BT_EVENT_TYPE_CON_STATUS) {
|
||||
bt_connction_status_event_handler(&event->u.bt, __this);
|
||||
} else if ((u32)event->arg == SYS_BT_EVENT_TYPE_HCI_STATUS) {
|
||||
//bt_hci_event_handler(&event->u.bt, __this);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int adapter_idev_bt_event_deal(struct sys_event *event)
|
||||
{
|
||||
//r_printf("adapter_odev_bt_event_deal\n");
|
||||
|
||||
int ret = 0;
|
||||
switch (event->type) {
|
||||
case SYS_KEY_EVENT:
|
||||
break;
|
||||
case SYS_DEVICE_EVENT:
|
||||
break;
|
||||
case SYS_BT_EVENT:
|
||||
adapter_idev_bt_office(event);
|
||||
ret = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int adapter_idev_bt_close(void)
|
||||
{
|
||||
r_printf("adapter_idev_bt_close\n");
|
||||
|
||||
if (__this->parm->mode & BIT(IDEV_BLE)) {
|
||||
adapter_idev_ble_close(NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int adapter_idev_bt_stop(void *priv)
|
||||
{
|
||||
r_printf("adapter_idev_bt_stop\n");
|
||||
|
||||
if (__this->parm->mode & BIT(IDEV_BLE)) {
|
||||
adapter_idev_ble_stop(NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
REGISTER_ADAPTER_IDEV(adapter_idev_bt) = {
|
||||
.id = ADAPTER_IDEV_BT,
|
||||
.open = adapter_idev_bt_open,
|
||||
.close = adapter_idev_bt_close,
|
||||
.start = adapter_idev_bt_start,
|
||||
.stop = adapter_idev_bt_stop,
|
||||
.event_fun = adapter_idev_bt_event_deal,
|
||||
};
|
||||
#endif
|
||||
@ -0,0 +1,155 @@
|
||||
#include "adapter_idev.h"
|
||||
#include "adapter_idev_bt.h"
|
||||
#include "adapter_idev_ble.h"
|
||||
#include "app_config.h"
|
||||
#include "btstack/le/att.h"
|
||||
#include "btstack/le/le_user.h"
|
||||
#include "ble_user.h"
|
||||
#include "btcontroller_modules.h"
|
||||
#include "adapter_process.h"
|
||||
#include "adapter_wireless_dec.h"
|
||||
#if TCFG_WIRELESS_MIC_ENABLE
|
||||
|
||||
#define LOG_TAG_CONST WIRELESSMIC
|
||||
#define LOG_TAG "[IDEV_BLE]"
|
||||
#define LOG_ERROR_ENABLE
|
||||
#define LOG_DEBUG_ENABLE
|
||||
#define LOG_INFO_ENABLE
|
||||
#define LOG_DUMP_ENABLE
|
||||
#define LOG_CLI_ENABLE
|
||||
#include "debug.h"
|
||||
|
||||
struct _idev_ble idev_ble;
|
||||
#define __this (&idev_ble)
|
||||
|
||||
extern void bt_ble_adv_enable(u8 enable);
|
||||
extern void bt_ble_init(void);
|
||||
|
||||
int adpter_ble_send_data(u8 *data, u16 len)
|
||||
{
|
||||
if (__this->ble_opt) {
|
||||
u32 vaild_len = __this->ble_opt->get_buffer_vaild(0);
|
||||
if (vaild_len >= len) {
|
||||
return __this->ble_opt->send_data(NULL, data, len);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void adapter_ble_send_wakeup(void)
|
||||
{
|
||||
//putchar('W');
|
||||
}
|
||||
|
||||
static void adapter_ble_status_callback(void *priv, ble_state_e status)
|
||||
{
|
||||
switch (status) {
|
||||
case BLE_ST_IDLE:
|
||||
break;
|
||||
case BLE_ST_ADV:
|
||||
break;
|
||||
case BLE_ST_CONNECT:
|
||||
break;
|
||||
case BLE_ST_DISCONN:
|
||||
case BLE_ST_SEND_DISCONN:
|
||||
adapter_process_event_notify(ADAPTER_EVENT_IDEV_MEDIA_CLOSE, 0);
|
||||
break;
|
||||
case BLE_ST_NOTIFY_IDICATE:
|
||||
break;
|
||||
case BLE_ST_CONNECTION_UPDATE_OK:
|
||||
adapter_process_event_notify(ADAPTER_EVENT_IDEV_MEDIA_OPEN, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void adapter_ble_recieve_cbk(void *priv, u8 *buf, u16 len)
|
||||
{
|
||||
//r_printf("adapter --- ble_api_rx(%d) \n", len);
|
||||
//printf_buf(buf, len);
|
||||
adapter_wireless_dec_frame_write(buf, len);
|
||||
}
|
||||
|
||||
int adapter_idev_ble_open(void *priv)
|
||||
{
|
||||
r_printf("adapter_idev_ble_open\n");
|
||||
if (__this->status == IDEV_BLE_OPEN) {
|
||||
g_printf("adapter_idev_ble_already_open\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
memset(__this, 0, sizeof(struct _idev_ble));
|
||||
|
||||
#if TRANS_DATA_EN || BLE_WIRELESS_MIC_SERVER_EN
|
||||
ble_get_server_operation_table(&__this->ble_opt);
|
||||
__this->ble_opt->regist_recieve_cbk(0, adapter_ble_recieve_cbk);
|
||||
__this->ble_opt->regist_state_cbk(0, adapter_ble_status_callback);
|
||||
__this->ble_opt->regist_wakeup_send(NULL, adapter_ble_send_wakeup);
|
||||
#endif
|
||||
|
||||
__this->status = IDEV_BLE_OPEN;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int adapter_idev_ble_start(void *priv)
|
||||
{
|
||||
r_printf("adapter_idev_ble_start\n");
|
||||
|
||||
if (__this->status == IDEV_BLE_START) {
|
||||
r_printf("adapter_idev_ble_already_start\n");
|
||||
return 0;
|
||||
}
|
||||
__this->status = IDEV_BLE_START;
|
||||
|
||||
#if TRANS_DATA_EN || BLE_WIRELESS_MIC_SERVER_EN
|
||||
bt_ble_init();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int adapter_idev_ble_stop(void *priv)
|
||||
{
|
||||
r_printf("adapter_idev_ble_stop\n");
|
||||
if (__this->status == IDEV_BLE_STOP) {
|
||||
r_printf("adapter_idev_ble_already_stop\n");
|
||||
return 0;
|
||||
}
|
||||
__this->status = IDEV_BLE_STOP;
|
||||
|
||||
#if BLE_CLIENT_EN || TRANS_MULTI_BLE_EN || BLE_WIRELESS_MIC_SERVER_EN
|
||||
ble_module_enable(0);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int adapter_idev_ble_close(void *priv)
|
||||
{
|
||||
r_printf("adapter_idev_ble_close\n");
|
||||
|
||||
if (__this->status == IDEV_BLE_CLOSE) {
|
||||
r_printf("adapter_idev_ble_already_close\n");
|
||||
return 0;
|
||||
}
|
||||
__this->status = IDEV_BLE_CLOSE;
|
||||
|
||||
#if BLE_CLIENT_EN || TRANS_MULTI_BLE_EN || BLE_WIRELESS_MIC_SERVER_EN
|
||||
ble_module_enable(0);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int adapter_idev_ble_config(int cmd, void *parm)
|
||||
{
|
||||
switch (cmd) {
|
||||
case 0:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,31 @@
|
||||
#ifndef __ADAPTER_IDEV_BLE_H__
|
||||
#define __ADAPTER_IDEV_BLE_H__
|
||||
|
||||
#include "generic/typedef.h"
|
||||
|
||||
enum {
|
||||
IDEV_BLE_CLOSE,
|
||||
IDEV_BLE_OPEN,
|
||||
IDEV_BLE_START,
|
||||
IDEV_BLE_STOP,
|
||||
};
|
||||
|
||||
struct _idev_ble_parm {
|
||||
|
||||
};
|
||||
|
||||
struct _idev_ble {
|
||||
u8 status;
|
||||
struct ble_server_operation_t *ble_opt;
|
||||
};
|
||||
|
||||
int adapter_idev_ble_open(void *priv);
|
||||
int adapter_idev_ble_start(void *priv);
|
||||
int adapter_idev_ble_stop(void *priv);
|
||||
int adapter_idev_ble_close(void *priv);
|
||||
int adapter_idev_ble_config(int cmd, void *parm);
|
||||
|
||||
extern struct _idev_ble idev_ble;
|
||||
|
||||
#endif//__ADAPTER_IDEV_BLE_H__
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
#ifndef __ADAPTER_IDEV_BT_H__
|
||||
#define __ADAPTER_IDEV_BT_H__
|
||||
|
||||
#include "generic/typedef.h"
|
||||
|
||||
#include "adapter_idev_ble.h"
|
||||
|
||||
enum {
|
||||
IDEV_EDR = 0x0,
|
||||
IDEV_BLE,
|
||||
};
|
||||
|
||||
struct _idev_bt_parm {
|
||||
u8 mode;
|
||||
struct _idev_ble_parm ble_parm;
|
||||
};
|
||||
|
||||
struct _idev_bt {
|
||||
struct _idev_bt_parm *parm;
|
||||
struct _idev_ble *ble;
|
||||
};
|
||||
|
||||
#endif//__ADAPTER_IDEV_BT_H__
|
||||
|
||||
92
apps/earphone/wireless_mic/idev/idev_mic/adapter_idev_mic.c
Normal file
92
apps/earphone/wireless_mic/idev/idev_mic/adapter_idev_mic.c
Normal file
@ -0,0 +1,92 @@
|
||||
#include "adapter_idev_mic.h"
|
||||
#include "adapter_process.h"
|
||||
#include "adapter_adc.h"
|
||||
|
||||
#if TCFG_WIRELESS_MIC_ENABLE
|
||||
|
||||
|
||||
#define ADAPTER_IDEV_MIC_DEBUG_ENABLE
|
||||
|
||||
#ifdef ADAPTER_IDEV_MIC_DEBUG_ENABLE
|
||||
#define adapter_idev_mic_printf printf
|
||||
#define adapter_idev_mic_putchar putchar
|
||||
#define adapter_idev_mic_putbuf put_buf
|
||||
#else
|
||||
#define adapter_idev_mic_printf (...)
|
||||
#define adapter_idev_mic_putchar(...)
|
||||
#define adapter_idev_mic_putbuf (...)
|
||||
#endif //ADAPTER_IDEV_MIC_DEBUG_ENABLE
|
||||
|
||||
|
||||
|
||||
|
||||
#if (TCFG_AUDIO_ADC_ENABLE)
|
||||
|
||||
|
||||
#define ADAPTER_IDEV_MIC_DEBUG_ENABLE
|
||||
|
||||
#ifdef ADAPTER_IDEV_MIC_DEBUG_ENABLE
|
||||
#define adapter_idev_mic_printf printf
|
||||
#define adapter_idev_mic_putchar putchar
|
||||
#define adapter_idev_mic_putbuf put_buf
|
||||
#else
|
||||
#define adapter_idev_mic_printf (...)
|
||||
#define adapter_idev_mic_putchar(...)
|
||||
#define adapter_idev_mic_putbuf (...)
|
||||
#endif //ADAPTER_IDEV_MIC_DEBUG_ENABLE
|
||||
|
||||
|
||||
|
||||
|
||||
static int adapter_idev_mic_open(void *parm)
|
||||
{
|
||||
//adc初始化
|
||||
adapter_adc_init();
|
||||
//事件通知主流程, idev设备初始化完成
|
||||
adapter_process_event_notify(ADAPTER_EVENT_IDEV_INIT_OK, 0);
|
||||
return 0;
|
||||
}
|
||||
static int adapter_idev_mic_close(void)
|
||||
{
|
||||
//事件通知主流程停止媒体
|
||||
adapter_process_event_notify(ADAPTER_EVENT_IDEV_MEDIA_CLOSE, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int adapter_idev_mic_start(struct adapter_media *media)
|
||||
{
|
||||
//idev设备启动,这里mic输入比较简单, 这里直接告知主流程请求启动音频媒体
|
||||
adapter_process_event_notify(ADAPTER_EVENT_IDEV_MEDIA_OPEN, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void adapter_idev_mic_stop(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static int adapter_idev_mic_event_handle(struct sys_event *e)
|
||||
{
|
||||
//这里可以响应系统事件,根据设备情景, 将idev设备需要响应的事件在这里统一处理
|
||||
//可以响应按键事件、设备事件等, 根据实际情景自行解析
|
||||
int ret = 0;
|
||||
switch (e->type) {
|
||||
case SYS_DEVICE_EVENT:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
REGISTER_ADAPTER_IDEV(adapter_idev_mic) = {
|
||||
.id = ADAPTER_IDEV_MIC,
|
||||
.open = adapter_idev_mic_open,
|
||||
.close = adapter_idev_mic_close,
|
||||
.start = adapter_idev_mic_start,
|
||||
.stop = adapter_idev_mic_stop,
|
||||
.event_fun = adapter_idev_mic_event_handle,
|
||||
};
|
||||
|
||||
#endif//TCFG_AUDIO_ADC_ENABLE
|
||||
#endif
|
||||
@ -0,0 +1,9 @@
|
||||
#ifndef __ADAPTER_IDEV_MIC_H__
|
||||
#define __ADAPTER_IDEV_MIC_H__
|
||||
|
||||
#include "generic/typedef.h"
|
||||
#include "adapter_idev.h"
|
||||
|
||||
|
||||
#endif //__ADAPTER_IDEV_MIC_H__
|
||||
|
||||
Reference in New Issue
Block a user