⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 funchand.cpp

📁 基于单片机的 snmp协议解析的一些原代码 给有用的 同行
💻 CPP
📖 第 1 页 / 共 3 页
字号:
   i = arglist->next->ival;
   //CTL 02/11/00 */safe_free(send->valuelist[i -1]);
   //CTL 02/11/00 */send->valuelist[i -1] = (char *)safe_alloc(strlen(arglist->sval)+1,sizeof(char));
   strcpy(send->valuelist[i -1],arglist->sval);
   return(NULL);
}

struct ARGUMENT *fh_setField_asn1syntax(struct ARGUMENT *arglist, struct mystruct *send)
{
	int i;

   i = arglist->next->ival;
   send->asn1syntax[i -1] = (unsigned char)arglist->ival;
   return(NULL);
}


struct ARGUMENT *fh_getField_pdu(struct mystruct *recv)
{
	struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
   ret_node->sval = (char *)safe_alloc(strlen(recv->pdu)+1,sizeof(char));
   strcpy(ret_node->sval, recv->pdu);
   ret_node->arg_type = SY_STRING_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}

struct ARGUMENT *fh_getField_classtype(struct mystruct *recv)
{
	struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
   ret_node->sval = (char *)safe_alloc(strlen(recv->classtype)+1,sizeof(char));
   strcpy(ret_node->sval, recv->classtype);
   ret_node->arg_type = SY_STRING_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}

struct ARGUMENT *fh_getField_community(struct mystruct *recv)
{
	struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
   ret_node->sval = (char *)safe_alloc(strlen(recv->community)+1,sizeof(char));
   strcpy(ret_node->sval, recv->community);
   ret_node->arg_type = SY_STRING_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}

struct ARGUMENT *fh_getField_AddressDrop(struct mystruct *recv)
{
	struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
   ret_node->ival = recv->AddressDrop;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}

struct ARGUMENT *fh_getField_GroupAddress(struct mystruct *recv)
{
	struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
   ret_node->ival = recv->GroupAddress;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}

struct ARGUMENT *fh_getField_SizeOfTheArray(struct mystruct *recv)
{
	struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
   ret_node->ival = recv->SizeOfTheArray;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}

struct ARGUMENT *fh_getField_arraylist(struct ARGUMENT *arglist, struct mystruct *recv)
{
	int i;
   struct ARGUMENT *ret_node;
   i = arglist->ival;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
   ret_node->sval = (char *)safe_alloc(strlen(recv->arraylist[i -1])+1,sizeof(char));
   strcpy(ret_node->sval, recv->arraylist[i -1]);
   ret_node->arg_type = SY_STRING_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}

struct ARGUMENT *fh_getField_valuelist(struct ARGUMENT *arglist, struct mystruct *recv)
{
	int i;
   struct ARGUMENT *ret_node;
   i = arglist->ival;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
   ret_node->sval = (char *)safe_alloc(strlen(recv->valuelist[i -1])+1,sizeof(char));
   strcpy(ret_node->sval, recv->valuelist[i -1]);
   ret_node->arg_type = SY_STRING_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}

struct ARGUMENT *fh_getField_asn1syntax(struct ARGUMENT *arglist, struct mystruct *recv)
{
	int i;
   struct ARGUMENT *ret_node;
   i = arglist->ival;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(struct ARGUMENT));
	ret_node->ival = recv->asn1syntax[i -1];
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   return(ret_node);
}


struct ARGUMENT *fh_sendGet(struct mystruct *send,
  	int _stdcall (* LineActivityInsert) (char * theMessage),
	int _stdcall (* EditByteStream) (pmppStruct *msg, char *header, char *trailer))
{
   struct ARGUMENT *ret_node;

	//Set default values
   send->MessageGet = 1;
   send->MessageGetNext = 0;
   send->MessageSet = 0;
   send->MessageSync = 0;
   send->MessageSetNoReply = 0;

   //call send data
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
   ret_node->ival = SendData(send, LineActivityInsert, EditByteStream,true);
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   SuspendThread(GetCurrentThread());
	return(ret_node);
}

struct ARGUMENT *fh_sendGetNext(struct mystruct *send,
  	int _stdcall (* LineActivityInsert) (char * theMessage),
	int _stdcall (* EditByteStream) (pmppStruct *msg, char *header, char *trailer))
{
   struct ARGUMENT *ret_node;

	//Set default values
   send->MessageGet = 0;
   send->MessageGetNext = 1;
   send->MessageSet = 0;
   send->MessageSync = 0;
   send->MessageSetNoReply = 0;

   //call send data
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
   ret_node->ival = SendData(send, LineActivityInsert, EditByteStream,true);
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   SuspendThread(GetCurrentThread());
	return(ret_node);
}

struct ARGUMENT *fh_sendSetDec(struct mystruct *send,
  	int _stdcall (* LineActivityInsert) (char * theMessage),
	int _stdcall (* EditByteStream) (pmppStruct *msg, char *header, char *trailer))
{
   struct ARGUMENT *ret_node;

	//Set default values
   send->MessageGet = 0;
   send->MessageGetNext = 0;
   send->MessageSet = 1;
   send->MessageSync = 0;
   send->MessageSetNoReply = 0;

   //call send data
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
   ret_node->ival = SendData(send, LineActivityInsert, EditByteStream,true);
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   SuspendThread(GetCurrentThread());
	return(ret_node);
}

