Compare commits
1 Commits
ba83d9cdea
...
85e960e612
Author | SHA1 | Date | |
---|---|---|---|
|
85e960e612 |
@ -42,10 +42,10 @@ int main(void)
|
|||||||
{
|
{
|
||||||
cm4::InterruptGuardian::enable_interrupts();
|
cm4::InterruptGuardian::enable_interrupts();
|
||||||
while(true) {
|
while(true) {
|
||||||
for(auto it = std::begin(leds); it != std::end(leds); ++it) {
|
for(auto it = leds.begin(); it != leds.end(); ++it) {
|
||||||
nrf52::Gpio * tmp = *it;
|
nrf52::Gpio * led = *it;
|
||||||
tmp->toggle();
|
led->toggle();
|
||||||
delay.delay(200);
|
delay.ms(200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -9,7 +9,7 @@ Delay::Delay()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Delay::delay(uint64_t time_ms)
|
void Delay::ms(uint64_t time_ms)
|
||||||
{
|
{
|
||||||
this->pause = true;
|
this->pause = true;
|
||||||
this->timer_set_period_ms(time_ms);
|
this->timer_set_period_ms(time_ms);
|
||||||
|
@ -12,7 +12,7 @@ class Delay
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
Delay();
|
Delay();
|
||||||
void delay(uint64_t);
|
void ms(uint64_t);
|
||||||
|
|
||||||
void notification();
|
void notification();
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ void VirtualTimerDistributor::register_timer(VirtualTimerInterface *timer)
|
|||||||
}
|
}
|
||||||
for(auto it = this->virtual_timer_list.begin(); it != this->virtual_timer_list.end(); ++it) {
|
for(auto it = this->virtual_timer_list.begin(); it != this->virtual_timer_list.end(); ++it) {
|
||||||
if(*it == nullptr) {
|
if(*it == nullptr) {
|
||||||
|
// FIXME: We might need an interrupt lock here?
|
||||||
*it = timer;
|
*it = timer;
|
||||||
num_registered_timers++;
|
num_registered_timers++;
|
||||||
break;
|
break;
|
||||||
@ -45,8 +46,13 @@ void VirtualTimerDistributor::register_timer(VirtualTimerInterface *timer)
|
|||||||
|
|
||||||
void VirtualTimerDistributor::unregister_timer(VirtualTimerInterface *timer)
|
void VirtualTimerDistributor::unregister_timer(VirtualTimerInterface *timer)
|
||||||
{
|
{
|
||||||
|
if(num_registered_timers == 0) {
|
||||||
|
// FIXME: Error notification
|
||||||
|
return;
|
||||||
|
}
|
||||||
for(auto it = this->virtual_timer_list.begin(); it != this->virtual_timer_list.end(); ++it) {
|
for(auto it = this->virtual_timer_list.begin(); it != this->virtual_timer_list.end(); ++it) {
|
||||||
if(*it == timer) {
|
if(*it == timer) {
|
||||||
|
// FIXME: We might need an interrupt lock here?
|
||||||
*it = nullptr;
|
*it = nullptr;
|
||||||
num_registered_timers--;
|
num_registered_timers--;
|
||||||
break;
|
break;
|
||||||
@ -59,6 +65,7 @@ void VirtualTimerDistributor::unregister_timer(VirtualTimerInterface *timer)
|
|||||||
|
|
||||||
void VirtualTimerDistributor::notify(uint64_t time_ms)
|
void VirtualTimerDistributor::notify(uint64_t time_ms)
|
||||||
{
|
{
|
||||||
|
// FIXME: We're still in interrupt context of hw timer interrupt.
|
||||||
for(auto it = this->virtual_timer_list.begin(); it != this->virtual_timer_list.end(); ++it) {
|
for(auto it = this->virtual_timer_list.begin(); it != this->virtual_timer_list.end(); ++it) {
|
||||||
if(*it != nullptr) {
|
if(*it != nullptr) {
|
||||||
VirtualTimerInterface *vt = *it;
|
VirtualTimerInterface *vt = *it;
|
||||||
|
Loading…
Reference in New Issue
Block a user