Esempio n. 1
0
void qtractorNsmClient::reply ( const QString& path, ReplyCode reply_code )
{
	const char *reply_mesg;
	switch (reply_code) {
		case ERR_OK:               reply_mesg = "OK";                   break;
		case ERR_GENERAL:          reply_mesg = "ERR_GENERAL";          break;
		case ERR_INCOMPATIBLE_API: reply_mesg = "ERR_INCOMPATIBLE_API"; break;
		case ERR_BLACKLISTED:      reply_mesg = "ERR_BLACKLISTED";      break;
		case ERR_LAUNCH_FAILED:    reply_mesg = "ERR_LAUNCH_FAILED";    break;
		case ERR_NO_SUCH_FILE:     reply_mesg = "ERR_NO_SUCH_FILE";     break;
		case ERR_NO_SESSION_OPEN:  reply_mesg = "ERR_NO_SESSION_OPEN";  break;
		case ERR_UNSAVED_CHANGES:  reply_mesg = "ERR_UNSAVED_CHANGES";  break;
		case ERR_NOT_NOW:          reply_mesg = "ERR_NOT_NOW";          break;
		default:                   reply_mesg = "(UNKNOWN)";            break;
	}

#ifdef CONFIG_LIBLO
	if (m_address && m_server) {
		if (reply_code == ERR_OK) {
			lo_send_from(m_address,
				m_server, LO_TT_IMMEDIATE,
				"/reply", "ss",
				path.toUtf8().constData(),
				reply_mesg);
		} else {
			lo_send_from(m_address,
				m_server, LO_TT_IMMEDIATE,
				"/error", "sis",
				path.toUtf8().constData(),
				int(reply_code),
				reply_mesg);
		}
	}
#endif
}
Esempio n. 2
0
File: nsm-proxy.C Progetto: imv/non
int
osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
{
    const char *new_path = &argv[0]->s;
    const char *display_name = &argv[1]->s;
    const char *client_id = &argv[2]->s;

    if ( nsm_client_id )
        free(nsm_client_id);

    nsm_client_id = strdup( client_id );

    if ( nsm_display_name )
        free( nsm_display_name );

    nsm_display_name = strdup( display_name );

    char *new_filename;

    mkdir( new_path, 0777 );

    chdir( new_path );
    
    asprintf( &new_filename, "%s/%s", new_path, CONFIG_FILE_NAME );

    struct stat st;

    if ( 0 == stat( new_filename, &st ) )
    {
        if ( open( new_path ) )
        {
        }
        else
        {
            lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/error", "sis", path, -1, "Could not open file" );
            return 0;
        }

        lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" );
    }
    else
    {
        show_gui();
    }

    if ( project_file )
        free( project_file );
    
    project_file = strdup( new_path );

// new_filename;

    lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/reply", "ss", path, "OK" );

    if ( gui_addr )
        nsm_proxy->update( gui_addr );

    return 0;
}
Esempio n. 3
0
File: nsm-proxy.C Progetto: imv/non
    void update ( lo_address to )
        {
            DMESSAGE( "Sending update" );

            lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/save_signal", "i",  _save_signal );
            lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/label", "s", _label ? _label : "" );
            lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/executable", "s", _executable ? _executable : "" );
            lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/arguments", "s", _arguments ? _arguments : "" );
        }
