6800H与6600差异总节.docx
- 文档编号:10460320
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:16
- 大小:18.45KB
6800H与6600差异总节.docx
《6800H与6600差异总节.docx》由会员分享,可在线阅读,更多相关《6800H与6600差异总节.docx(16页珍藏版)》请在冰豆网上搜索。
6800H与6600差异总节
6800H平台相对于L平台主要差异如下:
一.绘图:
(1)显示字串:
1.PUBLICvoidGUISTR_DrawTextToLCDInRect(
constGUI_LCD_DEV_INFO*dev_info_ptr,
constGUI_RECT_T*disp_rect_ptr,//thefixeddisplayarea
constGUI_RECT_T*clip_rect_ptr,//用户要剪切的实际区域
constMMI_STRING_T*str_ptr,
GUISTR_STYLE_T*style_ptr,
GUISTR_STATE_Tstate,
int8dir
)
主要用到的显示字串的函数是这个,在指定框内显示字串;
下面是UU娱乐平台中对该函数的使用的封装:
voidMuse_display_string_in_rect(GUI_LCD_DEV_INFOconst*dev_info_ptr,//IDofLCDtodisplayon
GUI_RECT_Trect,//thefixeddisplayarea
constwchar*str_ptr,//stringtodisplay
uint16len,//lengthofstringtodisplay
uint16char_space,//spacebetweentwochars.
GUI_COLOR_Tfont_color,//stringcolor
GUI_FONT_Tfont,//fonttype
GUI_ALIGN_Ealign,
uint8line_space//spacebetween2lines
)
{
MMI_STRING_Tstr={0};
GUISTR_STYLE_Tstr_style={0};
GUISTR_STATE_Tstr_state=GUISTR_STATE_ALIGN|GUISTR_STATE_WORDBREAK;//|GUISTR_STATE_SINGLE_LINE
str.wstr_ptr=str_ptr;
str.wstr_len=len;
str_style.font=font;
str_style.font_color=font_color;
str_style.line_space=line_space;
str_style.align=align;
GUISTR_DrawTextToLCDInRect(
dev_info_ptr,
&rect,
&rect,
&str,//str_ptr,
&str_style,
str_state,
GUISTR_TEXT_DIR_AUTO);
)
/*****************************************************************************/
2.PUBLICvoidGUISTR_DrawTextToLCDMultiLine(
constGUI_LCD_DEV_INFO*dev_info_ptr,
constGUI_POINT_T*point_ptr,
constMMI_STRING_T*str_ptr,
GUISTR_STYLE_T*style_ptr,
GUISTR_STATE_Tstate
)
该函数为显示一行或多行文本,会自动换行;
以下是对该函数的封装:
voidMuse_display_string(GUI_FONT_Tfont,uint16iStartX,uint16iStartY,char*pcTextPtr,GUI_COLOR_Tcolor)
{
GUI_LCD_DEV_INFOdev_info_ptr={0,0};
GUI_POINT_Tm_startpoint={0,0};
MMI_STRING_Tstr={0};
GUISTR_STYLE_Tstr_style={0};
GUISTR_STATE_Tstr_state=GUISTR_STATE_ALIGN|GUISTR_STATE_WORDBREAK;
m_startpoint.x=iStartX;
m_startpoint.y=iStartY;
str.wstr_ptr=pcTextPtr;
str.wstr_len=MMIAPICOM_Wstrlen((constwchar*)pcTextPtr);
str_style.font=font;
str_style.font_color=color;
str_style.line_space=0;
str_style.align=LEFT_ALIGN;
GUISTR_DrawTextToLCDMultiLine(&dev_info_ptr,&m_startpoint,&str,&str_style,str_state);
}
(2)显示图片:
1.图片解码函数:
BOOLEANMuse_img_decode(uint8*bmp_ptr,/*保存解码后数据的bufferin*/
uint16*full_path_ptr,/*文件路径,mayNULLin*/
uint32bmp_size,/*buffer大小in*/
uint8*data_ptr,/*图片数据,mayNULLin*/
uint32data_len,/*数据长度in*/
uint32orign_width,/*图片实际宽in*/
uint32orign_height,/*图片实际高in*/
uint32*real_width_ptr,/*图片解码后的宽out*/
uint32*real_height_ptr,/*图片解码后的高out*/
GUIIMG_BITMAP_T*bitmp_handle
)
{
IMG_DEC_FRAME_IN_PARAM_Tin_param={0};
IMG_DEC_FRAME_OUT_PARAM_Tout_param={0};
IMG_DEC_SRC_Timg_dec_src={0};
uint32handle=0;
IMG_DEC_RET_Egif_ret=IMG_DEC_RET_SUCCESS;
uint32frame_delay=0;
BOOLEANis_first_decode=FALSE;
GUI_POINT_Tdis_point={0};
SCI_ASSERT(bmp_ptr);
img_dec_src.src_file_size=bmp_size;//data_len;
img_dec_src.src_ptr=data_ptr;
if(IMG_DEC_RET_SUCCESS==GUIANIM_CreatHandle(full_path_ptr,&handle,&img_dec_src))
{
SCI_TRACE_MID("glp321Muse_img_decode:
decodesuccess");
is_first_decode=TRUE;
in_param.callback=PNULL;//Muse_img_decode_callback;
in_param.handle=handle;
in_param.data_format=IMG_DEC_RGB565;
in_param.target_ptr=bmp_ptr;
in_param.target_buf_size=bmp_size;
in_param.target_width=orign_width;
in_param.target_height=orign_height;
in_param.write_data=PNULL;
}
else
{
returnFALSE;
}
gif_ret=IMG_DEC_GetFrame(&in_param,&out_param);
//GUIIMG_Decode(GUIIMG_SRC_T*src_ptr,GUIIMG_DISPLAY_T*display_ptr,GUIIMG_DEC_OUT_T*output_ptr)
//if(/*图片为gif*/)
{
if(gif_ret==IMG_DEC_RET_SUCCESS)
{
SCI_TRACE_MID("glp321Muse_img_decode:
getframesuccess");
*real_width_ptr=out_param.real_width;
*real_height_ptr=out_param.real_height;
bitmp_handle->bit_ptr=in_param.target_ptr;
bitmp_handle->img_width=out_param.real_width;
bitmp_handle->img_height=out_param.real_height;
}
else
{
returnFALSE;
}
frame_delay=(uint16)out_param.delay_time;
#if0
if(gif_ret!
=IMG_DEC_RET_SUCCESS||out_param.is_decode_finished)
{
IMG_DEC_Destroy(handle);
handle=NULL;
}
if(is_first_decode&&out_param.is_decode_finished)
{
frame_delay=0;
}
#else
if(IMG_DEC_RET_SUCCESS!
=IMG_DEC_Destroy(handle))
{
SCI_TRACE_MID("glp321Muse_img_decode:
destroysuccess");
returnFALSE;
}
else
{
/*针对gif图片未解码完成*/
if(frame_delay!
=0)
{
frame_delay=0;
out_param.is_decode_finished=1;
}
}
#endif
}
#if0
else
{
if(gif_ret!
=IMG_DEC_RET_SUCCESS)
{
returnFALSE;
}
else
{
*real_width_ptr=out_param.real_width;
*real_height_ptr=out_param.real_height;
}
if(IMG_DEC_RET_SUCCESS!
=IMG_DEC_Destroy(handle))
{
returnFALSE;
}
}
#endif
returnTRUE;
}
该解码函数为UU娱乐平台封装的解码函数,针对gif动画,只做了一帧的处理,解码完一帧后就desdtroy了,后续针对gif再做优化;也可使用系统函数GUIIMG_Decode()进行解码;
2.图片显示:
解码后图片显示使用函数GUIIMG_DisplayBmp();
未解码,进行图片显示,使用函数GUIRES_DisplayImgByPtr();
二.Gprs激活去活:
该平台中gprs的处理是需要注册自己的处理函数,不再在系统中进行消息的拦截;如下是UU娱乐平台中对GPRS的处理:
(1)激活GPRS:
PUBLICBOOLEANMuseActiveGprs(void/*void*user_ptr*/)
{
BOOLEANreturn_val=FALSE;
uint8setting_index=0;
MMIPDP_ACTIVE_INFO_Tapp_info={0};
MMICONNECTION_LINKSETTING_DETAIL_T*setting_item_ptr=PNULL;
MN_DUAL_SYS_Esim_select=muse_get_active_sim();
MUSE_GPRS_STATUS_ENUMstat;
stat=Muse_GetGPRS_State();
//MUSE_TRACE_MID("glp321MuseActiveGprs:
entry");
if(sim_select!
=MN_DUAL_SYS_1&&sim_select!
=MN_DUAL_SYS_2)
{
returnFALSE;
}
if(Muse_GPRS_DEACTIVE_OK==stat||Muse_GPRS_ACTIVE_FAILED==stat||Muse_GPRS_DEACTIVING==stat)
{
setting_index=MuseGetNetSettingIndex(sim_select);
setting_item_ptr=MMICONNECTION_GetLinkSettingItemByIndex(setting_index);
//MUSE_TRACE_MID("glp321MuseActiveGprs:
startactive");
if(setting_item_ptr!
=PNULL)
{
//MUSE_TRACE_MID("glp321MuseActiveGprs:
setparam");
app_info.app_handler=MMI_MODULE_MUSE;
app_info.apn_ptr=(char*)setting_item_ptr->apn;
app_info.user_name_ptr=(char*)setting_item_ptr->username;
app_info.psw_ptr=(char*)setting_item_ptr->password;
app_info.dual_sys=sim_select;
app_info.priority=3;
app_info.ps_service_rat=MN_UNSPECIFIED;
app_info.handle_msg_callback=HandleMusePdpMsg;//需要注册自己的消息处理函数
MNGPRS_ReadStorageExtReqQosEx(sim_select,MN_GPRS_STORAGE_ALL,IM_E,&app_info.qos_info);
return_val=MMIAPIPDP_Active(&app_info);
}
//MUSE_TRACE_MID("glp321MuseActiveGprs:
return_val=%d",return_val);
if(ERR_MNGPRS_NO_ERR==return_val)
{
//ret为成功,则设置GPRS正在激活
MuseSetGprsStatus(Muse_GPRS_ACTIVING);
g_gprs_is_active=0;
returnTRUE;
}
else
{
g_gprs_is_active++;
if(g_gprs_is_active>=3)
{
g_gprs_is_active=0;
MuseSetGprsStatus(Muse_GPRS_ACTIVE_OK);
returnTRUE;
}
returnFALSE;
}
}
elseif(Muse_GPRS_ACTIVE_OK==stat||Muse_GPRS_ACTIVING==stat)
{
returnTRUE;
}
else
{
returnFALSE;
}
}
(2)消息处理函数:
主要对三个消息进行处理,如下:
voidHandleMusePdpMsg(MMIPDP_CNF_INFO_T*msg_ptr)
{
if(PNULL==msg_ptr)
{
return;
}
switch(msg_ptr->msg_id)
{
caseMMIPDP_ACTIVE_CNF:
{
if(MMIPDP_RESULT_SUCC==msg_ptr->result)
{
MuseActiveGprsCallBack(Muse_GPRS_ACTIVE_OK);
}
else
{
if(g_muse_recon_gprs_cnt>=5)
{
g_muse_recon_gprs_cnt=0;
MuseSetGprsStatus(Muse_GPRS_DEACTIVE_OK);
is_muse_active=FALSE;
MMK_PostMsg(g_MuseWinId.MuseWapInitWaitingWinId,MSG_MUSE_ACTIVE_GPRS_FAILED,PNULL,0);
#ifdefSNTP_APP_SWITCH
if(sntp_get_is_start_synchronize_time())
{
sntp_set_is_start_synchronize_time(FALSE);
sntp_cancel_synchronize_time();
}
#endif
}
else
{
MuseSetGprsStatus(Muse_GPRS_ACTIVE_FAILED);g_muse_recon_gprs_cnt++;
g_muse_recon_timer_id=MMK_CreateWinTimer(g_MuseWinId.MuseWapInitWaitingWinId,2000,FALSE);
}
break;
}
break;
}
caseMMIPDP_DEACTIVE_CNF:
{
MuseSetGprsStatus(Muse_GPRS_DEACTIVE_OK);
is_muse_active=FALSE;
MMK_PostMsg(g_MuseWinId.MuseWapInitWaitingWinId,MSG_MUSE_GPRS_DEACTIVE_OK,PNULL,0);
break;
}
caseMMIPDP_DEACTIVE_IND:
{
MuseSetGprsStatus(Muse_GPRS_DEACTIVE_OK);
is_muse_active=FALSE;
MMK_PostMsg(g_MuseWinId.MuseWapInitWaitingWinId,MSG_MUSE_GPRS_DEACTIVE_OK,PNULL,0);
break;
}
default:
{
break;
}
}
//SCI_FREE(msg_ptr);
}
(3)去活GPRS:
函数接口有所改变
voidMuse_gprs_deactivate(void)
{
BOOLEANreturn_val=FALSE;
MUSE_GPRS_STATUS_ENUMstate;
return_val=MMIAPIPDP_Deactive(MMI_MODULE_MUSE);
state=Muse_GetGPRS_State();
if(state!
=Muse_GPRS_ACTIVE_OK&&state!
=Muse_GPRS_ACTIVING&&state!
=Muse_GPRS_ACTIVE_FAILED)//fly_test2010.11.29
{
return;
}
if(return_val==ERR_MNGPRS_NO_ERR)
{
MuseSetGprsStatus(Muse_GPRS_DEACTIVING);
}
//returnreturn_val;
}
三.一些常用的函数接口的改变:
(1)刷新函数:
原来的接口MMITHEME_UpdateBlockRect()不存在了;
现在刷新区域统一用一下两个函数:
MMITHEME_StoreUpdateRect();
MMITHEME_UpdateRect();
或将原来的刷新函数MMITHEME_UpdateBlockRect的实现封装一遍,如下:
voidMuse_update_block_rect(
constGUI_LCD_DEV_INFO*lcd_dev_info_ptr,
GUI_RECT_Trect
)
{
#ifdefLCD_BLOCK_SUPPORT
MMITHEME_InitMainLcdStortUpdateRect();
MMITHEME_StoreUpdateRect(lcd_dev_info_ptr,rect);
#endif
}
(2)获取帧缓存的接口有所改变:
GUIBLOCK_GetBlockBuffer()改为:
GUIBLOCK_GetBuf();
(3)获取LCD长宽接口:
GUILCD_GetLcdInfo()改为:
GUILCD_GetInfo();
(4)对控件的使用有所改变,具体使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 6800 6600 差异
![提示](https://static.bdocx.com/images/bang_tan.gif)