📄 jwa_sms.c
字号:
#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_text_message: BG running state \n");
Kprintf();
return J2ME_SMS_NOT_AVAILABLE;
}
#endif /* J2ME_SUPPORT_BACKGROUND */
p = NEW_LOCAL_PTR(mmiapi_sms_send_req_struct);
isUcs2Char = mmi_frm_sms_check_UCS2((U16*) pBuffer, (U16) buflength);
buflength <<= 1; /* for ucs2 length */
if (isUcs2Char)
{
p->dcs = SMSAL_UCS2_DCS;
}
else
{
p->dcs = SMSAL_DEFAULT_DCS;
}
p->blocking_data = NULL;
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__ */
if (p->dcs == SMSAL_DEFAULT_DCS)
{
/* The max control buffer size is 2K. So we limit the max size 1920 here. */
if ((buflength * 2) > 1920)
{
free_local_para((local_para_struct*) p);
return J2ME_SMS_CONTENT_SIZE_EXCEED;
}
p->msg = (kal_uint8*) get_ctrl_buffer((kal_uint16) ((buflength + 1) * 2));
memset((S8*) p->msg, 0, (buflength + 1) * 2);
mmi_frm_sms_handle_extension_char((U16*) p->msg, (U16*) pBuffer, (U16) (buflength >> 1));
p->msg_length = mmi_ucs2strlen((const S8*)p->msg);
}
else
{
/* The max control buffer size is 2K. So we limit the max size 1920 here. */
if (buflength > 1920)
{
free_local_para((local_para_struct*) p);
return J2ME_SMS_CONTENT_SIZE_EXCEED;
}
p->msg = (kal_uint8*) get_ctrl_buffer((kal_uint16) (buflength + 1));
memset((S8*) p->msg, 0, (buflength + 1));
memcpy(p->msg, pBuffer, buflength);
p->msg_length = buflength / 2;
}
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_TEXT1);
return J2ME_SMS_BLOCK;
}
/*****************************************************************************
* FUNCTION
* _jwa_sms_check_incoming_msg
* DESCRIPTION
* check if message coming
* PARAMETERS
* portNumber [IN]
* only_new [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int _jwa_sms_check_incoming_msg(long portNumber, kal_bool only_new)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_sms_check_incoming_msg_req_struct *p = NEW_LOCAL_PTR(mmiapi_sms_check_incoming_msg_req_struct);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_CHECK_INCOMING, (int)portNumber);
p->blocking_data = NULL;
p->port_number = (int)portNumber;
p->only_new = (kal_bool) only_new;
jwa_sms_set_state(JWA_SMS_STATE_CHECK_INCOMING_MSG);
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_CHECK_INCOMING_MSG_REQ, p, NULL);
kal_trace(TRACE_INFO, WMA_SMS_CHECK_INCOMING1);
return J2ME_SMS_BLOCK;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_check_incoming_msg
* DESCRIPTION
* check if message coming
* PARAMETERS
* portNumber [IN]
* only_new [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int jwa_sms_check_incoming_msg(long portNumber, kal_bool only_new)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#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_check_incoming_msg: BG running state \n");
Kprintf();
return J2ME_SMS_NOT_AVAILABLE;
}
#endif /* J2ME_SUPPORT_BACKGROUND */
#ifdef __SUPPORT_INFUSIO__
//if ( jvm_get_current_game_type() == GAMETYPE_INFUSIO_EUREKA)
{
kal_uint8 timestamp[7];
kal_uint8 *msg = NULL;
int msg_len = 0;
int type = 0;
/* If found an matched entry in persistent queue, send */
if ((msg = jpush_eureka_check_smsqueue_without_remove(&type, &msg_len, portNumber, (kal_uint16*)j2me_sms_tel_num_ucs2, (kal_uint8*)timestamp)) != NULL) {
mmiapi_sms_check_incoming_msg_rsp_struct *p = NEW_LOCAL_PTR(mmiapi_sms_check_incoming_msg_rsp_struct);
p->result = type;
free_ctrl_buffer(msg);
jwa_sms_set_state(JWA_SMS_STATE_CHECK_INCOMING_MSG);
/* Fake to send get incoming data rsp to self */
SEND_MESSAGE(MOD_J2ME, MOD_JASYN, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_CHECK_INCOMING_MSG_RSP, p, NULL);
return J2ME_SMS_BLOCK;
}
}
#endif /* __SUPPORT_INFUSIO__ */
return _jwa_sms_check_incoming_msg(portNumber, only_new);
}
/*****************************************************************************
* FUNCTION
* _jwa_sms_receive_binary_msg_req
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int _jwa_sms_receive_binary_msg_req(long portNumber)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_sms_get_incoming_msg_req_struct *p = NEW_LOCAL_PTR(mmiapi_sms_get_incoming_msg_req_struct);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_RECV_BINARY, (int)portNumber);
p->blocking_data = NULL;
p->port_number = (int)portNumber;
jwa_sms_set_state(JWA_SMS_STATE_GET_INCOMING_MSG);
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_GET_INCOMING_MSG_REQ, p, NULL);
kal_trace(TRACE_INFO, WMA_SMS_RECV_BINARY1);
return J2ME_SMS_BLOCK;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_receive_binary_msg_req
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int jwa_sms_receive_binary_msg_req(long port)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#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_receive_binary_msg_req: BG running state \n");
Kprintf();
return J2ME_SMS_NOT_AVAILABLE;
}
#endif /* J2ME_SUPPORT_BACKGROUND */
#ifdef __SUPPORT_INFUSIO__
//if ( jvm_get_current_game_type() == GAMETYPE_INFUSIO_EUREKA)
{
kal_uint8 *msg;
int msg_len;
/* If found an matched entry in persistent queue, send */
if ((msg = jpush_eureka_check_smsqueue((int)port, &msg_len)) != NULL) {
mmiapi_sms_get_incoming_msg_rsp_struct *p = NEW_LOCAL_PTR(mmiapi_sms_get_incoming_msg_rsp_struct);
p->message = msg;
p->message_len = msg_len;
jwa_sms_set_state(JWA_SMS_STATE_GET_INCOMING_MSG);
/* Fake to send get incoming data rsp to self */
SEND_MESSAGE(MOD_J2ME, MOD_JASYN, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_GET_INCOMING_MSG_RSP, p, NULL);
return J2ME_SMS_BLOCK;
}
}
#endif /* __SUPPORT_INFUSIO__ */
return _jwa_sms_receive_binary_msg_req(port);
}
/*****************************************************************************
* FUNCTION
* jwa_sms_receive_binary_msg_rsp
* DESCRIPTION
*
* PARAMETERS
* len [?]
* RETURNS
* pointer to received buffer
*****************************************************************************/
char *jwa_sms_receive_binary_msg_rsp(int *len)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (JWA_SMS_STATE_GET_INCOMING_MSG == jwa_sms_get_state())
{
jwa_sms_set_state(JWA_SMS_STATE_IDLE);
}
else
{
sprintf(_kvmLogStr,"jwa_sms_receive_binary_msg_rsp: STRANGE state= %d\n", jwa_sms_get_state());
Kprintf();
}
*len = j2me_sms_receive_len;
return (char*)j2me_sms_recceive_data_ptr;
}
/*****************************************************************************
* FUNCTION
* _jwa_sms_receive_text_msg_req
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int _jwa_sms_receive_text_msg_req(long portNumber)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_sms_get_incoming_msg_req_struct *p = NEW_LOCAL_PTR(mmiapi_sms_get_incoming_msg_req_struct);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_RECV_TEXT, (int)portNumber);
p->blocking_data = NULL;
p->port_number = (int)portNumber;
jwa_sms_set_state(JWA_SMS_STATE_GET_INCOMING_MSG);
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_GET_INCOMING_MSG_REQ, p, NULL);
kal_trace(TRACE_INFO, WMA_SMS_RECV_TEXT1);
return J2ME_SMS_BLOCK;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_receive_text_msg_req
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int jwa_sms_receive_text_msg_req(long port)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#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_receive_text_msg_req: BG running state \n");
Kprintf();
return J2ME_SMS_NOT_AVAILABLE;
}
#endif /* J2ME_SUPPORT_BACKGROUND */
#ifdef __SUPPORT_INFUSIO__
//if ( jvm_get_current_game_type() == GAMETYPE_INFUSIO_EUREKA)
{
kal_uint8 *msg;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -