📄 jwa_sms.c
字号:
p = NEW_LOCAL_PTR(mmiapi_sms_register_port_req_struct);
blocking = mmiapi_get_blocking_data(MOD_JASYN);
p->blocking_data = blocking;
p->enable = KAL_FALSE;
p->port_number = (int)portNumber;
p->remove_reminder_data = KAL_TRUE;
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_REGISTER_PORT_REQ, p, NULL);
kal_trace(TRACE_INFO, WMA_SMS_UNREGISTER2);
mmiapi_lock(MOD_JASYN); /* waiting the unregister port number result */
kal_trace(TRACE_INFO, WMA_SMS_UNREGISTER3, blocking->result);
ret = blocking->result ? 0 : -1;
resouceDereg(JAVA_WMA_SMS_DEVICE, portNumber);
#endif /* __MMI_DUAL_SIM_MASTER__ */
}
return ret;
}
/*****************************************************************************
* FUNCTION
* J2ME_sms_unregister_all
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void J2ME_sms_unregister_all(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_sms_register_port_req_struct *p = NEW_LOCAL_PTR(mmiapi_sms_register_port_req_struct);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_UNREGISTERALL);
p->blocking_data = NULL;
p->enable = KAL_FALSE;
p->port_number = (int)-1;
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_REGISTER_PORT_REQ, p, NULL);
}
/*****************************************************************************
* FUNCTION
* J2ME_sms_unregister_by_resource_manager
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* RETURNS
*
*****************************************************************************/
int J2ME_sms_unregister_by_resource_manager(int portNumber)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_blocking_data_struct *blocking;
mmiapi_sms_register_port_req_struct *p = NEW_LOCAL_PTR(mmiapi_sms_register_port_req_struct);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_UNREGISTER_BY_MGR, portNumber);
blocking = mmiapi_get_blocking_data(MOD_JASYN);
p->blocking_data = blocking;
p->enable = KAL_FALSE;
p->port_number = (int)portNumber;
p->remove_reminder_data = KAL_TRUE;
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_REGISTER_PORT_REQ, p, NULL);
kal_trace(TRACE_INFO, WMA_SMS_UNREGISTER_BY_MGR1);
mmiapi_lock(MOD_JASYN); /* waiting the unregister port number result */
kal_trace(TRACE_INFO, WMA_SMS_UNREGISTER_BY_MGR2);
return RESOUCE_NO_ERROR;
}
/*****************************************************************************
* FUNCTION
* J2ME_sms_getHostAddr
* DESCRIPTION
*
* PARAMETERS
* len [?]
* RETURNS
* pointer to received buffer
*****************************************************************************/
unsigned short *J2ME_sms_getHostAddr(int *len)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Need to Port */
return NULL;
}
/*****************************************************************************
* FUNCTION
* J2ME_sms_ansii_n_to_unicode
* DESCRIPTION
*
* PARAMETERS
* pOutBuffer [?]
* pInBuffer [?]
* len [IN]
* RETURNS
* stuff zero between characters
*****************************************************************************/
U16 J2ME_sms_ansii_n_to_unicode(S8 *pOutBuffer, S8 *pInBuffer, U32 len)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S16 count = -1;
U8 charLen = 0;
U8 arrOut[2];
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
while (len)
{
mmi_wc_to_ucs2((U16) * pInBuffer, &charLen, arrOut);
pOutBuffer[++count] = arrOut[0];
pOutBuffer[++count] = arrOut[1];
pInBuffer++;
len--;
}
return count + 1;
}
/*****************************************************************************
* FUNCTION
* j2me_process_recvd_sms_ind
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void *j2me_process_recvd_sms_ind(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_sms_ind_struct *sms_ind_ptr = (mmiapi_sms_ind_struct*) ilm_ptr->local_para_ptr;
int port = sms_ind_ptr->port_number;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return push_process_recvd_sms_ind(port);
}
/*****************************************************************************
* FUNCTION
* jwa_sms_register
* DESCRIPTION
* register sms port and type
* PARAMETERS
* portNumber [IN]
* type [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int jwa_sms_register(long portNumber, int type)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_sms_register_port_req_struct *p;
int ret;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_REGISTER, (int)portNumber, (int)type);
#ifdef J2ME_SUPPORT_BACKGROUND
/* SMS service is not available during bg running state */
if (jvm_get_state() == JVM_BG_RUNNING_STATE)
{
sprintf(_kvmLogStr,"jwa_sms_register: BG running state \n");
Kprintf();
return J2ME_SMS_NOT_AVAILABLE;
}
#endif /* J2ME_SUPPORT_BACKGROUND */
ret = j2me_check_push_register_port(portNumber, type);
if (ret == NON_REGISTERED)
{
#ifdef __MMI_DUAL_SIM_MASTER__
ret = J2ME_sms_register_sim_type(portNumber, type, JWA_SMS_SIM_TYPE_SIM2);
if (ret != 0)
{
return J2ME_SMS_NOT_AVAILABLE;
}
#endif /* __MMI_DUAL_SIM_MASTER__ */
/* Only when the port is not registered, it can apply registration to low-layer */
p = NEW_LOCAL_PTR(mmiapi_sms_register_port_req_struct);
p->blocking_data = NULL;
p->enable = KAL_TRUE;
p->port_number = (int)portNumber;
#ifdef __MMI_DUAL_SIM_MASTER__
p->isSlave = KAL_FALSE;
#endif /* __MMI_DUAL_SIM_MASTER__ */
j2me_sms_register_enable = KAL_TRUE;
j2me_sms_register_type = type;
j2me_sms_register_port = (int)portNumber;
jwa_sms_set_state(JWA_SMS_STATE_REGISTER_PORT);
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_REGISTER_PORT_REQ, p, NULL);
kal_trace(TRACE_INFO, WMA_SMS_REGISTER1);
return J2ME_SMS_BLOCK;
}
return J2ME_SMS_PORT_IN_USE_BY_PUSH;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_send_binary_message
* DESCRIPTION
* send binary message
* PARAMETERS
* addr [?]
* pBuffer [?]
* buflength [IN]
* portNumber [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int jwa_sms_send_binary_message(unsigned short *addr, char *pBuffer, int buflength, long portNumber)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int len;
mmiapi_sms_send_req_struct *p = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_SEND_BINARY);
#ifdef J2ME_SUPPORT_BACKGROUND
/* SMS service is not available during bg running state */
if (jvm_get_state() == JVM_BG_RUNNING_STATE)
{
sprintf(_kvmLogStr,"jwa_sms_send_binary_message: BG running state \n");
Kprintf();
return J2ME_SMS_NOT_AVAILABLE;
}
#endif /* J2ME_SUPPORT_BACKGROUND */
p = NEW_LOCAL_PTR(mmiapi_sms_send_req_struct);
buflength <<= 1; /* for ucs2 length */
p->blocking_data = NULL;
p->msg_length = buflength / 2;
p->dcs = SMSAL_8BIT_DCS;
p->port_number = (int)portNumber;
#ifdef __MMI_DUAL_SIM_MASTER__
if (jam_get_sim_id() == WAP_SIM_ID_SIM2)
{
p->isSlave = KAL_TRUE;
}
else
{
p->isSlave = KAL_FALSE;
}
#endif /* __MMI_DUAL_SIM_MASTER__ */
/* Check if the size exceeds the limitation of control buffer */
if (buflength > 2048)
{
free_local_para((local_para_struct*) p);
return J2ME_SMS_CONTENT_SIZE_EXCEED;
}
/* Prevent to allocate control buffer with zero size */
if (buflength == 0)
{
buflength += 2;
}
p->msg = (kal_uint8*) get_ctrl_buffer((kal_uint16) buflength);
J2ME_sms_ansii_n_to_unicode((S8*) p->msg, (S8*) pBuffer, (U32) p->msg_length);
if (addr[0] == (short)'+')
{
p->addr.type = CSMCC_INTERNATIONAL_ADDR;
addr++;
}
else
{
p->addr.type = CSMCC_DEFAULT_ADDR_TYPE;
}
len = (int)mmi_ucs2strlen((const S8*)addr);
if (len > MAX_CC_ADDR_LEN / ENCODING_LENGTH)
{
len = MAX_CC_ADDR_LEN / ENCODING_LENGTH;
}
p->addr.length = len;
mmi_ucs2_n_to_asc((S8*) p->addr.number, (S8*) addr, p->addr.length * ENCODING_LENGTH);
p->addr.number[p->addr.length] = '\0';
jwa_sms_set_state(JWA_SMS_STATE_SEND);
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_SEND_REQ, p, NULL);
kal_trace(TRACE_INFO, WMA_SMS_SEND_BINARY1);
return J2ME_SMS_BLOCK;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_send_text_message
* DESCRIPTION
* send text message
* PARAMETERS
* addr [?]
* pBuffer [?]
* buflength [IN]
* portNumber [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int jwa_sms_send_text_message(unsigned short *addr, unsigned short *pBuffer, int buflength, long portNumber)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int len;
BOOL isUcs2Char = 0;
mmiapi_sms_send_req_struct *p = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_SEND_TEXT);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -