static void maos_daemon(int sock){ //info2("maos_daemon is listening at %d\n", sock); thread_block_signal(); int cmd[2]; while(!streadintarr(sock, cmd, 2)){ //info2("maos_daemon got %d at %d\n", cmd[0], sock); switch(cmd[0]){ case MAOS_SERVER: { if(streadfd(sock, &maos_server_fd)){ warning("unable to read fd from %d\n", sock); maos_server_fd=-1; EXIT; }else{ warning("got fd=%d\n", maos_server_fd); } }break; case MAOS_DRAW: { int fd; if(streadfd(sock, &fd)){ warning("unable to read fd from %d\n", sock); continue; }else{ warning("got fd=%d\n", fd); } draw_add(fd); PARMS_T *parms=(PARMS_T*)global->parms;//cast away constness parms->plot.setup=1; parms->plot.run=1; if(global->setupdone){//already plotted. plot_setup(global->parms, global->powfs, global->aper, global->recon); } }break; default: warning("unknown cmd %d\n", cmd[0]); break; } } //info2("maos_daemon quit\n"); }
void set_state(LpState st, u8 setup) { if (lp_state == st && flag_is_set(lp_flags, LP_IS_SETUP) == setup) { return; } if (lp_state == LP_SESSION_MODE) { if (flag_is_set(lp_flags, LP_IS_SETUP)) { session_setup_become_inactive(); } else { session_mode_become_inactive(); } } else if (lp_state == LP_NOTES_MODE) { if (flag_is_set(lp_flags, LP_IS_SETUP)) { notes_setup_become_inactive(); } else { notes_mode_become_inactive(); } } else if (lp_state == LP_SEQUENCER_MODE) { if (flag_is_set(lp_flags, LP_IS_SETUP)) { sequencer_setup_become_inactive(); } else { sequencer_mode_become_inactive(); } } else if (lp_state == LP_USER_MODE) { if (flag_is_set(lp_flags, LP_IS_SETUP)) { user_setup_become_inactive(); } else { user_mode_become_inactive(); } } clear_leds(); if (st == LP_SESSION_MODE) { plot_pad(LP_SESSION, number_colors[LP_SESSION_MODE]); if (setup) { session_setup_become_active(); plot_setup(on_color); session_setup_draw(); } else { session_mode_become_active(); plot_setup(number_colors[LP_SESSION_MODE]); session_mode_draw(); } } else if (st == LP_NOTES_MODE) { plot_pad(LP_NOTE, number_colors[LP_NOTES_MODE]); if (setup) { notes_setup_become_active(); plot_setup(on_color); notes_setup_draw(); } else { notes_mode_become_active(); plot_setup(number_colors[LP_NOTES_MODE]); notes_mode_draw(); } } else if (st == LP_SEQUENCER_MODE) { plot_pad(LP_DEVICE, number_colors[LP_SEQUENCER_MODE]); if (setup) { sequencer_setup_become_active(); plot_setup(on_color); sequencer_setup_draw(); } else { sequencer_mode_become_active(); plot_setup(number_colors[LP_SEQUENCER_MODE]); sequencer_mode_draw(); } } else if (st == LP_USER_MODE) { plot_pad(LP_USER, number_colors[LP_USER_MODE]); if (setup) { user_setup_become_active(); plot_setup(on_color); user_setup_draw(); } else { user_mode_become_active(); plot_setup(number_colors[LP_USER_MODE]); user_mode_draw(); } } sequencer_play_draw(&lp_sequencer); lp_state = st; lp_flags = assign_flag(lp_flags, LP_IS_SETUP, setup); }