system/uorb: Support frequency less than 1hz

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
This commit is contained in:
dongjiuzhu1 2023-05-28 16:35:45 +08:00 committed by Xiang Xiao
parent 7b066ed0d8
commit 78590a55ea

View File

@ -70,8 +70,8 @@ static int listener_generate_object_list(FAR struct list_node *objlist,
FAR const char *filter); FAR const char *filter);
static int listener_print(FAR const struct orb_metadata *meta, int fd); static int listener_print(FAR const struct orb_metadata *meta, int fd);
static void listener_monitor(FAR struct list_node *objlist, int nb_objects, static void listener_monitor(FAR struct list_node *objlist, int nb_objects,
int topic_rate, int topic_latency, int nb_msgs, float topic_rate, int topic_latency,
int timeout); int nb_msgs, int timeout);
static int listener_update(FAR struct list_node *objlist, static int listener_update(FAR struct list_node *objlist,
FAR struct orb_object *object); FAR struct orb_object *object);
static void listener_top(FAR struct list_node *objlist, static void listener_top(FAR struct list_node *objlist,
@ -492,12 +492,12 @@ static int listener_print(FAR const struct orb_metadata *meta, int fd)
****************************************************************************/ ****************************************************************************/
static void listener_monitor(FAR struct list_node *objlist, int nb_objects, static void listener_monitor(FAR struct list_node *objlist, int nb_objects,
int topic_rate, int topic_latency, int nb_msgs, float topic_rate, int topic_latency,
int timeout) int nb_msgs, int timeout)
{ {
FAR struct pollfd *fds; FAR struct pollfd *fds;
FAR int *recv_msgs; FAR int *recv_msgs;
int interval = topic_rate ? 1000000 / topic_rate : 0; int interval = topic_rate ? (int)(1000000 / topic_rate) : 0;
int nb_recv_msgs = 0; int nb_recv_msgs = 0;
int i = 0; int i = 0;
@ -706,7 +706,7 @@ int main(int argc, FAR char *argv[])
{ {
struct list_node objlist; struct list_node objlist;
FAR struct listen_object_s *tmp; FAR struct listen_object_s *tmp;
int topic_rate = 0; float topic_rate = 0;
int topic_latency = 0; int topic_latency = 0;
int nb_msgs = 0; int nb_msgs = 0;
int timeout = 5; int timeout = 5;
@ -729,7 +729,7 @@ int main(int argc, FAR char *argv[])
switch (ch) switch (ch)
{ {
case 'r': case 'r':
topic_rate = strtol(optarg, NULL, 0); topic_rate = atof(optarg);
if (topic_rate < 0) if (topic_rate < 0)
{ {
goto error; goto error;