Exemplo n.º 1
0
	Endpoint BroadcastReceiver::GetNextRemote(timeval *timeout) throw (FatalError)
	{
		UdpSocket udpSock(INADDR_ANY, mPort, true, 1);
		sockaddr_storage remoteAddr;
		socklen_t remoteAddrLength = sizeof(remoteAddr);

		BroadcastMessage msg;
		const size_t bytesRead = udpSock.RecvFrom((uint8_t *)&msg, sizeof(msg), timeout, (sockaddr *)&remoteAddr, &remoteAddrLength);
		TraceBuffer(ZONE_VERBOSE, msg.deviceId, sizeof(msg.deviceId), "%c", "%zu bytes broadcast message received DeviceId: \n", bytesRead);
		if(msg.IsWiflyBroadcast(bytesRead)) {
			Trace(ZONE_INFO, "Broadcast detected\n");
			Endpoint newRemote(remoteAddr, remoteAddrLength, msg.port, std::string((char *)&msg.deviceId[0]));
			newRemote.SetScore(1);
			return LockedInsert(newRemote) ? newRemote : Endpoint();
		}
		return Endpoint();
	}
Exemplo n.º 2
0
int main(int argc, char* argv[]) {
      
    uint32_t seconds = 0;
    char udpPacketIn[256];
    //uint8_t osc_packet_in[256];
    uint8_t i = 0;
    int len = 0;


    UdpSocket udpSock(4001);
    udpSock.setDestination(4000, "localhost");
 
    Serial serial;
    SLIPEncodedSerial slip;

    SimpleWriter dump;

    OSCMessage msgIn;
    
    printf("cool\n");

    // make an osc object
    // the message wants an OSC address as first argument
    OSCMessage msg("/sys/renumber");
    // msg.add(888);
       
    // this just dumps it into the simple writer dump
    msg.send(dump);

    printf("\n msg is %d bytes\n", dump.length);

    // print it out
    for (i = 0; i < dump.length; i++){
        printf("%x ", dump.buffer[i]);
    }

    // UDP send
    udpSock.writeBuffer(dump.buffer, dump.length);

    // serial send
    slip.sendMessage(dump.buffer, dump.length, serial);

    printf("\ndone, now gonna receive\n");


    // full udp -> serial -> serial -> udp
    for (;;){
        // receive udp, send to serial
        len = udpSock.readBuffer(udpPacketIn, 256, 0);
        if (len > 0){
            for (i = 0; i < len; i++){
                msgIn.fill(udpPacketIn[i]);
            }
            if(!msgIn.hasError()){
                msgIn.dispatch("/thing/test", gotone, 0);
                // send it along
                msgIn.send(dump);
                slip.sendMessage(dump.buffer, dump.length, serial);
            }
            else {
                printf("bad message");
            }
            msgIn.empty();
        }   

        // receive serial, send udp
        if(slip.recvMessage(serial)) {
            udpSock.writeBuffer(slip.decodedBuf, slip.decodedLength);
        }

        // sleep for 1ms
        usleep(1000);
    } // for;;
}