feat: 添加杰理 JL7016 SOC 代码生成模板
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,206 @@
|
||||
// binary representation
|
||||
// attribute size in bytes (16), flags(16), handle (16), uuid (16/128), value(...)
|
||||
|
||||
#ifndef _LE_TRANS_DATA_H
|
||||
#define _LE_TRANS_DATA_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "app_config.h"
|
||||
//
|
||||
// gatt profile include file, generated by jieli gatt_inc_generator.exe
|
||||
//
|
||||
|
||||
static const uint8_t profile_data[] = {
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// 0x0001 PRIMARY_SERVICE 1800
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
0x0a, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x28, 0x00, 0x18,
|
||||
|
||||
/* CHARACTERISTIC, 2a00, READ | WRITE | DYNAMIC, */
|
||||
// 0x0002 CHARACTERISTIC 2a00 READ | WRITE | DYNAMIC
|
||||
0x0d, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x28, 0x0a, 0x03, 0x00, 0x00, 0x2a,
|
||||
// 0x0003 VALUE 2a00 READ | WRITE | DYNAMIC
|
||||
0x08, 0x00, 0x0a, 0x01, 0x03, 0x00, 0x00, 0x2a,
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// 0x0004 PRIMARY_SERVICE ae30
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
0x0a, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x28, 0x30, 0xae,
|
||||
|
||||
/* CHARACTERISTIC, ae01, WRITE_WITHOUT_RESPONSE | DYNAMIC, */
|
||||
// 0x0005 CHARACTERISTIC ae01 WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x0d, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x28, 0x04, 0x06, 0x00, 0x01, 0xae,
|
||||
// 0x0006 VALUE ae01 WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x08, 0x00, 0x04, 0x01, 0x06, 0x00, 0x01, 0xae,
|
||||
|
||||
/* CHARACTERISTIC, ae02, NOTIFY, */
|
||||
// 0x0007 CHARACTERISTIC ae02 NOTIFY
|
||||
0x0d, 0x00, 0x02, 0x00, 0x07, 0x00, 0x03, 0x28, 0x10, 0x08, 0x00, 0x02, 0xae,
|
||||
// 0x0008 VALUE ae02 NOTIFY
|
||||
0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0xae,
|
||||
// 0x0009 CLIENT_CHARACTERISTIC_CONFIGURATION
|
||||
0x0a, 0x00, 0x0a, 0x01, 0x09, 0x00, 0x02, 0x29, 0x00, 0x00,
|
||||
|
||||
/* CHARACTERISTIC, ae03, WRITE_WITHOUT_RESPONSE | DYNAMIC, */
|
||||
// 0x000a CHARACTERISTIC ae03 WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x0d, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x03, 0x28, 0x04, 0x0b, 0x00, 0x03, 0xae,
|
||||
// 0x000b VALUE ae03 WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x08, 0x00, 0x04, 0x01, 0x0b, 0x00, 0x03, 0xae,
|
||||
|
||||
/* CHARACTERISTIC, ae04, NOTIFY, */
|
||||
// 0x000c CHARACTERISTIC ae04 NOTIFY
|
||||
0x0d, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x03, 0x28, 0x10, 0x0d, 0x00, 0x04, 0xae,
|
||||
// 0x000d VALUE ae04 NOTIFY
|
||||
0x08, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x04, 0xae,
|
||||
// 0x000e CLIENT_CHARACTERISTIC_CONFIGURATION
|
||||
0x0a, 0x00, 0x0a, 0x01, 0x0e, 0x00, 0x02, 0x29, 0x00, 0x00,
|
||||
|
||||
/* CHARACTERISTIC, ae05, INDICATE, */
|
||||
// 0x000f CHARACTERISTIC ae05 INDICATE
|
||||
0x0d, 0x00, 0x02, 0x00, 0x0f, 0x00, 0x03, 0x28, 0x20, 0x10, 0x00, 0x05, 0xae,
|
||||
// 0x0010 VALUE ae05 INDICATE
|
||||
0x08, 0x00, 0x20, 0x00, 0x10, 0x00, 0x05, 0xae,
|
||||
// 0x0011 CLIENT_CHARACTERISTIC_CONFIGURATION
|
||||
0x0a, 0x00, 0x0a, 0x01, 0x11, 0x00, 0x02, 0x29, 0x00, 0x00,
|
||||
|
||||
/* CHARACTERISTIC, ae10, READ | WRITE | DYNAMIC, */
|
||||
// 0x0012 CHARACTERISTIC ae10 READ | WRITE | DYNAMIC
|
||||
0x0d, 0x00, 0x02, 0x00, 0x12, 0x00, 0x03, 0x28, 0x0a, 0x13, 0x00, 0x10, 0xae,
|
||||
// 0x0013 VALUE ae10 READ | WRITE | DYNAMIC
|
||||
0x08, 0x00, 0x0a, 0x01, 0x13, 0x00, 0x10, 0xae,
|
||||
|
||||
|
||||
#if 0
|
||||
//for uuid128,sample
|
||||
// PRIMARY_SERVICE, 0000F530-1212-EFDE-1523-785FEABCD123
|
||||
// CHARACTERISTIC, 0000F531-1212-EFDE-1523-785FEABCD123, NOTIFY,
|
||||
// CHARACTERISTIC, 0000F532-1212-EFDE-1523-785FEABCD123, WRITE_WITHOUT_RESPONSE | DYNAMIC,
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// 0x0014 PRIMARY_SERVICE 0000F530-1212-EFDE-1523-785FEABCD123
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
0x18, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x28, 0x23, 0xd1, 0xbc, 0xea, 0x5f, 0x78, 0x23, 0x15, 0xde, 0xef, 0x12, 0x12, 0x30, 0xf5, 0x00, 0x00,
|
||||
|
||||
/* CHARACTERISTIC, 0000F531-1212-EFDE-1523-785FEABCD123, NOTIFY, */
|
||||
// 0x0015 CHARACTERISTIC 0000F531-1212-EFDE-1523-785FEABCD123 NOTIFY
|
||||
0x1b, 0x00, 0x02, 0x00, 0x15, 0x00, 0x03, 0x28, 0x10, 0x16, 0x00, 0x23, 0xd1, 0xbc, 0xea, 0x5f, 0x78, 0x23, 0x15, 0xde, 0xef, 0x12, 0x12, 0x31, 0xf5, 0x00, 0x00,
|
||||
// 0x0016 VALUE 0000F531-1212-EFDE-1523-785FEABCD123 NOTIFY
|
||||
0x16, 0x00, 0x10, 0x02, 0x16, 0x00, 0x23, 0xd1, 0xbc, 0xea, 0x5f, 0x78, 0x23, 0x15, 0xde, 0xef, 0x12, 0x12, 0x31, 0xf5, 0x00, 0x00,
|
||||
// 0x0017 CLIENT_CHARACTERISTIC_CONFIGURATION
|
||||
0x0a, 0x00, 0x0a, 0x01, 0x17, 0x00, 0x02, 0x29, 0x00, 0x00,
|
||||
|
||||
/* CHARACTERISTIC, 0000F532-1212-EFDE-1523-785FEABCD123, WRITE_WITHOUT_RESPONSE | DYNAMIC, */
|
||||
// 0x0018 CHARACTERISTIC 0000F532-1212-EFDE-1523-785FEABCD123 WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x1b, 0x00, 0x02, 0x00, 0x18, 0x00, 0x03, 0x28, 0x04, 0x19, 0x00, 0x23, 0xd1, 0xbc, 0xea, 0x5f, 0x78, 0x23, 0x15, 0xde, 0xef, 0x12, 0x12, 0x32, 0xf5, 0x00, 0x00,
|
||||
// 0x0019 VALUE 0000F532-1212-EFDE-1523-785FEABCD123 WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x16, 0x00, 0x04, 0x03, 0x19, 0x00, 0x23, 0xd1, 0xbc, 0xea, 0x5f, 0x78, 0x23, 0x15, 0xde, 0xef, 0x12, 0x12, 0x32, 0xf5, 0x00, 0x00,
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// 0x0014 PRIMARY_SERVICE 1812
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
// 0x0a, 0x00, 0x02, 0x00, 0x34, 0x00, 0x00, 0x28, 0x12, 0x18,//ios app can't disconn
|
||||
|
||||
#if 0// authentication
|
||||
//
|
||||
10, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x28, 0x0A, 0x18, //primary service declaration
|
||||
13, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x03, 0x28, 0x02, 0x1C, 0x00, 0x50, 0x2A, //characteristic declaration
|
||||
15, 0x00, 0x02, 0x04, 0x1C, 0x00, 0x50, 0x2A, 0x02, 0x8A, 0x24, 0x66, 0x82, 0x34, 0x36, //PnP ID
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// 0x0040 PRIMARY_SERVICE ae3a
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
0x0a, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x28, 0x3a, 0xae,
|
||||
|
||||
/* CHARACTERISTIC, ae3b, WRITE_WITHOUT_RESPONSE | DYNAMIC, */
|
||||
// 0x0041 CHARACTERISTIC ae3b WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x0d, 0x00, 0x02, 0x00, 0x41, 0x00, 0x03, 0x28, 0x04, 0x42, 0x00, 0x3b, 0xae,
|
||||
// 0x0042 VALUE ae3b WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x08, 0x00, 0x04, 0x01, 0x42, 0x00, 0x3b, 0xae,
|
||||
|
||||
/* CHARACTERISTIC, ae3c, NOTIFY, */
|
||||
// 0x0043 CHARACTERISTIC ae3c NOTIFY
|
||||
0x0d, 0x00, 0x02, 0x00, 0x43, 0x00, 0x03, 0x28, 0x10, 0x44, 0x00, 0x3c, 0xae,
|
||||
// 0x0044 VALUE ae3c NOTIFY
|
||||
0x08, 0x00, 0x10, 0x00, 0x44, 0x00, 0x3c, 0xae,
|
||||
// 0x0045 CLIENT_CHARACTERISTIC_CONFIGURATION
|
||||
0x0a, 0x00, 0x0a, 0x01, 0x45, 0x00, 0x02, 0x29, 0x00, 0x00,
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// 0x0046 PRIMARY_SERVICE 1801
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
0x0a, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x28, 0x01, 0x18,
|
||||
|
||||
/* CHARACTERISTIC, 2a05, INDICATE, */
|
||||
// 0x0047 CHARACTERISTIC 2a05 INDICATE
|
||||
0x0d, 0x00, 0x02, 0x00, 0x47, 0x00, 0x03, 0x28, 0x20, 0x48, 0x00, 0x05, 0x2a,
|
||||
// 0x0048 VALUE 2a05 INDICATE
|
||||
0x08, 0x00, 0x20, 0x00, 0x48, 0x00, 0x05, 0x2a,
|
||||
// 0x0049 CLIENT_CHARACTERISTIC_CONFIGURATION
|
||||
0x0a, 0x00, 0x0a, 0x01, 0x49, 0x00, 0x02, 0x29, 0x00, 0x00,
|
||||
|
||||
#if RCSP_BTMATE_EN
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// 0x0004 PRIMARY_SERVICE ae00
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
0x0a, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x28, 0x00, 0xae,
|
||||
|
||||
/* CHARACTERISTIC, ae01, WRITE_WITHOUT_RESPONSE | DYNAMIC, */
|
||||
// 0x0040 CHARACTERISTIC ae01 WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x0d, 0x00, 0x02, 0x00, 0x81, 0x00, 0x03, 0x28, 0x04, 0x82, 0x00, 0x01, 0xae,
|
||||
// 0x0041 VALUE ae01 WRITE_WITHOUT_RESPONSE | DYNAMIC
|
||||
0x08, 0x00, 0x04, 0x01, 0x82, 0x00, 0x01, 0xae,
|
||||
|
||||
/* CHARACTERISTIC, ae02, NOTIFY, */
|
||||
// 0x0042 CHARACTERISTIC ae02 NOTIFY
|
||||
0x0d, 0x00, 0x02, 0x00, 0x83, 0x00, 0x03, 0x28, 0x10, 0x84, 0x00, 0x02, 0xae,
|
||||
// 0x0043 VALUE ae02 NOTIFY
|
||||
0x08, 0x00, 0x10, 0x00, 0x84, 0x00, 0x02, 0xae,
|
||||
// 0x0044 CLIENT_CHARACTERISTIC_CONFIGURATION
|
||||
0x0a, 0x00, 0x0a, 0x01, 0x85, 0x00, 0x02, 0x29, 0x00, 0x00,
|
||||
#endif
|
||||
// END
|
||||
0x00, 0x00,
|
||||
};
|
||||
//
|
||||
// characteristics <--> handles
|
||||
//
|
||||
#if RCSP_BTMATE_EN
|
||||
#define ATT_CHARACTERISTIC_ae01_02_VALUE_HANDLE 0x0082
|
||||
#define ATT_CHARACTERISTIC_ae02_02_VALUE_HANDLE 0x0084
|
||||
#define ATT_CHARACTERISTIC_ae02_02_CLIENT_CONFIGURATION_HANDLE 0x0085
|
||||
#endif
|
||||
|
||||
#define ATT_CHARACTERISTIC_2a00_01_VALUE_HANDLE 0x0003
|
||||
#define ATT_CHARACTERISTIC_ae01_01_VALUE_HANDLE 0x0006
|
||||
#define ATT_CHARACTERISTIC_ae02_01_VALUE_HANDLE 0x0008
|
||||
#define ATT_CHARACTERISTIC_ae02_01_CLIENT_CONFIGURATION_HANDLE 0x0009
|
||||
#define ATT_CHARACTERISTIC_ae03_01_VALUE_HANDLE 0x000b
|
||||
#define ATT_CHARACTERISTIC_ae04_01_VALUE_HANDLE 0x000d
|
||||
#define ATT_CHARACTERISTIC_ae04_01_CLIENT_CONFIGURATION_HANDLE 0x000e
|
||||
#define ATT_CHARACTERISTIC_ae05_01_VALUE_HANDLE 0x0010
|
||||
#define ATT_CHARACTERISTIC_ae05_01_CLIENT_CONFIGURATION_HANDLE 0x0011
|
||||
#define ATT_CHARACTERISTIC_ae10_01_VALUE_HANDLE 0x0013
|
||||
|
||||
#define ATT_CHARACTERISTIC_ae3b_01_VALUE_HANDLE 0x0042
|
||||
#define ATT_CHARACTERISTIC_ae3c_01_VALUE_HANDLE 0x0044
|
||||
#define ATT_CHARACTERISTIC_ae3c_01_CLIENT_CONFIGURATION_HANDLE 0x0045
|
||||
#define ATT_CHARACTERISTIC_2a05_01_VALUE_HANDLE 0x0048
|
||||
#define ATT_CHARACTERISTIC_2a05_01_CLIENT_CONFIGURATION_HANDLE 0x0049
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,227 @@
|
||||
|
||||
#include "app_config.h"
|
||||
#include "app_action.h"
|
||||
|
||||
#include "system/includes.h"
|
||||
#include "spp_user.h"
|
||||
#include "string.h"
|
||||
#include "circular_buf.h"
|
||||
#include "spp_trans_data.h"
|
||||
#include "bt_common.h"
|
||||
#include "btstack/avctp_user.h"
|
||||
|
||||
#if 0
|
||||
extern void printf_buf(u8 *buf, u32 len);
|
||||
#define log_info printf
|
||||
#define log_info_hexdump printf_buf
|
||||
#else
|
||||
#define log_info(...)
|
||||
#define log_info_hexdump(...)
|
||||
#endif
|
||||
|
||||
#define TEST_SPP_DATA_RATE 0
|
||||
|
||||
/* #define DEBUG_ENABLE */
|
||||
/* #include "debug_log.h" */
|
||||
#include "spp_trans_data.h"
|
||||
#if TRANS_DATA_EN || TRANS_MULTI_SPP_EN || TUYA_TRANS_EN || TUYA_DEMO_EN
|
||||
|
||||
#if TEST_SPP_DATA_RATE
|
||||
#define SPP_TIMER_MS (100)
|
||||
static u32 test_data_count;
|
||||
static u32 spp_timer_handle = 0;
|
||||
static u32 spp_test_start;
|
||||
#endif
|
||||
|
||||
/*
|
||||
打开流控使能后,确定配置接口 transport_spp_flow_cfg 被调用初始化配置
|
||||
然后使用过程 通过接口 transport_spp_flow_enable 来控制流控开关
|
||||
*/
|
||||
#define SPP_DATA_RECIEVT_FLOW 0//流控功能使能
|
||||
|
||||
//流控速度控制,可以不用更改
|
||||
#define FLOW_SEND_CREDITS_NUM 1 //控制命令中 控制可接收的数据包个数,发送给对方的,range(1~32)
|
||||
#define FLOW_SEND_CREDITS_TRIGGER_NUM 1 //触发更新控制命令的阈值,range(1 to <= FLOW_SEND_CREDITS_NUM)
|
||||
|
||||
|
||||
void rfcomm_change_credits_setting(u16 init_credits, u8 base);
|
||||
int rfcomm_send_cretits_by_profile(u16 rfcomm_cid, u16 credit, u8 auto_flag);
|
||||
|
||||
static struct spp_operation_t *spp_api = NULL;
|
||||
static u8 spp_state;
|
||||
static u16 spp_channel;
|
||||
|
||||
int transport_spp_send_data(u8 *data, u16 len)
|
||||
{
|
||||
if (spp_api) {
|
||||
log_info("spp_api_tx(%d) \n", len);
|
||||
/* log_info_hexdump(data, len); */
|
||||
clear_sniff_cnt();
|
||||
return spp_api->send_data(NULL, data, len);
|
||||
}
|
||||
return SPP_USER_ERR_SEND_FAIL;
|
||||
}
|
||||
|
||||
int transport_spp_send_data_check(u16 len)
|
||||
{
|
||||
if (spp_api) {
|
||||
if (spp_api->busy_state()) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void transport_spp_state_cbk(u8 state)
|
||||
{
|
||||
spp_state = state;
|
||||
switch (state) {
|
||||
case SPP_USER_ST_CONNECT:
|
||||
log_info("SPP_USER_ST_CONNECT ~~~\n");
|
||||
|
||||
break;
|
||||
|
||||
case SPP_USER_ST_DISCONN:
|
||||
log_info("SPP_USER_ST_DISCONN ~~~\n");
|
||||
spp_channel = 0;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void transport_spp_send_wakeup(void)
|
||||
{
|
||||
putchar('W');
|
||||
}
|
||||
|
||||
static void transport_spp_recieve_cbk(void *priv, u8 *buf, u16 len)
|
||||
{
|
||||
spp_channel = (u16)priv;
|
||||
log_info("spp_api_rx(%d) \n", len);
|
||||
log_info_hexdump(buf, len);
|
||||
clear_sniff_cnt();
|
||||
|
||||
#if TEST_SPP_DATA_RATE
|
||||
if ((buf[0] == 'A') && (buf[1] == 'F')) {
|
||||
spp_test_start = 1;//start
|
||||
} else if ((buf[0] == 'A') && (buf[1] == 'A')) {
|
||||
spp_test_start = 0;//stop
|
||||
}
|
||||
#endif
|
||||
|
||||
//loop send data for test
|
||||
if (transport_spp_send_data_check(len)) {
|
||||
transport_spp_send_data(buf, len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if TEST_SPP_DATA_RATE
|
||||
|
||||
static void test_spp_send_data(void)
|
||||
{
|
||||
u16 send_len = 250;
|
||||
if (transport_spp_send_data_check(send_len)) {
|
||||
test_data_count += send_len;
|
||||
transport_spp_send_data(&test_data_count, send_len);
|
||||
}
|
||||
}
|
||||
|
||||
static void test_timer_handler(void)
|
||||
{
|
||||
static u32 t_count = 0;
|
||||
|
||||
if (SPP_USER_ST_CONNECT != spp_state) {
|
||||
test_data_count = 0;
|
||||
spp_test_start = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (spp_test_start) {
|
||||
test_spp_send_data();
|
||||
}
|
||||
|
||||
if (++t_count < (1000 / SPP_TIMER_MS)) {
|
||||
return;
|
||||
}
|
||||
t_count = 0;
|
||||
|
||||
if (test_data_count) {
|
||||
log_info("\n-spp_data_rate: %d bps-\n", test_data_count * 8);
|
||||
test_data_count = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void transport_spp_init(void)
|
||||
{
|
||||
log_info("transport_spp_init\n");
|
||||
log_info("spp_file: %s", __FILE__);
|
||||
#if (USER_SUPPORT_PROFILE_SPP==1)
|
||||
spp_state = 0;
|
||||
spp_get_operation_table(&spp_api);
|
||||
spp_api->regist_recieve_cbk(0, transport_spp_recieve_cbk);
|
||||
spp_api->regist_state_cbk(0, transport_spp_state_cbk);
|
||||
spp_api->regist_wakeup_send(NULL, transport_spp_send_wakeup);
|
||||
#endif
|
||||
|
||||
#if TEST_SPP_DATA_RATE
|
||||
spp_timer_handle = sys_timer_add(NULL, test_timer_handler, SPP_TIMER_MS);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void transport_spp_disconnect(void)
|
||||
{
|
||||
if (SPP_USER_ST_CONNECT == spp_state) {
|
||||
log_info("transport_spp_disconnect\n");
|
||||
user_send_cmd_prepare(USER_CTRL_SPP_DISCONNECT, 0, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void timer_spp_flow_test(void)
|
||||
{
|
||||
static u8 sw = 0;
|
||||
if (spp_channel) {
|
||||
sw = !sw;
|
||||
transport_spp_flow_enable(sw);
|
||||
}
|
||||
}
|
||||
|
||||
//配置流控制的参数,蓝牙协议栈初始化前调用配置
|
||||
void transport_spp_flow_cfg(void)
|
||||
{
|
||||
#if SPP_DATA_RECIEVT_FLOW
|
||||
rfcomm_change_credits_setting(FLOW_SEND_CREDITS_NUM, FLOW_SEND_CREDITS_TRIGGER_NUM);
|
||||
|
||||
//for test
|
||||
/* sys_timer_add(0,timer_spp_flow_test,2000); */
|
||||
#endif
|
||||
}
|
||||
|
||||
//流控使能 EN: 1-停止收数 or 0-继续收数
|
||||
int transport_spp_flow_enable(u8 en)
|
||||
{
|
||||
int ret = -1;
|
||||
u16 credits = FLOW_SEND_CREDITS_NUM;
|
||||
|
||||
#if SPP_DATA_RECIEVT_FLOW
|
||||
if (spp_channel) {
|
||||
if (en) {
|
||||
credits = 0;
|
||||
}
|
||||
ret = rfcomm_send_cretits_by_profile(spp_channel, credits, !en);
|
||||
}
|
||||
#endif
|
||||
|
||||
log_info("transport_spp_flow_enable:%02x,%d,%d\n", spp_channel, en, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef __SPP_TRANS_DATA_H__
|
||||
#define __SPP_TRANS_DATA_H__
|
||||
|
||||
#include "typedef.h"
|
||||
#include "bt_common.h"
|
||||
|
||||
void transport_spp_init(void);
|
||||
|
||||
#endif//__RCSP_SPP_USER_H__
|
||||
Reference in New Issue
Block a user