struct ARGUMENT *fh_sendSetNoDec(struct mystruct *send,
  	int _stdcall (* LineActivityInsert) (char * theMessage),
	int _stdcall (* EditByteStream) (pmppStruct *msg, char *header, char *trailer))
{
   struct ARGUMENT *ret_node;

	//Set default values
   send->MessageGet = 0;
   send->MessageGetNext = 0;
   send->MessageSet = 0;
   send->MessageSync = 0;
   send->MessageSetNoReply = 1;

   //call send data
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
   ret_node->ival = SendData(send, LineActivityInsert, EditByteStream,true);
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   SuspendThread(GetCurrentThread());
	return(ret_node);
}

struct ARGUMENT *fh_sendSetAsc(struct mystruct *send,
  	int _stdcall (* LineActivityInsert) (char * theMessage),
	int _stdcall (* EditByteStream) (pmppStruct *msg, char *header, char *trailer))
{
  struct ARGUMENT *ret_node;
  char tempchar[1024];
  char temp2char[1024];
  char finalStr[1024];
  int i,j;
  char *ptr;

  //Set default values
  send->MessageGet = 0;
  send->MessageGetNext = 0;
  send->MessageSet = 1;
  send->MessageSync = 0;
  send->MessageSetNoReply = 0;
  //since this is sendSetAsc, we have to convert the valuelist to a string representation
  //of hex string data.  For instance, if valuelist = "TEST", then we have to change
  //it to be "54 45 53 54".  Stupid, yes, but that's the way the software works.  The
  //valuelist will be unconverted during message encoding
  for (i=0; i<send->SizeOfTheArray; i++)
  {
    memset(tempchar, 0, 1024);
    memset(temp2char, 0, 1024);
    memset(finalStr, 0, 1024);
    memcpy(tempchar, send->valuelist[i], strlen(send->valuelist[i]));
    HexToAscii(tempchar, temp2char, strlen(tempchar));
    AsciiInsertSpaceFunc (temp2char, finalStr, strlen(temp2char));
    // InsertSpace(temp2char, finalStr);
    // memset(send->valuelist[0], 0, 1024);
    //memcpy(send->valuelist[i], finalStr, strlen(finalStr));
    strcpy(send->valuelist[i], finalStr);
/*for (j=0; j< strlen(finalStr);j++)
  send->valuelist[i][j]=finalStr[j];
send->valuelist[i][j]=0;
 /*   ptr = (char *)&(send->valuelist[i][0]);
    strcpy(ptr, finalStr);*/
  //  send->valuelist[i][strlen(finalStr)]=NULL;
  }
  //call send data
  ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
  ret_node->ival = SendData(send, LineActivityInsert, EditByteStream,true);
  ret_node->arg_type = SY_INT_TYPE;
  ret_node->next = NULL;
  SuspendThread(GetCurrentThread());
  return(ret_node);
}

struct ARGUMENT *fh_sendSetNoAsc(struct mystruct *send,
  	int _stdcall (* LineActivityInsert) (char * theMessage),
	int _stdcall (* EditByteStream) (pmppStruct *msg, char *header, char *trailer))
{
   struct ARGUMENT *ret_node;

	//Set default values
   send->MessageGet = 0;
   send->MessageGetNext = 0;
   send->MessageSet = 0;
   send->MessageSync = 0;
   send->MessageSetNoReply = 1;

   //call send data
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
   ret_node->ival = SendData(send, LineActivityInsert, EditByteStream,true);
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
   SuspendThread(GetCurrentThread());
	return(ret_node);
}

struct ARGUMENT *fh_checkProtocolMismatch(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_PROTOCOL_MISMATCH)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkInvalidResponse(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_PROTOCOL_INVALID_RESPONSE)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkNoResponse(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_NO_RESPONSE)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkEncodingStyle(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DECODE_ENCODING_STYLE)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkNoInstance(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DECODE_NO_INSTANCE)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkObjectMismatch(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DECODE_OBJECT_MISMATCH)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkInvalidSequence(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DATA_INVALID_SEQUENCE)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkInvalidLength(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DATA_INVALID_LENGTH)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkScrambled(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DATA_SCRAMBLED)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkInvalidAddress(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DATA_INVALID_ADDRESS)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkInvalidControl(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DATA_INVALID_CONTROL)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkInvalidCRC(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DATA_INVALID_CRC)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_checkInvalidIPI(struct ARGUMENT *arglist)
{
   struct ARGUMENT *ret_node;
   ret_node = (struct ARGUMENT *)safe_alloc(1,sizeof(ARGUMENT));
	if(arglist->ival & ERROR_DATA_INVALID_IPI)
	   ret_node->ival = 1;
   else
   	ret_node->ival = 0;
   ret_node->arg_type = SY_INT_TYPE;
   ret_node->next = NULL;
	return(ret_node);
}

struct ARGUMENT *fh_clearErrorState(struct ARGUMENT *arglist)
{
	ClearErrorState(arglist->ival);
	return NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -