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; }
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(); }