コード例 #1
0
ファイル: monitor.c プロジェクト: sofian/libmapper
void mapper_monitor_link(mapper_monitor mon,
                         const char* source_device,
                         const char* dest_device,
                         mapper_db_link_t *props,
                         unsigned int props_flags)
{
    if (props && (props_flags & LINK_NUM_SCOPES) && props->num_scopes &&
        ((props_flags & LINK_SCOPE_NAMES) || (props_flags & LINK_SCOPE_HASHES))) {
        lo_message m = lo_message_new();
        if (!m)
            return;
        lo_message_add_string(m, source_device);
        lo_message_add_string(m, dest_device);
        lo_message_add_string(m, "@scope");
        int i;
        if (props_flags & LINK_SCOPE_NAMES) {
            for (i=0; i<props->num_scopes; i++) {
                lo_message_add_string(m, props->scope_names[i]);
            }
        }
        else if (props_flags & LINK_SCOPE_HASHES) {
            for (i=0; i<props->num_scopes; i++) {
                lo_message_add_int32(m, props->scope_hashes[i]);
            }
        }

        lo_send_message(mon->admin->admin_addr, "/link", m);
        free(m);
    }
    else
        mapper_admin_send_osc( mon->admin, 0, "/link", "ss",
                               source_device, dest_device );
}
コード例 #2
0
void mapper_slot_add_props_to_message(lo_message msg, mapper_slot slot,
                                      int is_dest, int staged)
{
    char temp[16];
    if (is_dest)
        snprintf(temp, 16, "@dst");
    else if (slot->id == 0)
        snprintf(temp, 16, "@src");
    else
        snprintf(temp, 16, "@src.%d", slot->id);
    int len = strlen(temp);

    if (!staged && slot->signal->local) {
        // include length from associated signal
        snprintf(temp+len, 16-len, "%s", mapper_protocol_string(AT_LENGTH));
        lo_message_add_string(msg, temp);
        lo_message_add_int32(msg, slot->signal->length);

        // include type from associated signal
        snprintf(temp+len, 16-len, "%s", mapper_protocol_string(AT_TYPE));
        lo_message_add_string(msg, temp);
        lo_message_add_char(msg, slot->signal->type);
    }

    mapper_table_add_to_message(0, staged ? slot->staged_props : slot->props,
                                msg);

    if (staged) {
        // clear the staged properties
        mapper_table_clear(slot->staged_props);
    }
}
コード例 #3
0
ファイル: oscsend.c プロジェクト: flv0/veejay
void	veejay_bundle_sample_add( void *osc, int id, const char *word, const char *format, ... )
{
	char osc_path[256];
	oscclient_t *c = (oscclient_t*) osc;
	if(!c->bundle)
	{
		c->bundle = lo_bundle_new( LO_TT_IMMEDIATE );
	}

	sprintf(osc_path, "/sample_%d/%s", id, word );
	lo_message lmsg = lo_message_new();
	lo_message_add_string(lmsg, c->window );
	lo_message_add_string(lmsg, osc_path );

	va_list ap;
	if( format )
	{
		va_start( ap, format );
		veejay_add_arguments_( lmsg, format, ap );
		va_end(ap);
	}

	
	lo_bundle_add_message( c->bundle, "/update/widget", lmsg );
}
コード例 #4
0
//================================================================
void io_dump_config()
{
	if(io_())
	{
		lo_message msgio=lo_message_new();

//common properties with jack_audio_send first
		lo_message_add_int32(msgio,atoi(localPort)); //0
		//local jack info
		lo_message_add_string(msgio,client_name); //1
		lo_message_add_string(msgio,server_name); //2
		lo_message_add_int32(msgio,sample_rate); //3
		lo_message_add_int32(msgio,period_size); //4
		lo_message_add_int32(msgio,output_port_count); //5
		//this is not a property of local JACK
		lo_message_add_int32(msgio,bytes_per_sample); //6
		lo_message_add_int32(msgio,test_mode); //7
		lo_message_add_int32(msgio,receive_max); //8

//gap for future common props
		lo_message_add_int32(msgio,0); //9
		lo_message_add_int32(msgio,0); //10
		lo_message_add_int32(msgio,0); //11
		lo_message_add_int32(msgio,0); //12
		lo_message_add_int32(msgio,0); //13
		lo_message_add_int32(msgio,0); //14
		lo_message_add_int32(msgio,0); //15
		lo_message_add_int32(msgio,0); //16
		lo_message_add_int32(msgio,0); //17
		lo_message_add_int32(msgio,0); //18
		lo_message_add_int32(msgio,0); //19

//custom properties start here
		lo_message_add_int32(msgio,channel_offset); //20

		//multi-channel period size
//		lo_message_add_float(msgio,output_port_count*period_size*bytes_per_sample);
		lo_message_add_int32(msgio,zero_on_underflow); //21
		lo_message_add_int32(msgio,rebuffer_on_restart); //22
		lo_message_add_int32(msgio,rebuffer_on_underflow); //23
		lo_message_add_int32(msgio,allow_remote_buffer_control); //24
		lo_message_add_int32(msgio,close_on_incomp); //25

//		fprintf(stderr,"receiving on TCP port: %s\n",localPort);
//		fprintf(stderr,"receiving on UDP port: %s\n",localPort);

//		lo_message_add_int32(msgio,max_buffer_size);
//should be global
//		lo_message_add_int32(msgio,rb_size);

		lo_send_message(loio, "/config_dump", msgio);
		lo_message_free(msgio);
	}//end if io_
}//end io_dump_config
コード例 #5
0
ファイル: jack_audio_common.c プロジェクト: 7890/jack_tools
//=========================================================
void io_simple_string_double(char *path, const char *string1, const char *string2)
{
	if(io_())
	{
		lo_message msgio=lo_message_new();
		lo_message_add_string(msgio, string1);
		lo_message_add_string(msgio, string2);
		lo_send_message(loio, path, msgio);
		lo_message_free(msgio);
	}
}
コード例 #6
0
ファイル: nfosc.c プロジェクト: guozanhua/nfosc
void nfosc_stop() {
    int i;
    if (!running) return;
    running = false;
    if( main_thread ) pthread_detach(main_thread);
    main_thread = NULL;
    
    lo_bundle osc_bundle = lo_bundle_new(LO_TT_IMMEDIATE);
    for (i=0;i<buffer_size;i++) {
        
        lo_message del_message = lo_message_new();
        lo_message_add_int32(del_message, tag_buffer[i].device_id);
        lo_message_add_int32(del_message, tag_buffer[i].symbol_id);
        lo_message_add_int32(del_message, tag_buffer[i].type_id);
        lo_message_add_string(del_message, tag_buffer[i].uid_str);
        lo_bundle_add_message(osc_bundle, "/nfosc/del", del_message);
        
        if (verbose) printf("del %d %d %d %s\n",tag_buffer[i].session_id,tag_buffer[i].symbol_id,tag_buffer[i].type_id,tag_buffer[i].uid_str);
    }
    
    lo_timetag frame_time;
    lo_timetag_now (&frame_time);
    
    for (int dev=0;dev<no_devices;dev++) {
        if (pnd[dev]==NULL) continue;
        lo_message frm_message = lo_message_new();
        lo_message_add_int32(frm_message, -1);
        lo_message_add_timetag(frm_message, frame_time);
        lo_message_add_int32(frm_message, 0);                       // sensor dim
        if (device_count>1) sprintf(source_string, "NFOSC:%d",dev);
        lo_message_add_string(frm_message, source_string);          // source name
        lo_bundle_add_message(osc_bundle, "/tuio2/frm", frm_message);
        
        lo_message sid_message = lo_message_new();
        lo_bundle_add_message(osc_bundle, "/tuio2/alv", sid_message);
    }
    
    int ret = lo_send_bundle(target, osc_bundle);
    if(ret == -1) {
        fprintf(stderr, "an OSC error occured: %s\n", lo_address_errstr(target));
        exit(1);
    }
    
    for (int dev=0;dev<no_devices;dev++) {
        if (pnd[dev]!=NULL) {
            printf("closing NFC reader #%d: %s\n",dev,nfc_device_get_name(pnd[dev]));
            nfc_close(pnd[dev]);
        }
    }
    nfc_exit(context);
    write_database();
}
コード例 #7
0
ファイル: oscsend.c プロジェクト: flv0/veejay
void	*veejay_message_new_widget( void *osc, const char *str1,const char *str2, int n_names )
{
	oscclient_t *c = (oscclient_t*) osc;
	if(!c->bundle)
	{
		c->bundle = lo_bundle_new( LO_TT_IMMEDIATE );
	}
	lo_message lmsg = lo_message_new();
	lo_message_add_string( lmsg, str1 );
	lo_message_add_string( lmsg, str2 );
	lo_message_add_int32( lmsg, n_names );

	return (void*) lmsg;
}
コード例 #8
0
ファイル: Mixer.C プロジェクト: imv/non
void
Mixer::discover_peers ( void )
{
    if ( nsm->is_active() )
    {
        lo_message m = lo_message_new();
        
        lo_message_add_string( m, "/non/finger" );
        lo_message_add_string( m, osc_endpoint->url() );

        nsm->broadcast( m );
        
        lo_message_free( m );
    }
}
コード例 #9
0
ファイル: oscsend.c プロジェクト: flv0/veejay
void	veejay_bundle_sample_add_fx_atom( void *osc, int id,int entry, const char *word, const char *format, int type, void *value )
{
	char osc_path[256];
	oscclient_t *c = (oscclient_t*) osc;
	if(!c->bundle)
	{
		c->bundle = lo_bundle_new( LO_TT_IMMEDIATE );
	}

	sprintf(osc_path, "/sample_%d/fx_%d/%s", id, entry,word );
	lo_message lmsg = lo_message_new();
	char realwin[128];
	sprintf(realwin, "%sFX%d", c->window, entry );
	lo_message_add_string(lmsg, realwin );
	lo_message_add_string(lmsg, osc_path );

	int ival;
	char *str;
	double gval;
	uint64_t val;
	switch(type)
	{
		case VEVO_ATOM_TYPE_STRING:
			str = (char*) *( (char*) value);
			lo_message_add_string( lmsg, str );
			break;
		case VEVO_ATOM_TYPE_BOOL:
		case VEVO_ATOM_TYPE_INT:
			ival = (int) *( (int*) value );
			lo_message_add_int32( lmsg, ival );
			break;
		case VEVO_ATOM_TYPE_DOUBLE:
			gval = (double) *( (double*) value );
			lo_message_add_double( lmsg, gval );
			break;
		case VEVO_ATOM_TYPE_UINT64:
			val = (uint64_t) *( (uint64_t*) value );
			lo_message_add_int64( lmsg, (int64_t) val );
			break;
		default:
			lo_message_free( lmsg );
			return;
			break;
	}

	lo_bundle_add_message( c->bundle,"/update/widget", lmsg );

}
コード例 #10
0
ファイル: lo_bndlsend.c プロジェクト: rbdannenberg/o2
lo_message make_message(int i, char *s)
{
    lo_message msg = lo_message_new();
    lo_message_add_int32(msg, i);
    lo_message_add_string(msg, s);
    return msg;
}
コード例 #11
0
ファイル: OscClient.cpp プロジェクト: gaborpapp/Cinder-Osc
void Client::send( const osc::Message &message )
{
	lo_message msg = lo_message_new();

	for ( size_t i = 0; i < message.getNumArgs(); i++ )
	{
		switch ( message.getArgType( i ) )
		{
			case 'i':
				lo_message_add_int32( msg, message.getArg< int32_t >( i ) );
				break;

			case 'f':
				lo_message_add_float( msg, message.getArg< float >( i ) );
				break;

			case 's':
				lo_message_add_string( msg, message.getArg< std::string >( i ).c_str() );
				break;

			default:
				break;
		}
	}

	lo_send_message( mAddress, message.getAddressPattern().c_str(), msg );
	lo_message_free( msg );
}
コード例 #12
0
int osc_controller::_add_cb(const char* path, const char* types,
                            lo_arg** argv, int argc, lo_message msg)
{
    if (!m_restricted || is_target(lo_message_get_source(msg))) {
	pair<int,int> net_id(argv[0]->i, argv[1]->i);

	m_skip++;
	world_node obj = m_world->add_node(std::string(&argv[2]->s));
	m_skip--;

	if (!obj.is_null()) {
	    int local_id = obj.get_id ();
	    m_net_id[local_id] = net_id;
	    m_local_id[net_id] = local_id;

	    if (m_broadcast) {
		lo_message newmsg = lo_message_new();
		lo_message_add_int32(newmsg, argv[0]->i);
		lo_message_add_int32(newmsg, argv[1]->i);
		lo_message_add_string(newmsg, &argv[2]->s);
		broadcast_message_from(PSYNTH_OSC_MSG_ADD, newmsg, lo_message_get_source(msg));
		lo_message_free(newmsg);
	    }
	}
    }

    return 0;
}
コード例 #13
0
ファイル: oscsend.c プロジェクト: flv0/veejay
static	void veejay_add_arguments_ ( lo_message lmsg, const char *format, va_list ap )
{
	//http://liblo.sourceforge.net/docs/group__liblolowlevel.html#g31ac1e4c0ec6c61f665ce3f9bbdc53c3
	while( *format != 'x' && *format != '\0' )
	{
		switch(*format)
		{
			case 'i':
				lo_message_add_int32( lmsg, (int32_t) va_arg( ap, int));
				break;
			case 'h':
				lo_message_add_int64( lmsg, (int64_t) va_arg( ap, int64_t));
				break;
			case 's':
				{  char *str = (char*) va_arg(ap,char*);
				lo_message_add_string( lmsg, str ); }
				break;
			case 'd':
	//			double g =  (double) *(va_arg(ap, double*));
				{	double g = (double) va_arg(ap,double);
				lo_message_add_double( lmsg, g); }
				break;
			default:
				break;
		}
		*format ++;
	}
}
コード例 #14
0
ファイル: OSCeleton.cpp プロジェクト: YggdrasiI/OSCeleton
// Generate OSC message with default format
void genOscMsg(lo_bundle *bundle, char *name, int buffIndex) {

	if (handMode || posConfidence >= 0.5f)
	{
      lo_message msg = lo_message_new();

      lo_message_add_string(msg, name);

      if (!kitchenMode)
        lo_message_add_int32(msg, userID);

	  for (int i = 0; i < nDimensions; i++)
        lo_message_add_float(msg, jointCoords[i]);

	  lo_bundle_add_message(*bundle, "/joint", msg);
	}

	if (!kitchenMode && sendOrient && orientConfidence  >= 0.5f)
	{
	  lo_message msg = lo_message_new();

	  lo_message_add_string(msg, name);

	  if (!kitchenMode)
	    lo_message_add_int32(msg, userID);

	  // x data is in first column
	  lo_message_add_float(msg, jointOrients[0]);
	  lo_message_add_float(msg, jointOrients[0+3]);
	  lo_message_add_float(msg, jointOrients[0+6]);

	  // y data is in 2nd column
	  lo_message_add_float(msg, jointOrients[1]);
	  lo_message_add_float(msg, jointOrients[1+3]);
	  lo_message_add_float(msg, jointOrients[1+6]);

	  // z data is in 3rd column
	  lo_message_add_float(msg, jointOrients[2]);
	  lo_message_add_float(msg, jointOrients[2+3]);
	  lo_message_add_float(msg, jointOrients[2+6]);

	  lo_bundle_add_message(*bundle, "/orient", msg);
	}
}
コード例 #15
0
ファイル: oscsend.c プロジェクト: flv0/veejay
void	veejay_bundle_add_atom( void *osc, const char *osc_path, const char *format, int type, void *value )
{
	oscclient_t *c = (oscclient_t*) osc;
	if(!c->bundle)
	{
		c->bundle = lo_bundle_new( LO_TT_IMMEDIATE );
	}

	lo_message lmsg = lo_message_new();
	lo_message_add_string( lmsg,c->window );
	lo_message_add_string( lmsg,osc_path );

	int ival;
	char *str;
	double gval;
	uint64_t val;
	switch(type)
	{
		case VEVO_ATOM_TYPE_STRING:
			str = (char*) *( (char*) value);
			lo_message_add_string( lmsg, str );
			break;
		case VEVO_ATOM_TYPE_BOOL:
		case VEVO_ATOM_TYPE_INT:
			ival = (int) *( (int*) value );
			lo_message_add_int32( lmsg, ival );
			break;
		case VEVO_ATOM_TYPE_DOUBLE:
			gval = (double) *( (double*) value );
			lo_message_add_double( lmsg, gval );
			break;
		case VEVO_ATOM_TYPE_UINT64:
			val = (uint64_t) *( (uint64_t*) value );
			lo_message_add_int64( lmsg, (int64_t) val );
			break;
		default:
			lo_message_free( lmsg );
			return;
			break;
	}

	lo_bundle_add_message( c->bundle, "/update/widget", lmsg );

}
コード例 #16
0
ファイル: jack_audio_common.c プロジェクト: 7890/jack_tools
//=========================================================
void io_quit(char *token)
{
	if(io_())
	{
		lo_message msgio=lo_message_new();
		lo_message_add_string(msgio,token);
		lo_send_message(loio, "/quit", msgio);
		lo_message_free(msgio);
	}
}
コード例 #17
0
ファイル: oscsend.c プロジェクト: flv0/veejay
void	veejay_bundle_plugin_add( void *osc, const char *window, const char *path, const char *format, void *value )
{
	oscclient_t *c = (oscclient_t*) osc;
	if(!c->bundle)
		c->bundle = lo_bundle_new( LO_TT_IMMEDIATE );

	lo_message lmsg = lo_message_new();

	lo_message_add_string(lmsg, window );
	lo_message_add_string(lmsg, path );

	int n_elem = strlen( format );
	int ival;
	char *str;
	double gval;
	uint64_t val;
	
	switch(*format)
	{
		case 's':
			str = (char*) *( (char*) value);
			lo_message_add_string( lmsg, str );
			break;
		case 'i':
			ival = (int) *( (int*) value );
			lo_message_add_int32( lmsg, ival );
			break;
		case 'd':
			gval = (double) *( (double*) value );
			lo_message_add_double( lmsg, gval );
			break;
		case 'h':
			val = (uint64_t) *( (uint64_t*) value );
			lo_message_add_int64( lmsg, (int64_t) val );
			break;
		default:
			lo_message_free( lmsg );
			return;
			break;
	}

	lo_bundle_add_message( c->bundle,"/update/widget", lmsg );
}
コード例 #18
0
ファイル: plosc.c プロジェクト: AaronZhangL/contrib-plosc
// parse a list of Prolog terms and add arguments to an OSC message 
static int add_msg_args(lo_message msg, term_t list)
{
	term_t 	head=PL_new_term_ref();

	// copy term ref so as not to modify original
	list=PL_copy_term_ref(list);

	while (PL_get_list(list,head,list)) {
		atom_t name;
		int	 arity;
		const char  *type;

		if (!PL_get_name_arity(head,&name,&arity)) return type_error(head,"term");
		type=PL_atom_chars(name);
		switch (arity) {
		case 1: {
				term_t a1=PL_new_term_ref();
				PL_get_arg(1,head,a1);

				if (!strcmp(type,"int")) {
					int x;
					if (!PL_get_integer(a1,&x)) return type_error(a1,"integer");
					lo_message_add_int32(msg,x);
				} else if (!strcmp(type,"double")) {
					double x;
					if (!PL_get_float(a1,&x)) return type_error(a1,"float");
					lo_message_add_double(msg,x);
				} else if (!strcmp(type,"string")) {
					char *x;
					if (!PL_get_chars(a1,&x,CVT_ATOM|CVT_STRING)) return type_error(a1,"string");
					lo_message_add_string(msg,x);
				} else if (!strcmp(type,"symbol")) {
					char *x;
					if (!PL_get_chars(a1,&x,CVT_ATOM)) return type_error(a1,"atom");
					lo_message_add_symbol(msg,x);
				} else if (!strcmp(type,"float")) {
					double x;
					if (!PL_get_float(a1,&x)) return type_error(a1,"float");
					lo_message_add_float(msg,(float)x);
				}
				break;
			}
		case 0: {
				if (!strcmp(type,"true")) lo_message_add_true(msg);
				else if (!strcmp(type,"false")) lo_message_add_false(msg);
				else if (!strcmp(type,"nil")) lo_message_add_nil(msg);
				else if (!strcmp(type,"inf")) lo_message_add_infinitum(msg);
				break;
			}
		}
	}
	if (!PL_get_nil(list)) return type_error(list,"nil");
	return TRUE;
}
コード例 #19
0
void ModuleManager::deleteModuleList()
{
    int sock, n, d_len;
    struct sockaddr_in addr;
    void *data; 
    char path[] = "/ModuleList/deleteMList";
    char p[64];
    int  mColor;
    strcpy(p, OSCAddr);
    strcat(p, mPath);
    
    //create lo_message
    lo_message m = lo_message_new();
    lo_message_add_string(m, IPAddr);
    lo_message_add_string(m, p);
    lo_message_add_int32(m, mColor);
    
    data = lo_message_serialise(m, path, NULL, NULL);
    d_len = lo_message_length(m, path);
    
    //create socket
    int opt = 1;
    sock = socket(AF_INET, SOCK_DGRAM, 0);
    setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &opt, sizeof(int));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(6340);
    inet_pton(AF_INET, "255.255.255.255", &addr.sin_addr.s_addr);
    
    //send(念のため3回)
    for (int j=0; j<3; j++) {
        n = sendto(sock, data, d_len, 0, (struct sockaddr *)&addr, sizeof(addr));
        if (n < 1) {
            perror("sendto");
        }
        usleep(1000);
    }
    
    lo_message_free(m);
    close(sock);
}
コード例 #20
0
ファイル: backend_text.c プロジェクト: radarsat1/mapperRec
int text_read(char **_path, lo_message *_m, lo_timetag *_tt)
{
    const char *delim = " \r\n";
    char str[1024];
    if (!fgets(str, 1024, input_file))
        return 1;

    char *t, *p, *s = strtok_r(str, delim, &p);
    lo_timetag tt;
    lo_message m = lo_message_new();
    char *path;

    if (s) {
        tt.sec = atoi(s);
    }
    s = strtok_r(0, delim, &p);
    if (s) {
        tt.frac = atoi(s);
    }
    s = strtok_r(0, delim, &p);
    if (s) {
        path = s;
    }
    s = strtok_r(0, delim, &p);
    if (s) {
        t = s;
    }

    while ((s = strtok_r(0, delim, &p))) {
        switch (*t) {
        case 'i':
            lo_message_add_int32(m, atoi(s));
            break;
        case 'f':
            lo_message_add_float(m, atof(s));
            break;
        case 's':
            lo_message_add_string(m, s);
            break;
        }
        if (*(t+1))
            t++;
    }

    _tt->sec = tt.sec;
    _tt->frac = tt.frac;

    *_m = m;
    *_path = strdup(path);

    return 0;
}
コード例 #21
0
ファイル: oscsend.c プロジェクト: flv0/veejay
int	veejay_send_osc_strargs( void *osc, const char *msg, int n_str, char **strs )
{
	oscclient_t *c = (oscclient_t*) osc;
	lo_message lmsg = lo_message_new();
	int i;
	for( i = 0; i < n_str; i ++ )
	{
		lo_message_add_string( lmsg, strs[i] );
	}
	int result = lo_send_message( c->addr, msg, lmsg );
	lo_message_free( lmsg );
	return result;
}
コード例 #22
0
ファイル: sdl2osc.cpp プロジェクト: sensestage/sdl2osc
void send_joystick_info(int joy_idx)
{
  SDL_Joystick * joy = joysticks.find( joy_idx )->second;
  
  lo_message m1 = lo_message_new();
  lo_message_add_string( m1, SDL_JoystickName(joy_idx) );
  lo_message_add_int32( m1, joy_idx );
  lo_message_add_int32( m1, SDL_JoystickNumAxes(joy) );
  lo_message_add_int32( m1, SDL_JoystickNumButtons(joy) );
  lo_message_add_int32( m1, SDL_JoystickNumHats(joy) );
  lo_message_add_int32( m1, SDL_JoystickNumBalls(joy) );
  
  lo_send_message_from( t, s, "/joystick/info", m1 ); 
}
コード例 #23
0
ファイル: oscsend.c プロジェクト: flv0/veejay
void	veejay_bundle_add( void *osc, const char *msg, const char *format, ... )
{
	oscclient_t *c = (oscclient_t*) osc;
	if(!c->bundle)
	{
		c->bundle = lo_bundle_new( LO_TT_IMMEDIATE );
	}
	lo_message lmsg = lo_message_new();
	
	lo_message_add_string(lmsg, c->window );
	lo_message_add_string(lmsg, msg );
	
	va_list ap;

	if( format )
	{
		va_start( ap, format );
		veejay_add_arguments_( lmsg, format, ap );
		va_end(ap);
	}

	lo_bundle_add_message( c->bundle, "/update/widget", lmsg );
}
コード例 #24
0
ファイル: sdl2osc.cpp プロジェクト: sensestage/sdl2osc
lo_message get_joystick_info_msg(int joy_idx, SDL_Joystick * joy )
{
//   SDL_Joystick * joy = joysticks.find( joy_idx )->second;
  
  lo_message m1 = lo_message_new();
  lo_message_add_string( m1, SDL_JoystickName(joy_idx) );
  lo_message_add_int32( m1, joy_idx );
  lo_message_add_int32( m1, SDL_JoystickNumAxes(joy) );
  lo_message_add_int32( m1, SDL_JoystickNumButtons(joy) );
  lo_message_add_int32( m1, SDL_JoystickNumHats(joy) );
  lo_message_add_int32( m1, SDL_JoystickNumBalls(joy) );
  
//   lo_send_message_from( t, s, "/joystick/info", m1 ); 
  return m1;
}
コード例 #25
0
int mapper_router_send_query(mapper_router rtr, mapper_signal sig,
                             mapper_timetag_t tt)
{
    if (!sig->local->update_handler) {
        trace("not sending queries since signal has no handler.\n");
        return 0;
    }
    // find the corresponding router_signal
    mapper_router_signal rs = rtr->signals;
    while (rs && rs->signal != sig)
        rs = rs->next;

    // exit without failure if signal is not mapped
    if (!rs)
        return 0;

    // for each map, query remote signals
    int i, j, count = 0;
    char query_string[256];
    for (i = 0; i < rs->num_slots; i++) {
        if (!rs->slots[i])
            continue;
        mapper_map map = rs->slots[i]->map;
        if (map->status != STATUS_ACTIVE)
            continue;
        lo_message msg = lo_message_new();
        if (!msg)
            continue;
        lo_message_add_string(msg, sig->path);
        lo_message_add_int32(msg, sig->length);
        lo_message_add_char(msg, sig->type);
        // TODO: include response address as argument to allow TCP queries?
        // TODO: always use TCP for queries?

        if (rs->slots[i]->direction == MAPPER_DIR_OUTGOING) {
            snprintf(query_string, 256, "%s/get", map->destination.signal->path);
            send_or_bundle_message(map->destination.link, query_string, msg, tt);
        }
        else {
            for (j = 0; j < map->num_sources; j++) {
                snprintf(query_string, 256, "%s/get", map->sources[j]->signal->path);
                send_or_bundle_message(map->sources[j]->link, query_string, msg, tt);
            }
        }
        ++count;
    }
    return count;
}
コード例 #26
0
void osc_controller::handle_set_param_node(world_node& obj, int param_id)
{
    if (!m_skip) {
	int local_id(obj.get_id ());
	pair<int,int> net_id = m_net_id[local_id];

	lo_message msg = lo_message_new();

	lo_message_add_int32(msg, net_id.first);
	lo_message_add_int32(msg, net_id.second);
	lo_message_add_int32(msg, param_id);

	switch(obj.get_param_type(param_id)) {
	case graph::node_param::INT: {
	    int val;
	    obj.get_param(param_id, val);
	    lo_message_add_int32(msg, val);
	    break;
	}
	case graph::node_param::FLOAT: {
	    float val;
	    obj.get_param(param_id, val);
	    lo_message_add_float(msg, val);
	    break;
	}
	case graph::node_param::STRING: {
	    string val;
	    obj.get_param(param_id, val);
	    lo_message_add_string(msg, val.c_str());
	    break;
	}
	case graph::node_param::VECTOR2F: {
	    base::vector_2f val;
	    obj.get_param(param_id, val);
	    lo_message_add_float(msg, val.x);
	    lo_message_add_float(msg, val.y);
	    break;
	}
	default:
	    break;
	}

	broadcast_message(PSYNTH_OSC_MSG_PARAM, msg);

	lo_message_free(msg);
    }
}
コード例 #27
0
ファイル: oscev.c プロジェクト: fundamental/jack_tools
static void
client_callback (const char* client, int yn, void* arg)
{
	lo_message reply=lo_message_new();
	lo_message_add_string(reply,client);

	if(yn)
	{
		lo_send_message (loa, "/oscev/client/registered", reply);
	}
	else
	{
		lo_send_message (loa, "/oscev/client/unregistered", reply);
	}
	lo_message_free (reply);

	printf ("Client %s %s\n", client, (yn ? "registered" : "unregistered"));
}
コード例 #28
0
void osc_controller::handle_add_node(world_node& obj)
{
    if (!m_skip) {
	int local_id(obj.get_id ());
	pair<int,int> net_id(m_id, local_id);

	m_local_id[net_id] = local_id;
	m_net_id[local_id] = net_id;

	lo_message msg = lo_message_new();

	lo_message_add_int32(msg, net_id.first);
	lo_message_add_int32(msg, net_id.second);
	lo_message_add_string(msg, obj.get_name().c_str());

	broadcast_message(PSYNTH_OSC_MSG_ADD, msg);

	lo_message_free(msg);
    }
}
コード例 #29
0
ファイル: oscsend.c プロジェクト: flv0/veejay
void	*veejay_message_new_linked_pulldown( void *osc, const char *str1,const char *str2, const char *str3,
	       			      const char *str4, const char *format , const char *tooltip)
{
	oscclient_t *c = (oscclient_t*) osc;
	if(!c->bundle)
	{
		c->bundle = lo_bundle_new( LO_TT_IMMEDIATE );
	}
	lo_message lmsg = lo_message_new();
	lo_message_add_string( lmsg, str1 );
	lo_message_add_string( lmsg, str2 );
	lo_message_add_string( lmsg, str3 );
	lo_message_add_string( lmsg, str4 );
	lo_message_add_string( lmsg, format );
	lo_message_add_string( lmsg, tooltip );

	return (void*) lmsg;
}
コード例 #30
0
ファイル: oscsend.c プロジェクト: flv0/veejay
void	*veejay_message_new_pulldown( void *osc, const char *str1,const char *str2, const char *id, const char *str3,
	       			      const char *str4, double dv, const char *tooltip	)
{
	oscclient_t *c = (oscclient_t*) osc;
	if(!c->bundle)
	{
		c->bundle = lo_bundle_new( LO_TT_IMMEDIATE );
	}
	lo_message lmsg = lo_message_new();
	lo_message_add_string( lmsg, str1 );
	lo_message_add_string( lmsg, str2 );
	lo_message_add_string( lmsg, id );
	lo_message_add_string( lmsg, str3 );
	lo_message_add_string( lmsg, str4 );
	lo_message_add_double( lmsg, dv );
	lo_message_add_string( lmsg, tooltip );

	return (void*) lmsg;
}