Esempio n. 1
0
int main(int argc, char *argv[])
{
    uint32_t atomic_state;

    if (cmdline_parser(argc, argv, &args_info) != 0)
    {
        exit(1);
    }

    hwAlarmInit();
    hwRadioInit();
    hwRandomInit();

    otInit();
    sCliServer.Start();

    while (1)
    {
        otProcessNextTasklet();

        atomic_state = otPlatAtomicBegin();

        if (!otAreTaskletsPending())
        {
            hwSleep();
        }

        otPlatAtomicEnd(atomic_state);
    }

    return 0;
}
Esempio n. 2
0
void PlatformProcessDrivers(void)
{
    fd_set read_fds;
    fd_set write_fds;
    int max_fd = -1;
    struct timeval timeout;
    int rval;

    FD_ZERO(&read_fds);
    FD_ZERO(&write_fds);

    posixSerialUpdateFdSet(&read_fds, &write_fds, &max_fd);
    posixRadioUpdateFdSet(&read_fds, &write_fds, &max_fd);
    posixAlarmUpdateTimeout(&timeout);

    if (!otAreTaskletsPending())
    {
        rval = select(max_fd + 1, &read_fds, &write_fds, NULL, &timeout);
        assert(rval >= 0 && errno != ETIME);
    }

    posixSerialProcess();
    posixRadioProcess();
    posixAlarmProcess();
}