int InfinityPortal::receivePackets() {

	int packetsReceived;
	int retVal = 0;
	int len = 0;
	unsigned char* packet = new unsigned char[32];

	while(retVal == 0) {

		retVal = libusb_bulk_transfer(deviceHandler,0x81,packet,32,&len,10);
		if(retVal == 0) {
			processReceivedPacket(packet);
			packetsReceived += 1;
		}
	}

	return packetsReceived;
}
コード例 #2
0
void DataBus::AbstractClient::processReceivedPackets()
{
    // Check if a packet is available
    while (m_packetParser.isPacketAvailable())
    {
        // Process received packet
        Packet packet = m_packetParser.takePacket();

        switch (packet.getPacketType())
        {
            case PacketType_PingRequest:
            {
                processPingRequestPacket(packet);
                break;
            }

            case PacketType_RegisterClientResponse:
            {
                processRegisterClientResponsePacket(packet);
                break;
            }

            case PacketType_GetClientNameRequest:
            {
                processGetClientNameRequestPacket(packet);
                break;
            }

            case PacketType_GetClientPropertyListRequest:
            {
                processGetClientPropertyListRequestPacket(packet);
                break;
            }

            case PacketType_GetClientPropertyInfoRequest:
            {
                processGetClientPropertyInfoRequestPacket(packet);
                break;
            }

            case PacketType_GetClientPropertyValueRequest:
            {
                processGetClientPropertyValueRequestPacket(packet);
                break;
            }

            case PacketType_SetClientPropertyValueRequest:
            {
                processSetClientPropertyValueRequestPacket(packet);
                break;
            }

            case PacketType_GetClientMethodListRequest:
            {
                processGetClientMethodListRequestPacket(packet);
                break;
            }

            case PacketType_GetClientMethodInfoRequest:
            {
                processGetClientMethodInfoRequestPacket(packet);
                break;
            }

            case PacketType_GetClientMethodParameterInfoRequest:
            {
                processGetClientMethodParameterInfoRequestPacket(packet);
                break;
            }

            case PacketType_GetClientMethodReturnValueInfoRequest:
            {
                processGetClientMethodReturnValueInfoRequestPacket(packet);
                break;
            }

                // TODO:

            default:
            {
                // Check if registered
                if (m_registered == false)
                {
                    // Ignore received packets when client is not registered
                    break;
                }

                // Forward this to packet to outside
                processReceivedPacket(packet);
                break;
            }
        }
    }
}