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; }
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); } }
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; }
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; }
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; } }