summaryrefslogtreecommitdiffstats
path: root/src/target/firmware/layer1/tdma_sched.c
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2010-09-14 21:08:19 +0200
committerSylvain Munaut <tnt@246tNt.com>2010-09-17 20:52:40 +0200
commit1ba04eb47bb1ea0706ae553150550d5a2846dc60 (patch)
tree5cfb6524503eb8032039d0e52c325121fd740a60 /src/target/firmware/layer1/tdma_sched.c
parentf06d54ed6fec78ec9c6dd106e5634b3a8c6a5220 (diff)
fw/layer1: Add a 'flags' field to sched_items and the infra to use it
This is only preparation Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Diffstat (limited to 'src/target/firmware/layer1/tdma_sched.c')
-rw-r--r--src/target/firmware/layer1/tdma_sched.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/target/firmware/layer1/tdma_sched.c b/src/target/firmware/layer1/tdma_sched.c
index 889d9e44..013d305a 100644
--- a/src/target/firmware/layer1/tdma_sched.c
+++ b/src/target/firmware/layer1/tdma_sched.c
@@ -122,6 +122,26 @@ void tdma_sched_advance(void)
sched->cur_bucket = next_bucket;
}
+/* Scan current frame scheduled items for flags */
+uint16_t tdma_sched_flag_scan(void)
+{
+ struct tdma_scheduler *sched = &l1s.tdma_sched;
+ struct tdma_sched_bucket *bucket;
+ int i;
+ uint16_t flags = 0;
+
+ /* determine current bucket */
+ bucket = &sched->bucket[sched->cur_bucket];
+
+ /* iterate over items in this bucket and call callback function */
+ for (i=0; i<bucket->num_items; i++) {
+ struct tdma_sched_item *item = &bucket->item[i];
+ flags |= item->flags;
+ }
+
+ return flags;
+}
+
/* Sort a bucket entries by priority */
static void _tdma_sched_bucket_sort(struct tdma_sched_bucket *bucket, int *seq)
{