📄 jwa_sms.c
字号:
int msg_len;
/* If found an matched entry in persistent queue, send */
if ((msg = jpush_eureka_check_smsqueue(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_text_msg_req(port);
}
/*****************************************************************************
* FUNCTION
* jwa_sms_receive_text_msg_rsp
* DESCRIPTION
*
* PARAMETERS
* len [?]
* RETURNS
* pointer to received buffer
*****************************************************************************/
unsigned short *jwa_sms_receive_text_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_text_msg_rsp: STRANGE state= %d\n", jwa_sms_get_state());
Kprintf();
}
*len = j2me_sms_receive_len;
return (unsigned short*)(j2me_sms_recceive_data_ptr);
}
/*****************************************************************************
* FUNCTION
* jwa_sms_number_of_text_segments
* DESCRIPTION
*
* PARAMETERS
* pBuffer [?]
* pBufferLen [IN]
* RETURNS
* number of text message segments
*****************************************************************************/
int jwa_sms_number_of_text_segments(unsigned short *pBuffer, int pBufferLen)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
EMSData ems_data;
int ret = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_NO_TEXT_SEGMENT, pBufferLen);
if (InitializeEMSData(&ems_data, (kal_uint8) SMSAL_UCS2_DCS) == EMS_OK)
{
if (AddString(&ems_data, (kal_uint8*) pBuffer, (kal_uint16) pBufferLen, NULL) == EMS_OK)
{
ret = ems_data.Reminder.requiredSegment;
kal_trace(TRACE_INFO, WMA_SMS_NO_TEXT_SEGMENT1, ret);
}
ReleaseEMSData(&ems_data);
}
return ret;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_number_of_binary_segments
* DESCRIPTION
*
* PARAMETERS
* pBuffer [?]
* pBufferLen [IN]
* RETURNS
* number of binary message segments
*****************************************************************************/
int jwa_sms_number_of_binary_segments(char *pBuffer, int pBufferLen)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
EMSData ems_data;
int ret = 0;
kal_uint8 *ucs2_buffer;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_NO_BINARY_SEGMENT, pBufferLen);
/* Return 0 if the message object cannot be sent using the underlying protocol */
if ((pBufferLen << 1) > 2048)
{
return 0;
}
if (pBufferLen == 0)
{
return 0;
}
ucs2_buffer = (kal_uint8*) get_ctrl_buffer((kal_uint16) (pBufferLen << 1));
J2ME_sms_ansii_n_to_unicode((S8*) ucs2_buffer, (S8*) pBuffer, (U32) pBufferLen);
if (InitializeEMSData(&ems_data, (kal_uint8) SMSAL_8BIT_DCS) == EMS_OK)
{
if (AddString(&ems_data, (kal_uint8*) ucs2_buffer, (kal_uint16) pBufferLen, NULL) == EMS_OK)
{
ret = ems_data.Reminder.requiredSegment;
kal_trace(TRACE_INFO, WMA_SMS_NO_BINARY_SEGMENT1, ret);
}
ReleaseEMSData(&ems_data);
}
free_ctrl_buffer(ucs2_buffer);
return ret;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_unregister
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* type [IN]
* RETURNS
* J2me_sms_result_enum
*****************************************************************************/
int jwa_sms_unregister(long portNumber, int type)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_sms_register_port_req_struct *p;
int ret;
#ifdef __MMI_DUAL_SIM_MASTER__
kal_int32 ret_sim2;
#endif /* __MMI_DUAL_SIM_MASTER__ */
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_INFO, WMA_SMS_UNREGISTER, portNumber);
ret = j2me_check_push_register_port(portNumber, type);
kal_trace(TRACE_INFO, WMA_SMS_UNREGISTER1, ret);
if (((type == WMA_REGISTRY) && (ret != PUSH_REGISTERED) && (ret != PUSH_CONFLICT_REGISTERED)) ||
((type == PUSH_REGISTRY) && (ret == PUSH_REGISTERED)))
{
#ifdef __MMI_DUAL_SIM_MASTER__
ret_sim2 = J2ME_sms_unregister_sim_type(portNumber, type, JWA_SMS_SIM_TYPE_SIM2);
if (ret_sim2 != 0)
{
J2ME_sms_unregister_sim_type(portNumber, type, JWA_SMS_SIM_TYPE_SIM1);
return J2ME_SMS_NOT_AVAILABLE;
}
#endif /* __MMI_DUAL_SIM_MASTER__ */
p = NEW_LOCAL_PTR(mmiapi_sms_register_port_req_struct);
p->blocking_data = NULL;
p->enable = KAL_FALSE;
p->port_number = (int)portNumber;
p->remove_reminder_data = KAL_TRUE;
#ifdef __MMI_DUAL_SIM_MASTER__
p->isSlave = KAL_FALSE;
#endif /* __MMI_DUAL_SIM_MASTER__ */
j2me_sms_register_enable = KAL_FALSE;
j2me_sms_register_type = type;
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_UNREGISTER2);
resouceDereg(JAVA_WMA_SMS_DEVICE, portNumber);
return J2ME_SMS_BLOCK;
}
if ((type == WMA_REGISTRY) && ((ret == PUSH_REGISTERED) || (ret == PUSH_CONFLICT_REGISTERED)))
{
return J2ME_SMS_PORT_IN_USE_BY_PUSH;
}
else
{
return J2ME_SMS_PORT_NOT_IN_USE;
}
}
/*****************************************************************************
* FUNCTION
* jwa_sms_get_timestamp
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* RETURNS
* time of sms send or received
*****************************************************************************/
kal_uint64 _jwa_sms_get_timestamp(long portNumber)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_blocking_data_struct *blocking;
kal_uint8 scts[7];
kal_uint64 time;
mmiapi_sms_get_incoming_msg_timestamp_req_struct *p = NEW_LOCAL_PTR(mmiapi_sms_get_incoming_msg_timestamp_req_struct);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
blocking = mmiapi_get_blocking_data(MOD_JASYN);
blocking->result_ptr = (void*)scts;
p->blocking_data = blocking;
p->port_number = (int)portNumber;
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_GET_INCOMING_MSG_TIMESTAMP_REQ, p, NULL);
mmiapi_lock(MOD_JASYN); /* waiting the check incoming result */
{
int year = (scts[0] >> 4) + (scts[0] & 0xf) * 10;
year += 2000;
if (year > 2090)
{
year -= 100;
}
time = (kal_uint64) getJulianOffsetTimeInMillis(
(unsigned short)year, /* year */
(unsigned char)((scts[1] >> 4) + ((scts[1] & 0xf) * 10) - 1), /* month */
(unsigned char)((scts[2] >> 4) + (scts[2] & 0xf) * 10), /* day */
(unsigned char)((scts[3] >> 4) + (scts[3] & 0xf) * 10), /* hour */
(unsigned char)((scts[4] >> 4) + (scts[4] & 0xf) * 10), /* minute */
(unsigned char)((scts[5] >> 4) + (scts[5] & 0xf) * 10), /* second */
(int)0);
/* adjust the timezone to GMT - local time offset, the TimeZone class will add local time offset */
time -= (kal_uint64) (((int)(mmi_dt_get_tz() * 60)) * 60 * 1000);
}
return time;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_get_ori_timestamp
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* RETURNS
* time of sms send or received
*****************************************************************************/
kal_bool jwa_sms_get_ori_timestamp(long portNumber, kal_uint8* time)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmiapi_blocking_data_struct *blocking;
kal_uint8 scts[7];
mmiapi_sms_get_incoming_msg_timestamp_req_struct *p = NEW_LOCAL_PTR(mmiapi_sms_get_incoming_msg_timestamp_req_struct);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
blocking = mmiapi_get_blocking_data(MOD_JASYN);
blocking->result_ptr = (void*)scts;
p->blocking_data = blocking;
p->port_number = (int)portNumber;
SEND_MESSAGE(MOD_JASYN, MOD_MMI, MMI_J2ME_SAP, MSG_ID_MMIAPI_SMS_GET_INCOMING_MSG_TIMESTAMP_REQ, p, NULL);
mmiapi_lock(MOD_JASYN); /* waiting the check incoming result */
memcpy(time, scts, 7);
return KAL_TRUE;
}
/*****************************************************************************
* FUNCTION
* jwa_sms_get_timestamp
* DESCRIPTION
*
* PARAMETERS
* portNumber [IN]
* RETURNS
* time of sms send or received
*****************************************************************************/
kal_uint64 jwa_sms_get_timestamp(long portNumber)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef __SUPPORT_INFUSIO__
//if ( jvm_get_current_game_type() == GAMETYPE_INFUSIO_EUREKA)
{
kal_uint8 scts[7];
kal_uint64 time = 0;
kal_uint8 *msg = NULL;
int msg_len = 0;
int type = 0;
if ((msg = jpush_eureka_check_smsqueue_without_remove(&type, &msg_len, portNumber, (kal_uint16*)j2me_sms_tel_num_ucs2, (kal_uint8*)scts)) != NULL)
{
free_ctrl_buffer(msg);
{
int year = (scts[0] >> 4) + (scts[0] & 0xf) * 10;
year += 2000;
if (year > 2090)
{
year -= 100;
}
time = (kal_uint64) getJulianOffsetTimeInMillis(
(unsigned short)year, /* year */
(unsigned char)((scts[1] >> 4) + ((scts[1] & 0xf) * 10) - 1), /* month */
(unsigned char)((scts[2] >> 4) + (scts[2] & 0xf) * 10), /* day */
(unsigned char)((scts[3] >> 4) + (scts[3] & 0xf) * 10), /* hour */
(unsigned char)((scts[4] >> 4) + (scts[4] & 0xf) * 10), /* minute */
(unsigned char)((scts[5] >> 4) + (scts[5] & 0xf) * 10), /* second */
(int)0);
/* adjust the timezone to GMT - local time offset, the TimeZone class will add local time offset */
time -= (kal_uint64) (((int)(mmi_dt_get_tz() * 60)) * 60 * 1000);
}
return time;
}
}
#endif /* __SUPPORT_INFUSIO__ */
return _jwa_sms_get_timestamp(portNumber);
}
/**********************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -