Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
small_person
rt-thread
提交
2570fab0
R
rt-thread
项目概览
small_person
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
2570fab0
编写于
12月 24, 2022
作者:
mysterywolf
提交者:
mysterywolf
12月 26, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[sensor] add sensor list command
上级
d2bab6d7
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
79 addition
and
54 deletion
+79
-54
components/drivers/sensor/sensor.c
components/drivers/sensor/sensor.c
+1
-2
components/drivers/sensor/sensor_cmd.c
components/drivers/sensor/sensor_cmd.c
+78
-52
未找到文件。
components/drivers/sensor/sensor.c
浏览文件 @
2570fab0
/*
* Copyright (c) 2006-202
1
, RT-Thread Development Team
* Copyright (c) 2006-202
2
, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
...
...
@@ -423,7 +423,6 @@ const static struct rt_device_ops rt_sensor_ops =
};
#endif
/*
* sensor register
*/
...
...
components/drivers/sensor/sensor_cmd.c
浏览文件 @
2570fab0
/*
* Copyright (c) 2006-202
1
, RT-Thread Development Team
* Copyright (c) 2006-202
2
, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
...
...
@@ -422,9 +422,7 @@ static void sensor_fifo(int argc, char **argv)
rt_device_set_rx_indicate
(
dev
,
rx_callback
);
}
#ifdef RT_USING_FINSH
MSH_CMD_EXPORT
(
sensor_fifo
,
Sensor
fifo
mode
test
function
);
#endif
MSH_CMD_EXPORT
(
sensor_fifo
,
Sensor
fifo
mode
test
function
);
static
void
sensor_irq_rx_entry
(
void
*
parameter
)
{
...
...
@@ -485,9 +483,7 @@ static void sensor_int(int argc, char **argv)
return
;
}
}
#ifdef RT_USING_FINSH
MSH_CMD_EXPORT
(
sensor_int
,
Sensor
interrupt
mode
test
function
);
#endif
MSH_CMD_EXPORT
(
sensor_int
,
Sensor
interrupt
mode
test
function
);
static
void
sensor_polling
(
int
argc
,
char
**
argv
)
{
...
...
@@ -533,9 +529,21 @@ static void sensor_polling(int argc, char **argv)
}
rt_device_close
(
dev
);
}
#ifdef RT_USING_FINSH
MSH_CMD_EXPORT
(
sensor_polling
,
Sensor
polling
mode
test
function
);
#endif
MSH_CMD_EXPORT
(
sensor_polling
,
Sensor
polling
mode
test
function
);
static
void
sensor_cmd_warning_unknown
(
void
)
{
LOG_W
(
"Unknown command, please enter 'sensor' get help information!"
);
rt_kprintf
(
"sensor [OPTION] [PARAM]
\n
"
);
rt_kprintf
(
" probe <dev_name> probe sensor by given name
\n
"
);
rt_kprintf
(
" info get sensor information
\n
"
);
rt_kprintf
(
" read [num] read [num] times sensor (default 5)
\n
"
);
}
static
void
sensor_cmd_warning_probe
(
void
)
{
LOG_W
(
"Please probe sensor device first!"
);
}
static
void
sensor
(
int
argc
,
char
**
argv
)
{
...
...
@@ -548,18 +556,14 @@ static void sensor(int argc, char **argv)
/* If the number of arguments less than 2 */
if
(
argc
<
2
)
{
rt_kprintf
(
"
\n
"
);
rt_kprintf
(
"sensor [OPTION] [PARAM]
\n
"
);
rt_kprintf
(
" probe <dev_name> probe sensor by given name
\n
"
);
rt_kprintf
(
" info get sensor information
\n
"
);
rt_kprintf
(
" read [num] read [num] times sensor (default 5)
\n
"
);
return
;
sensor_cmd_warning_unknown
();
return
;
}
else
if
(
!
strcmp
(
argv
[
1
],
"info"
))
{
if
(
dev
==
RT_NULL
)
{
LOG_W
(
"Please probe sensor device first!"
);
sensor_cmd_warning_probe
(
);
return
;
}
sensor
=
(
rt_sensor_t
)
dev
;
...
...
@@ -585,8 +589,8 @@ static void sensor(int argc, char **argv)
if
(
dev
==
RT_NULL
)
{
LOG_W
(
"Please probe sensor device first!"
);
return
;
sensor_cmd_warning_probe
(
);
return
;
}
if
(
argc
==
3
)
{
...
...
@@ -610,49 +614,71 @@ static void sensor(int argc, char **argv)
rt_thread_mdelay
(
delay
);
}
}
else
if
(
argc
==
3
)
else
if
(
!
strcmp
(
argv
[
1
],
"list"
)
)
{
if
(
!
strcmp
(
argv
[
1
],
"probe"
))
struct
rt_object
*
object
;
struct
rt_list_node
*
node
;
struct
rt_object_information
*
information
;
rt_sensor_t
sensor_dev
;
information
=
rt_object_get_information
(
RT_Object_Class_Device
);
if
(
information
==
RT_NULL
)
return
;
rt_kprintf
(
"device name sensor name sensor type resolution mode
\n
"
);
rt_kprintf
(
"----------- ------------- ------------------ ------------- ----------
\n
"
);
for
(
node
=
information
->
object_list
.
next
;
node
!=
&
(
information
->
object_list
);
node
=
node
->
next
)
{
rt_uint8_t
reg
=
0xFF
;
rt_device_t
new_dev
;
object
=
rt_list_entry
(
node
,
struct
rt_object
,
list
);
sensor_dev
=
(
rt_sensor_t
)
object
;
if
(
sensor_dev
->
parent
.
type
!=
RT_Device_Class_Sensor
)
continue
;
rt_kprintf
(
"%-*.*s %-*s %-*s %f%-*s %s + %s + %s
\n
"
,
RT_NAME_MAX
+
3
,
RT_NAME_MAX
,
sensor_dev
->
parent
.
parent
.
name
,
14
,
sensor_dev
->
info
.
name
,
17
,
sensor_get_type_name
(
&
sensor_dev
->
info
),
sensor_dev
->
info
.
accuracy
.
resolution
,
5
,
sensor_get_unit_name
(
&
sensor_dev
->
info
),
sensor_get_accuracy_mode_name
(
&
sensor_dev
->
info
),
sensor_get_power_mode_name
(
&
sensor_dev
->
info
),
sensor_get_fetch_mode_name
(
&
sensor_dev
->
info
));
}
}
else
if
(
!
strcmp
(
argv
[
1
],
"probe"
))
{
rt_uint8_t
reg
=
0xFF
;
rt_device_t
new_dev
;
new_dev
=
rt_device_find
(
argv
[
2
]);
if
(
new_dev
==
RT_NULL
)
{
LOG_E
(
"Can't find device:%s"
,
argv
[
2
]);
return
;
}
if
(
rt_device_open
(
new_dev
,
RT_DEVICE_FLAG_RDWR
)
!=
RT_EOK
)
{
LOG_E
(
"open device failed!"
);
return
;
}
if
(
rt_device_control
(
new_dev
,
RT_SENSOR_CTRL_GET_ID
,
&
reg
)
==
RT_EOK
)
{
LOG_I
(
"Sensor Chip ID: %#x"
,
reg
);
}
if
(
dev
)
{
rt_device_close
(
dev
);
}
dev
=
new_dev
;
if
(
argc
<
3
)
{
sensor_cmd_warning_unknown
();
return
;
}
else
if
(
dev
==
RT_NULL
)
new_dev
=
rt_device_find
(
argv
[
2
]);
if
(
new_dev
==
RT_NULL
)
{
LOG_
W
(
"Please probe sensor first!"
);
return
;
LOG_
E
(
"Can't find device:%s"
,
argv
[
2
]
);
return
;
}
else
if
(
rt_device_open
(
new_dev
,
RT_DEVICE_FLAG_RDWR
)
!=
RT_EOK
)
{
LOG_E
(
"open device failed!"
);
return
;
}
if
(
rt_device_control
(
new_dev
,
RT_SENSOR_CTRL_GET_ID
,
&
reg
)
==
RT_EOK
)
{
LOG_I
(
"Sensor Chip ID: %#x"
,
reg
);
}
if
(
dev
)
{
LOG_W
(
"Unknown command, please enter 'sensor' get help information!"
);
rt_device_close
(
dev
);
}
dev
=
new_dev
;
}
else
{
LOG_W
(
"Unknown command, please enter 'sensor' get help information!"
);
sensor_cmd_warning_unknown
(
);
}
}
#ifdef RT_USING_FINSH
MSH_CMD_EXPORT
(
sensor
,
sensor
test
function
);
#endif
MSH_CMD_EXPORT
(
sensor
,
sensor
test
function
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录