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

📄 si_wtaic.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/* netTextSend (number, text); */
enumErrorCode 
WTAI_NC_NT_send (pstructOpS OpS, pWTACONTROL pWTAControlStruct, UINT8 iObjectID)
{
	if (OpS!=NULL)
	{

		BYTE* pbNumber=NULL;
		BOOL fOverflow=FALSE;
		enumErrorCode eResult=ERR_WAE_WMLS_NONE;

		/* Get parameters from Opstack NOTE! The "popping"-order is 
		   important */
		pstructVar pText=OpS_Pop(OpS);
		pstructVar pNumber=OpS_Pop(OpS);

		/* Check if the number and text parameters are strings */
		if ((Var_Convert( pNumber, typeString)==VCR_OK) && 
							(Var_Convert( pText, typeString)==VCR_OK))
		{
			/* Convert to CHAR */
	   		pbNumber = wip_wchar2byte( pNumber->val.theString, &fOverflow );
			if (! fOverflow)
			{
				/* Call wtai function */
				WTAIa_netTextSend ( iObjectID, pWTAControlStruct->pwchWTAChannelId, (CHAR*)pbNumber, pText->val.theString );
				eResult=ERR_WAE_WMLS_WTAI_FUNC_CALLED;
			}
			DEALLOC( &pbNumber );
		}

		Var_Delete( &pNumber );
		Var_Delete( &pText );		
		return eResult;
	}

	return ERR_WAE_WMLS_LIB;
}

enumErrorCode 
WTAI_NC_NT_send_finish (pstructOpS OpS, pWTACONTROL pWTAControlStruct, int iResult, WCHAR* pwcFieldValue)
{
	pWTAControlStruct=pWTAControlStruct;
	pwcFieldValue=pwcFieldValue;

	if (OpS!=NULL)
	{
		pstructVar pResult=Var_New();

		if ( iResult == WTA_INVALID )
		{
			Var_AssignInvalid(pResult);
		}
		else /* Errorcode OR msgHandle */
		{
			Var_AssignInt(pResult, iResult);
		}

		OpS_Push(OpS, &pResult);
		return ERR_WAE_WMLS_NONE;
	}
	return ERR_WAE_WMLS_LIB;
}

/* netTextList (returnFirst, messageType); */
enumErrorCode 
WTAI_NC_NT_list (pstructOpS OpS, pWTACONTROL pWTAControlStruct, UINT8 iObjectID)
{
	if (OpS!=NULL)
	{
		enumErrorCode eResult=ERR_WAE_WMLS_NONE;

		/* Get parameters from Opstack NOTE! The "popping"-order is 
		   important */

		/* popping order? aspn*/
		pstructVar pReturnFirst=OpS_Pop(OpS);
		pstructVar pMessageType=OpS_Pop(OpS);

		/* Check if the textIndex is an integer */
		if ( (Var_Convert( pReturnFirst, typeInteger ) == VCR_OK) &&
			 (Var_Convert( pMessageType, typeInteger ) == VCR_OK) )
		{
			/* Call wtai function */
			WTAIa_netTextList ( iObjectID, pWTAControlStruct->pwchWTAChannelId, (BOOL)pReturnFirst->val.theInt, (INT8)pMessageType->val.theInt );
			eResult=ERR_WAE_WMLS_WTAI_FUNC_CALLED;
		}
		Var_Delete( &pReturnFirst );
		Var_Delete( &pMessageType );

		return eResult;
	}
	return ERR_WAE_WMLS_LIB;
}

enumErrorCode 
WTAI_NC_NT_list_finish (pstructOpS OpS, pWTACONTROL pWTAControlStruct, int iResult, WCHAR* pwcFieldValue)
{
	pWTAControlStruct=pWTAControlStruct;
	pwcFieldValue=pwcFieldValue;

	if (OpS!=NULL)
	{
		pstructVar pResult=Var_New();

		if ( iResult == WTA_INVALID )
		{
			Var_AssignInvalid(pResult);
		}
		else /* Errorcode OR msgHandle */
		{
			Var_AssignInt(pResult, iResult);
		}

		OpS_Push(OpS, &pResult);
		return ERR_WAE_WMLS_NONE;
	}
	return ERR_WAE_WMLS_LIB;
}

