📄 si_wtaic.c
字号:
/* 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 + -