#include <why.h>
#include <why-messagequeue.h>
#include <why-irq.h>

int main()
{
    Why::init();

    Why::MessageQueue<int> q1(7);
    Why::MessageQueue<int> q2(5);

    Why::IRQ::connect(7,  [&q1](int){auto ok = q1.put_noblock(1); assert(ok);});
    Why::IRQ::connect(42, [&q2](int){auto ok = q2.put_noblock(2); assert(ok);});

    while (true) {
        auto elem1 = q1.get_noblock();
        if (elem1)
            std::println("q1: {}", *elem1);

        auto elem2 = q2.get_noblock();
        if (elem2)
            std::println("q2: {}", *elem2);
    }

    return 0;
}