Esempio n. 4
0
void close_joystick( int joy_idx ){
  if ( !SDL_JoystickOpened( joy_idx ) ){
      lo_send_from( t, s, LO_TT_IMMEDIATE, "/joystick/close/error", "i", joy_idx );
      return;
  }
//   joy_map_t::const_iterator it;
  lo_send_from( t, s, LO_TT_IMMEDIATE, "/joystick/closed", "is", joy_idx, SDL_JoystickName( joy_idx ) );
  SDL_JoystickClose( joysticks.find( joy_idx )->second );
  joysticks.erase( joysticks.find( joy_idx ) );
}
Esempio n. 5
0
File: nsm-proxy.C Progetto: imv/non
int
osc_hide_gui ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
{
    hide_gui();

    lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" );

    /* FIXME: detect errors */

    lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/reply", "ss", path, "OK" );

    return 0;
}
Esempio n. 6
0
File: nsm-proxy.C Progetto: imv/non
int
osc_save ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
{
    bool r = snapshot( project_file );

    nsm_proxy->save();

    if ( r )
        lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/reply", "ss", path, "OK" );
    else
        lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/error", "sis", path, -1, "Error saving project file" );

    return 0;
}
Esempio n. 7
0
static void info_reply_rotation(lo_address *to, sosc_state_t *state) {
	if( monome_get_cols(state->monome) != monome_get_rows(state->monome) )
		info_reply_size(to, state);

	lo_send_from(to, state->server, LO_TT_IMMEDIATE, "/sys/rotation", "i",
	             monome_get_rotation(state->monome) * 90);
}
Esempio n. 8
0
    void
    Client::announce(const char *application_name,
                     const char *capabilities,
                     const char *process_name)
    {
        // MESSAGE( "Announcing to NSM" );

        lo_address to = lo_address_new_from_url(nsm_url);

        if(!to)
            //    MESSAGE( "Bad address" );
            return;

        int pid = (int)getpid();

        lo_send_from(to,
                     _server,
                     LO_TT_IMMEDIATE,
                     "/nsm/server/announce",
                     "sssiii",
                     application_name,
                     capabilities,
                     process_name,
                     1,
                     /* api_major_version */
                     0,
                     /* api_minor_version */
                     pid);

        lo_address_free(to);
    }
Esempio n. 9
0
static int notify(sosc_ipc_type_t type, sosc_device_info_t *dev)
{
	lo_address dst;
	char *path;
	int i;

	switch (type) {
	case SOSC_DEVICE_CONNECTION:
		path = "/serialosc/add";
		break;

	case SOSC_DEVICE_DISCONNECTION:
		path = "/serialosc/remove";
		break;

	default:
		return 1;
	}

	for (i = 0; i < notifications.count; i++) {
		if (!(dst = lo_address_new(
		            notifications.endpoints[i].host,
		            notifications.endpoints[i].port))) {
			fprintf(stderr, "notify(): couldn't allocate lo_address\n");
			continue;
		}

		lo_send_from(dst, srv, LO_TT_IMMEDIATE, path, "ssi",
		             dev->serial, dev->friendly, dev->port);

		lo_address_free(dst);
	}

	return 0;
}
Esempio n. 10
0
 RelayExpr() {
     // Create local relay
     relay  = new RmmApp(RELAY_PORT, "R0");
     client = new RmmApp(SOURCE_PORT, "CLIENT", MONITOR_PORT);
     
     relay->start(false);
     client->start(false);
     usleep(1e6);
     
     client->requestRegistration(SERVER_IP_VIRGINIA, RELAY_PORT);
     usleep(1e6);
     
     // ask the relay to redirect
     client->join(SERVER_IP, RELAY_PORT);
     
     usleep(1e6);
     
     lo_address target = lo_address_new(SERVER_IP, RELAY_PORT);
     lo_send_from(target, client->getserverptr(), LO_TT_IMMEDIATE, "/status", "");
     lo_address_free(target);
     
     client->setTestListener(this);
     client->changeTargetName(SERVER_NAME);
     client->addRelayConnection(SERVER_IP_VIRGINIA, RELAY_PORT);
     client->addRelayConnection(SERVER_IP_TX, RELAY_PORT);
     client->addRelayConnection(SERVER_IP_GA, RELAY_PORT);
     client->addRelayConnection(SERVER_IP_UK, RELAY_PORT);
     
     for (int a = 0; a < 1000; ++a) {
         usleep(1000);
         client->poll();
         relay->poll();
     }
 }
