From b12fc911c2e5482be815a74a89170a2b9db63c15 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Sat, 28 Sep 2024 21:55:18 +0200
Subject: [PATCH] Added the clock frequency to the scheduler initialization.

---
 scheduler/include/scheduler.h | 3 ++-
 scheduler/src/scheduler.c     | 7 ++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/scheduler/include/scheduler.h b/scheduler/include/scheduler.h
index 69c5399..c08662e 100644
--- a/scheduler/include/scheduler.h
+++ b/scheduler/include/scheduler.h
@@ -40,6 +40,7 @@ typedef struct{
   TSchedulerChannel channels[SCHEDULER_MAX_CHANNELS];
   unsigned char num_channels;
   unsigned short int prescaler;
+  unsigned int clk_freq;
   void (* start)(unsigned short int);
   void (* stop)(unsigned short int);
   void (* set_pulse)(unsigned short int,unsigned short int,unsigned char);
@@ -47,7 +48,7 @@ typedef struct{
 
 unsigned int scheduler_get_channel(sched_channel_t channel_id);
 sched_channel_t scheduler_get_id(unsigned int id);
-void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned short int prescaler);
+void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned short int prescaler,unsigned int clk_freq);
 void scheduler_interrupt(TScheduler *scheduler,sched_channel_t channel_id);
 unsigned short int scheduler_get_pulse(TScheduler *scheduler, sched_channel_t channel_id);
 void scheduler_set_channel(TScheduler *scheduler,sched_channel_t channel_id, void (*function)(void *data), unsigned char period_ms,void *data);
diff --git a/scheduler/src/scheduler.c b/scheduler/src/scheduler.c
index 9dcbb90..4b60fea 100644
--- a/scheduler/src/scheduler.c
+++ b/scheduler/src/scheduler.c
@@ -1,11 +1,11 @@
 #include "scheduler.h"
 
-extern unsigned int SystemCoreClock;
+#include <iostream>
 
 /* private functions */
 unsigned short int scheduler_ms_to_pulse(TScheduler *scheduler,unsigned char period_ms)
 {
-  return (SystemCoreClock/(scheduler->prescaler*1000))*period_ms;
+  return (scheduler->clk_freq/(scheduler->prescaler*1000))*period_ms;
 }
 
 unsigned int scheduler_get_channel(sched_channel_t channel_id)
@@ -32,7 +32,7 @@ sched_channel_t scheduler_get_id(unsigned int id)
   }
 }
 
-void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned short int prescaler)
+void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned short int prescaler,unsigned int clk_freq)
 {
   unsigned char i=0;
 
@@ -45,6 +45,7 @@ void scheduler_init(TScheduler *scheduler,unsigned char num_channels, unsigned s
   }
   scheduler->num_channels=num_channels;
   scheduler->prescaler=prescaler;
+  scheduler->clk_freq=clk_freq;
   scheduler->stop=0x00000000;
   scheduler->start=0x00000000;
   scheduler->set_pulse=0x00000000;
-- 
GitLab