/* netTextRemove (msgHandler); */
enumErrorCode 
WTAI_NC_NT_remove (pstructOpS OpS, pWTACONTROL pWTAControlStruct, UINT8 iObjectID)
{
	if (OpS!=NULL)
	{
		enumErrorCode eResult=ERR_WAE_WMLS_NONE;

		/* Get parameters from Opstack NOTE! The "popping"-order is 
		   important */
		pstructVar pMsgHandle=OpS_Pop(OpS);
	
		/* Check if the pMsgHandle is a integer less than 32768 (INT16) */
		if (( Var_Convert( pMsgHandle, typeInteger ) == VCR_OK ) &&
			( pMsgHandle->val.theInt < 32768) )
		{
			/* Call wtai function */
			WTAIa_netTextRemove ( iObjectID, pWTAControlStruct->pwchWTAChannelId, (INT16)pMsgHandle->val.theInt );
			eResult=ERR_WAE_WMLS_WTAI_FUNC_CALLED;
		}

		Var_Delete( &pMsgHandle );
		return eResult;
	}
	return ERR_WAE_WMLS_LIB;
}

enumErrorCode 
WTAI_NC_NT_remove_finish (pstructOpS OpS, pWTACONTROL pWTAControlStruct, int iResult, WCHAR* pwcFieldValue)
{
	pWTAControlStruct=pWTAControlStruct;
	pwcFieldValue=pwcFieldValue;

	if (OpS!=NULL)
	{
		pstructVar pResult=Var_New();

		if ( iResult == WTA_SUCCESS )
		{
			Var_NewString( pResult, 0 ); /* Create an empty string */
		}
		else if ( iResult == WTA_INVALID )
		{
			Var_AssignInvalid(pResult);
		}
		else
		{
			Var_AssignInt(pResult, iResult);
		}

		OpS_Push(OpS, &pResult);
		return ERR_WAE_WMLS_NONE;
	}
	return ERR_WAE_WMLS_LIB;
}

NetTextGetType WTAI_GetTextMessageType (WCHAR* pwchString, BOOL* pfError)
{
	WCHAR pwchWtai_Text[]={'t','e','x','t',0};
	WCHAR pwchWtai_Tstamp[]={'t','s','t','a','m','p',0};
	WCHAR pwchWtai_Address[]={'a','d','d','r','e','s','s',0};
	WCHAR pwchWtai_Status[]={'s','t','a','t','u','s',0};
	WCHAR pwchWtai_Read[]={'r','e','a','d',0};
	WCHAR pwchWtai_TstampOff[]={'t','s','t','a','m','p','_','o','f','f',0};
	WCHAR pwchWtai_TstampDevice[]={'t','s','t','a','m','p','_','d','e','v','i','c','e',0};


	if (pwchString!=NULL)
	{
		if (COMPARESTRING(pwchString,pwchWtai_Text)==0) 
		{
			return WTA_NT_GET_TEXT;
		} 
		else if (COMPARESTRING(pwchString,pwchWtai_Tstamp)==0) 
		{
			return WTA_NT_GET_TSTAMP;
		} 
		else if (COMPARESTRING(pwchString,pwchWtai_Address)==0) 
		{
			return WTA_NT_GET_ADDRESS;
		} 
		else if (COMPARESTRING(pwchString,pwchWtai_Status)==0) 
		{
			return WTA_NT_GET_STATUS;
		}
		else if (COMPARESTRING(pwchString,pwchWtai_Read)==0) 
		{
			return WTA_NT_GET_READ;
		}
		else if (COMPARESTRING(pwchString,pwchWtai_TstampOff)==0) 
		{
			return WTA_NT_GET_TSTAMP_OFF;
		}
		else if (COMPARESTRING(pwchString,pwchWtai_TstampDevice)==0) 
		{
			return WTA_NT_GET_TSTAMP_DEVICE;
		}
	}

/*  Modified by GBU,000524, changed order of statements
	return 0;
	*pfError=TRUE;
*/
    *pfError=TRUE;
    return 0;
}


