コード例 #1
0
XBOX::VError VHTTPWebsocketHandler::TreatNewConnection( IHTTPResponse* inResponse)
{
	XBOX::VString	l_key;
	VError			l_err;

	if (fEndpt)
	{
		DebugMsg("TreatNewConnection previous connection still active\n");
		return VE_INVALID_PARAMETER;
	}

	l_err = VE_OK;

	if (inResponse->GetRequestHTTPVersion() != VERSION_1_1)
	{
		DebugMsg("Version HTTP 1.1 required for websockets\n");
		l_err = VE_INVALID_PARAMETER;
	}
	if (!l_err && (inResponse->GetRequestMethod() != HTTP_GET))
	{
		l_err = VE_INVALID_PARAMETER;
	}
	const XBOX::VHTTPHeader &l_rqst_hdr = inResponse->GetRequestHeader();
	if (!l_err)
	{
		l_err = ValidateHeader(l_rqst_hdr,l_key);
	}
	if (!l_err)
	{
		l_err = SendHandshake(inResponse,l_key);
	}

	if (!l_err)
	{
		fEndpt = inResponse->GetEndPoint();
		if (!fEndpt)
		{
			DebugMsg("TreatNewConnection invalid ENDPOINT\n");
			l_err = VE_INVALID_PARAMETER;
		}
		else
		{
			// make socket non-blocking for the moment (the user should POLL by using ReadMessage)
			fEndpt->SetIsBlocking(false);

			fCurt = XBOX_LONG8(0);
			fOutputIsTerminated = true;
		}
	}
	if (l_err)
	{	
		inResponse->ReplyWithStatusCode( HTTP_BAD_REQUEST);
	}
	return l_err;

}
コード例 #2
0
ファイル: main.c プロジェクト: Kledal/semesterprojekt3
int main()
{
    CyGlobalIntEnable; /* Uncomment this line to enable global interrupts. */
    isr_1_StartEx(nunchuck_isr);
   
    VDAC_Start();
    
    
    I2C_1_Start();
    SendHandshake();
    for(;;)
    {
        GetDataFromNunChuck();
        CyDelay(1);
        int test = GetJoystickY();
        VDAC_SetValue(test + 126);
    }
}
コード例 #3
0
int McuMessageHandler::ConnectionEventHandler(ENUM_SERIAL_CONNECTION_EVENT state)
{
    LogUtility::Log(LOG_LEVEL_DEBUG, "McuMessageHandler::ConnectionEventHandler state %x.", (int)state);
    
    switch(state)
    {
        case ENUM_CONNECTION_STATE_OPENED:
            SendHandshake();
            break;
        case ENUM_CONNECTION_STATE_BROKEN:
            StopTimer(m_retryTimer);
            ClearQueue();
            ClearRxPacket();
            m_handshake = false;
            break;
        default:
            break;
    }
    
    return 0;
}
コード例 #4
0
ファイル: Protocol125.cpp プロジェクト: FX-Master/MCServer
int cProtocol125::ParseHandshake(void)
{
	HANDLE_PACKET_READ(ReadBEUTF16String16, AString, Username);

	AStringVector UserData = StringSplit(Username, ";"); // "FakeTruth;localhost:25565"
	if (UserData.empty())
	{
		m_Client->Kick("Did not receive username");
		return PARSE_OK;
	}
	m_Username = UserData[0];

	LOGD("HANDSHAKE %s", Username.c_str());

	if (!m_Client->HandleHandshake( m_Username ))
	{
		return PARSE_OK; // Player is not allowed into the server
	}

	SendHandshake(cRoot::Get()->GetServer()->GetServerID());
	LOGD("User \"%s\" was sent a handshake response", m_Username.c_str());

	return PARSE_OK;
}
コード例 #5
0
void McuMessageHandler::HandlePacket()
{
    unsigned short seq = MCU_GET_SHORT(m_rxPacket, 2);
    unsigned short id = MCU_GET_SHORT(m_rxPacket, 4);
    unsigned char len = MCU_GET_BYTE(m_rxPacket, 6);
    unsigned char checksum = 0;
    int packetsize = m_rxPacket.size();
    printf("rx:");
    for(int j = 0; j<packetsize; j++)
    {
        printf("%02x ",m_rxPacket[j]);
    }
    printf("\n");

    if((packetsize - 8) != len)
    {
        LogUtility::Log(LOG_LEVEL_ERROR, "McuMessageHandler::HandlePacket length not matching(%d, %d).", packetsize, len);
        return;
    }

    for(int i = 2; i < packetsize - 1; i ++)
    {
        checksum ^= m_rxPacket[i];
    }
    
    if(checksum != m_rxPacket[1])
    {
        LogUtility::Log(LOG_LEVEL_ERROR, "McuMessageHandler::HandlePacket checksum not matching(%02x, %02x).", checksum, m_rxPacket[1]);
        return;
    }
    
    LogUtility::Log(LOG_LEVEL_DEBUG, "McuMessageHandler::HandlePacket check pass(%04x, %d, %d).", id, len, seq);
    
    switch(id)
    {
        case MCU_PACKET_STATION_REPORT:
        case MCU_PACKET_LED1:
        case MCU_PACKET_LED2:
        case MCU_PACKET_LED3:
        case MCU_PACKET_LED4:
            ProcessCommonReply(len, id, seq);
            break;
        case MCU_PACKET_HANDSHAKE:
            if(m_handshake == false)
            {
                ProcessHandshake(len, seq);
            }
            if(m_handshake == false)
            {
                SendHandshake();
            }
            break;
        case MCU_POS_STATION:
            ProcessPosStation(len, seq);
            break;
        case MCU_POS_DATE:
            ProcessPosDate(len, seq);
            break;
        case MCU_POS_TIME:
            ProcessPosTime(len, seq);
            break;
        case MCU_POS_GET_PASSENGER:
            ProcessGetPassenger(len, seq);
            break;
        case MCU_POS_GET_DEAL:
            ProcessGetDeal(len, seq);
            break;
        case MCU_CAN_GET_DATA:
            ProcessGetCanData(len, seq);
            break;
        default:
            LogUtility::Log(LOG_LEVEL_DEBUG, "McuMessageHandler::HandlePacket unknown message.");
            break;
    }
}