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

📄 mmisatinput.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:

 $Returns:		none

 $Arguments:	txt  - text info
                destination - text destination 
                source - text source

*******************************************************************************/
static void sat_UCODE_to_TEXT (T_SAT_TXT * txt, UBYTE * destination, cp_wstring_t source)
{
    UBYTE * temp_buffer;
    UBYTE size;
    UBYTE outLen;

    switch( txt->code )
    {
    case MFW_DCS_7bits:
        size = (source->length/sizeof(wchar_t))+1;
        temp_buffer = (UBYTE *)ALLOC_MEMORY(size); 
        string_UCS2_to_GSM(
                          MFW_DCS_7bits,  // gsm format 
                          (wstring_t *)source,// source unicode string, includes own length
                          size,           // maximum output size
                          temp_buffer,    // destination byte array
                          &outLen     // actual length in bytes is stored here.
                          );
        txt->len = utl_cvt8To7 (temp_buffer, outLen, destination, 0);
        FREE_MEMORY ((U8 *)temp_buffer, size);
        break;
    case MFW_DCS_8bits:
        string_UCS2_to_GSM(
                          MFW_DCS_7bits,  // gsm format 
                          (wstring_t *)source,// source unicode string, includes own length
                          size,           // maximum output size
                          destination,    // destination byte array
                          &txt->len       // actual length in bytes is stored here.
                          );
        break;
    case MFW_DCS_UCS2:
        txt->len = source->length*sizeof(wchar_t); // txt count is in number of bytes
        memcpy(destination, source, txt->len);
        break;
    default:
        string_UCS2_to_GSM(
                          MFW_DCS_7bits,  // gsm format 
                          (wstring_t *)source,// source unicode string, includes own length
                          size,           // maximum output size
                          destination,    // destination byte array
                          &txt->len       // actual length in bytes is stored here.
                          );
        TRACE_EVENT("sat_UCODE_to_TEXT() unexp. DCS");
        break;
    }
}
#endif /* INTEGRATION_SEPT00 */

/*******************************************************************************

 $Function:    	sat_get_key_send_result

 $Description:	


 $Returns:		none

 $Arguments:	data  - key info

*******************************************************************************/

static void sat_get_key_send_result (T_sat_get_key * data)
{
    T_SAT_RES sat_res;
    struct
    {
        T_SAT_TXT txt;
        UBYTE      buffer[SAT_GET_KEY_BUFFER_SIZE]; /* buffer for result */ 
    } buf; /* NOTE: txt and buffer shall be packed */

    /* update the output parameter */

    /* set the required DCS for the result to be returned */
    if( (data->sat_command->qual & SAT_M_INKEY_UCS2) NEQ 0 )
    {
        buf.txt.code = MFW_DCS_UCS2;
    }
    else
    {
        buf.txt.code = MFW_DCS_8bits; /* use the SMS default alphabet */
    }

    buf.txt.text = sizeof(T_SAT_TXT);
    buf.txt.len = 1;

    /* convert and send the result */
    sat_ASCII_to_TEXT(&buf.txt, buf.buffer, (UBYTE *)data->edt_buffer);
    sat_res[SAT_ERR_INDEX] = SatResSuccess;
    sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
    satString (data->sat_command,  &buf.txt, sat_res, sizeof(T_SAT_RES));
}

/*******************************************************************************

 $Function:    	sat_get_string_send_result

 $Description:	


 $Returns:		none

 $Arguments:	data  - string info

*******************************************************************************/
static void sat_get_string_send_result (T_sat_get_string * data)
{
    T_SAT_RES sat_res;
    T_sat_get_string_result * buf;
    U16 length;
    U16 size;

    /* allocate sufficient temporary space to return the result (avoid huge stack usage) */
    length = strlen(data->edt_buffer);
    size = sizeof(T_sat_get_string_result) + length;
    buf = (T_sat_get_string_result *) ALLOC_MEMORY(size); 

    /* update the output parameter */

    /* set the required DCS for the result to be returned */
    if( (data->sat_command->qual & SAT_M_INPUT_UCS2) NEQ 0 )
    {
        buf->txt.code = MFW_DCS_UCS2;
    }
    else if( (data->sat_command->qual & SAT_M_INPUT_PACKING) NEQ 0 )
    {
        buf->txt.code = MFW_DCS_7bits; /* use the packed SMS alphabet */
    }
    else
    {
        buf->txt.code = MFW_DCS_8bits; /* use the SMS default alphabet */
    }

    buf->txt.text = sizeof(T_SAT_TXT);
    buf->txt.len = length;

    /* convert and send the result */
    sat_ASCII_to_TEXT(&buf->txt, buf->buffer, (UBYTE *)data->edt_buffer);
    sat_res[SAT_ERR_INDEX] = SatResSuccess;
    sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
    satString (data->sat_command,  &buf->txt, sat_res, sizeof(T_SAT_RES));

    FREE_MEMORY((U8 *)buf, size);
}

