Beispiel #1
0
static void MOX2SendData2485(MXMSG * pMsg, BOOL bNeedRsp)
{
	unsigned char	AppTemp[1024];
	int				nAppTempLen = 0;
	BYTE DA[3] = {0};
	BYTE SA[3] = {0};

	memcpy(DA,pMsg->szDestDev,3);
	
	//nDataLen = *((unsigned char*)pmsg->pParam);
	// MsgGet.pParam store self ip address


	nAppTempLen = PckCommApp( pMsg->dwMsg, 
			pMsg->pParam, pMsg->wDataLen , 
			AppTemp);

	SendData2RS485(AppTemp, nAppTempLen, SA, DA,bNeedRsp, ++g_Seq);
	
	if (FC_LF_HEARTBEAT != pMsg->dwMsg)
	{
		SetProtocolStatus(pMsg->dwMsg,pMsg->dwParam);
	}	

}
Beispiel #2
0
static void MOX2HV2HVSendUnLockCMD(void)
{
	unsigned char	AppTemp[1024];
	int				nAppTempLen = 0;
	unsigned char nDataLen = 12-4+1*2;
	BYTE DA[3] = {0,0,1};
	BYTE SA[3] = {0};
	unsigned char Data[nDataLen];

	MOXUSER	*	pDestUser;
	MOXLIFT	*	pLift;
	unsigned char * pData=Data;
	unsigned short sIdentity=0;
	
	unsigned short nFunCode;
	unsigned short sTime=0;
	

	pDestUser=GetpUserByCode( g_HV2HV.szDestUserCode,"");
	if(NULL==pDestUser)
	{
		return ;
	}
	
	pLift=GetpLiftByLiftID(pDestUser->cLiftID);
	if(NULL ==pLift)
	{
		return ;
	}
	nFunCode=FC_LF_UNLOCK;

	
	
	*pData=MOX2_LOCATION_TYPE_HV;
	pData++;
	
	*pData=pLift->cGroup;
	pData++;
	*pData=MOX2_LIFT_INDEX_BROADCAST;
	pData++;
	*pData=sIdentity>>8;
	pData++;
	*pData=sIdentity & 0xff;
	pData++;
	
	*pData=1;
	
	pData++;
	*pData=pDestUser->cLevel;
	pData++;
	*pData=pDestUser->cDoorType;
	pData++;
	*pData=sTime>>8;
	pData++;
	*pData=sTime & 0xff;
	pData++;	
	
	DA[0]=pLift->cDA1;
	DA[1]=pLift->cDA2;
	DA[2]=pLift->cDA3;
	
	nAppTempLen = PckCommApp( nFunCode, 
		Data, nDataLen , 
		AppTemp);
	SendData2RS485(AppTemp, nAppTempLen, SA, DA,NEED_RSP,++g_Seq);
	SetProtocolStatus(FC_LF_A_B,0);
	
	g_HV2HV.nStatus=MOX2_HV2HV_STATUS_WAIT_STOP_ACK;
	return ;
}
Beispiel #3
0
static void MOX2HV2HVSendStopCMD(MXMSG * pMsg)
{
	
	//MOX2SendData2485(&msgRecv,NEED_RSP);
	
	unsigned char	AppTemp[1024];
	int				nAppTempLen = 0;
	unsigned char nDataLen = 7;
	BYTE DA[3] = {0,0,1};
	BYTE SA[3] = {0};
	unsigned char Data[nDataLen];
//	int i;
	MOXUSER	*	pSrcUser;
	MOXUSER	*	pDestUser;
	MOXLIFT	*	pLift;
	unsigned char * pData=Data;
	unsigned short sIdentity=0;
	
	unsigned short nFunCode;
	
	
	pSrcUser=GetpUserByCode( g_HV2HV.szSrcUserCode,"");
	pDestUser=GetpUserByCode( g_HV2HV.szDestUserCode,"");
	if(NULL ==pSrcUser || NULL==pDestUser)
	{
		return ;
	}
	
	pLift=GetpLiftByLiftID(pSrcUser->cLiftID);
	if(NULL ==pLift)
	{
		return ;
	}
	
	if(pSrcUser->cLevel>pDestUser->cLevel)
	{
		nFunCode=FC_LF_STOP_DOWN;
	}
	else
	{
		nFunCode=FC_LF_STOP_UP;
	}
	
	*pData=MOX2_LOCATION_TYPE_HV;
	pData++;
	
	*pData=pLift->cGroup;
	pData++;
	*pData=MOX2_LIFT_INDEX_BROADCAST;
	pData++;
	*pData=pSrcUser->cDoorType;
	pData++;
	*pData=sIdentity>>8;
	pData++;
	*pData=sIdentity & 0xff;
	pData++;
	*pData=pSrcUser->cLevel;
	pData++;
	

	DA[0]=pLift->cDA1;
	DA[1]=pLift->cDA2;
	DA[2]=pLift->cDA3;
	
	nAppTempLen = PckCommApp( nFunCode, 
		Data, nDataLen , 
		AppTemp);
	SendData2RS485(AppTemp, nAppTempLen, SA, DA,NEED_RSP,++g_Seq);
	SetProtocolStatus(FC_LF_A_B,pMsg->dwParam);
	
	g_HV2HV.nStatus=MOX2_HV2HV_STATUS_WAIT_STOP_ACK;
	return ;
}
Beispiel #4
0
bool Protocol79::GameworldLogin () {
    // this is valid for 7.9!
    // 7.7 has a bit different order of stuff! check out old outcast's sources
    NetworkMessage nm;

    SetProtocolStatus("Preparing to transfer logon data...");
    connectiontype = GAMEWORLD;

    nm.AddU8(0x0A); // protocol id

    // in 7.72 onwards move this BEFORE the keys and BEFORE the encryption
    nm.AddU16(0x02); // client OS
    nm.AddU16(protocolversion);

    SetProtocolStatus("RSA encryption...");
    nm.RSABegin();

    //key[3] = 92;
    // encryption keys
    for (int i = 0 ; i < 4 ; i++) {
        nm.AddU32(key[i]);
        //printf("KEY %d - %d\n", i, key[i]);
    }


    // are we a gamemaster
    nm.AddChar(0);

    // account number and password
    nm.AddU32(atol(this->username.c_str())); // this does NOT exist before 7.4
    nm.AddString(this->charlist[this->charlistselected]->charactername);
    nm.AddString(this->password);



    nm.RSAEncrypt();

    SetProtocolStatus("Transmitting logon data...");

    if (!nm.Dump(s)) {
        this->errormsg = "Could not write to socket.\nPossible it's a premature disconnect.\n\nCheck you typed in the correct protocol!";
        return false;
    }


//    SetStance(DEFENSIVE, STAND);

    SetProtocolStatus("Waiting for response...");
    //nm.Clean();
    NetworkMessage nm2;
    //nm.FillFromSocket(s);
    if (!nm2.FillFromSocket(s )) {
        this->errormsg = "Could not read from socket.\nPossibly it's a premature disconnect.\n\nCheck you typed in the correct protocol!";
        return false;
    }
    nm2.XTEADecrypt(key);
    logonsuccessful = true;
    while ((signed int)(nm2.GetSize())>0 && ParsePacket(&nm2));
    if ((signed int)(nm2.GetSize())!=0) printf("++++++++++++++++++++DIDNT EMPTY UP THE NETWORKMESSAGE!++++++++++++++++++\n");

    if (logonsuccessful) active = true;

    return logonsuccessful;
}