Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lfmiao0
rt-thread
提交
306e1ac4
R
rt-thread
项目概览
lfmiao0
/
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,发现更多精彩内容 >>
提交
306e1ac4
编写于
3月 04, 2014
作者:
B
bernard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[DeviceDrivers] Add watchdog driver frame work
上级
020e95d9
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
176 addition
and
0 deletion
+176
-0
components/drivers/include/drivers/watchdog.h
components/drivers/include/drivers/watchdog.h
+56
-0
components/drivers/include/rtdevice.h
components/drivers/include/rtdevice.h
+4
-0
components/drivers/watchdog/SConscript
components/drivers/watchdog/SConscript
+8
-0
components/drivers/watchdog/watchdog.c
components/drivers/watchdog/watchdog.c
+108
-0
未找到文件。
components/drivers/include/drivers/watchdog.h
0 → 100644
浏览文件 @
306e1ac4
/*
* File : watchdog.h
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2012-2014, Shanghai Real-Thread Electronic Technology Co.,Ltd
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Change Logs:
* Date Author Notes
* 2012-09-12 heyuanjie87 first version.
*/
#ifndef __WATCHDOG_H__
#define __WATCHDOG_H__
#include <rtthread.h>
#define RT_DEVICE_CTRL_WDT_GET_TIMEOUT (1)
/* get timeout(in seconds) */
#define RT_DEVICE_CTRL_WDT_SET_TIMEOUT (2)
/* set timeout(in seconds) */
#define RT_DEVICE_CTRL_WDT_GET_TIMELEFT (3)
/* get the left time before reboot(in seconds) */
#define RT_DEVICE_CTRL_WDT_KEEPALIVE (4)
/* refresh watchdog */
#define RT_DEVICE_CTRL_WDT_START (5)
/* start watchdog */
#define RT_DEVICE_CTRL_WDT_STOP (6)
/* stop watchdog */
struct
rt_watchdog_ops
;
struct
rt_watchdog_device
{
struct
rt_device
parent
;
struct
rt_watchdog_ops
*
ops
;
};
typedef
struct
rt_watchdog_device
rt_watchdog_t
;
struct
rt_watchdog_ops
{
rt_err_t
(
*
init
)(
rt_watchdog_t
*
wdt
);
rt_err_t
(
*
control
)(
rt_watchdog_t
*
wdt
,
int
cmd
,
void
*
arg
);
};
rt_err_t
rt_hw_watchdog_register
(
rt_watchdog_t
*
wdt
,
const
char
*
name
,
rt_uint32_t
flag
,
void
*
data
);
#endif
/* __WATCHDOG_H__ */
components/drivers/include/rtdevice.h
浏览文件 @
306e1ac4
...
...
@@ -320,5 +320,9 @@ void rt_data_queue_reset(struct rt_data_queue *queue);
#include "drivers/sdio.h"
#endif
#ifdef RT_USING_WDT
#include "drivers/watchdog.h"
#endif
#endif
/* __RT_DEVICE_H__ */
components/drivers/watchdog/SConscript
0 → 100644
浏览文件 @
306e1ac4
from
building
import
*
cwd
=
GetCurrentDir
()
src
=
Glob
(
'*.c'
)
CPPPATH
=
[
cwd
+
'/../include'
]
group
=
DefineGroup
(
'DeviceDrivers'
,
src
,
depend
=
[
'RT_USING_WDT'
],
CPPPATH
=
CPPPATH
)
Return
(
'group'
)
components/drivers/watchdog/watchdog.c
0 → 100644
浏览文件 @
306e1ac4
/*
* File : watchdog.h
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2012-2014, Shanghai Real-Thread Electronic Technology Co.,Ltd
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Change Logs:
* Date Author Notes
* 2012-09-12 heyuanjie87 first version.
* 2014-03-04 Bernard code cleanup
*/
#include <drivers/watchdog.h>
/* RT-Thread Device Interface */
/*
* This function initializes serial
*/
static
rt_err_t
rt_watchdog_init
(
struct
rt_device
*
dev
)
{
rt_watchdog_t
*
wtd
;
RT_ASSERT
(
dev
!=
RT_NULL
);
wtd
=
(
rt_watchdog_t
*
)
dev
;
if
(
wtd
->
ops
->
init
)
{
return
(
wtd
->
ops
->
init
(
wtd
));
}
return
(
-
RT_ENOSYS
);
}
static
rt_err_t
rt_watchdog_open
(
struct
rt_device
*
dev
,
rt_uint16_t
oflag
)
{
return
(
RT_EOK
);
}
static
rt_err_t
rt_watchdog_close
(
struct
rt_device
*
dev
)
{
rt_watchdog_t
*
wtd
;
RT_ASSERT
(
dev
!=
RT_NULL
);
wtd
=
(
rt_watchdog_t
*
)
dev
;
if
(
wtd
->
ops
->
control
(
wtd
,
RT_DEVICE_CTRL_WDT_STOP
,
RT_NULL
)
!=
RT_EOK
)
{
rt_kprintf
(
" This watchdog can not be stoped
\n
"
);
return
(
-
RT_ERROR
);
}
return
(
RT_EOK
);
}
static
rt_err_t
rt_watchdog_control
(
struct
rt_device
*
dev
,
rt_uint8_t
cmd
,
void
*
args
)
{
rt_watchdog_t
*
wtd
;
RT_ASSERT
(
dev
!=
RT_NULL
);
wtd
=
(
rt_watchdog_t
*
)
dev
;
return
(
wtd
->
ops
->
control
(
wtd
,
cmd
,
args
));
}
/**
* This function register a watchdog device
*/
rt_err_t
rt_hw_watchdog_register
(
struct
rt_watchdog_device
*
wtd
,
const
char
*
name
,
rt_uint32_t
flag
,
void
*
data
)
{
struct
rt_device
*
device
;
RT_ASSERT
(
wtd
!=
RT_NULL
);
device
=
&
(
wtd
->
parent
);
device
->
type
=
RT_Device_Class_Miscellaneous
;
device
->
rx_indicate
=
RT_NULL
;
device
->
tx_complete
=
RT_NULL
;
device
->
init
=
rt_watchdog_init
;
device
->
open
=
rt_watchdog_open
;
device
->
close
=
rt_watchdog_close
;
device
->
read
=
RT_NULL
;
device
->
write
=
RT_NULL
;
device
->
control
=
rt_watchdog_control
;
device
->
user_data
=
data
;
/* register a character device */
return
rt_device_register
(
device
,
name
,
flag
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录