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

📄 jwa_sms.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 5 页
字号:
		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 + -