/* netTextGetFieldValue(msgHandle, field); */
enumErrorCode 
WTAI_NC_NT_getFieldValue (pstructOpS OpS, pWTACONTROL pWTAControlStruct, UINT8 iObjectID)
{
	if (OpS!=NULL)
	{
		enumErrorCode eResult=ERR_WAE_WMLS_NONE;

		/* Get parameters from Opstack NOTE! The "popping"-order is 
		   important */
		pstructVar pField=OpS_Pop(OpS);
		pstructVar pMsgHandle=OpS_Pop(OpS);
	

		/* Check if the pField is a string and 
		   the pMsgHandle is a integer less than 32768 (INT16) */
		if ( (Var_Convert( pField, typeString      ) == VCR_OK ) && 
			 (Var_Convert( pMsgHandle, typeInteger ) == VCR_OK ) &&
			 (pMsgHandle->val.theInt < 32768) )
		{
			NetTextGetType stField;
			BOOL fError;

			/* Transform the field string to an enum */
			stField=WTAI_GetTextMessageType (pField->val.theString,&fError);

			if (!fError)
			{
				/* Call wtai function */
				WTAIa_netTextGetFieldValue ( iObjectID, pWTAControlStruct->pwchWTAChannelId, (INT16)pMsgHandle->val.theInt, stField );
				eResult=ERR_WAE_WMLS_WTAI_FUNC_CALLED;
			}
		}

		Var_Delete( &pField );
		Var_Delete( &pMsgHandle );
		return eResult;
	}
	return ERR_WAE_WMLS_LIB;
}
enumErrorCode 
WTAI_NC_NT_getFieldValue_finish (pstructOpS OpS, pWTACONTROL pWTAControlStruct, int iResult, WCHAR* pwcFieldValue)
{
	enumErrorCode eResult=ERR_WAE_WMLS_LIB;
	pWTAControlStruct=pWTAControlStruct;

	if (OpS!=NULL)
	{
		pstructVar pResult=Var_New();

		if ( (iResult==WTA_SUCCESS) )
		{
			if ( pwcFieldValue==NULL )
			{
				Var_NewString( pResult, 0 ); /* Create an empty string */
			}
			else
			{
				WCHAR* pwcFieldValueCopy=NULL;

				/* Copy string */
				pwcFieldValueCopy = (WCHAR*)(GenCopyString (2,pwcFieldValue));

				if (pwcFieldValueCopy != NULL)
				{
					/* OK - store string in result (string is NOT copied) */
					Var_AssignStringDirect( pResult, 
											STRINGLENGTH( pwcFieldValueCopy ), &pwcFieldValueCopy );
				}
				else
				{
					Var_AssignInvalid(pResult);
				}
			}
		}
		else
		{
			Var_AssignInvalid(pResult);
		}

		/* Push result onto stack */
		OpS_Push( OpS, &pResult );
		eResult=ERR_WAE_WMLS_NONE;
	}

	if (pwcFieldValue!=NULL)
	{
		/* Delete incoming string */
		#ifdef USE_WIP_MALLOC
			wip_free(pwcFieldValue);
		#else
			free(pwcFieldValue);
		#endif
	}
	return eResult;
}

/* Phone Book ************************************************************/


