From: sangorrin Date: Fri, 18 Apr 2008 10:50:20 +0000 (+0000) Subject: corrected an error in the sporadic servers... the activation time is the timestamp... X-Git-Url: https://rtime.felk.cvut.cz/gitweb/frescor/fna.git/commitdiff_plain/1bedc8126bdb68b33202aeff87298b4f675f5a95 corrected an error in the sporadic servers... the activation time is the timestamp when the packet is enqueued, not when the frame is sent!!! git-svn-id: http://www.frescor.org/private/svn/frescor/fna/trunk@1124 35b4ef3e-fd22-0410-ab77-dab3279adceb --- diff --git a/src_frescan/frescan.c b/src_frescan/frescan.c index 4084c8c..5ec15fa 100644 --- a/src_frescan/frescan.c +++ b/src_frescan/frescan.c @@ -532,7 +532,9 @@ static int frescan_hook_frame_sent(const struct can_chip_t *chip) DEBUG(FRESCAN_SENT_HOOK_ENABLE_DEBUG, "calling frame_sent + program repl for id:%u\n", id); - ret = frescan_replenishment_program(chip->minor, id); + ret = frescan_replenishment_program(chip->minor, + id, + &packet->timestamp); if (ret != 0) { ERROR("could not program replenishment\n"); return -1; diff --git a/src_frescan/frescan_packets.h b/src_frescan/frescan_packets.h index 62e5748..37e01f3 100644 --- a/src_frescan/frescan_packets.h +++ b/src_frescan/frescan_packets.h @@ -25,6 +25,7 @@ #ifndef _MARTE_FRESCAN_PACKETS_H_ #define _MARTE_FRESCAN_PACKETS_H_ +#include // struct timespec #include // uint8_t ... #include "frescan.h" // frescan_flags_t #include // struct list_head @@ -63,6 +64,7 @@ * @buffer_head: pointer to first byte of the buffer that is going to be sent * @buffer_read_pointer: pointer to the part of the buffer being read * @buffer_pending_bytes: bytes waiting to be sent + * @timestamp: time when the packet was enqueued (activation time) * @pool_pos: position in the packets pool to know how to free it * * NOTE: the buffers could also be used on the receiving part to support @@ -78,6 +80,7 @@ typedef struct { uint8_t *buffer_head; // only for sending packets uint8_t *buffer_read_pointer; // only for sending packets uint32_t buffer_pending_bytes; // only for sending packets + struct timespec timestamp; int pool_pos; } frescan_packet_t; diff --git a/src_frescan/frescan_queues.c b/src_frescan/frescan_queues.c index e00fd83..681c716 100644 --- a/src_frescan/frescan_queues.c +++ b/src_frescan/frescan_queues.c @@ -24,6 +24,7 @@ */ #include +#include #include "frescan_queues.h" #include "frescan_packets.h" @@ -285,6 +286,8 @@ int frescan_servers_enqueue(frescan_network_t net, { DEBUG(FRESCAN_SERVERS_ENABLE_DEBUG, "enqueue packet for id:%u\n", id); + clock_gettime (CLOCK_MONOTONIC, &packet->timestamp); + // add the packet to the server fifo list list_add_tail(&packet->fifo_list, &the_servers_pool[net][id].packet_list.fifo_list); diff --git a/src_frescan/frescan_servers_replenishments.c b/src_frescan/frescan_servers_replenishments.c index 58d76a4..d0ea18c 100644 --- a/src_frescan/frescan_servers_replenishments.c +++ b/src_frescan/frescan_servers_replenishments.c @@ -243,7 +243,8 @@ int frescan_replenishments_init(frescan_network_t net) */ int frescan_replenishment_program(frescan_network_t net, - frescan_ss_t ss) + frescan_ss_t ss, + const struct timespec *timestamp) { int ret; frescan_repl_op_t *repl; @@ -264,7 +265,7 @@ int frescan_replenishment_program(frescan_network_t net, return -1; } - clock_gettime (CLOCK_MONOTONIC, &repl->when); + repl->when = *timestamp; incr_timespec (&repl->when, &server->params.values.period); repl->amount = 1; diff --git a/src_frescan/frescan_servers_replenishments.h b/src_frescan/frescan_servers_replenishments.h index 0a10d06..3d4e979 100644 --- a/src_frescan/frescan_servers_replenishments.h +++ b/src_frescan/frescan_servers_replenishments.h @@ -24,6 +24,7 @@ #ifndef _MARTE_FRESCAN_SERVERS_REPLENISHMENTS_H_ #define _MARTE_FRESCAN_SERVERS_REPLENISHMENTS_H_ +#include #include "frescan.h" // frescan_network_t /** @@ -48,6 +49,7 @@ extern int frescan_replenishments_init(frescan_network_t net); */ extern int frescan_replenishment_program(frescan_network_t net, - frescan_ss_t ss); + frescan_ss_t ss, + const struct timespec *timestamp); #endif // _MARTE_FRESCAN_SERVERS_REPLENISHMENTS_H_