diff --git a/hi-sle/README.md b/hi-sle/README.md
index 750993f39b1543cc0e325af04eecfcab40fecc4e..5c46424e9c3d2befe06e5e1029df9411fc78e47b 100644
--- a/hi-sle/README.md
+++ b/hi-sle/README.md
@@ -58,6 +58,9 @@
- [6. 测试说明](#6-测试说明)
- [7. 硬件总装](#7-硬件总装)
- [8. 软硬件调试](#8-软硬件调试)
+ - [ws63主控调试](#ws63主控调试)
+ - [遥控器整体调试](#遥控器整体调试)
+ - [控制第二辆小车(Hihope Car)](#控制第二辆小车hihope-car)
- [星闪手柄实操展示](#星闪手柄实操展示)
- [作者](#作者)
- [特别鸣谢 「梅科尔工作室」](#特别鸣谢-梅科尔工作室)
@@ -85,7 +88,7 @@ hi-sle
├── Autodesk_Fusion_360_Designs/ # Autodesk Fusion 360 模型设计文件夹
├── Bill_of_Materials/ # 物料清单
├── JLCPCB_Files/ # 立创PCB文件夹
-│── RemoteController_WS63E_Source_Code/ # NearLink_DK_WS63源代码
+│── RemoteController_WS63E_Source_Code/* # NearLink_DK_WS63源代码
│ ├── /SLE_OSPP_SERVER/
│ │ ├── inc/ # 头文件
│ │ └── src/ # 源文件
@@ -445,30 +448,42 @@ PDB电子元器件物料可直接由嘉立创EDA导出
### 8. 软硬件调试
-启动遥控器,检查是否有异常现象,如有异常现象,及时断电检查。正常情况下,遥控器应该可以正常工作。
-同时启动EulerCar小车sle和ros节点即可。
+
+#### ws63主控调试
+
+- 程序:[RemoteController_WS63E_Source_Code_one](RemoteController_WS63E_Source_Code_one)
+- 调试现象:ws63遥控小车前进、后退、左转、右转,每个控制指令中间间隔100ms;
+- 如需调整控制时间,可在`eulercar_control.h`中修改宏定义`PRESS_RELEASE_INTERVAL`即可
+
+
+
+
+
+#### 遥控器整体调试
+
+- 程序:[RemoteController_WS63E_Source_Code_two](RemoteController_WS63E_Source_Code_two)
+- 调试现象:左摇杆x轴控制小车左转、右转,右摇杆y轴控制小车前进、后退;
+- usb连接遥控器上的主控ws63, 同时启动EulerCar小车sle和ros节点即可。
+
+
+
+
+
+
+#### 控制第二辆小车(Hihope Car)
+
+
+
## 星闪手柄实操展示
->
手柄操作方法:
1. 左摇杆:控制EulerCar前进、后退、左转、右转
2. 右摇杆:控制EulerCar夹爪:张开、闭合
3. 左右扭子开关:切换不同EulerCar小车
-前进
-
-左转
-
-右转
-
-后退
-
-
-
-
-
+4. ...持续更新中
## 作者
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_one/CMakeLists.txt b/hi-sle/RemoteController_WS63E_Source_Code_one/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3c3b15d5dc2eddc3c7ff295f846ac3ed50ddb59f
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_one/CMakeLists.txt
@@ -0,0 +1,3 @@
+set(SOURCES "${SOURCES}" "${CMAKE_CURRENT_SOURCE_DIR}/SLE_OSPP_Server/src/eulercar_control.c" "${CMAKE_CURRENT_SOURCE_DIR}/SLE_OSPP_Server/src/button.c" "${CMAKE_CURRENT_SOURCE_DIR}/SLE_OSPP_Server/src/shake.c" "${CMAKE_CURRENT_SOURCE_DIR}/SLE_OSPP_Server/src/SLE_OSPP_Server_adv.c" "${CMAKE_CURRENT_SOURCE_DIR}/SLE_OSPP_Server/src/SLE_OSPP_Server.c" "${CMAKE_CURRENT_SOURCE_DIR}/SLE_OSPP_Server/inc" PARENT_SCOPE)
+
+
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_one/Kconfig b/hi-sle/RemoteController_WS63E_Source_Code_one/Kconfig
new file mode 100644
index 0000000000000000000000000000000000000000..66cd9aa2d0b5f3acd25333766f56c5bc7f1c97c1
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_one/Kconfig
@@ -0,0 +1,22 @@
+#===============================================================================
+# SAMPLE_SUPPORT_SLE_LED_SERVER:
+# 类型:布尔值(bool)
+# 提示信息:Support SLE_LED_SERVER Sample.
+# 默认值:n(不支持)
+# 依赖项:SAMPLE_SUPPORT_SLE_LED
+# 帮助信息:说明该选项表示支持 SLE_LED_SERVER 示例。
+
+# SAMPLE_SUPPORT_SLE_LED_CLIENT:
+# 类型:布尔值(bool)
+# 提示信息:Support SLE_LED_CLIENT Sample.
+# 默认值:n(不支持)
+# 依赖项:SAMPLE_SUPPORT_SLE_LED
+# 帮助信息:说明该选项表示支持 SLE_LED_CLIENT 示例。
+#===============================================================================
+config SAMPLE_SUPPORT_SLE_OSPP_SERVER
+ bool
+ prompt "使能星闪遥控器"
+ default n
+ depends on SAMPLE_SUPPORT_SLE_LED
+ help
+ This option means support SLE_LED_SERVER Sample.
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/SLE_OSPP_Server.h b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/SLE_OSPP_Server.h
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/SLE_OSPP_Server.h
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/SLE_OSPP_Server.h
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/SLE_OSPP_Server_adv.h b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/SLE_OSPP_Server_adv.h
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/SLE_OSPP_Server_adv.h
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/SLE_OSPP_Server_adv.h
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/button.h b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/button.h
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/button.h
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/button.h
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/eulercar_control.h b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/eulercar_control.h
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/eulercar_control.h
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/eulercar_control.h
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/shake.h b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/shake.h
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/inc/shake.h
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/inc/shake.h
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/log/log b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/log/log
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/log/log
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/log/log
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/log/log_old b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/log/log_old
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/log/log_old
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/log/log_old
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/SLE_OSPP_Server.c b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/SLE_OSPP_Server.c
similarity index 59%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/SLE_OSPP_Server.c
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/SLE_OSPP_Server.c
index c81bf10fb4727d1bbab3d50670c282f8d8ba9c0a..24e5aa6997e0944aaa15ad52075b45db03f8e2b0 100644
--- a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/SLE_OSPP_Server.c
+++ b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/SLE_OSPP_Server.c
@@ -42,9 +42,9 @@
#define RIGHT_JOYSTICK_Z_PIN 6
// 定义ADC通道
#define LEFT_JOYSTICK_X_Channel 1
-#define LEFT_JOYSTICK_Y_Channel 3 //2
-#define RIGHT_JOYSTICK_X_Channel 0
-#define RIGHT_JOYSTICK_Y_Channel 3
+#define LEFT_JOYSTICK_Y_Channel 2
+#define RIGHT_JOYSTICK_X_Channel 3
+#define RIGHT_JOYSTICK_Y_Channel 0
#define ADC_AUTO_SAMPLE_TEST_TIMES 500
#define FILTER_WINDOW_SIZE 10 // 定义滤波窗口大小
@@ -76,412 +76,31 @@ uint16_t g_service_handle = 0;
/* SLE 通知属性句柄 */
uint16_t g_property_handle = 0;
-// 初始化摇杆引脚
-void Joystick_Init(void)
+void eulercar_control_task(const char *arg)
{
- // 配置左摇杆Z轴引脚为GPIO模式并设置为输入
- uapi_pin_set_mode(LEFT_JOYSTICK_Z_PIN, HAL_PIO_FUNC_GPIO);
- uapi_gpio_set_dir(LEFT_JOYSTICK_Z_PIN, GPIO_DIRECTION_INPUT);
- uapi_pin_set_pull(LEFT_JOYSTICK_Z_PIN, PIN_PULL_TYPE_DOWN);
-
- // 配置右摇杆Z轴引脚为GPIO模式并设置为输入
- uapi_pin_set_mode(RIGHT_JOYSTICK_Z_PIN, HAL_PIO_FUNC_GPIO);
- uapi_gpio_set_dir(RIGHT_JOYSTICK_Z_PIN, GPIO_DIRECTION_INPUT);
- uapi_pin_set_pull(RIGHT_JOYSTICK_Z_PIN, PIN_PULL_TYPE_DOWN);
-}
-
-gpio_level_t Left_Joystick_Read_Z(void)
-{
- return uapi_gpio_get_val(LEFT_JOYSTICK_Z_PIN);
-}
-
-// typedef struct
-// {
-// int xStatus; // 0: 暂停, 1: 左转, 2: 右转
-// int yStatus; // 0: 暂停, 1: 前进, 2: 后退
-// int lastXStatus; // 上次的X轴状态
-// int lastYStatus; // 上次的Y轴状态
-// } JoystickStatus;
-
-// void updateJoystickStatus(JoystickStatus *joystick, uint16_t xValue, uint16_t yValue)
-// {
-// // 更新X轴状态
-// if (xValue < 1000)
-// {
-// joystick->xStatus = 1; // 左转
-// printf("X轴左推\n");
-// }
-// else if (xValue > 2000)
-// {
-// joystick->xStatus = 2; // 右转
-// printf("X轴右推\n");
-// }
-// else
-// {
-// joystick->xStatus = 0; // 暂停
-// }
-
-// // 更新Y轴状态
-// if (yValue < 1000)
-// {
-// joystick->yStatus = 1; // 前进
-// printf("Y轴上推\n");
-// }
-// else if (yValue > 2000)
-// {
-// joystick->yStatus = 2; // 后退
-// printf("Y轴下推\n");
-// }
-// else
-// {
-// joystick->yStatus = 0; // 暂停
-// }
-
-// // 处理X轴状态变化
-// if (joystick->xStatus != joystick->lastXStatus)
-// {
-// if (joystick->xStatus == 1)
-// {
-// eulercar_control_left();
-// }
-// else if (joystick->xStatus == 2)
-// {
-// eulercar_control_right();
-// }
-// joystick->lastXStatus = joystick->xStatus;
-// }
-
-// // 处理Y轴状态变化
-// if (joystick->yStatus != joystick->lastYStatus)
-// {
-// if (joystick->yStatus == 1)
-// {
-// eulercar_control_forward();
-// }
-// else if (joystick->yStatus == 2)
-// {
-// eulercar_control_backward();
-// }
-// joystick->lastYStatus = joystick->yStatus;
-// }
-
-// // 检查是否需要暂停
-// if (joystick->xStatus == 0 && joystick->yStatus == 0 &&
-// (joystick->lastXStatus != 0 || joystick->lastYStatus != 0))
-// {
-// eulercar_control_stop();
-// joystick->lastXStatus = 0;
-// joystick->lastYStatus = 0;
-// }
-// }
-// void test_adc_callback(uint8_t ch, uint32_t *buffer, uint32_t length, bool *next)
-// {
-// UNUSED(next); // 未使用的参数
-
-// static JoystickStatus leftJoystick = {0, 0, -1, -1};
-// static JoystickStatus rightJoystick = {0, 0, -1, -1};
-
-// uint16_t value = buffer[length - 1];
-// printf("channel: %d, Filtered voltage: %dmv\n", ch, value);
-
-// if (ch == LEFT_JOYSTICK_X_Channel)
-// {
-// updateJoystickStatus(&leftJoystick, value, leftJoystick.yStatus);
-// }
-// else if (ch == LEFT_JOYSTICK_Y_Channel)
-// {
-// updateJoystickStatus(&leftJoystick, leftJoystick.xStatus, value);
-// }
-// else if (ch == RIGHT_JOYSTICK_X_Channel)
-// {
-// updateJoystickStatus(&rightJoystick, value, rightJoystick.yStatus);
-// }
-// else if (ch == RIGHT_JOYSTICK_Y_Channel)
-// {
-// updateJoystickStatus(&rightJoystick, rightJoystick.xStatus, value);
-// }
-// }
-// typedef struct
-// {
-// int xStatus; // 0: 暂停, 1: 左转, 2: 右转
-// int lastXStatus; // 上次的X轴状态
-// } JoystickStatus;
-
-// void updateJoystickStatus(JoystickStatus *joystick, uint16_t xValue, int joystickType)
-// {
-// // 更新X轴状态
-// if (xValue < 1000)
-// {
-// joystick->xStatus = 1; // 左转
-// printf("X轴左推\n");
-// }
-// else if (xValue > 2000)
-// {
-// joystick->xStatus = 2; // 右转
-// printf("X轴右推\n");
-// }
-// else
-// {
-// joystick->xStatus = 0; // 暂停
-// }
-
-// // 处理X轴状态变化
-// if (joystick->xStatus != joystick->lastXStatus)
-// {
-// if (joystickType == 0) // 左摇杆
-// {
-// if (joystick->xStatus == 1)
-// {
-// eulercar_control_left();
-// }
-// else if (joystick->xStatus == 2)
-// {
-// eulercar_control_right();
-// }
-// }
-// else if (joystickType == 1) // 右摇杆
-// {
-// if (joystick->xStatus == 1)
-// {
-// eulercar_control_forward();
-// }
-// else if (joystick->xStatus == 2)
-// {
-// eulercar_control_backward();
-// }
-// }
-// joystick->lastXStatus = joystick->xStatus;
-// }
-
-// // 检查是否需要暂停
-// if (joystick->xStatus == 0 && joystick->lastXStatus != 0)
-// {
-// eulercar_control_stop();
-// joystick->lastXStatus = 0;
-// }
-// }
-
-// void test_adc_callback_X(uint8_t ch, uint32_t *buffer, uint32_t length, bool *next)
-// {
-// UNUSED(next); // 未使用的参数
-
-// // static JoystickStatus leftJoystick = {0, -1};
-
-// uint16_t value = buffer[length - 1];
-// printf("channel: %d, Filtered voltage: %dmv\n", ch, value);
-
-// if (ch == LEFT_JOYSTICK_X_Channel)
-// {
-// // updateJoystickStatus(&leftJoystick, value, 0); // 左摇杆
-// // // 更新X轴状态
-// if (value < 1000)
-// {
-// printf("X轴左推\n");
-// eulercar_control_left();
-// }
-// else if (value > 2000)
-// {
-// printf("X轴右推\n");
-// eulercar_control_right();
-// }
-// else
-// {
-// eulercar_control_stop();
-// }
-// }
-// // else if (ch == RIGHT_JOYSTICK_X_Channel)
-// // {
-// // updateJoystickStatus(&rightJoystick, value, 1); // 右摇杆
-// // }
-// }
-
-#define ACTION 1
-#define NONE 0
-
-int sum;
-int num;
-int fil_buffer = 0;
-
-int j = 1;
-int *num_buff;
-
-int stop_x =0;
-int stop_y = 0;
-int stop = 1;
-
-void test_adc_callback_X(uint8_t ch, uint32_t *buffer, uint32_t length, bool *next)
-{
- UNUSED(next); // 未使用的参数
- // static JoystickStatus rightJoystick = {0, -1};
- sum = 0;
- num = 0;
- if (ch == LEFT_JOYSTICK_X_Channel)
- {
- for (uint32_t i = 0; i < length; i++)
- {
-
- // 打印ADC通道和电压值
- if(length > 2)
- {
- if((buffer[i] < 1500 || buffer[i] > 1900) && buffer[i] != 0)
- {
- sum += buffer[i];
- num +=1;
- // osal_printk("[IRQ]channel: %d, voltage: %dmv\r\n", ch, buffer[i]);
- }
- }
- }
- if(num >= (signed int)length / 2)
- {
- fil_buffer = sum / num;
- if(fil_buffer < 1)
- {
- fil_buffer = 0;
- }
- }
- else
- {
- printf(" -number- \n");
- fil_buffer = 0;
- }
- printf("channel: %d, ---XXX-Filtered voltage: %dmv\n", ch, fil_buffer);
- printf("length = %d\n",length);
-
- if (fil_buffer < 1000 && fil_buffer !=0 )
- {
- printf("X轴左推\n");
- eulercar_control_left();
- stop = 0;
- }
- else if (fil_buffer > 2000 && fil_buffer !=0)
- {
- printf("X轴右推\n");
- eulercar_control_right();
- stop = 0;
- }
- else
- {
- // eulercar_control_stop();
- stop_x =1;
- }
-
- }
-}
-
+ UNUSED(arg);
-void test_adc_callback_Y(uint8_t ch, uint32_t *buffer, uint32_t length, bool *next)
-{
- UNUSED(next); // 未使用的参数
- // static JoystickStatus rightJoystick = {0, -1};
- sum = 0;
- num = 0;
- if (ch == LEFT_JOYSTICK_Y_Channel)
+ while (1)
{
- for (uint32_t i = 0; i < length; i++)
- {
-
- // 打印ADC通道和电压值
- // osal_printk("[IRQ]channel: %d, voltage: %dmv\r\n", ch, buffer[i]);
- if(length > 2)
- {
- if((buffer[i] < 1000 || buffer[i] > 2000) && buffer[i] != 0)
- {
- sum += buffer[i];
- num +=1;
- osal_printk("[IRQ]channel: %d, voltage: %dmv\r\n", ch, buffer[i]);
- }
- }
- }
- if(num >= (signed int)length / 2)
- {
- fil_buffer = sum / num;
- if(fil_buffer < 1)
- {
- fil_buffer = 0;
- }
- }
- else
- {
- printf(" -number- \n");
- fil_buffer = 0;
- }
- printf("channel: %d, ---YYY--Filtered voltage: %dmv\n", ch, fil_buffer);
- printf("length = %d\n",length);
-
-
-
- if (fil_buffer < 1000 && fil_buffer !=0 )
- {
- printf("Y轴上推\n");
- eulercar_control_forward();
- stop = 0;
- }
- else if (fil_buffer > 2000 && fil_buffer !=0)
- {
- printf("Y轴下推\n");
- eulercar_control_backward();
- stop = 0;
- }
- else
- {
- // eulercar_control_stop();
- stop_y =1;
- }
- }
-
-
+ eulercar_control_backward();
+ eulercar_control_stop();
-}
+ eulercar_control_forward();
+ eulercar_control_stop();
+ eulercar_control_left();
+ eulercar_control_stop();
-void joystick_task(const char *arg)
-{
- UNUSED(arg);
- osal_printk("start adc sample test");
- uapi_adc_init(ADC_CLOCK_500KHZ);
- uapi_adc_power_en(AFE_SCAN_MODE_MAX_NUM, true);
- adc_scan_config_t config = {
- .type = 0,
- .freq = 1,
- };
-
- while (1)
- {
- uapi_adc_auto_scan_ch_enable(LEFT_JOYSTICK_Y_Channel, config, test_adc_callback_Y);
- uapi_adc_auto_scan_ch_disable(LEFT_JOYSTICK_Y_Channel);
-
- uapi_adc_auto_scan_ch_enable(LEFT_JOYSTICK_X_Channel, config, test_adc_callback_X);
- uapi_adc_auto_scan_ch_disable(LEFT_JOYSTICK_X_Channel);
-
- if(stop == 0)
- {
- if(stop_x == 1 && stop_y == 1)
- {
-
- eulercar_control_stop();
- printf("星闪小车停止!");
- stop_x = 0;
- stop_y = 0;
- stop = 1;
- }
- }
-
-
- // if (Left_Joystick_Read_Z() == 1)
- // {
- // eulercar_control_stop();
- // osal_mdelay(10);
- // }
-
- osal_msleep(ADC_AUTO_SAMPLE_TEST_TIMES);
+ eulercar_control_right();
+ eulercar_control_stop();
}
}
-static void joystick_entry(void)
+static void eulercar_test_entry(void)
{
osal_task *task_handle = NULL; // 任务句柄初始化为NULL
osal_kthread_lock(); // 锁定内核线程,防止任务创建过程中被打断
- task_handle = osal_kthread_create((osal_kthread_handler)joystick_task, 0, "LedControlTask",
+ task_handle = osal_kthread_create((osal_kthread_handler)eulercar_control_task, 0, "EulerCarControlTask",
ADC_TASK_STACK_SIZE);
if (task_handle != NULL) // 如果任务创建成功
{
@@ -494,9 +113,8 @@ static void joystick_entry(void)
// 系统初始化函数,汇总所有初始化操作
void Controller_System_Init(void)
{
- Shake_Init(); // 初始化摇动传感器
- Joystick_Init(); // 初始化摇杆
- Key_Init(); // 初始化按键
+ Shake_Init(); // 初始化摇动传感器
+ Key_Init(); // 初始化按键
}
// SLE UUID基准数组
static uint8_t sle_uuid_base[] = {0x37, 0xBE, 0xA8, 0x80, 0xFC, 0x70, 0x11, 0xEA,
@@ -706,7 +324,7 @@ static void example_sle_pair_complete_cbk(uint16_t conn_id, const sle_addr_t *ad
if (status == ERRCODE_SUCC) // 如果配对成功
{
- joystick_entry();
+ eulercar_test_entry();
}
}
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/SLE_OSPP_Server_adv.c b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/SLE_OSPP_Server_adv.c
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/SLE_OSPP_Server_adv.c
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/SLE_OSPP_Server_adv.c
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/button.c b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/button.c
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/button.c
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/button.c
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/eulercar_control.c b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/eulercar_control.c
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/eulercar_control.c
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/eulercar_control.c
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/shake.c b/hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/shake.c
similarity index 100%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/shake.c
rename to hi-sle/RemoteController_WS63E_Source_Code_one/SLE_OSPP_Server/src/shake.c
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/SLE_OSPP_Server.h b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/SLE_OSPP_Server.h
new file mode 100644
index 0000000000000000000000000000000000000000..ca56a47cbf15cff2be40f68cb5aff41def12b4ac
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/SLE_OSPP_Server.h
@@ -0,0 +1,25 @@
+
+/**
+ * @defgroup
+ * @ingroup
+ * @{
+ */
+#ifndef SLE_LED_SERVER_H
+#define SLE_LED_SERVER_H
+
+#include "sle_ssap_server.h"
+// #include "gpio.h" // GPIO操作相关的头文件
+// #include "pinctrl_porting.h"
+
+// 这些UUID的值是如何确定的?
+
+/* Service UUID 服务UUID*/
+#define SLE_UUID_SERVER_SERVICE 0xABCD
+
+/* Notify Repoert UUID 通知报告UUID*/
+#define SLE_UUID_SERVER_NTF_REPORT 0x1122
+
+/* Property UUID 特征信息UUID*/
+#define SLE_UUID_SERVER_PROPERTY 0x3344
+
+#endif
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/SLE_OSPP_Server_adv.h b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/SLE_OSPP_Server_adv.h
new file mode 100644
index 0000000000000000000000000000000000000000..c0222d3e0a97c60eff32469cd4d06cc17a69ed74
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/SLE_OSPP_Server_adv.h
@@ -0,0 +1,96 @@
+/*
+# 版权所有 (C) 2024 HiHope 开源组织。
+# 根据 Apache 许可证 2.0 版(“许可证”)授权;
+# 除非遵守许可证,否则您不得使用此文件。
+# 您可以在以下位置获取许可证的副本
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# 除非适用法律要求或书面同意,否则根据许可证分发的软件
+# 以“原样”分发,
+# 不附带任何明示或暗示的保证或条件。
+# 请参阅许可证,了解许可证下管理权限和
+# 限制的特定语言。
+*/
+
+/** 这个注释是 Doxygen 风格的注释,用于生成文档
+ * @defgroup
+ * @ingroup
+ * @{
+ */
+
+#ifndef SLE_LED_SERVER_ADV_H
+#define SLE_LED_SERVER_ADV_H
+
+/**
+ * @if Eng
+ * @brief Definitaion of BLE ADV 通用广播结构.
+ * @else
+ * @brief SLE 广播普通数据结构。
+ * @endif
+ */
+struct sle_adv_common_value {
+ uint8_t length;
+ uint8_t type;
+ uint8_t value;
+};
+
+/**
+ * @if Eng
+ * @brief Definitaion of BLE ADV Channel mapping.
+ * @else
+ * @brief SLE 广播信道映射。
+ * @endif
+ */
+typedef enum {
+ SLE_ADV_CHANNEL_MAP_77 = 0x01,
+ SLE_ADV_CHANNEL_MAP_78 = 0x02,
+ SLE_ADV_CHANNEL_MAP_79 = 0x04,
+ SLE_ADV_CHANNEL_MAP_DEFAULT = 0x07
+} sle_adv_channel_map;
+
+/**
+ * @if Eng
+ * @brief Definitaion of SLE ADV Data Type.
+ * @else
+ * @brief SLE 广播数据类型
+ * @endif
+ */
+typedef enum {
+ SLE_ADV_DATA_TYPE_DISCOVERY_LEVEL = 0x01, /*!< 发现等级 */
+ SLE_ADV_DATA_TYPE_ACCESS_MODE = 0x02, /*!< 接入层能力 */
+ SLE_ADV_DATA_TYPE_SERVICE_DATA_16BIT_UUID = 0x03, /*!< 标准服务数据信息 */
+ SLE_ADV_DATA_TYPE_SERVICE_DATA_128BIT_UUID = 0x04, /*!< 自定义服务数据信息 */
+ SLE_ADV_DATA_TYPE_COMPLETE_LIST_OF_16BIT_SERVICE_UUIDS = 0x05, /*!< 完整标准服务标识列表 */
+ SLE_ADV_DATA_TYPE_COMPLETE_LIST_OF_128BIT_SERVICE_UUIDS = 0x06, /*!< 完整自定义服务标识列表 */
+ SLE_ADV_DATA_TYPE_INCOMPLETE_LIST_OF_16BIT_SERVICE_UUIDS = 0x07, /*!< 部分标准服务标识列表 */
+ SLE_ADV_DATA_TYPE_INCOMPLETE_LIST_OF_128BIT_SERVICE_UUIDS = 0x08, /*!< 部分自定义服务标识列表 */
+ SLE_ADV_DATA_TYPE_SERVICE_STRUCTURE_HASH_VALUE = 0x09, /*!< 服务结构散列值 */
+ SLE_ADV_DATA_TYPE_SHORTENED_LOCAL_NAME = 0x0A, /*!< 设备缩写本地名称 */
+ SLE_ADV_DATA_TYPE_COMPLETE_LOCAL_NAME = 0x0B, /*!< 设备完整本地名称 */
+ SLE_ADV_DATA_TYPE_TX_POWER_LEVEL = 0x0C, /*!< 广播发送功率 */
+ SLE_ADV_DATA_TYPE_SLB_COMMUNICATION_DOMAIN = 0x0D, /*!< SLB通信域域名 */
+ SLE_ADV_DATA_TYPE_SLB_MEDIA_ACCESS_LAYER_ID = 0x0E, /*!< SLB媒体接入层标识 */
+ SLE_ADV_DATA_TYPE_EXTENDED = 0xFE, /*!< 数据类型扩展 */
+ SLE_ADV_DATA_TYPE_MANUFACTURER_SPECIFIC_DATA = 0xFF /*!< 厂商自定义信息 */
+} sle_adv_data_type;
+
+/**
+ * @if Eng
+ * @brief sle adv config and announce.
+ * @attention NULL
+ * @retval ERRCODE_SLE_SUCCESS Excute successfully
+ * @retval ERRCODE_SLE_FAIL Execute fail
+ * @par Dependency:
+ * @li NULL
+ * @else
+ * @brief sle广播配置和公开。
+ * @attention NULL
+ * @retval ERRCODE_SLE_SUCCESS 执行成功
+ * @retval ERRCODE_SLE_FAIL 执行失败
+ * @par 依赖:
+ * @li NULL
+ * @endif
+ */
+errcode_t example_sle_server_adv_init(void);
+#endif
\ No newline at end of file
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/button.h b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/button.h
new file mode 100644
index 0000000000000000000000000000000000000000..3eb03f8228809aba6c38936da10d9dccd7a87b1b
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/button.h
@@ -0,0 +1,19 @@
+#ifndef BUTTON_H
+#define BUTTON_H
+
+#include "pinctrl.h"
+#include "hal_gpio.h"
+#include "gpio.h"
+#include "osal_task.h"
+
+// 定义按键引脚
+#define LEFT_BUTTON_PIN 2
+#define RIGHT_BUTTON_PIN 4
+#define LEFT_TOGGLE_PIN 5
+#define RIGHT_TOGGLE_PIN 3
+
+// 初始化按键
+void Key_Init(void);
+
+
+#endif // KEY_H
\ No newline at end of file
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/eulercar_control.h b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/eulercar_control.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b645b66af10e874e41d873b346f7d52f79e8df2
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/eulercar_control.h
@@ -0,0 +1,26 @@
+#ifndef EULERCAR_CONTROL_H
+#define EULERCAR_CONTROL_H
+
+#include
+
+// 宏定义延时参数(毫秒)
+#define PRESS_RELEASE_INTERVAL 50
+#define LONG_PRESS_INTERVAL 100
+
+// 键盘报告结构体定义
+typedef struct
+{
+ uint8_t kind; // 键盘报告类型
+ uint8_t special_key; // 特殊按键
+ uint8_t reserve; // 保留字段
+ uint8_t key[6]; // 按键值数组
+} usb_hid_rcu_keyboard_report_t;
+
+// 函数声明
+void eulercar_control_forward(void);
+void eulercar_control_backward(void);
+void eulercar_control_left(void);
+void eulercar_control_right(void);
+void eulercar_control_stop(void);
+
+#endif // EULERCAR_CONTROL_H
\ No newline at end of file
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/shake.h b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/shake.h
new file mode 100644
index 0000000000000000000000000000000000000000..2a9379b6bfced0e91686768e68e8327988b035cf
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/inc/shake.h
@@ -0,0 +1,70 @@
+#ifndef SHAKE_H
+#define SHAKE_H
+
+#define SHAKE_PIN 11
+
+// 震动时长定义(单位:毫秒)
+#define VIBRATION_DURATION_POWER_ON 250 // 开发板上电震动时长
+#define VIBRATION_DURATION_CONN_CHANGE 500 // 星闪连接状态改变震动时长
+#define VIBRATION_DURATION_GRIPPER_LIMIT 100 // 夹爪行程极限震动时长
+#define VIBRATION_DURATION_CAR_CONTROL 100 // 控制小车震动时长
+
+/**
+ * @brief 开发板上电震动函数
+ *
+ * 该函数用于在开发板上电时触发震动马达震动。
+ */
+void Vibration_PowerOn(void);
+
+/**
+ * @brief 星闪连接状态改变震动函数
+ *
+ * 该函数用于在星闪连接状态改变(连接上或断连)时触发震动马达震动。
+ */
+void Vibration_ConnChange(void);
+
+/**
+ * @brief 夹爪行程极限震动函数
+ *
+ * 该函数用于在夹爪达到行程极限时触发震动马达震动。
+ */
+void Vibration_GripperLimit(void);
+
+/**
+ * @brief 控制小车震动函数
+ *
+ * 该函数用于在控制小车前进、后退、左转或右转时触发震动马达震动。
+ */
+void Vibration_CarControl(void);
+
+/**
+ * @brief 震动马达初始化函数
+ *
+ * 该函数用于初始化震动马达的相关硬件和软件资源。
+ */
+void Shake_Init(void);
+
+/**
+ * @brief 启动震动马达函数
+ *
+ * 该函数用于启动震动马达,使其开始震动。
+ */
+void Shake_Start(void);
+
+/**
+ * @brief 停止震动马达函数
+ *
+ * 该函数用于停止震动马达,使其停止震动。
+ */
+void Shake_Stop(void);
+
+/**
+ * @brief 震动马达震动函数
+ *
+ * @param duration 震动时长(单位:毫秒)
+ *
+ * 该函数用于使震动马达震动指定时长。
+ */
+void Shake_Buzz(unsigned int duration);
+
+#endif // SHAKE_H
\ No newline at end of file
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/log/log b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/log/log
new file mode 100644
index 0000000000000000000000000000000000000000..c71b80f23a83cbf807e32a5312c02d1684793713
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/log/log
@@ -0,0 +1,548 @@
+./service.sh
+[INFO] [launch]: All log files can be found below /root/.ros/log/2018-03-09-12-45-23-878167-hieulerpi1-2403
+[INFO] [launch]: Default logging verbosity is set to INFO
+[INFO] [nearlink_robot_node-1]: process started with pid [2404]
+[INFO] [bs21_ws73_ros2-2]: process started with pid [2406]
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.412] [uapi gle_init]
+[bs21_ws73_ros2-2] [bts][info] btsrv_task_init btsrv_init: task create success
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.412] ssapc client init
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.412] ssapc register inter cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [uapi gle_enable]
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [gle manger enable]enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle dd init
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle cm init enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [GLE DM][DM init] transmission management module init
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [GLE TM][TM init] transmission management module init
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle ssap init ok
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [GLE SM] start init
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [GLE DM][DM init] security management module init
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hadm init enter.
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle factory init enter.
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle glp init enter.
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [gle manager_enable]enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle read maximum adv data len
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] read access filter list size
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [GLE SM] read support cryptography algorithm
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci struct to stream opcode:0xc06, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] hci command encode send tl paramlen=0x0 opcode:0xc06
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci internal command send core send opcode=0xc06
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci internal command send core send opcode=0x40a
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci internal command send core send opcode=0x406
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci internal command send core send opcode=0x402
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.413] gle hci internal command send core send opcode=0x1c07
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] gle execute command cbk evindex:c06
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] opcode = 0x0c06, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] max_adv_data_len = 0x00fb
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] gle read maximum adv data len
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] gle hci struct to stream opcode:0x40a, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] hci command encode send tl paramlen=0x0 opcode:0x40a
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] [HCI]gle hci internal evt cbk unreg table->id = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] gle hci internal command send core send opcode=0xc07
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.414] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] gle execute command cbk evindex:40a
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] opcode = 0x040a, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] read access filter list size = 16
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] [TIMRE_ADD][STACK_TIMER] TIMER=0xb00011e0, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] gle hci struct to stream opcode:0x406, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] hci command encode send tl paramlen=0x0 opcode:0x406
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] [HCI]gle hci internal evt cbk unreg table->id = 0x18a0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] [TIMER_DEL][STACK_TIMER] TIMER=0xb00011e0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] gle execute command cbk evindex:406
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] opcode = 0x0406, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] get addr:0xb0:66:**:**:**:00
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001290, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] gle hci struct to stream opcode:0x402, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] hci command encode send tl paramlen=0x0 opcode:0x402
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.415] [HCI]gle hci internal evt cbk unreg table->id = 0x18a0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001290
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle execute command cbk evindex:402
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle hci read buffer size cfm result:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] [gle manger enable]result = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] [GLE DM] event = 0x0
+[bs21_ws73_ros2-2] [ACore] sle enable cbk in, result:0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] dev enable ret:0.
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] recover key fail, there is no key
+[bs21_ws73_ros2-2] sle enable
+[bs21_ws73_ros2-2] [ACore] sle device discovery in, action:0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.416] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] sle_set_local_addr 0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] [gle hci read buffer size] result = 0x0, opindex: 0x00000402
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] [gle hci read buffer size] acb data len: 254 num: 5, icb data len: 0 num: 0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001340, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] gle hci struct to stream opcode:0x1c07, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] hci command encode send tl paramlen=0x0 opcode:0x1c07
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] [HCI]gle hci internal evt cbk unreg table->id = 0x18a0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] gle hci internal command send core send opcode=0x405
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.420] gle hci internal command send core send opcode=0x1001
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.437] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001340
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.437] gle execute command cbk evindex:1c07
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.437] opcode = 0x1c07, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.437] [GLE SM] algo: 0x02 0x02 0x02 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.437] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.437] gle hci struct to stream opcode:0xc07, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.438] hci command encode send tl paramlen=0x0 opcode:0xc07
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.438] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.438] [HCI]gle hci internal evt cbk unreg table->id = 0x18a0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.438] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.438] gle execute command cbk evindex:c07
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.438] opcode = 0x0c07, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.438] supported_adv_sets_num = 0x8
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001130, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] gle hci struct to stream opcode:0x405, stream_len=0x6
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] hci command encode send tl paramlen=0x6 opcode:0x405
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] [HCI]gle hci internal evt cbk unreg table->id = 0x18a0
+
+
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001130
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] gle execute command cbk evindex:405
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] opcode = 0x0405, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.439] gle set public address status success.
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.440] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.440] gle hci struct to stream opcode:0x1001, stream_len=0x8
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.440] hci command encode send tl paramlen=0x8 opcode:0x1001
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.440] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.440] [HCI]gle hci internal evt cbk unreg table->id = 0x405
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.440] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.440] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.440] gle hci internal command send core send opcode=0x406
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] gle execute command cbk evindex:1001
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] opcode = 0x1001, cmd_result = 0xb
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] [dd]event = 0x8
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] [SLE SCAN CBK] event: 8.
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] start device seek.
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001290, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] gle hci struct to stream opcode:0x406, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] hci command encode send tl paramlen=0x0 opcode:0x406
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.457] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] [HCI]gle hci internal evt cbk unreg table->id = 0x1400
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] scan_enable = 0x1, filter_duplicates = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] gle hci internal command send core send opcode=0x1002
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001290
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] gle execute command cbk evindex:406
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] opcode = 0x0406, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] get addr:0xb0:66:**:**:**:00
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001370, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] gle hci struct to stream opcode:0x1002, stream_len=0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] hci command encode send tl paramlen=0x2 opcode:0x1002
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.458] [HCI]gle hci internal evt cbk unreg table->id = 0x1400
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.459] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001370
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.459] gle execute command cbk evindex:1002
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.459] opcode = 0x1002, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.459] gle dd set scan enable cfm scan enabled
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.459] [dd]event = 0x9
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.459] [SLE SCAN CBK] event: 9.
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.459] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:45:24.459] [HCI]gle hci internal evt cbk unreg table->id = 0x1002
+[bs21_ws73_ros2-2] [ACore] sle device discovery in, action:5
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] op_ev = 0x180B
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] cfm_type = 0x1e
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] [dd]event = 0xb
+[bs21_ws73_ros2-2] [adv_report] event_type: 0x03, addr_type: 0x0000, addr: 3c:**:**:**:4e:33
+[bs21_ws73_ros2-2] [adv_report] data length: 6, data: 0x02 0x01 0x01 0x02 0x02 0x00
+[bs21_ws73_ros2-2] [ACore] sle device discovery in, action:7
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] stop device seek.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] scan_enable = 0x0, filter_duplicates = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001290, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] gle hci struct to stream opcode:0x1002, stream_len=0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] hci command encode send tl paramlen=0x2 opcode:0x1002
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.23] gle hci internal command send core send opcode=0x1002
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.37] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001290
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.37] gle execute command cbk evindex:1002
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.37] opcode = 0x1002, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] gle dd set scan enable cfm scan disabled
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] [dd]event = 0xa
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] [SLE SCAN CBK] event: 10.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] [HCI]gle hci internal evt cbk unreg table->id = 0x0
+[bs21_ws73_ros2-2] [ACore] sle device discovery in, action:6
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] create conn node, addr 3c:4a:xx:xx:xx:33
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] gle device link add node->status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] [GLE HCI] free hci cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] gle hci struct to stream opcode:0x1401, stream_len=0x1b
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] hci command encode send tl paramlen=0x1b opcode:0x1401
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] gle hci internal command send core send opcode=0x1401
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] [HCI]gle hci ev command status num_hci_command_packets(0x1) command_opcode:0x1401 status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] gle hci ev command status restart ertx opcode=0x1401, timeout:0x2710
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.38] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.39] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=10000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.39] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.39] gle hci ev command status in opcode=0x1401, status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] gle access link status report in
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] [gle connect cfm] result:0x0 status = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] [GLE TM][LCID init] LCID = 0x0000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] [GLE SM] init new remote device.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] gle ssap create tl link by addr add dev onaddr:0x3c:**:**:**:4e:33
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] [cm]event = 0x0
+[bs21_ws73_ros2-2] [Connected]
+[bs21_ws73_ros2-2] addr:3c:**:**:**:4e:33, handle:00
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] [GLE HCI] free hci cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] remote(0x3c:**:**:**:4e:33) conn_id(0)
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] remote(0x3c:**:**:**:4e:33) state(1)
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] gle hci struct to stream opcode:0x1801, stream_len=0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] hci command encode send tl paramlen=0x2 opcode:0x1801
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] gle hci internal command send core send opcode=0x1801
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.84] [GLE SM] pairing start, role: 0x0.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.94] [GLE SM] sm pairing request.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.94] [GLE SM] io_ability: 3, oob_flag 0, psk_flag: 0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] [TIMRE_ADD][STACK_TIMER] TIMER=0xa8000da0, TIME=30000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] [GLE AA] controller data send, co_hdl: 0x0000, data_index: 0x0134, len: 10.[2018-03-09 12:46:03.95] [HCI]gle hci ev command status num_hci_command_packets(0x1) command_opcode:0x1801 status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] gle hci ev command status restart ertx opcode=0x1801, timeout:0x2904
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=10500
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] gle hci ev command status in opcode=0x1801, status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] gle hci struct to stream opcode:0x1812, stream_len=0xf
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] hci command encode send tl paramlen=0xf opcode:0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.95] gle hci internal command send core send opcode=0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.96] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.96] gle read remote cs caps status(18)
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.96] [GLE DM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.96] [ACore] gle manager general event report opcode[05]
+[bs21_ws73_ros2-2] general event report opcode[05]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.96] gle execute command cbk evindex:1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.96] opcode = 0x1812, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.96] gle send controller data cfm, co_handle: 0x0000, data_index: 0x0134.[2018-03-09 12:46:03.96] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.96] [HCI]gle hci internal evt cbk unreg table->id = 0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.100] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.100] gle read remote features complete.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.100] cfm_type = 0x11
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.100] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.100] gle set data len, lcid: 0x0000, tx octets: 0xfe
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.100] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.100] [GLE HCI] free hci cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.101] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.101] gle hci struct to stream opcode:0x1802, stream_len=0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] hci command encode send tl paramlen=0x2 opcode:0x1802
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] gle hci internal command send core send opcode=0x1802
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] gle hci internal command send core send opcode=0x1804
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] [HCI]gle hci ev command status num_hci_command_packets(0x1) command_opcode:0x1802 status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] gle hci ev command status restart ertx opcode=0x1802, timeout:0x2904
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.102] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.103] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=10500
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.103] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.103] gle hci struct to stream opcode:0x1804, stream_len=0x4
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.103] hci command encode send tl paramlen=0x4 opcode:0x1804
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.103] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.103] gle hci ev command status in opcode=0x1802, status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.104] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.104] gle execute command cbk evindex:1804
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.104] [GLE HCI] set data len result = 0x0, opindex: 0x1804
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.104] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.104] [HCI]gle hci internal evt cbk unreg table->id = 0x1804
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.125] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.125] gle read remote version complete.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.125] cfm_type = 0x12
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.125] [cm]event = 0x7
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.125] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] [GLE SM] data recv, lcid: 0x0000, len: 10, opcode: 0x0135
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] [GLE SM] algorithm negotiate: 2 2 2 0[2018-03-09 12:46:03.138] [GLE SM] sm pairing confirm, authentication method: 1.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] [TIMER_DEL][STACK_TIMER] TIMER=0xa8000da0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] [TIMRE_ADD][STACK_TIMER] TIMER=0xa8000da0, TIME=30000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] [GLE AA] controller data send, co_hdl: 0x0000, data_index: 0x0136, len: 70.[2018-03-09 12:46:03.138] [GLE SM] event = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] [TIMRE_ADD][STACK_TIMER] TIMER=0xb00011e0, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.138] gle hci struct to stream opcode:0x1812, stream_len=0x4b
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.139] hci command encode send tl paramlen=0x4b opcode:0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.139] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.139] gle hci internal command send core send opcode=0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.139] [TIMER_DEL][STACK_TIMER] TIMER=0xb00011e0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.139] gle read remote cs caps status(18)
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.139] [GLE DM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.140] [ACore] gle manager general event report opcode[05]
+[bs21_ws73_ros2-2] general event report opcode[05]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.140] gle execute command cbk evindex:1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.140] opcode = 0x1812, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.140] gle send controller data cfm, co_handle: 0x0000, data_index: 0x0136.[2018-03-09 12:46:03.140] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.140] [HCI]gle hci internal evt cbk unreg table->id = 0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.163] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.163] [GLE SM] data recv, lcid: 0x0000, len: 64, opcode: 0x0137
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] [GLE SM] data recv, lcid: 0x0000, len: 16, opcode: 0x0138
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] [GLE SM] gle sm authentication procedure in, method: 0x1.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] [TIMER_DEL][STACK_TIMER] TIMER=0xa8000da0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] [TIMRE_ADD][STACK_TIMER] TIMER=0xa8000da0, TIME=30000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] [GLE AA] controller data send, co_hdl: 0x0000, data_index: 0x0139, len: 16.[2018-03-09 12:46:03.175] [GLE SM] authentication pdu send, opcode 0x0139.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001760, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] gle hci struct to stream opcode:0x1812, stream_len=0x15
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] hci command encode send tl paramlen=0x15 opcode:0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.175] gle hci internal command send core send opcode=0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.176] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001760
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.176] gle read remote cs caps status(18)
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.176] [GLE DM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.176] [ACore] gle manager general event report opcode[05]
+[bs21_ws73_ros2-2] general event report opcode[05]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.176] gle execute command cbk evindex:1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.176] opcode = 0x1812, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.176] gle send controller data cfm, co_handle: 0x0000, data_index: 0x0139.[2018-03-09 12:46:03.176] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.176] [HCI]gle hci internal evt cbk unreg table->id = 0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.225] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.225] [GLE SM] data recv, lcid: 0x0000, len: 16, opcode: 0x013a
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.225] [GLE SM] gle sm authentication procedure in, method: 0x1.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.234] [TIMER_DEL][STACK_TIMER] TIMER=0xa8000da0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] [TIMRE_ADD][STACK_TIMER] TIMER=0xa8000da0, TIME=30000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] [GLE AA] controller data send, co_hdl: 0x0000, data_index: 0x0141, len: 16.[2018-03-09 12:46:03.235] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001290, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] gle hci struct to stream opcode:0x1812, stream_len=0x15
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] hci command encode send tl paramlen=0x15 opcode:0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] gle hci internal command send core send opcode=0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001290
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] gle read remote cs caps status(18)
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] [GLE DM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] [ACore] gle manager general event report opcode[05]
+[bs21_ws73_ros2-2] general event report opcode[05]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] gle execute command cbk evindex:1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] opcode = 0x1812, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] gle send controller data cfm, co_handle: 0x0000, data_index: 0x0141.[2018-03-09 12:46:03.235] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.235] [HCI]gle hci internal evt cbk unreg table->id = 0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] [GLE SM] data recv, lcid: 0x0000, len: 16, opcode: 0x0142
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] [GLE SM] gle sm authentication procedure in, method: 0x1.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] [GLE SM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] gle acore config data write:1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] gle acore set product type sys_config 0x:0!
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] gle acore save sm key write_index:00!
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] gle acore config data write:2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] [GLE SM] enable encryption
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] [GLE AA] enable encryption, crypt 1, key_deriv 1, integr_chk 0.
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] remote(0x3c:**:**:**:0x4e:0x33) conn_id(0)
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.250] [2018-03-09 12:46:03.250] [GLE HCI] free hci cbk
+[bs21_ws73_ros2-2] auth status:0, crypto algo:2, key deriv algo:2, integr chk ind:0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.251] [TIMRE_ADD][STACK_TIMER] TIMER=0xa8000fb0, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.251] gle hci struct to stream opcode:0x1c03, stream_len=0x15
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.251] hci command encode send tl paramlen=0x15 opcode:0x1c03
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.251] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.251] gle hci internal command send core send opcode=0x1c03
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.252] [HCI]gle hci ev command status num_hci_command_packets(0x1) command_opcode:0x1c03 status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.252] gle hci ev command status restart ertx opcode=0x1c03, timeout:0x2904
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.252] [TIMER_DEL][STACK_TIMER] TIMER=0xa8000fb0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.252] [TIMRE_ADD][STACK_TIMER] TIMER=0xa8000fb0, TIME=10500
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.252] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.252] gle hci ev command status in opcode=0x1c03, status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] [TIMER_DEL][STACK_TIMER] TIMER=0xa8000fb0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] op_ev = 0x0011
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] cfm_type = 0x27
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] [GLE SM] encrypt change, lcid: 0x0000, status: 0x0, encryption change: 0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] [TIMER_DEL][STACK_TIMER] TIMER=0xa8000da0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] [GLE SM] timer repeated attempts, job: 1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] [GLE SM] event = 0x3
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] conn_id(0) pair result:3
+[bs21_ws73_ros2-2] [ssap client] pair complete conn_id:0, addr:3c:4a:83:2f:4e:33
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] [uapi ssapc_exchange_info_req]mtu = 300
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] [gle ssapc_exchange_mtu]mtu = 0x12c
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] [ssapc exchange_info_req_handle]mtu = 300, version = 0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] task create tl connection tl->status = 0x2, tl->mask = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] mtu = 300, version = 0x0001
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.312] need wait for response
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.313] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001290, TIME=12000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.325] tl task[1] trans done
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.325] tl trans done trans->op:[0x03]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.325] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001290
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.325] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.325] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.325] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] tl task[1] trans done
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] op_code[0x03], control_code[0x03], mtu[300], version[0x0001]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] tl->mtu[300]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] task[1] complete, err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] task[0x01] complete, err_code = 0x00
+[bs21_ws73_ros2-2] ssapc exchange info, conn_id:0, err_code:0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] tl done err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] ssapc handle msg type:7
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] sample ssapc indication cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] ssapc find structure conn_id:0, type:1, start hdl:1, end hdl:ffff
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] ssapc find structure uuid len:0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] addr:3c:**:**:**:4e:33, type = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] ssap discovery service all
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] ssapc discovery services conn_handle = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] task->type = 0x1, task->hdl = 0x1ffff, task->uuid.len = 0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] task create tl connection tl->status = 0x2, tl->mask = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] task_id = 0x82, task_type = 0x1, op_code = 0x04
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] dicovery task send uuid.len = 0, uuid:0x0000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] dicovery task send start_hdl: 0x0001, end_hdl: 0xffff
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] data_len = 6
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] need wait for response
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.337] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001130, TIME=12000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.362] ssap check type by opcode trans->op:0x05
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.362] tl task[130] trans done
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.362] tl trans done trans->op:[0x05]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001130
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] data_len = 9
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] control_code.fragment:0x03, mode:0x00, task->type:0x01, task_id:0x82, task->uuid.len:0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] curent_idx:0, data_len:7
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] uuid_len: 2, service->uuid.len: 2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] ssapc discovery service event handle
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] con_hdl:[0x00], hdl:[0x01], end_hdl:[0x02], svc->type_indication:[0x02]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] [disc_srv_rsp]start_hdl:[0x01], end_hdl:[0x02]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] uuid:[0x00][0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] discovery service start hdl:1, end hdl:2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] sample ssapc discovery services cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] uuid_len = 2, last_hdl = 0x0002, idx = 7
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] cur_hdl:[0x0001ffff], last_hdl:[0x0002]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] task[130] complete, err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] task[0x82] complete, err_code = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] ssapc handle msg type:0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] sample ssapc discovery service cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] op_code:0x04, type:0x01, uuid.len:0, err_code:0x00
+[bs21_ws73_ros2-2] discovery character cbk complete in
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] [internal_discovery_services] op_code:0x04, type:0x01, uuid.len:0, err_code:0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] ssapc handle msg type:2
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] sample ssapc discovery service cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] [ssap client] ssapc_write_req, conn_id:0 data_len:4
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] ssapc write req conn_id:0, hdl:1, data len:4
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] ssapc write req addr:0x3c:**:**:**:0x4e:0x33
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] handle = 0x01, type = 0x00, len = 4
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] tl done err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] [ssapc write_value_req]data_type = 0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] task create tl connection tl->status = 0x2, tl->mask = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] write_data_len = 4, data_len = 4, mtu = 295
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] need wait for response
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.363] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001370, TIME=12000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] ssap check type by opcode trans->op:0x0e
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] tl task[8] trans done
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] tl trans done trans->op:[0x0e]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001370
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] [write rsp]hdl[0x0001], data_type[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] ssapc write rsp op_code[0x0e], control_code[0x03], value_len[7]
+[bs21_ws73_ros2-2] ssapc write rsp handle:1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] task[8] complete, err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] task[0x08] complete, err_code = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] [write_req_complete]err_code:0x00
+[bs21_ws73_ros2-2] [sle write_req_complete_cbk]conn_id:0, err_code:0
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] ssapc handle msg type:5
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] [2018-03-09 12:46:03.387] tl done err_code:[0x00]
+[bs21_ws73_ros2-2] sample ssapc write cfm cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] ssapc read req conn_id:0, hdl:1, type:0
+
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] ssapc read req addr:0x3c:**:**:**:0x4e:0x33
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.387] handle = 0x01, type = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.388] need wait for response
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.388] [TIMRE_ADD][STACK_TIMER] TIMER=0xb0001290, TIME=12000
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.412] ssap check type by opcode trans->op:0x09
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.412] tl trans done trans->op:[0x09]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.412] [TIMER_DEL][STACK_TIMER] TIMER=0xb0001290
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.412] op_code[0x09], control_code[0x03], data_len[4]
+[bs21_ws73_ros2-2] ssapc read rsp handle:0, data len:4
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.412] ssapc handle msg type:4
+[bs21_ws73_ros2-2] [2018-03-09 12:46:03.412] sample ssapc read cfm cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:46:05.337] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:05.337] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:46:05.337] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:07.362] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:07.362] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:46:07.362] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:09.350] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:09.350] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:46:09.350] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:11.362] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:11.362] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:46:11.362] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:13.375] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:13.375] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:46:13.375] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:46:15.387] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:46:15.387] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:46:15.387] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
\ No newline at end of file
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/log/log_old b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/log/log_old
new file mode 100644
index 0000000000000000000000000000000000000000..ea0f0649dff899505c80e437376f26aa7fd131a5
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/log/log_old
@@ -0,0 +1,549 @@
+ ./service.sh
+[INFO] [launch]: All log files can be found below /root/.ros/log/2018-03-09-12-40-15-200889-hieulerpi1-2216
+[INFO] [launch]: Default logging verbosity is set to INFO
+[INFO] [nearlink_robot_node-1]: process started with pid [2219]
+[INFO] [bs21_ws73_ros2-2]: process started with pid [2221]
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.753] [uapi gle_init]
+[bs21_ws73_ros2-2] [bts][info] btsrv_task_init btsrv_init: task create success
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] ssapc client init
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] ssapc register inter cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [uapi gle_enable]
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [gle manger enable]enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle dd init
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle cm init enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [GLE DM][DM init] transmission management module init
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [GLE TM][TM init] transmission management module init
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle ssap init ok
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [GLE SM] start init
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [GLE DM][DM init] security management module init
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hadm init enter.
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle factory init enter.
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle glp init enter.
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [gle manager_enable]enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle read maximum adv data len
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] read access filter list size
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [GLE SM] read support cryptography algorithm
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci struct to stream opcode:0xc06, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] hci command encode send tl paramlen=0x0 opcode:0xc06
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci internal command send core send opcode=0xc06
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci internal command send core send opcode=0x40a
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci internal command send core send opcode=0x406
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci internal command send core send opcode=0x402
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.754] gle hci internal command send core send opcode=0x1c07
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.755] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.755] gle execute command cbk evindex:c06
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.755] opcode = 0x0c06, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.755] max_adv_data_len = 0x00fb
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.755] gle read maximum adv data len
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.755] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.755] gle hci struct to stream opcode:0x40a, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] hci command encode send tl paramlen=0x0 opcode:0x40a
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] [HCI]gle hci internal evt cbk unreg table->id = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] gle hci internal command send core send opcode=0xc07
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] gle execute command cbk evindex:40a
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] opcode = 0x040a, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] read access filter list size = 16
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] [TIMRE_ADD][STACK_TIMER] TIMER=0xa00011e0, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] gle hci struct to stream opcode:0x406, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] hci command encode send tl paramlen=0x0 opcode:0x406
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] [HCI]gle hci internal evt cbk unreg table->id = 0x18a0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] [TIMER_DEL][STACK_TIMER] TIMER=0xa00011e0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] gle execute command cbk evindex:406
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] opcode = 0x0406, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.756] get addr:0xb0:66:**:**:**:00
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001290, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] gle hci struct to stream opcode:0x402, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] hci command encode send tl paramlen=0x0 opcode:0x402
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] [HCI]gle hci internal evt cbk unreg table->id = 0x18a0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001290
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] gle execute command cbk evindex:402
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] gle hci read buffer size cfm result:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] [gle hci read buffer size] result = 0x0, opindex: 0x00000402
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] [gle hci read buffer size] acb data len: 254 num: 5, icb data len: 0 num: 0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001340, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] gle hci struct to stream opcode:0x1c07, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] hci command encode send tl paramlen=0x0 opcode:0x1c07
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.757] [HCI]gle hci internal evt cbk unreg table->id = 0x18a0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001340
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] gle execute command cbk evindex:1c07
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] opcode = 0x1c07, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] [GLE SM] algo: 0x02 0x02 0x02 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001340, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] gle hci struct to stream opcode:0xc07, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] hci command encode send tl paramlen=0x0 opcode:0xc07
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.758] [HCI]gle hci internal evt cbk unreg table->id = 0x1c07
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.759] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001340
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.759] gle execute command cbk evindex:c07
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.759] opcode = 0x0c07, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.759] supported_adv_sets_num = 0x8
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.759] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.759] [HCI]gle hci internal evt cbk unreg table->id = 0xc07
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] [gle manger enable]result = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] [GLE DM] event = 0x0
+[bs21_ws73_ros2-2] [ACore] sle enable cbk in, result:0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] dev enable ret:0.
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] recover key fail, there is no key
+[bs21_ws73_ros2-2] sle enable
+[bs21_ws73_ros2-2] [ACore] sle device discovery in, action:0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle acore smp keys memcmp err, data all zero!
+[bs21_ws73_ros2-2] sle_set_local_addr 0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle hci struct to stream opcode:0x405, stream_len=0x6
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] hci command encode send tl paramlen=0x6 opcode:0x405
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle hci internal command send core send opcode=0x405
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.763] gle hci internal command send core send opcode=0x1001
+
+
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] gle execute command cbk evindex:405
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] opcode = 0x0405, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] gle set public address status success.
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] gle hci struct to stream opcode:0x1001, stream_len=0x8
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] hci command encode send tl paramlen=0x8 opcode:0x1001
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] [HCI]gle hci internal evt cbk unreg table->id = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.764] gle hci internal command send core send opcode=0x406
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] gle execute command cbk evindex:1001
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] opcode = 0x1001, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] [dd]event = 0x8
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] [SLE SCAN CBK] event: 8.
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] start device seek.
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001290, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] gle hci struct to stream opcode:0x406, stream_len=0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] hci command encode send tl paramlen=0x0 opcode:0x406
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] [HCI]gle hci internal evt cbk unreg table->id = 0x1710
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] scan_enable = 0x1, filter_duplicates = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] gle hci internal command send core send opcode=0x1002
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001290
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] gle execute command cbk evindex:406
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] opcode = 0x0406, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] get addr:0xb0:66:**:**:**:00
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.765] [TIMRE_ADD][STACK_TIMER] TIMER=0xbf65e9a0, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] gle hci struct to stream opcode:0x1002, stream_len=0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] hci command encode send tl paramlen=0x2 opcode:0x1002
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] [HCI]gle hci internal evt cbk unreg table->id = 0x1710
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] [TIMER_DEL][STACK_TIMER] TIMER=0xbf65e9a0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] gle execute command cbk evindex:1002
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] opcode = 0x1002, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] gle dd set scan enable cfm scan enabled
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] [dd]event = 0x9
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] [SLE SCAN CBK] event: 9.
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:40:15.766] [HCI]gle hci internal evt cbk unreg table->id = 0x0
+[bs21_ws73_ros2-2] [ACore] sle device discovery in, action:5
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.843] op_ev = 0x180B
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.843] cfm_type = 0x1e
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.843] [dd]event = 0xb
+[bs21_ws73_ros2-2] [adv_report] event_type: 0x03, addr_type: 0x0000, addr: 3c:**:**:**:4e:33
+[bs21_ws73_ros2-2] [adv_report] data length: 6, data: 0x01 0x02 0x01 0x02 0x02 0x00
+[bs21_ws73_ros2-2] [ACore] sle device discovery in, action:7
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.843] stop device seek.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.844] scan_enable = 0x0, filter_duplicates = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.844] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.844] [TIMRE_ADD][STACK_TIMER] TIMER=0xbf65e9a0, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.844] gle hci struct to stream opcode:0x1002, stream_len=0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.844] hci command encode send tl paramlen=0x2 opcode:0x1002
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.844] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.844] gle hci internal command send core send opcode=0x1002
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] [TIMER_DEL][STACK_TIMER] TIMER=0xbf65e9a0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] gle execute command cbk evindex:1002
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] opcode = 0x1002, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] gle dd set scan enable cfm scan disabled
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] [dd]event = 0xa
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] [SLE SCAN CBK] event: 10.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] [HCI]gle hci internal evt cbk unreg table->id = 0x0
+[bs21_ws73_ros2-2] [ACore] sle device discovery in, action:6
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] create conn node, addr 3c:4a:xx:xx:xx:33
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] gle device link add node->status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] [GLE HCI] free hci cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] gle hci struct to stream opcode:0x1401, stream_len=0x1b
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] hci command encode send tl paramlen=0x1b opcode:0x1401
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.858] gle hci internal command send core send opcode=0x1401
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.859] [HCI]gle hci ev command status num_hci_command_packets(0x1) command_opcode:0x1401 status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.859] gle hci ev command status restart ertx opcode=0x1401, timeout:0x2710
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.859] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.859] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=10000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.859] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.859] gle hci ev command status in opcode=0x1401, status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] gle access link status report in
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] [gle connect cfm] result:0x0 status = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] [GLE TM][LCID init] LCID = 0x0000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] [GLE SM] init new remote device.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] gle ssap create tl link by addr add dev onaddr:0x3c:**:**:**:4e:33
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] [cm]event = 0x0
+[bs21_ws73_ros2-2] [Connected]
+[bs21_ws73_ros2-2] addr:3c:**:**:**:4e:33, handle:00
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] [GLE HCI] free hci cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] remote(0x3c:**:**:**:4e:33) conn_id(0)
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] remote(0x3c:**:**:**:4e:33) state(1)
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] gle hci struct to stream opcode:0x1801, stream_len=0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] hci command encode send tl paramlen=0x2 opcode:0x1801
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] gle hci internal command send core send opcode=0x1801
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.880] [GLE SM] pairing start, role: 0x0.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.890] [GLE SM] sm pairing request.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.890] [GLE SM] io_ability: 3, oob_flag 0, psk_flag: 0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] [TIMRE_ADD][STACK_TIMER] TIMER=0x98000da0, TIME=30000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] [GLE AA] controller data send, co_hdl: 0x0000, data_index: 0x0134, len: 10.[2018-03-09 12:41:40.891] [HCI]gle hci ev command status num_hci_command_packets(0x1) command_opcode:0x1801 status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] gle hci ev command status restart ertx opcode=0x1801, timeout:0x2904
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=10500
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] gle hci ev command status in opcode=0x1801, status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] gle hci struct to stream opcode:0x1812, stream_len=0xf
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] hci command encode send tl paramlen=0xf opcode:0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.891] gle hci internal command send core send opcode=0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.897] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.897] gle read remote cs caps status(18)
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.897] [GLE DM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.897] [ACore] gle manager general event report opcode[05]
+[bs21_ws73_ros2-2] general event report opcode[05]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.897] gle execute command cbk evindex:1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.897] opcode = 0x1812, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.897] gle send controller data cfm, co_handle: 0x0000, data_index: 0x0134.[2018-03-09 12:41:40.897] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.897] [HCI]gle hci internal evt cbk unreg table->id = 0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.912] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.912] gle read remote features complete.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.912] cfm_type = 0x11
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.912] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.912] gle set data len, lcid: 0x0000, tx octets: 0xfe
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.912] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.912] [GLE HCI] free hci cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.912] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] gle hci struct to stream opcode:0x1802, stream_len=0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] hci command encode send tl paramlen=0x2 opcode:0x1802
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] gle hci internal command send core send opcode=0x1802
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] gle hci internal command send core send opcode=0x1804
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] [HCI]gle hci ev command status num_hci_command_packets(0x1) command_opcode:0x1802 status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.913] gle hci ev command status restart ertx opcode=0x1802, timeout:0x2904
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.914] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.914] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=10500
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.914] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.914] gle hci struct to stream opcode:0x1804, stream_len=0x4
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.914] hci command encode send tl paramlen=0x4 opcode:0x1804
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.914] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.914] gle hci ev command status in opcode=0x1802, status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.915] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.915] gle execute command cbk evindex:1804
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.915] [GLE HCI] set data len result = 0x0, opindex: 0x1804
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.915] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.915] [HCI]gle hci internal evt cbk unreg table->id = 0x1804
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.937] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.937] gle read remote version complete.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.937] cfm_type = 0x12
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.937] [cm]event = 0x7
+[bs21_ws73_ros2-2] [2018-03-09 12:41:40.937] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] [GLE SM] data recv, lcid: 0x0000, len: 10, opcode: 0x0135
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] [GLE SM] algorithm negotiate: 2 2 2 0[2018-03-09 12:41:41.474] [GLE SM] sm pairing confirm, authentication method: 1.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] [TIMER_DEL][STACK_TIMER] TIMER=0x98000da0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=30000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] [GLE AA] controller data send, co_hdl: 0x0000, data_index: 0x0136, len: 70.[2018-03-09 12:41:41.474] [GLE SM] event = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001450, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.474] gle hci struct to stream opcode:0x1812, stream_len=0x4b
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] hci command encode send tl paramlen=0x4b opcode:0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] gle hci internal command send core send opcode=0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001450
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] gle read remote cs caps status(18)
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] [GLE DM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] [ACore] gle manager general event report opcode[05]
+[bs21_ws73_ros2-2] general event report opcode[05]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] gle execute command cbk evindex:1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] opcode = 0x1812, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] gle send controller data cfm, co_handle: 0x0000, data_index: 0x0136.[2018-03-09 12:41:41.475] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.475] [HCI]gle hci internal evt cbk unreg table->id = 0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.500] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.500] [GLE SM] data recv, lcid: 0x0000, len: 64, opcode: 0x0137
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] [GLE SM] data recv, lcid: 0x0000, len: 16, opcode: 0x0138
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] [GLE SM] gle sm authentication procedure in, method: 0x1.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=30000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] [GLE AA] controller data send, co_hdl: 0x0000, data_index: 0x0139, len: 16.[2018-03-09 12:41:41.537] [GLE SM] authentication pdu send, opcode 0x0139.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] [TIMRE_ADD][STACK_TIMER] TIMER=0xbf65e9a0, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] gle hci struct to stream opcode:0x1812, stream_len=0x15
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] hci command encode send tl paramlen=0x15 opcode:0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.537] gle hci internal command send core send opcode=0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.538] [TIMER_DEL][STACK_TIMER] TIMER=0xbf65e9a0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.538] gle read remote cs caps status(18)
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.538] [GLE DM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.538] [ACore] gle manager general event report opcode[05]
+[bs21_ws73_ros2-2] general event report opcode[05]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.538] gle execute command cbk evindex:1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.538] opcode = 0x1812, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.538] gle send controller data cfm, co_handle: 0x0000, data_index: 0x0139.[2018-03-09 12:41:41.538] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:41.538] [HCI]gle hci internal evt cbk unreg table->id = 0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.624] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.624] [GLE SM] data recv, lcid: 0x0000, len: 16, opcode: 0x013a
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.624] [GLE SM] gle sm authentication procedure in, method: 0x1.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.634] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.634] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001790, TIME=30000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.634] [GLE AA] controller data send, co_hdl: 0x0000, data_index: 0x0141, len: 16.[2018-03-09 12:41:42.634] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.634] [TIMRE_ADD][STACK_TIMER] TIMER=0xa00011e0, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.634] gle hci struct to stream opcode:0x1812, stream_len=0x15
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.634] hci command encode send tl paramlen=0x15 opcode:0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.634] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.634] gle hci internal command send core send opcode=0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.635] [TIMER_DEL][STACK_TIMER] TIMER=0xa00011e0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.635] gle read remote cs caps status(18)
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.635] [GLE DM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.635] [ACore] gle manager general event report opcode[05]
+[bs21_ws73_ros2-2] general event report opcode[05]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.635] gle execute command cbk evindex:1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.635] opcode = 0x1812, cmd_result = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.635] gle send controller data cfm, co_handle: 0x0000, data_index: 0x0141.[2018-03-09 12:41:42.635] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.635] [HCI]gle hci internal evt cbk unreg table->id = 0x1812
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle access controller data cbk in
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] [GLE SM] data recv, lcid: 0x0000, len: 16, opcode: 0x0142
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] [GLE SM] gle sm authentication procedure in, method: 0x1.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] [GLE SM] event = 0x2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle acore config data write:1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle acore set product type sys_config 0x:0!
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle acore save sm key write_index:00!
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle acore config data write:2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] [GLE SM] enable encryption
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] [GLE AA] enable encryption, crypt 1, key_deriv 1, integr_chk 0.
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle execute command send enter
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] [GLE HCI] free hci cbk
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] remote(0x3c:**:**:**:0x4e:0x33) conn_id(0)
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] auth status:0, crypto algo:2, key deriv algo:2, integr chk ind:0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] [TIMRE_ADD][STACK_TIMER] TIMER=0x98000f60, TIME=2000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle hci struct to stream opcode:0x1c03, stream_len=0x15
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] hci command encode send tl paramlen=0x15 opcode:0x1c03
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle hci command check send check and send, cmd_num:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.725] gle hci internal command send core send opcode=0x1c03
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.726] [HCI]gle hci ev command status num_hci_command_packets(0x1) command_opcode:0x1c03 status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.726] gle hci ev command status restart ertx opcode=0x1c03, timeout:0x2904
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.726] [TIMER_DEL][STACK_TIMER] TIMER=0x98000f60
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.726] [TIMRE_ADD][STACK_TIMER] TIMER=0x98000f60, TIME=10500
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.726] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.726] gle hci ev command status in opcode=0x1c03, status:0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] [TIMER_DEL][STACK_TIMER] TIMER=0x98000f60
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] op_ev = 0x0011
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] cfm_type = 0x27
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] [GLE SM] encrypt change, lcid: 0x0000, status: 0x0, encryption change: 0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001790
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] [GLE SM] timer repeated attempts, job: 1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] [GLE SM] event = 0x3
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] gle hci command check send check and send, cmd_num:0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] conn_id(0) pair result:3
+[bs21_ws73_ros2-2] [ssap client] pair complete conn_id:0, addr:3c:4a:83:2f:4e:33
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] [uapi ssapc_exchange_info_req]mtu = 300
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] [gle ssapc_exchange_mtu]mtu = 0x12c
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] [ssapc exchange_info_req_handle]mtu = 300, version = 0x1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] task create tl connection tl->status = 0x2, tl->mask = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] mtu = 300, version = 0x0001
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.799] need wait for response
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.800] [TIMRE_ADD][STACK_TIMER] TIMER=0xa00011e0, TIME=12000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] ssap check type by opcode trans->op:0x03
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] tl task[1] trans done
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] tl trans done trans->op:[0x03]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] [TIMER_DEL][STACK_TIMER] TIMER=0xa00011e0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] op_code[0x03], control_code[0x03], mtu[300], version[0x0001]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] tl->mtu[300]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] task[1] complete, err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] task[0x01] complete, err_code = 0x00
+[bs21_ws73_ros2-2] ssapc exchange info, conn_id:0, err_code:0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] tl done err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] ssapc handle msg type:7
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] sample ssapc indication cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] ssapc find structure conn_id:0, type:1, start hdl:1, end hdl:ffff
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] ssapc find structure uuid len:0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] addr:3c:**:**:**:4e:33, type = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] ssap discovery service all
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] ssapc discovery services conn_handle = 0x0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] task->type = 0x1, task->hdl = 0x1ffff, task->uuid.len = 0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] task create tl connection tl->status = 0x2, tl->mask = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] task_id = 0x82, task_type = 0x1, op_code = 0x04
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] dicovery task send uuid.len = 0, uuid:0x0000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] dicovery task send start_hdl: 0x0001, end_hdl: 0xffff
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] data_len = 6
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] need wait for response
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.824] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001340, TIME=12000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.849] ssap check type by opcode trans->op:0x05
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.849] tl task[130] trans done
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.849] tl trans done trans->op:[0x05]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001340
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] data_len = 9
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] control_code.fragment:0x03, mode:0x00, task->type:0x01, task_id:0x82, task->uuid.len:0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] curent_idx:0, data_len:7
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] uuid_len: 2, service->uuid.len: 2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] ssapc discovery service event handle
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] con_hdl:[0x00], hdl:[0x01], end_hdl:[0x02], svc->type_indication:[0x02]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] [disc_srv_rsp]start_hdl:[0x01], end_hdl:[0x02]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] uuid:[0x00][0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] discovery service start hdl:1, end hdl:2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] sample ssapc discovery services cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] uuid_len = 2, last_hdl = 0x0002, idx = 7
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] cur_hdl:[0x0001ffff], last_hdl:[0x0002]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] task[130] complete, err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] task[0x82] complete, err_code = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] ssapc handle msg type:0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] sample ssapc discovery service cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] op_code:0x04, type:0x01, uuid.len:0, err_code:0x00
+[bs21_ws73_ros2-2] discovery character cbk complete in
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] [internal_discovery_services] op_code:0x04, type:0x01, uuid.len:0, err_code:0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] tl done err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] ssapc handle msg type:2
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] sample ssapc discovery service cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] [ssap client] ssapc_write_req, conn_id:0 data_len:4
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] ssapc write req conn_id:0, hdl:1, data len:4
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] ssapc write req addr:0x3c:**:**:**:0x4e:0x33
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] handle = 0x01, type = 0x00, len = 4
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] [ssapc write_value_req]data_type = 0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] task create tl connection tl->status = 0x2, tl->mask = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] write_data_len = 4, data_len = 4, mtu = 295
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] need wait for response
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.850] [TIMRE_ADD][STACK_TIMER] TIMER=0xa0001130, TIME=12000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] ssap check type by opcode trans->op:0x0e
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] tl task[8] trans done
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] tl trans done trans->op:[0x0e]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] [TIMER_DEL][STACK_TIMER] TIMER=0xa0001130
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] [write rsp]hdl[0x0001], data_type[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] ssapc write rsp op_code[0x0e], control_code[0x03], value_len[7]
+[bs21_ws73_ros2-2] ssapc write rsp handle:1
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] task[8] complete, err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] task[0x08] complete, err_code = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] [write_req_complete]err_code:0x00
+[bs21_ws73_ros2-2] [sle write_req_complete_cbk]conn_id:0, err_code:0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] tl done err_code:[0x00]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] ssapc handle msg type:5
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] sample ssapc write cfm cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] ssapc read req conn_id:0, hdl:1, type:0
+
+[nearlink_robot_node-1] [INFO] [1520599455.450516387] [nearlink_robot]: recv ws73 keycode 0x67
+[nearlink_robot_node-1] [INFO] [1520599469.713003727] [nearlink_robot]: recv ws73 keycode 0x67
+[nearlink_robot_node-1] [INFO] [1520599470.612993769] [nearlink_robot]: recv ws73 keycode 0x67
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] ssapc read req addr:0x3c:**:**:**:0x4e:0x33
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] handle = 0x01, type = 0x00
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.874] need wait for response
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.875] [TIMRE_ADD][STACK_TIMER] TIMER=0xa00011e0, TIME=12000
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.899] ssap check type by opcode trans->op:0x09
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.899] tl trans done trans->op:[0x09]
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.900] [TIMER_DEL][STACK_TIMER] TIMER=0xa00011e0
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.900] op_code[0x09], control_code[0x03], data_len[4]
+[bs21_ws73_ros2-2] ssapc read rsp handle:0, data len:4
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.900] ssapc handle msg type:4
+[bs21_ws73_ros2-2] [2018-03-09 12:41:42.900] sample ssapc read cfm cbk success
+[bs21_ws73_ros2-2] [2018-03-09 12:44:15.275] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:44:15.275] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:44:15.275] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:44:15.450] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:44:15.450] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:44:15.450] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x00 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:0
+[bs21_ws73_ros2-2] [sle ws73] nearlink_mq attr mq_curmsgs 0 mq_maxmsg 10
+[bs21_ws73_ros2-2] [2018-03-09 12:44:29.512] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:44:29.512] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:44:29.512] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:44:29.712] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:44:29.712] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:44:29.712] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x00 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:0
+[bs21_ws73_ros2-2] [sle ws73] nearlink_mq attr mq_curmsgs 0 mq_maxmsg 10
+[bs21_ws73_ros2-2] [2018-03-09 12:44:30.400] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:44:30.400] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:44:30.400] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x52 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:1
+[bs21_ws73_ros2-2] [2018-03-09 12:44:30.612] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:44:30.612] ssapc handle msg type:8
+[bs21_ws73_ros2-2] [2018-03-09 12:44:30.612] sample ssapc notification cbk success
+[bs21_ws73_ros2-2] [sle ws73] sle_rcu_notification_cb ok
+[bs21_ws73_ros2-2] [sle ws73] sle rcu recive notification
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.kind = [1]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.special_key = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.reversed = [0]
+[bs21_ws73_ros2-2] [sle ws73] recv_usb_hid_rcu_keyboard.key = 0x00 0x00 0x00 0x00 0x00 0x00
+[bs21_ws73_ros2-2] code:0x67,value:0
+[bs21_ws73_ros2-2] [sle ws73] nearlink_mq attr mq_curmsgs 0 mq_maxmsg 10
+[bs21_ws73_ros2-2] [2018-03-09 12:44:31.775] op_code[0x0f], control_code[0x03], data_len[13]
+[bs21_ws73_ros2-2] [2018-03-09 12:44:31.775] ssapc handle msg type:8
+[nearlink_robot_node-1] [INFO] [1520599471.938074520] [nearlink_robot]: recv ws73 keycode 0x67
\ No newline at end of file
diff --git a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/SLE_OSPP_Server.c.bak2 b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/SLE_OSPP_Server.c
similarity index 78%
rename from hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/SLE_OSPP_Server.c.bak2
rename to hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/SLE_OSPP_Server.c
index 53c45f9036eeb5e5bf7f31249c824ebd270710e3..2471ca4567349112f5baf7875e20e0910fa7d065 100644
--- a/hi-sle/RemoteController_WS63E_Source_Code/SLE_OSPP_Server/src/SLE_OSPP_Server.c.bak2
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/SLE_OSPP_Server.c
@@ -17,7 +17,7 @@
#include "i2c.h" // I2C接口,提供I2C通信的实现和接口
#include "osal_debug.h" // OS抽象层调试,提供调试相关的操作函数
#include "cmsis_os2.h" // CMSIS-RTOS v2 API,提供RTOS的API接口(重复包含)
-#include "watchdog.h"
+
#include "adc.h"
#include "adc_porting.h"
@@ -32,7 +32,7 @@
#define OCTET_BIT_LEN 8 // 八位字节长度
#define UUID_LEN_2 2 // UUID 长度为 2 字节
-
+// 定义左摇杆引脚
#define LEFT_JOYSTICK_X_PIN 9
#define LEFT_JOYSTICK_Y_PIN 8
#define LEFT_JOYSTICK_Z_PIN 14
@@ -42,11 +42,11 @@
#define RIGHT_JOYSTICK_Z_PIN 6
// 定义ADC通道
#define LEFT_JOYSTICK_X_Channel 1
-#define LEFT_JOYSTICK_Y_Channel 2
-#define RIGHT_JOYSTICK_X_Channel 3
-#define RIGHT_JOYSTICK_Y_Channel 0
+#define LEFT_JOYSTICK_Y_Channel 3 // 2
+#define RIGHT_JOYSTICK_X_Channel 0
+#define RIGHT_JOYSTICK_Y_Channel 3
-#define ADC_AUTO_SAMPLE_TEST_TIMES 100
+#define ADC_AUTO_SAMPLE_TEST_TIMES 500
#define FILTER_WINDOW_SIZE 10 // 定义滤波窗口大小
#define ADC_TASK_STACK_SIZE 0x1000
@@ -90,136 +90,189 @@ void Joystick_Init(void)
uapi_pin_set_pull(RIGHT_JOYSTICK_Z_PIN, PIN_PULL_TYPE_DOWN);
}
-// 全局变量,用于存储LED的状态
-static int g_ledState = 0;
-
-// GPIO中断回调函数,当按钮被按下时调用
-static void gpio_callback_func(pin_t pin, uintptr_t param)
+gpio_level_t Left_Joystick_Read_Z(void)
{
- UNUSED(param); // 未使用的参数
- if (pin == LEFT_JOYSTICK_Z_PIN)
- {
- g_ledState = 1;
- eulercar_control_stop();
- printf("中断信号:%d\n", g_ledState);
- }
- else if (pin == LEFT_BUTTON_PIN)
- {
- g_ledState = 2;
- eulercar_control_forward();
- printf("中断信号:%d\n", g_ledState);
- }
- else if (pin == RIGHT_BUTTON_PIN)
- {
- g_ledState = 3;
- eulercar_control_backward();
- printf("中断信号:%d\n", g_ledState);
- }
- else if (pin == LEFT_TOGGLE_PIN)
- {
- g_ledState = 4;
- eulercar_control_left();
- printf("中断信号:%d\n", g_ledState);
- }
- else if (pin == RIGHT_TOGGLE_PIN)
- {
- g_ledState = 5;
- eulercar_control_right();
- printf("中断信号:%d\n", g_ledState);
- }
- printf("Button pressed.\r\n"); // 打印按钮按下的信息
+ return uapi_gpio_get_val(LEFT_JOYSTICK_Z_PIN);
}
-// 按钮任务函数
-static void *button_task(const char *arg)
-{
- unused(arg); // 未使用的参数
+#define ACTION 1
+#define NONE 0
- // 注册GPIO中断回调函数,当按钮引脚检测到下降沿时触发中断
- // 注册GPIO中断服务函数
- errcode_t ret0 = uapi_gpio_register_isr_func(14, GPIO_INTERRUPT_RISING_EDGE, gpio_callback_func);
- if (ret0 != 0)
- {
- printf("Failed to register ISR for 14\n");
- }
- errcode_t ret1 = uapi_gpio_register_isr_func(LEFT_BUTTON_PIN, GPIO_INTERRUPT_RISING_EDGE, gpio_callback_func);
- if (ret1 != 0)
- {
- printf("Failed to register ISR for LEFT_BUTTON_PIN\n");
- }
+int sum;
+int num;
+int fil_buffer = 0;
- errcode_t ret2 = uapi_gpio_register_isr_func(RIGHT_BUTTON_PIN, GPIO_INTERRUPT_RISING_EDGE, gpio_callback_func);
- if (ret2 != 0)
- {
- printf("Failed to register ISR for RIGHT_BUTTON_PIN\n");
- }
+int j = 1;
+int *num_buff;
+
+int stop_x = 0;
+int stop_y = 0;
+int stop = 1;
- errcode_t ret3 = uapi_gpio_register_isr_func(LEFT_TOGGLE_PIN, GPIO_INTERRUPT_FALLING_EDGE, gpio_callback_func);
- if (ret3 != 0)
+void test_adc_callback_X(uint8_t ch, uint32_t *buffer, uint32_t length, bool *next)
+{
+ UNUSED(next); // 未使用的参数
+ // static JoystickStatus rightJoystick = {0, -1};
+ sum = 0;
+ num = 0;
+ if (ch == LEFT_JOYSTICK_X_Channel)
{
- printf("Failed to register ISR for LEFT_TOGGLE_PIN\n");
+ for (uint32_t i = 0; i < length; i++)
+ {
+
+ // 打印ADC通道和电压值
+ if (length > 2)
+ {
+ if ((buffer[i] < 1500 || buffer[i] > 1900) && buffer[i] != 0)
+ {
+ sum += buffer[i];
+ num += 1;
+ // osal_printk("[IRQ]channel: %d, voltage: %dmv\r\n", ch, buffer[i]);
+ }
+ }
+ }
+ if (num >= (signed int)length / 2)
+ {
+ fil_buffer = sum / num;
+ if (fil_buffer < 1)
+ {
+ fil_buffer = 0;
+ }
+ }
+ else
+ {
+ printf(" -number- \n");
+ fil_buffer = 0;
+ }
+ printf("channel: %d, ---XXX-Filtered voltage: %dmv\n", ch, fil_buffer);
+ printf("length = %d\n", length);
+
+ if (fil_buffer < 1000 && fil_buffer != 0)
+ {
+ printf("X轴左推\n");
+ eulercar_control_left();
+ stop = 0;
+ }
+ else if (fil_buffer > 2000 && fil_buffer != 0)
+ {
+ printf("X轴右推\n");
+ eulercar_control_right();
+ stop = 0;
+ }
+ else
+ {
+ // eulercar_control_stop();
+ stop_x = 1;
+ }
}
+}
- errcode_t ret4 = uapi_gpio_register_isr_func(RIGHT_TOGGLE_PIN, GPIO_INTERRUPT_RISING_EDGE, gpio_callback_func);
- if (ret4 != 0)
+void test_adc_callback_Y(uint8_t ch, uint32_t *buffer, uint32_t length, bool *next)
+{
+ UNUSED(next); // 未使用的参数
+ // static JoystickStatus rightJoystick = {0, -1};
+ sum = 0;
+ num = 0;
+ if (ch == LEFT_JOYSTICK_Y_Channel)
{
- printf("Failed to register ISR for RIGHT_TOGGLE_PIN\n");
+ for (uint32_t i = 0; i < length; i++)
+ {
+
+ // 打印ADC通道和电压值
+ // osal_printk("[IRQ]channel: %d, voltage: %dmv\r\n", ch, buffer[i]);
+ if (length > 2)
+ {
+ if ((buffer[i] < 1000 || buffer[i] > 2000) && buffer[i] != 0)
+ {
+ sum += buffer[i];
+ num += 1;
+ osal_printk("[IRQ]channel: %d, voltage: %dmv\r\n", ch, buffer[i]);
+ }
+ }
+ }
+ if (num >= (signed int)length / 2)
+ {
+ fil_buffer = sum / num;
+ if (fil_buffer < 1)
+ {
+ fil_buffer = 0;
+ }
+ }
+ else
+ {
+ printf(" -number- \n");
+ fil_buffer = 0;
+ }
+ printf("channel: %d, ---YYY--Filtered voltage: %dmv\n", ch, fil_buffer);
+ printf("length = %d\n", length);
+
+ if (fil_buffer < 1000 && fil_buffer != 0)
+ {
+ printf("Y轴上推\n");
+ eulercar_control_forward();
+ stop = 0;
+ }
+ else if (fil_buffer > 2000 && fil_buffer != 0)
+ {
+ printf("Y轴下推\n");
+ eulercar_control_backward();
+ stop = 0;
+ }
+ else
+ {
+ // eulercar_control_stop();
+ stop_y = 1;
+ }
}
+}
+
+void joystick_task(const char *arg)
+{
+ UNUSED(arg);
+ osal_printk("start adc sample test");
+ uapi_adc_init(ADC_CLOCK_500KHZ);
+ uapi_adc_power_en(AFE_SCAN_MODE_MAX_NUM, true);
+ adc_scan_config_t config = {
+ .type = 0,
+ .freq = 1,
+ };
- // 无限循环,持续执行任务
while (1)
{
- uapi_watchdog_kick(); // 喂狗,防止程序出现异常系统挂死
+ uapi_adc_auto_scan_ch_enable(LEFT_JOYSTICK_Y_Channel, config, test_adc_callback_Y);
+ uapi_adc_auto_scan_ch_disable(LEFT_JOYSTICK_Y_Channel);
+
+ uapi_adc_auto_scan_ch_enable(LEFT_JOYSTICK_X_Channel, config, test_adc_callback_X);
+ uapi_adc_auto_scan_ch_disable(LEFT_JOYSTICK_X_Channel);
+
+ if (stop == 0)
+ {
+ if (stop_x == 1 && stop_y == 1)
+ {
+
+ eulercar_control_stop();
+ printf("星闪小车停止!");
+ stop_x = 0;
+ stop_y = 0;
+ stop = 1;
+ }
+ }
+
+ // if (Left_Joystick_Read_Z() == 1)
+ // {
+ // eulercar_control_stop();
+ // osal_mdelay(10);
+ // }
+
+ osal_msleep(ADC_AUTO_SAMPLE_TEST_TIMES);
}
- return NULL; // 返回NULL表示任务结束
}
-// void joystick_task(const char *arg)
-// {
-// UNUSED(arg);
-
-// while (1)
-// {
-
-// gpio_level_t z_button_state = uapi_gpio_get_val(LEFT_JOYSTICK_Z_PIN);
-// gpio_level_t left_button_state = uapi_gpio_get_val(LEFT_BUTTON_PIN);
-// gpio_level_t right_button_state = uapi_gpio_get_val(RIGHT_BUTTON_PIN);
-// gpio_level_t left_toggle_state = uapi_gpio_get_val(LEFT_TOGGLE_PIN);
-// gpio_level_t right_toggle_state = uapi_gpio_get_val(LEFT_TOGGLE_PIN);
-
-// printf("z Button State: %d\n", z_button_state);
-// printf("Left Button State: %d\n", left_button_state);
-// printf("Right Button State: %d\n", right_button_state);
-// printf("Left Toggle State: %d\n", left_toggle_state);
-// printf("Right Toggle State: %d\n", right_toggle_state);
-// osal_mdelay(1000);
-// // if (uapi_gpio_get_val(LEFT_JOYSTICK_Z_PIN) == 1)
-// // {
-// // eulercar_control_stop();
-// // }
-// // else if (uapi_gpio_get_val(LEFT_BUTTON_PIN) == 1)
-// // {
-// // eulercar_control_forward();
-// // }
-// // else if (uapi_gpio_get_val(RIGHT_BUTTON_PIN) == 1)
-// // {
-// // eulercar_control_backward();
-// // }
-// // else if (uapi_gpio_get_val(LEFT_TOGGLE_PIN) == 1)
-// // {
-// // eulercar_control_left();
-// // }
-// // else if (uapi_gpio_get_val(RIGHT_TOGGLE_PIN) == 1)
-// // {
-// // eulercar_control_right();
-// // }
-// }
-// }
static void joystick_entry(void)
{
osal_task *task_handle = NULL; // 任务句柄初始化为NULL
osal_kthread_lock(); // 锁定内核线程,防止任务创建过程中被打断
- task_handle = osal_kthread_create((osal_kthread_handler)button_task, 0, "LedControlTask",
+ task_handle = osal_kthread_create((osal_kthread_handler)joystick_task, 0, "LedControlTask",
ADC_TASK_STACK_SIZE);
if (task_handle != NULL) // 如果任务创建成功
{
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/SLE_OSPP_Server_adv.c b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/SLE_OSPP_Server_adv.c
new file mode 100644
index 0000000000000000000000000000000000000000..4246e1c6b214aa6f9a3615e6b2ee81de55bbfb09
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/SLE_OSPP_Server_adv.c
@@ -0,0 +1,292 @@
+/*
+# Copyright (C) 2024 HiHope Open Source Organization .
+# 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.
+ */
+#include "securec.h" // 安全C库,用于安全的内存操作
+#include "errcode.h" // 错误码定义
+#include "osal_addr.h" // OS抽象层地址操作
+#include "sle_common.h" // SLE通用定义
+#include "sle_device_discovery.h" // SLE设备发现功能
+#include "sle_errcode.h" // SLE错误码定义
+#include "../inc/SLE_OSPP_Server_adv.h" // SLE LED服务器广播头文件
+
+#include "cmsis_os2.h" // CMSIS-RTOS API
+#include "debug_print.h" // 调试打印功能
+
+/* sle device name */
+#define NAME_MAX_LENGTH 16 // 设备名称的最大长度
+/* 连接调度间隔12.5ms,单位125us */
+#define SLE_CONN_INTV_MIN_DEFAULT 0x64 // 最小连接间隔默认值
+/* 连接调度间隔12.5ms,单位125us */
+#define SLE_CONN_INTV_MAX_DEFAULT 0x64 // 最大连接间隔默认值
+/* 连接调度间隔25ms,单位125us */
+#define SLE_ADV_INTERVAL_MIN_DEFAULT 0xC8 // 最小广播间隔默认值
+/* 连接调度间隔25ms,单位125us */
+#define SLE_ADV_INTERVAL_MAX_DEFAULT 0xC8 // 最大广播间隔默认值
+/* 超时时间5000ms,单位10ms */
+#define SLE_CONN_SUPERVISION_TIMEOUT_DEFAULT 0x1F4 // 连接监督超时默认值
+/* 超时时间4990ms,单位10ms */
+#define SLE_CONN_MAX_LATENCY 0x1F3 // 最大连接延迟默认值
+/* 广播发送功率 */
+#define SLE_ADV_TX_POWER 10 // 广播发送功率
+/* 广播ID */
+#define SLE_ADV_HANDLE_DEFAULT 1 // 广播句柄默认值
+/* 最大广播数据长度 */
+#define SLE_ADV_DATA_LEN_MAX 251 // 最大广播数据长度
+/* 广播名称 */
+static uint8_t sle_local_name[NAME_MAX_LENGTH] = {'S', 'L', 'E', '_', 'O', 'S', 'P', 'P', '_',
+ 'S', 'E', 'R', 'V', 'E', 'R', '\0'}; // 本地设备名称
+
+// 设置广播本地名称
+static uint16_t example_sle_set_adv_local_name(uint8_t *adv_data, uint16_t max_len)
+{
+ errno_t ret = -1; // 错误码初始化为-1
+ uint8_t index = 0; // 广播数据索引初始化为0
+
+ uint8_t *local_name = sle_local_name; // 获取本地设备名称
+ uint8_t local_name_len = (uint8_t)strlen((char *)local_name); // 获取本地设备名称长度
+ for (uint8_t i = 0; i < local_name_len; i++)
+ {
+ PRINT("[SLE Adv] local_name[%d] = 0x%02x\r\n", i, local_name[i]); // 打印本地设备名称的每个字符
+ }
+
+ adv_data[index++] = local_name_len + 1; // 设置广播数据长度
+ adv_data[index++] = SLE_ADV_DATA_TYPE_COMPLETE_LOCAL_NAME; // 设置广播数据类型为完整本地名称
+ ret = memcpy_s(&adv_data[index], max_len - index, local_name, local_name_len); // 复制本地名称到广播数据中
+ if (ret != EOK)
+ { // 检查复制是否成功
+ PRINT("[SLE Adv] memcpy fail\r\n"); // 打印复制失败信息
+ return 0; // 返回0表示失败
+ }
+ return (uint16_t)index + local_name_len; // 返回广播数据的总长度
+}
+
+// 设置广播数据
+static uint16_t example_sle_set_adv_data(uint8_t *adv_data)
+{
+ size_t len = 0; // 数据长度初始化为0
+ uint16_t idx = 0; // 广播数据索引初始化为0
+ errno_t ret = 0; // 错误码初始化为0
+
+ len = sizeof(struct sle_adv_common_value); // 获取通用广播数据结构体的长度
+ struct sle_adv_common_value adv_disc_level = {
+ .length = len - 1, // 设置数据长度
+ .type = SLE_ADV_DATA_TYPE_DISCOVERY_LEVEL, // 设置数据类型为发现级别
+ .value = SLE_ANNOUNCE_LEVEL_NORMAL, // 设置数据值为正常级别
+ };
+ ret = memcpy_s(&adv_data[idx], SLE_ADV_DATA_LEN_MAX - idx, &adv_disc_level, len); // 复制发现级别数据到广播数据中
+ if (ret != EOK)
+ { // 检查复制是否成功
+ PRINT("[SLE Adv] adv_disc_level memcpy fail\r\n"); // 打印复制失败信息
+ return 0; // 返回0表示失败
+ }
+ idx += len; // 更新广播数据索引
+
+ len = sizeof(struct sle_adv_common_value); // 获取通用广播数据结构体的长度
+ struct sle_adv_common_value adv_access_mode = {
+ .length = len - 1, // 设置数据长度
+ .type = SLE_ADV_DATA_TYPE_ACCESS_MODE, // 设置数据类型为访问模式
+ .value = 0, // 设置数据值为0
+ };
+ ret = memcpy_s(&adv_data[idx], SLE_ADV_DATA_LEN_MAX - idx, &adv_access_mode, len); // 复制访问模式数据到广播数据中
+ if (ret != EOK)
+ { // 检查复制是否成功
+ PRINT("[SLE Adv] memcpy fail\r\n"); // 打印复制失败信息
+ return 0; // 返回0表示失败
+ }
+ idx += len; // 更新广播数据索引
+ return idx; // 返回广播数据的总长度
+}
+
+// 设置扫描响应数据
+static uint16_t example_sle_set_scan_response_data(uint8_t *scan_rsp_data)
+{
+ uint16_t idx = 0; // 扫描响应数据索引初始化为0
+ errno_t ret = -1; // 错误码初始化为-1
+ size_t scan_rsp_data_len = sizeof(struct sle_adv_common_value); // 获取通用广播数据结构体的长度
+
+ struct sle_adv_common_value tx_power_level = {
+ .length = scan_rsp_data_len - 1, // 设置数据长度
+ .type = SLE_ADV_DATA_TYPE_TX_POWER_LEVEL, // 设置数据类型为发送功率级别
+ .value = SLE_ADV_TX_POWER, // 设置数据值为广播发送功率
+ };
+ ret = memcpy_s(scan_rsp_data, SLE_ADV_DATA_LEN_MAX, &tx_power_level, scan_rsp_data_len); // 复制发送功率级别数据到扫描响应数据中
+ if (ret != EOK)
+ { // 检查复制是否成功
+ PRINT("[SLE Adv] sle scan response data memcpy fail\r\n"); // 打印复制失败信息
+ return 0; // 返回0表示失败
+ }
+ idx += scan_rsp_data_len; // 更新扫描响应数据索引
+
+ /* set local name */
+ idx += example_sle_set_adv_local_name(&scan_rsp_data[idx], SLE_ADV_DATA_LEN_MAX - idx); // 设置本地名称到扫描响应数据中
+ return idx; // 返回扫描响应数据的总长度
+}
+
+static uint8_t g_sle_local_addr[SLE_ADDR_LEN] = {0x3c, 0x4a, 0x83, 0x2f, 0x4e, 0x33}; // 要遥控器设备地址
+
+// 设置本地设备地址
+static void example_sle_set_addr(void)
+{
+ uint8_t *addr = g_sle_local_addr; // 获取本地设备地址
+
+ sle_addr_t sle_addr = {0}; // 初始化SLE地址结构体
+ sle_addr.type = 0; // 设置地址类型为0
+ if (memcpy_s(sle_addr.addr, SLE_ADDR_LEN, addr, SLE_ADDR_LEN) != EOK)
+ { // 复制本地设备地址到SLE地址结构体中
+ PRINT("[SLE Adv] addr memcpy fail \r\n"); // 打印复制失败信息
+ }
+
+ if (sle_set_local_addr(&sle_addr) == ERRCODE_SUCC)
+ { // 设置本地设备地址并检查是否成功
+ PRINT("[SLE Adv] set sle addr SUCC \r\n"); // 打印设置成功信息
+ }
+}
+
+static uint8_t g_local_device_name[] = {'s', 'l', 'e', '_', 'l', 'e', 'd', '_', 's', 'e', 'r', 'v', 'e', 'r'}; // 本地设备名称
+
+// 设置本地设备名称
+static void example_sle_set_name(void)
+{
+ errcode_t ret = ERRCODE_SUCC; // 错误码初始化为成功
+ ret = sle_set_local_name(g_local_device_name, sizeof(g_local_device_name)); // 设置本地设备名称并获取返回码
+ if (ret != ERRCODE_SUCC)
+ { // 检查设置是否成功
+ PRINT("[SLE Adv] set local name fail, ret:%x\r\n", ret); // 打印设置失败信息
+ }
+}
+
+// 设置默认的广播参数
+static errcode_t example_sle_set_default_announce_param(void)
+{
+ sle_announce_param_t param = {0}; // 初始化广播参数结构体
+ param.announce_mode = SLE_ANNOUNCE_MODE_CONNECTABLE_SCANABLE; // 设置广播模式为可连接可扫描
+ param.announce_handle = SLE_ADV_HANDLE_DEFAULT; // 设置广播句柄为默认值
+ param.announce_gt_role = SLE_ANNOUNCE_ROLE_T_CAN_NEGO; // 设置广播角色为可协商
+ param.announce_level = SLE_ANNOUNCE_LEVEL_NORMAL; // 设置广播级别为正常
+ param.announce_channel_map = SLE_ADV_CHANNEL_MAP_DEFAULT; // 设置广播信道映射为默认值
+ param.announce_interval_min = SLE_ADV_INTERVAL_MIN_DEFAULT; // 设置最小广播间隔为默认值
+ param.announce_interval_max = SLE_ADV_INTERVAL_MAX_DEFAULT; // 设置最大广播间隔为默认值
+ param.conn_interval_min = SLE_CONN_INTV_MIN_DEFAULT; // 设置最小连接间隔为默认值
+ param.conn_interval_max = SLE_CONN_INTV_MAX_DEFAULT; // 设置最大连接间隔为默认值
+ param.conn_max_latency = SLE_CONN_MAX_LATENCY; // 设置最大连接延迟为默认值
+ param.conn_supervision_timeout = SLE_CONN_SUPERVISION_TIMEOUT_DEFAULT; // 设置连接监督超时为默认值
+
+ if (memcpy_s(param.own_addr.addr, SLE_ADDR_LEN, g_sle_local_addr, SLE_ADDR_LEN) != EOK)
+ { // 复制本地设备地址到广播参数中
+ PRINT("[SLE Adv] set sle adv param addr memcpy fail\r\n"); // 打印复制失败信息
+ return ERRCODE_MEMCPY; // 返回内存复制错误码
+ }
+
+ return sle_set_announce_param(param.announce_handle, ¶m); // 设置广播参数并返回状态码
+}
+
+// 设置默认的广播数据
+static errcode_t example_sle_set_default_announce_data(void)
+{
+ errcode_t ret = ERRCODE_FAIL; // 错误码初始化为失败
+ uint8_t announce_data_len = 0; // 广播数据长度初始化为0
+ uint8_t seek_data_len = 0; // 扫描响应数据长度初始化为0
+ sle_announce_data_t data = {0}; // 初始化广播数据结构体
+ uint8_t adv_handle = SLE_ADV_HANDLE_DEFAULT; // 广播句柄初始化为默认值
+ uint8_t announce_data[SLE_ADV_DATA_LEN_MAX] = {0}; // 初始化广播数据数组
+ uint8_t seek_rsp_data[SLE_ADV_DATA_LEN_MAX] = {0}; // 初始化扫描响应数据数组
+
+ PRINT("[SLE Adv] set adv data default\r\n"); // 打印设置默认广播数据信息
+ announce_data_len = example_sle_set_adv_data(announce_data); // 设置广播数据并获取长度
+ data.announce_data = announce_data; // 设置广播数据
+ data.announce_data_len = announce_data_len; // 设置广播数据长度
+
+ seek_data_len = example_sle_set_scan_response_data(seek_rsp_data); // 设置扫描响应数据并获取长度
+ data.seek_rsp_data = seek_rsp_data; // 设置扫描响应数据
+ data.seek_rsp_data_len = seek_data_len; // 设置扫描响应数据长度
+
+ ret = sle_set_announce_data(adv_handle, &data); // 设置广播数据并获取返回码
+ if (ret == ERRCODE_SUCC)
+ { // 检查设置是否成功
+ PRINT("[SLE Adv] set announce data success."); // 打印设置成功信息
+ }
+ else
+ {
+ PRINT("[SLE Adv] set adv param fail."); // 打印设置失败信息
+ }
+ return ERRCODE_SUCC; // 返回成功码
+}
+
+// 广播启用回调函数
+void example_sle_announce_enable_cbk(uint32_t announce_id, errcode_t status)
+{
+ PRINT("[SLE Adv] sle announce enable id:%02x, state:%02x\r\n", announce_id, status); // 打印广播启用信息
+}
+
+// 广播禁用回调函数
+void example_sle_announce_disable_cbk(uint32_t announce_id, errcode_t status)
+{
+ PRINT("[SLE Adv] sle announce disable id:%02x, state:%02x\r\n", announce_id, status); // 打印广播禁用信息
+}
+
+// 广播终止回调函数
+void example_sle_announce_terminal_cbk(uint32_t announce_id)
+{
+ PRINT("[SLE Adv] sle announce terminal id:%02x\r\n", announce_id); // 打印广播终止信息
+}
+
+// SLE启用回调函数
+void example_sle_enable_cbk(errcode_t status)
+{
+ PRINT("[SLE Adv] sle enable status:%02x\r\n", status); // 打印SLE启用状态信息
+}
+
+// 注册广播相关的回调函数
+// 注册SLE广播相关的回调函数
+void example_sle_announce_register_cbks(void)
+{
+ sle_announce_seek_callbacks_t seek_cbks = {0}; // 初始化广播回调函数结构体
+
+ // 注册广播启用回调函数
+ seek_cbks.announce_enable_cb = example_sle_announce_enable_cbk;
+
+ // 注册广播禁用回调函数
+ seek_cbks.announce_disable_cb = example_sle_announce_disable_cbk;
+
+ // 注册广播终止回调函数
+ seek_cbks.announce_terminal_cb = example_sle_announce_terminal_cbk;
+
+ // 注册SLE启用回调函数
+ seek_cbks.sle_enable_cb = example_sle_enable_cbk;
+
+ // 注册所有广播回调函数
+ sle_announce_seek_register_callbacks(&seek_cbks);
+}
+
+// 初始化SLE服务器广播的函数
+errcode_t example_sle_server_adv_init(void)
+{
+ PRINT("[SLE Adv] example_sle_server_adv_init in\r\n"); // 打印初始化开始信息
+
+ example_sle_announce_register_cbks(); // 注册广播相关的回调函数
+
+ example_sle_set_default_announce_param(); // 设置默认的广播参数
+
+ example_sle_set_default_announce_data(); // 设置默认的广播数据
+
+ example_sle_set_addr(); // 设置设备地址
+
+ example_sle_set_name(); // 设置设备名称
+
+ sle_start_announce(SLE_ADV_HANDLE_DEFAULT); // 启动广播
+
+ PRINT("[SLE Adv] example_sle_server_adv_init out\r\n"); // 打印初始化结束信息
+
+ return ERRCODE_SUCC; // 返回成功码
+}
\ No newline at end of file
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/button.c b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/button.c
new file mode 100644
index 0000000000000000000000000000000000000000..d07ee44ca507563ca1bfc772e7ede7a01534ca2f
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/button.c
@@ -0,0 +1,31 @@
+#include "../inc/button.h"
+
+// 定义按键引脚
+#define LEFT_BUTTON_PIN 2
+#define RIGHT_BUTTON_PIN 4
+#define LEFT_TOGGLE_PIN 5
+#define RIGHT_TOGGLE_PIN 3
+
+#define DEBOUNCE_DELAY 5 // 消抖延时,单位为毫秒
+#define DEBOUNCE_READS 5 // 消抖读取次数
+
+// 初始化按键引脚
+void Key_Init(void)
+{
+ // 配置左按钮引脚为GPIO模式并设置为输入
+ uapi_pin_set_mode(LEFT_BUTTON_PIN, HAL_PIO_FUNC_GPIO);
+ gpio_select_core(LEFT_BUTTON_PIN, CORES_APPS_CORE);
+ uapi_gpio_set_dir(LEFT_BUTTON_PIN, GPIO_DIRECTION_INPUT);
+
+ // 配置右按钮引脚为GPIO模式并设置为输入
+ uapi_pin_set_mode(RIGHT_BUTTON_PIN, HAL_PIO_FUNC_GPIO);
+ uapi_gpio_set_dir(RIGHT_BUTTON_PIN, GPIO_DIRECTION_INPUT);
+
+ // 配置左切换开关引脚为GPIO模式并设置为输入
+ uapi_pin_set_mode(LEFT_TOGGLE_PIN, HAL_PIO_FUNC_GPIO);
+ uapi_gpio_set_dir(LEFT_TOGGLE_PIN, GPIO_DIRECTION_INPUT);
+
+ // 配置右切换开关引脚为GPIO模式并设置为输入
+ uapi_pin_set_mode(RIGHT_TOGGLE_PIN, HAL_PIO_FUNC_GPIO);
+ uapi_gpio_set_dir(RIGHT_TOGGLE_PIN, GPIO_DIRECTION_INPUT);
+}
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/eulercar_control.c b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/eulercar_control.c
new file mode 100644
index 0000000000000000000000000000000000000000..f3f3115551a43696d0cbf03cb16774ad0478eb46
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/eulercar_control.c
@@ -0,0 +1,148 @@
+#include "../inc/eulercar_control.h"
+#include "debug_print.h"
+#include "sle_ssap_server.h" // SLE SSAP服务端,提供SSAP服务端的实现和接口
+#include "osal_task.h"
+#include "../inc/shake.h"
+
+extern uint16_t g_property_handle;
+extern uint16_t g_server_id;
+extern uint16_t g_conn_id;
+
+// 向上键报告
+usb_hid_rcu_keyboard_report_t EulerCarUp = {
+ .kind = 1, // 键盘报告类型
+ .special_key = 0, // 特殊按键
+ .reserve = 0, // 保留字段
+ .key = {0x52, 0x00, 0x00, 0x00, 0x00, 0x00} // 按键值数组
+};
+
+// 向下键报告
+usb_hid_rcu_keyboard_report_t EulerCarDown = {
+ .kind = 1, // 键盘报告类型
+ .special_key = 0, // 特殊按键
+ .reserve = 0, // 保留字段
+ .key = {0x51, 0x00, 0x00, 0x00, 0x00, 0x00} // 按键值数组
+};
+
+// 向左键报告
+usb_hid_rcu_keyboard_report_t EulerCarLeft = {
+ .kind = 1, // 键盘报告类型
+ .special_key = 0, // 特殊按键
+ .reserve = 0, // 保留字段
+ .key = {0x50, 0x00, 0x00, 0x00, 0x00, 0x00} // 按键值数组
+};
+
+// 向右键报告
+usb_hid_rcu_keyboard_report_t EulerCarRight = {
+ .kind = 1, // 键盘报告类型
+ .special_key = 0, // 特殊按键
+ .reserve = 0, // 保留字段
+ .key = {0x4f, 0x00, 0x00, 0x00, 0x00, 0x00} // 按键值数组
+};
+
+// 释放键报告
+usb_hid_rcu_keyboard_report_t EulerCarStop = {
+ .kind = 1, // 键盘报告类型
+ .special_key = 0, // 特殊按键
+ .reserve = 0, // 保留字段
+ .key = {0x28, 0x00, 0x00, 0x00, 0x00, 0x00} // 按键值数组
+};
+
+// 释放键报告
+usb_hid_rcu_keyboard_report_t EulerCarRelease = {
+ .kind = 1, // 键盘报告类型
+ .special_key = 0, // 特殊按键
+ .reserve = 0, // 保留字段
+ .key = {0x0, 0x00, 0x00, 0x00, 0x00, 0x00} // 按键值数组
+};
+
+// 辅助函数:发送键盘报告通知
+void send_keyboard_report(usb_hid_rcu_keyboard_report_t *report)
+{
+ ssaps_ntf_ind_t param = {0}; // 初始化通知参数结构体
+ param.handle = g_property_handle; // 设置通知的句柄
+ param.type = 0; // 设置通知类型为0
+ param.value = (uint8_t *)report; // 将键盘报告数据转换为 uint8_t 指针
+ param.value_len = sizeof(*report); // 设置通知数据的长度
+ ssaps_notify_indicate(g_server_id, g_conn_id, ¶m); // 发送通知
+}
+
+/**
+ * @brief 控制小车前进
+ *
+ * 该函数通过发送键盘报告通知来控制小车前进。首先发送前进键报告,
+ * 然后延时一段时间,再发送释放键报告。最后打印一条日志信息并延时一段时间。
+ */
+void eulercar_control_forward(void)
+{
+ send_keyboard_report(&EulerCarUp); // 发送前进键报告
+ (void)osal_msleep(PRESS_RELEASE_INTERVAL); // 延时
+ send_keyboard_report(&EulerCarRelease); // 发送释放键报告
+ Vibration_CarControl();
+ PRINT("[SLE Server] 星闪小车前进! \r\n");
+ (void)osal_msleep(LONG_PRESS_INTERVAL); // 延时,等待响应
+}
+
+/**
+ * @brief 控制小车后退
+ *
+ * 该函数通过发送键盘报告通知来控制小车后退。首先发送后退键报告,
+ * 然后延时一段时间,再发送释放键报告。最后打印一条日志信息并延时一段时间。
+ */
+void eulercar_control_backward(void)
+{
+ send_keyboard_report(&EulerCarDown); // 发送后退键报告
+ (void)osal_msleep(PRESS_RELEASE_INTERVAL); // 延时
+ send_keyboard_report(&EulerCarRelease); // 发送释放键报告
+ Vibration_CarControl();
+ PRINT("[SLE Server] 星闪小车后退! \r\n");
+ (void)osal_msleep(LONG_PRESS_INTERVAL); // 延时,等待响应
+}
+
+/**
+ * @brief 控制小车左转
+ *
+ * 该函数通过发送键盘报告通知来控制小车左转。首先发送左转键报告,
+ * 然后延时一段时间,再发送释放键报告。最后打印一条日志信息并延时一段时间。
+ */
+void eulercar_control_left(void)
+{
+ send_keyboard_report(&EulerCarLeft); // 发送左转键报告
+ (void)osal_msleep(PRESS_RELEASE_INTERVAL); // 延时
+ send_keyboard_report(&EulerCarRelease); // 发送释放键报告
+ Vibration_CarControl();
+ PRINT("[SLE Server] 星闪小车左转! \r\n");
+ (void)osal_msleep(LONG_PRESS_INTERVAL); // 延时,等待响应
+}
+
+/**
+ * @brief 控制小车右转
+ *
+ * 该函数通过发送键盘报告通知来控制小车右转。首先发送右转键报告,
+ * 然后延时一段时间,再发送释放键报告。最后打印一条日志信息并延时一段时间。
+ */
+void eulercar_control_right(void)
+{
+ send_keyboard_report(&EulerCarRight); // 发送右转键报告
+ (void)osal_msleep(PRESS_RELEASE_INTERVAL); // 延时
+ send_keyboard_report(&EulerCarRelease); // 发送释放键报告
+ Vibration_CarControl();
+ PRINT("[SLE Server] 星闪小车右转! \r\n");
+ (void)osal_msleep(LONG_PRESS_INTERVAL); // 延时,等待响应
+}
+
+/**
+ * @brief 控制小车暂停
+ *
+ * 该函数通过发送键盘报告通知来控制小车暂停。发送释放键报告,
+ * 然后打印一条日志信息并延时一段时间。
+ */
+void eulercar_control_stop(void)
+{
+ send_keyboard_report(&EulerCarStop); // 发送停止键报告
+ (void)osal_msleep(PRESS_RELEASE_INTERVAL); // 延时
+ send_keyboard_report(&EulerCarRelease); // 发送释放键报告
+ Vibration_CarControl();
+ PRINT("[SLE Server] 星闪小车暂停! \r\n");
+ (void)osal_msleep(LONG_PRESS_INTERVAL); // 延时,等待响应
+}
diff --git a/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/shake.c b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/shake.c
new file mode 100644
index 0000000000000000000000000000000000000000..7f25251c029d7dfa850f8ef94a5ca1f5960742fc
--- /dev/null
+++ b/hi-sle/RemoteController_WS63E_Source_Code_two/SLE_OSPP_Server/src/shake.c
@@ -0,0 +1,57 @@
+#include "../inc/shake.h"
+#include "pinctrl.h"
+#include "hal_gpio.h"
+#include "gpio.h"
+#include "tcxo.h"
+
+
+void Shake_Init(void)
+{
+ // 配置SHAKE_PIN为输出,默认不震动
+ uapi_pin_set_mode(SHAKE_PIN, HAL_PIO_FUNC_GPIO);
+ uapi_gpio_set_dir(SHAKE_PIN, GPIO_DIRECTION_OUTPUT);
+ uapi_gpio_set_val(SHAKE_PIN, GPIO_LEVEL_LOW);
+}
+
+void Shake_Start(void)
+{
+ // 设置SHAKE_PIN为高电平,启动震动马达
+ uapi_gpio_set_val(SHAKE_PIN, GPIO_LEVEL_HIGH);
+}
+
+void Shake_Stop(void)
+{
+ // 设置SHAKE_PIN为低电平,停止震动马达
+ uapi_gpio_set_val(SHAKE_PIN, GPIO_LEVEL_LOW);
+}
+
+void Shake_Buzz(unsigned int duration)
+{
+ Shake_Start();
+ uapi_tcxo_delay_ms((uint32_t)duration);// 延时指定的毫秒数
+ Shake_Stop();
+}
+
+// 开发板上电震动函数
+void Vibration_PowerOn(void)
+{
+ Shake_Buzz(VIBRATION_DURATION_POWER_ON);
+}
+
+// 星闪连接状态改变震动函数
+void Vibration_ConnChange(void)
+{
+ Shake_Buzz(VIBRATION_DURATION_CONN_CHANGE);
+}
+
+// 夹爪行程极限震动函数
+void Vibration_GripperLimit(void)
+{
+ Shake_Buzz(VIBRATION_DURATION_GRIPPER_LIMIT);
+}
+
+// 控制小车震动函数
+void Vibration_CarControl(void)
+{
+ Shake_Buzz(VIBRATION_DURATION_CAR_CONTROL);
+}
\ No newline at end of file
diff --git "a/hi-sle/images/10ms\345\273\266\346\227\266.gif" "b/hi-sle/images/10ms\345\273\266\346\227\266.gif"
new file mode 100644
index 0000000000000000000000000000000000000000..84c2d085d96e152d66d466705c57253c3c6bfdde
Binary files /dev/null and "b/hi-sle/images/10ms\345\273\266\346\227\266.gif" differ
diff --git "a/hi-sle/images/1ms\345\273\266\346\227\266.gif" "b/hi-sle/images/1ms\345\273\266\346\227\266.gif"
new file mode 100644
index 0000000000000000000000000000000000000000..a409868e3a6c09237e91d4a5bf9a10085bfb6048
Binary files /dev/null and "b/hi-sle/images/1ms\345\273\266\346\227\266.gif" differ
diff --git a/hi-sle/images/board_debugging.gif b/hi-sle/images/board_debugging.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2078779317f4177aa60a36d1a28ca6769a669d31
Binary files /dev/null and b/hi-sle/images/board_debugging.gif differ
diff --git a/hi-sle/images/handle_debugging.gif b/hi-sle/images/handle_debugging.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4520dd01df5acb939e5c9035c64af12a17679ba5
Binary files /dev/null and b/hi-sle/images/handle_debugging.gif differ
diff --git a/hi-sle/images/hihope_car.gif b/hi-sle/images/hihope_car.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3d8deee4f4c5654c3b466975b073f685895e03cc
Binary files /dev/null and b/hi-sle/images/hihope_car.gif differ