/* phoneBookWrite(index, number, name); */
enumErrorCode 
WTAI_NC_PB_write (pstructOpS OpS, pWTACONTROL pWTAControlStruct, UINT8 iObjectID)
{
	if (OpS!=NULL)
	{
		enumErrorCode eResult=ERR_WAE_WMLS_NONE;

		/* Get parameters from Opstack NOTE! The "popping"-order is 
		   important */
		pstructVar pName=OpS_Pop(OpS);
		pstructVar pNumber=OpS_Pop(OpS);
		pstructVar pIndex=OpS_Pop(OpS);
	
		/* Check if the Id is an integer, if the Name is a string and
		   the pIndex is a integer less than 32768 (INT16) */
		if (( Var_Convert( pName, typeString   ) == VCR_OK ) &&
			( Var_Convert( pNumber, typeString ) == VCR_OK ) &&
			( Var_Convert( pIndex, typeInteger ) == VCR_OK ) &&
			( pIndex->val.theInt < 32768) )
		{			
			BYTE* pbNumber=NULL;
			BOOL fOverflow;
			
			/* Convert number to CHAR */
	   		pbNumber = wip_wchar2byte( pNumber->val.theString, &fOverflow );
			if (! fOverflow)
			{
				/* Call wtai function */
				WTAIa_phoneBookWrite ( iObjectID, pWTAControlStruct->pwchWTAChannelId, (INT16)pIndex->val.theInt, (const CHAR*)pbNumber, (const WCHAR*)pName->val.theString );
				eResult=ERR_WAE_WMLS_WTAI_FUNC_CALLED;
	
			}
			DEALLOC (&pbNumber);
		}
		Var_Delete( &pName );
		Var_Delete( &pNumber );
		Var_Delete( &pIndex );

		return eResult;
	}

	return ERR_WAE_WMLS_LIB;
}

enumErrorCode 
WTAI_NC_PB_write_finish (pstructOpS OpS, pWTACONTROL pWTAControlStruct, int iResult, WCHAR* pwcFieldValue)
{
	pWTAControlStruct=pWTAControlStruct;
	pwcFieldValue=pwcFieldValue;

	if (OpS!=NULL)
	{
		pstructVar pResult=Var_New();

		if ( iResult == WTA_INVALID)
		{
			Var_AssignInvalid(pResult);
		}
		else /* phone book entry index OR error-code*/
		{
			Var_AssignInt(pResult, iResult);
		}

		OpS_Push(OpS, &pResult);
		return ERR_WAE_WMLS_NONE;
	}
	return ERR_WAE_WMLS_LIB;
}


PhoneBookSearchType WTAI_SearchPhoneBookType (WCHAR* pwchString, BOOL* pfError)
{
	WCHAR pwchWtai_Continue[]={'c','o','n','t','i','n','u','e',0};
	WCHAR pwchWtai_Name[]={'n','a','m','e',0};
	WCHAR pwchWtai_Number[]={'n','u','m','b','e','r',0};

	if (pwchString!=NULL)
	{
		if (COMPARESTRING(pwchString,pwchWtai_Continue)==0) 
		{
			return WTA_PB_SEARCH_CONTINUE;
		}
		else if (COMPARESTRING(pwchString,pwchWtai_Name)==0) 
		{
			return WTA_PB_SEARCH_NAME;
		} 
		else if (COMPARESTRING(pwchString,pwchWtai_Number)==0) 
		{
			return WTA_PB_SEARCH_NUMBER;
		} 
	}

    *pfError=TRUE;
    return 0;
}

/* phoneBookSearch(field, value); */
enumErrorCode 
WTAI_NC_PB_search (pstructOpS OpS, pWTACONTROL pWTAControlStruct, UINT8 iObjectID)
{
	if (OpS!=NULL)
	{
		enumErrorCode eResult=ERR_WAE_WMLS_NONE;
		/* Get parameters from Opstack NOTE! The "popping"-order is 
		   important */
		pstructVar pValue=OpS_Pop(OpS);
		pstructVar pField=OpS_Pop(OpS);

		/* Check if the textIndex is a integer */
		if ((Var_Convert( pValue, typeString ) == VCR_OK) &&
			(Var_Convert( pField, typeString ) == VCR_OK) )
		{
			BOOL fError=FALSE;
			WCHAR* pwchValue=NULL;
			PhoneBookSearchType stField = WTAI_SearchPhoneBookType (pField->val.theString, &fError);

			if (!fError)
			{
				/* Cut string from variable */
				pwchValue=pValue->val.theString;
				pValue->val.theString=NULL;

				WML_TrimTextWCHAR (pwchValue,TRIMTEXT_BOTH);

				/* Call wtai function */
				WTAIa_phoneBookSearch ( iObjectID, pWTAControlStruct->pwchWTAChannelId, stField, pwchValue );
				eResult=ERR_WAE_WMLS_WTAI_FUNC_CALLED;

				DEALLOC (&pwchValue);
			}
		}

		Var_Delete( &pValue );
		Var_Delete( &pField );

		return eResult;
	}
	return ERR_WAE_WMLS_LIB;
}

