You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/01/19 11:37:09 UTC
[incubator-nuttx] branch master updated: rpmsg_rtc: dirctly call rpmsg_rtc_server_xx() in server_ept_cb()
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 3029457 rpmsg_rtc: dirctly call rpmsg_rtc_server_xx() in server_ept_cb()
3029457 is described below
commit 302945760c7d1c72b1b8bfa6097e852090745690
Author: ligd <li...@xiaomi.com>
AuthorDate: Wed Jan 19 00:24:17 2022 +0800
rpmsg_rtc: dirctly call rpmsg_rtc_server_xx() in server_ept_cb()
Signed-off-by: ligd <li...@xiaomi.com>
---
drivers/timers/rpmsg_rtc.c | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/drivers/timers/rpmsg_rtc.c b/drivers/timers/rpmsg_rtc.c
index 5cbc94f..2c1baf6 100644
--- a/drivers/timers/rpmsg_rtc.c
+++ b/drivers/timers/rpmsg_rtc.c
@@ -624,7 +624,6 @@ static int rpmsg_rtc_server_ept_cb(FAR struct rpmsg_endpoint *ept,
FAR void *data, size_t len, uint32_t src,
FAR void *priv)
{
- FAR struct rpmsg_rtc_server_s *server = priv;
FAR struct rpmsg_rtc_header_s *header = data;
switch (header->command)
@@ -634,8 +633,8 @@ static int rpmsg_rtc_server_ept_cb(FAR struct rpmsg_endpoint *ept,
FAR struct rpmsg_rtc_get_s *msg = data;
struct rtc_time rtctime;
- header->result = server->lower->ops->rdtime(server->lower,
- &rtctime);
+ header->result = rpmsg_rtc_server_rdtime(priv, &rtctime);
+
msg->sec = timegm((FAR struct tm *)&rtctime);
msg->nsec = rtctime.tm_nsec;
return rpmsg_send(ept, msg, sizeof(*msg));
@@ -649,8 +648,18 @@ static int rpmsg_rtc_server_ept_cb(FAR struct rpmsg_endpoint *ept,
gmtime_r(&time, (FAR struct tm *)&rtctime);
rtctime.tm_nsec = msg->nsec;
- header->result = server->lower->ops->settime(server->lower,
- &rtctime);
+
+ header->result = rpmsg_rtc_server_settime(priv, &rtctime);
+ if (header->result >= 0)
+ {
+ struct timespec tp;
+
+ tp.tv_sec = msg->sec;
+ tp.tv_nsec = msg->nsec;
+
+ clock_synchronize(&tp);
+ }
+
return rpmsg_send(ept, msg, sizeof(*msg));
}
@@ -669,16 +678,14 @@ static int rpmsg_rtc_server_ept_cb(FAR struct rpmsg_endpoint *ept,
gmtime_r(&time, (FAR struct tm *)&alarminfo.time);
alarminfo.time.tm_nsec = msg->nsec;
- header->result = server->lower->ops->setalarm(server->lower,
- &alarminfo);
+ header->result = rpmsg_rtc_server_setalarm(priv, &alarminfo);
return rpmsg_send(ept, msg, sizeof(*msg));
}
case RPMSG_RTC_ALARM_CANCEL:
{
FAR struct rpmsg_rtc_alarm_cancel_s *msg = data;
- header->result = server->lower->ops->cancelalarm(server->lower,
- msg->id);
+ header->result = rpmsg_rtc_server_cancelalarm(priv, msg->id);
return rpmsg_send(ept, msg, sizeof(*msg));
}
#endif