/*******************************************************************************

 $Function:    	sat_editor_cb

 $Description:	Sat editor call back function.


 $Returns:		none

 $Arguments:	win  - window
                Identifier - unique id
                event - event id
                
*******************************************************************************/
static void sat_editor_cb (T_MFW_HND win, USHORT Identifier, USHORT event)
{
    T_MFW_WIN    * win_data = ((T_MFW_HDR *)win)->data;
    T_SAT_RES sat_res;

    TRACE_EVENT ("sat_editor_cb()");
    {
	/* 2004/04/12 sunsj remove */
        //char temp[60];
        //sprintf(temp,"event number %d",event);
        //TRACE_EVENT(temp);
    }
    if( (win EQ NULL) || (win_data EQ NULL) )
        return;

    switch( Identifier )
    {
    case SAT_GET_KEY:
        {
            T_sat_get_key * data = (T_sat_get_key *)win_data->user;

            if( data EQ NULL )
                return;

            switch( event )
            {
            case INFO_KCD_LEFT: /* OK or single digit key or YES */
                /* update the output parameter */
                if( (data->sat_command->qual & SAT_M_INKEY_YES_NO) NEQ 0 )
                {
                    data->edt_buffer[0] = 0x01; /* means YES */
                    data->edt_buffer[1] = 0x00; /* means YES */
                }

                sat_get_key_send_result (data);
                //editor_destroy(data->key_editor);
                sat_get_key_destroy (data->win);
                break;
            case INFO_KCD_ALTERNATELEFT: /* help */
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_HELP;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //editor_destroy(data->key_editor);
                sat_get_key_destroy (data->win);
                break;
            case INFO_KCD_RIGHT: /* back or NO */
                if( (data->sat_command->qual & SAT_M_INKEY_YES_NO) NEQ 0 )
                {
                    data->edt_buffer[0] = 0x00; /* means NO */
                    data->edt_buffer[1] = 0x00; /* means NO */
                    sat_get_key_send_result (data);
                }
                else
                {
                    sat_res[SAT_ERR_INDEX] = SAT_RES_USER_BACK;
                    sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                    sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                }
                //editor_destroy(data->key_editor);
                sat_get_key_destroy (data->win);
                break;
            case INFO_KCD_CLEAR: /* clear on empty buffer or long clear */
            case INFO_KCD_HUP:      
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_ABORT;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //editor_destroy(data->key_editor);
                sat_get_key_destroy (data->win);
                break;
            case INFO_TIMEOUT: /* timeout */
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_NO_RESP;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                sat_get_key_destroy (data->win);
                break;
            default:
                TRACE_EVENT("sat_editor_cb()_key unexp. event");
                break;
            }
            // sat_get_key_destroy (data->win);
        }
        break;
    case SAT_GET_STRING:
        {
            T_sat_get_string * data = (T_sat_get_string *)win_data->user;

            if( data EQ NULL )
                return;

            switch( event )
            {
            case INFO_KCD_LEFT: /* OK */
                sat_get_string_send_result (data);
                //	editor_destroy(data->string_editor);
                sat_get_string_destroy (data->win);
                break;
            case INFO_KCD_ALTERNATELEFT: /* help */
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_HELP;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //	editor_destroy(data->string_editor);
                sat_get_string_destroy (data->win);
                break;
            case INFO_KCD_RIGHT: /* back */
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_BACK;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //	editor_destroy(data->string_editor);
                sat_get_string_destroy (data->win);
                break;
            case INFO_KCD_CLEAR: /* clear on empty buffer or long clear */
            case INFO_KCD_HUP:      
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_ABORT;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //	editor_destroy(data->string_editor);
                sat_get_string_destroy (data->win);
                break;
            case INFO_TIMEOUT: /* timeout */
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_NO_RESP;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                sat_get_string_destroy (data->win);
                break;
            default:
                TRACE_EVENT("sat_editor_cb()_STRING unexp. event");
                break;
            }
            //sat_get_string_destroy (data->win);
        }
        break;

    case SAT_DISPLAY_TEXT:
        {
            T_sat_display_text   * data     = (T_sat_display_text *)win_data->user;

            switch( event )
            {
            case INFO_KCD_RIGHT: /* back */
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_BACK;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                // editor_destroy(data->display_editor);         //zhaowm 2002.12.05
                break;
            case INFO_TIMEOUT: /* timeout */
                sat_res[SAT_ERR_INDEX] = SatResSuccess;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                break;

            case INFO_KCD_LEFT: /* OK */
                sat_res[SAT_ERR_INDEX] = SatResSuccess;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //  editor_destroy(data->display_editor);
                break;
            case INFO_KCD_CLEAR: /* abort */
            case INFO_KCD_HUP:      
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_ABORT;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //  editor_destroy(data->display_editor);
                break;
            default:
                TRACE_EVENT("sat_editor_cb() unexp. event");
                break;
            }
            sat_display_text_destroy (data->win);
        }
        break;

    case SAT_DISPLAY_TEXT_WAIT:
        {
            T_sat_display_text   * data     = (T_sat_display_text *)win_data->user;

            switch( event )
            {
            case INFO_TIMEOUT: /* timeout */
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_NO_RESP;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                break;
            case INFO_KCD_LEFT: /* OK */
                sat_res[SAT_ERR_INDEX] = SatResSuccess;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                // editor_destroy(data->display_editor);
                break;
            case INFO_KCD_RIGHT: /* back */
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_BACK;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //  editor_destroy(data->display_editor);
                break;
            case INFO_KCD_CLEAR: /* abort */
            case INFO_KCD_HUP:      
                sat_res[SAT_ERR_INDEX] = SAT_RES_USER_ABORT;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (data->sat_command, sat_res, sizeof(T_SAT_RES));
                //  editor_destroy(data->display_editor);
                break;
            default:
                TRACE_EVENT("sat_editor_cb() unexp. event");
                break;
            }
            sat_display_text_destroy (data->win);
        }
        break;
    default:
        TRACE_EVENT("sat_editor_cb() unexp. Identifier");
        break;
    }
    return;
}
// end c014 rsa

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -