コード例 #1
0
ファイル: LGX.cpp プロジェクト: tcrutt/tuxeip-1
IdList *_GetIdList(Eip_Session *session,BYTE routepath[],int routepathsize)
{
	int replysize=0,MRrequestsize=0;
	int mrdatasize=0;int count=0;
	void *MRData=NULL;
	IdList *result=NULL;
	BYTE path[4]={0x20,OBJECT_PROP,0x24,0x00};
	//BYTE routepath[2]={0x01,0x00};

	MR_Request *MRrequest=_BuildMRRequest(CIP_LIST_ALL_OBJECTS,path,sizeof(path),NULL,0,&MRrequestsize);
	MR_Reply *reply=UnconnectedSend(session,MRrequest,MRrequestsize,routepath,routepathsize,&replysize);
	free(MRrequest);
	if (reply!=NULL)
	{
		//_CipFlushBuffer(reply,replysize);
		MRData=_GetMRData(reply);
		mrdatasize=replysize-sizeof(MR_Reply)-reply->Add_Status_Size;
		if (mrdatasize>0)
		{
			count=mrdatasize/4;
			result=(IdList *)malloc(sizeof(result->IdCount)+mrdatasize);
			if (result!=NULL)
			{
				result->IdCount=count;
				memcpy(&(result->Id[0]),MRData,mrdatasize);
			} else
			{
				CIPERROR(Sys_Error,errno,0);
			}
		}
		//printf("replysize : %d : %d\n",replysize,mrdatasize);
		free(reply);
		return(result);
	} else return(NULL);
}
コード例 #2
0
ファイル: MR.c プロジェクト: VanErt1/tuxeip
MR_Reply *_SendMRRequest(Eip_Session *session,CIP_USINT service,BYTE *path,
                         CIP_USINT requestpathsize,void *requestdata,int requestdatasize,int *replysize)
{   int mrsize=0;
    MR_Request *request=_BuildMRRequest(service,path,requestpathsize,requestdata,requestdatasize,&mrsize);
    MR_Reply *reply=_ExSendMRRequest(session,request,mrsize,replysize);
    free(request);
    return(reply);
}