enumErrorCode 
WTAI_NC_PB_search_finish (pstructOpS OpS, pWTACONTROL pWTAControlStruct, int iResult, WCHAR* pwcFieldValue)
{
	pWTAControlStruct=pWTAControlStruct;
	pwcFieldValue=pwcFieldValue;

	if (OpS!=NULL)
	{
		pstructVar pResult=Var_New();

		if ( iResult == WTA_INVALID )
		{
			Var_AssignInvalid(pResult);
		}
		else /* phone book entry index */
		{
			Var_AssignInt(pResult, iResult);
		}

		OpS_Push(OpS, &pResult);
		return ERR_WAE_WMLS_NONE;
	}
	return ERR_WAE_WMLS_LIB;
}


/* phoneBookRemove(index); */
enumErrorCode 
WTAI_NC_PB_remove (pstructOpS OpS, pWTACONTROL pWTAControlStruct, UINT8 iObjectID)
{
	if (OpS!=NULL)
	{
		enumErrorCode eResult=ERR_WAE_WMLS_NONE;
		/* Get parameters from Opstack NOTE! The "popping"-order is 
		   important */
		pstructVar pIndex=OpS_Pop(OpS);

		/* Check if pIndex is a integer less than 32768 (INT16) */ 
		if (( Var_Convert(pIndex, typeInteger ) == VCR_OK) &&
			( pIndex->val.theInt < 32768 )  )
		{
			/* Call wtai function */
			WTAIa_phoneBookRemove ( iObjectID, pWTAControlStruct->pwchWTAChannelId, (INT16)pIndex->val.theInt);
			eResult=ERR_WAE_WMLS_WTAI_FUNC_CALLED;
		}

		Var_Delete( &pIndex );

		return eResult;
	}
	return ERR_WAE_WMLS_LIB;
}

enumErrorCode 
WTAI_NC_PB_remove_finish (pstructOpS OpS, pWTACONTROL pWTAControlStruct, int iResult, WCHAR* pwcFieldValue)
{
	pWTAControlStruct=pWTAControlStruct;
	pwcFieldValue=pwcFieldValue;

	if (OpS!=NULL)
	{
		pstructVar pResult=Var_New();

		if ( iResult == WTA_SUCCESS )
		{
			Var_NewString( pResult, 0 ); /* Create an empty string */
		}
		else if ( iResult == WTA_INVALID )
		{
			Var_AssignInvalid(pResult);
		}
		else /* Errorcode */
		{
			Var_AssignInt(pResult, iResult);
		}

		OpS_Push(OpS, &pResult);
		return ERR_WAE_WMLS_NONE;
	}
	return ERR_WAE_WMLS_LIB;
}


PhoneBookGetType WTAI_GetPhoneBookType (WCHAR* pwchString, BOOL* pfError)
{
	WCHAR pwchWtai_Name[]={'n','a','m','e',0};
	WCHAR pwchWtai_Number[]={'n','u','m','b','e','r',0};

    *pfError=FALSE;

	if (pwchString!=NULL)
	{
		if (COMPARESTRING(pwchString,pwchWtai_Name)==0) 
		{
			return WTA_PB_GET_NAME;
		} 
		else if (COMPARESTRING(pwchString,pwchWtai_Number)==0) 
		{
			return WTA_PB_GET_NUMBER;
		} 
	}

    *pfError=TRUE;
    return 0;
}


/* phoneBookGetFieldValue(index, field); */
enumErrorCode 
WTAI_NC_PB_getFieldValue (pstructOpS OpS, pWTACONTROL pWTAControlStruct, UINT8 iObjectID)
{
	if (OpS!=NULL)
	{
		enumErrorCode eResult=ERR_WAE_WMLS_NONE;
		/* Get parameters from Opstack NOTE! The "popping"-order is 
		   important */
		pstructVar pField=OpS_Pop(OpS);
		pstructVar pIndex=OpS_Pop(OpS);

		/* Check if pIndex is a integer less than 32768 (INT16)

⌨️ 快捷键说明

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