void net_loop(){ // main networking loop // this handles the user interface, but also repiles from couchdb switch(ui_state){ case UI_READY: serve(); handle_db_response(); break; case UI_TWILOCK: // we do not process new socket inputs, as we have to wait for the twi bus to become ready: if(twi_try_lock_bus()){ // we aquired the bus // now we have to do our access as fast as possible, as others might wait for bus access: // call command handler, who waits for access to the bus: twi_access_fun(); fputs_P(PSTR("% "), &sock_stream); sock_stream_flush(); // we again accept commands ui_state = UI_READY; twi_free_bus(); int16_t b; while((b=fgetc(&sock_stream)) != EOF){ if(b == '\n' || b == ';'){ break; } } // handle other already existing commands in the buffer //ui_handleCMD(stream_get_sock()); } break; } }
void ui_loop(){ switch(ui_state){ case UI_READY: serve(); break; case UI_TWILOCK: // we do not process new socket inputs, as we have to wait for the twi bus to become ready: if(twi_try_lock_bus()){ // we aquired the bus // now we have to do our access as fast as possible, as others might wait for bus access: // call command handler, who waits for access to the bus: twi_access_fun(); sock_stream_flush(); // we again accept commands ui_state = UI_READY; twi_free_bus(); // handle other already existing commands in the buffer handleCMD(stream_get_sock()); } break; } }