Цитата
я же могу просто в ключевых местах yield() расставить
Вот тут и начинается "кровосмешение" - у мну в коде именно yield() и ставится. Примерно так
Код
void serial_console_thread(void) {
__TICK_BEGIN__
while( !print("What's your name?"){ TICK_YIELD(); }
readline(buf);
while(!buf){ TICK_YIELD(); readline(buf); }
while( !print("Hello, "){ TICK_YIELD(); }
while( !print(buf){ TICK_YIELD(); }
__TICK_END__
}
void gui_thread(void)
{
__TICK_BEGIN__
while( NO_KEY == key = readkey() ){ TICK_YIELD();}
if ( key == KEY_RIGHT )
menu_move_right();
....
else
beep(); // wrong key pressed
display_update();
__TICK_END__
}
Метки в TICK_YIELD() создаются из макроса __LINE__.
Но где надо я могу себе позволить тупо перерисовать из документации машину состояний с теми же именами состояний (например машина состояний ModBus).