Esempio n. 11
0
File: nsm-proxy.C Progetto: imv/non
void handle_sigchld ( )
{
    for ( ;; )
    {
        int status;
        pid_t pid = waitpid(-1, &status, WNOHANG);

        if (pid <= 0) 
            break;
        
        if ( pid == gui_pid )
        {
            lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" );

            gui_pid = 0;

            /* don't care... */
            continue;
        }

        /* otherwise, it was our proxied process that died, so we should die too */
        printf( "proxied process died... nsm-proxy dying too\n" );

        die_now = 1;
    }
}
Esempio n. 12
0
File: nsm-proxy.C Progetto: imv/non
void
show_gui ( void )
{

    int pid;
    if ( ! (pid = fork()) )
    {
        char executable[] = "nsm-proxy-gui";

        MESSAGE( "Launching %s\n", executable );
        
        char *url = lo_server_get_url( losrv );

        char *args[] = { executable, strdup( "--connect-to" ), url, NULL };
        
        if ( -1 == execvp( executable, args ) )
        {
            WARNING( "Error starting process: %s", strerror( errno ) );
            
            exit(-1);
        }
    }
    
    gui_pid = pid;

    lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_shown", "" );
}
Esempio n. 13
0
static void handle_enc_key(const monome_event_t *e, void *data) {
    sosc_state_t *state = data;
    char *cmd;

    cmd = osc_path("enc/key", state->config.app.osc_prefix);
    lo_send_from(state->outgoing, state->server, LO_TT_IMMEDIATE, cmd, "ii",
                 e->encoder.number, e->event_type == MONOME_ENCODER_KEY_DOWN);
    s_free(cmd);
}
Esempio n. 14
0
static void handle_tilt(const monome_event_t *e, void *data) {
    sosc_state_t *state = data;
    char *cmd;

    cmd = osc_path("tilt", state->config.app.osc_prefix);
    lo_send_from(state->outgoing, state->server, LO_TT_IMMEDIATE, cmd, "iiii",
                 e->tilt.sensor, e->tilt.x, e->tilt.y, e->tilt.z);
    s_free(cmd);
}
Esempio n. 15
0
static void send_connection_status(sosc_state_t *state, int status) {
    char *cmd, *cmds[] = {
        "/sys/disconnect",
        "/sys/connect"
    };

    cmd = cmds[status & 1];
    lo_send_from(state->outgoing, state->server, LO_TT_IMMEDIATE, cmd, "");
}
Esempio n. 16
0
static void monome_handle_press(const monome_event_t *e, void *data) {
    char *cmd;
    char *prefix = data;

    ASPRINTF_OR_BAIL(&cmd, "/%s/press", prefix);
    lo_send_from(state.outgoing, state.server, LO_TT_IMMEDIATE, cmd, "iii",
                 e->grid.x, e->grid.y, e->event_type);
    m_free(cmd);
}
Esempio n. 17
0
void open_joystick( int joy_idx ){
  if ( SDL_JoystickOpened( joy_idx ) ){
      return;
  }
  SDL_Joystick * newjoy = SDL_JoystickOpen( joy_idx );
  if (!newjoy)
  {
    fprintf(stderr, "Unable to open joystick %d\n", joy_idx);
    lo_send_from( t, s, LO_TT_IMMEDIATE, "/joystick/open/error", "i", joy_idx );
  }
  else
  {
    joysticks[ joy_idx ] = newjoy;
    lo_send_from( t, s, LO_TT_IMMEDIATE, "/joystick/open", "is", joy_idx, SDL_JoystickName( joy_idx ) );
//     /// add to the vector:
//     joysticks.push_back( newjoy );
  }
}
Esempio n. 18
0
static void handle_press(const monome_event_t *e, void *data) {
    sosc_state_t *state = data;
    char *cmd;

    cmd = osc_path("grid/key", state->config.app.osc_prefix);
    lo_send_from(state->outgoing, state->server, LO_TT_IMMEDIATE, cmd, "iii",
                 e->grid.x, e->grid.y, e->event_type == MONOME_BUTTON_DOWN);
    s_free(cmd);
}
Esempio n. 19
0
// added by owen for Chronome
static void handle_pressure(const monome_event_t *e, void *data) {
    sosc_state_t *state = data;
    char *cmd;

    cmd = osc_path("grid/pressure", state->config.app.osc_prefix);
    lo_send_from(state->outgoing, state->server, LO_TT_IMMEDIATE, cmd, "iii",
                 e->pressure.x, e->pressure.y, e->pressure.value);
    s_free(cmd);
}
Esempio n. 20
0
static void handle_enc_delta(const monome_event_t *e, void *data) {
    sosc_state_t *state = data;
    char *cmd;

    cmd = osc_path("enc/delta", state->config.app.osc_prefix);
    lo_send_from(state->outgoing, state->server, LO_TT_IMMEDIATE, cmd, "ii",
                 e->encoder.number, e->encoder.delta);
    s_free(cmd);
}
Esempio n. 21
0
File: nsm-proxy.C Progetto: imv/non
    void label ( const char *s )
        {
            if ( _label )
                free( _label );

            _label = strdup( s );

            lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/label", "s", _label );
        }
Esempio n. 22
0
void qtractorNsmClient::progress ( float percent )
{
#ifdef CONFIG_LIBLO
	if (m_address && m_server && m_active) {
		lo_send_from(m_address,
			m_server, LO_TT_IMMEDIATE,
			"/nsm/client/progress", "f", percent);
	}
#endif
}
Esempio n. 23
0
 void
 Client::is_clean(void)
 {
     if(nsm_is_active)
         lo_send_from(nsm_addr,
                      _server,
                      LO_TT_IMMEDIATE,
                      "/nsm/client/is_clean",
                      "");
 }
Esempio n. 24
0
void qtractorNsmClient::message ( int priority, const QString& mesg )
{
#ifdef CONFIG_LIBLO
	if (m_address && m_server && m_active) {
		lo_send_from(m_address,
			m_server, LO_TT_IMMEDIATE,
			"/nsm/client/message", "is", priority,
			mesg.toUtf8().constData());
	}
#endif
}
Esempio n. 25
0
 void
 Client::progress(float p)
 {
     if(nsm_is_active)
         lo_send_from(nsm_addr,
                      _server,
                      LO_TT_IMMEDIATE,
                      "/nsm/client/progress",
                      "f",
                      p);
 }
Esempio n. 26
0
static
int filepath_handler(const char *path, const char *types, lo_arg **argv, int argc,
		 lo_message msg, void *user_data)
{
	lo_address src = lo_message_get_source( msg );
	lo_server serv = (lo_server)user_data;
	int result;

	// Send back reply
	if (input_file->filepath) {
		result = lo_send_from( src, serv, LO_TT_IMMEDIATE,
					  "/deck/filepath", "s", input_file->filepath );
	} else {
		// Empty filepath
		result = lo_send_from( src, serv, LO_TT_IMMEDIATE, "/deck/filepath", "s", "" );
	}
	if (result<1) fprintf(stderr, "Error: sending reply failed: %s\n", lo_address_errstr(src));

    return 0;
}
Esempio n. 27
0
int subtest_handler(const char *path, const char *types, lo_arg **argv,
		    int argc, lo_message data, void *user_data)
{
    lo_address a = lo_message_get_source(data);

    subtest_count++;
    printf("got subtest message %d\n", subtest_count);
    lo_send_from(a, lo_server_thread_get_server(user_data),
                 LO_TT_IMMEDIATE, "/subtest", "i", subtest_count);

    return 0;
}
Esempio n. 28
0
 void
 Client::message(int priority, const char *msg)
 {
     if(nsm_is_active)
         lo_send_from(nsm_addr,
                      _server,
                      LO_TT_IMMEDIATE,
                      "/nsm/client/message",
                      "is",
                      priority,
                      msg);
 }
Esempio n. 29
0
void qtractorNsmClient::visible ( bool is_visible )
{
#ifdef CONFIG_LIBLO
	if (m_address && m_server && m_active) {
		const char *path = is_visible
			? "/nsm/client/gui_is_shown"
			: "/nsm/client/gui_is_hidden";
		lo_send_from(m_address,
			m_server, LO_TT_IMMEDIATE,
			path, "");
	}
#endif
}
Esempio n. 30
0
// Session client methods.
void qtractorNsmClient::dirty ( bool is_dirty )
{
#ifdef CONFIG_LIBLO
	if (m_address && m_server && m_active) {
		const char *path = is_dirty
			? "/nsm/client/is_dirty"
			: "/nsm/client/is_clean";
		lo_send_from(m_address,
			m_server, LO_TT_IMMEDIATE,
			path, "");
	}
#endif
}