<> Global [] 00000000 retval I [] retstr S [] AddFocus <> 01 01 handle H [] I [] ClearScreen <> 01 01 flag I [] <> I [] CreatePage <> 01 01 page_handle H [] I [] CreateTimer 07 01 target_handle H [] <> //name is act as param0 of message name S [] <> //name is act as param0 of message delay_time I [0] <> //the unit is 100ms MsgStrParam S [] <> //param1 of message MsgParam2 I [] <> MsgParam3 I [] <> period_flag I [] <> //0: one time timer //1: period timer I [] DeleteTimer <> 01 01 name S [] I [] DestoryPage <> 01 01 page_handle H [] I [] GetCntDrawState <> 01 01 CntlHandle H [] <> I [] GetDefLanguage <> 00 01 I [] //return default language ID GetHdmode <> 00 01 I [:HDMODE] GetLastShowPage <> 00 01 //to get the handle of latest page showed H [] //The latest page showed GetVolume <> 00 01 //The volume has been divided into 64 grade, from 0, 1, 2, ... to 64, 0 is mute, 64 is MAX I [] HideControl <> 01 01 cntl_handle H [] I [] HideOsdSlide <> 04 01 page_handle H [] <> //any page in the area you want to hide is ok direction I [] <> speed I [] <> fade I [] <> I [] HidePage <> 01 01 page_handle H [] I [] HidePageFade <> 02 01 page_handle H [] //handle of the page want to hide fade_speed I [0] //0~7 larger the faster I [] HidePageSlide <> 03 01 page H [] <> //page handle effect I [] <> //#define FADE_OUT 9 //#define ZOOM_OUT 10 //#define ROTATE_OUT 11 effect_param I [] <> //speed or step I [] IsFocused <> 01 01 //1: the handle is focused 0: not focused handle H [] <> //handle of page/window/control I [] IsShown <> 01 01 handle H [] <> I [] KeepScreen <> 01 01 flag I [] <> I [] LdExtLogoInRect <> 04 01 file_name S [] <> rect H [Rect] <> angle I [] <> show_flag I [] <> I [] LoadLogo <> 02 01 file_handle RT [] <> //Logo resource file flag I [] <> //0: normal //1: smooth jpeg //2: sync jpeg //3: mi jpeg I [] LoadLogoInRect <> 04 01 file RT [] <> rect H [Rect] <> show_flag I [] //show or not flag angle I [] <> //rect angle I [] NetfsGetFileNum <> 02 01 //get total file number in the path of netfs //return -1 or 0 if this count is not available, in this case, "block calling" of GeneralFileTree.ReqGetItemNum can be used to get files number. path_name S [] <> //the full pathname of directory flag I [] <> //reserved I [] OSDAreaCreate <> 08 01 //create a area in a OSD layer layer I [] <> //osd layer type I [] <> //osd type: //#define OSD_TYPE_4BPP 0 //#define OSD_TYPE_8BPP 1 //#define OSD_TYPE_16BPP 2 //#define OSD_TYPE_32BPP 3 x I [] <> //start x y I [] <> //start y w I [] <> //width h I [] <> //height h_show I [] <> //height of show area, normally same as h, except user nee extra osd area for cache mode I [] <> //reserved, when create osd2 area, 0:565mode, 1:484mode, 2:2464mode, 3:4444mode I [] OSDLayerCreate <> 03 01 //create a osd layer by width and height layer I [0] //osd layer to create width I [] //osd buffer width height I [] //osd buffer height I [] OSDLayerDestroy <> 01 01 //destroy an existing osd layer layer I [0] //osd layer to destroy I [] OSDLayerHide <> 01 01 layer I [] <> I [] OSDLayerShow <> 01 01 layer I [] <> I [] PngLogoInRect <> 03 01 File RT [] <> rect H [Rect] <> ShowFlag I [] <> //display all together for more than 1 png logo I [] RemoveFocus <> 01 01 handle H [] I [] ReqTotalFilSize 01 01 //This method can only be "Blocking" called, the return parameter name is: "i_ret" (INT, get by control InOutParam.GetBlkFunRetVal). play_list H [PlayList] <> // I [] SetCnInitShowSt <> 02 01 cntl_handle H [] init_show_state I [] I [] SetCntDrawState <> 02 01 CntlHandle H [] DrawState I [] I [] //Set DrawState of some control //The default DrawState of control is 1. //Control will not be drawed if it's DrawState is 0. SetDefaultFont <> 01 01 font_group_id I [0] //font_id: 0~ max_supported_font_num-1 I [] SetDefBgColor <> 01 01 color I [] I [] SetDefFgColor <> 01 01 color I [] I [] SetDefLanguage <> 01 01 language_id I [0] //language id is from 0 to max_supported_language -1 I [] SetHdmode <> 01 01 Hdmode I [:HDMODE] <> I [] SetOSDLayerPos <> 05 01 layer I [] <> x I [] <> y I [] <> delay I [] <> step I [] <> I [] SetOSDPosition <> 05 01 layer I [] <> x I [] <> y I [] <> delay I [] <> step I [] <> I [] SetOSDRotation <> 01 01 degree I [] <> //0,90,180,270 I [] SetOSDTopLayer <> 01 01 //set which osd layer is on top, //0: layer 0 on top on layer 1, //1: layer 1 on top of layer 0 layer I [0] //osd layer: 0 or 1 I [] SetVolume <> 01 01 //The volume has been divided into 64 grade, from 0, 1, 2, ... to 64, 0 is mute, 64 is MAX volume_level I [] <> I [] ShowControl 02 01 cntl_handle H [] <> flag I [] <> I [] ShowHidePage <> 05 01 //Hide a page and show a page with effect, for slide effect only the show page area will do effect. Make sure the page show area is same or bigger than hide page area. show_page H [] <> //page to show hide_page H [] <> //page to hide(only hide it, no destroy) focus_flag I [] <> //0: show only //1: show and add focus //2: show, add focus and remove other pages focua effect I [] <> //#define NO_EFFECT 0 //#define SLIDE_RIGHT 1 //#define SLIDE_LEFT 2 //#define SLIDE_UP 3 //#define SLIDE_DOWN 4 //#define SLIDE_MIDDLE2VSIDE 5 //#define FADE_IN 6 //#define ZOOM_IN 7 //#define ROTATE_IN 8 //#define FADE_OUT 9 //#define ZOOM_OUT 10 //#define ROTATE_OUT 11 //#define FADE_IN_FADE_OUT 12 //#define KEEP_OFFSCR 0xffff effect_param I [] <> //for SLIDE_RIGHT, SLIDE_LEFT, SLIDE_UP, SLIDE_DOWN, ZOOM_IN, ZOOM_OUT -- move/scale pixels each step //for ROTATE_IN, ROTATE_OUT -- degree(0-360) each step I [] ShowOsdSlide <> 04 01 page_handle H [] <> //the last page handle in the osd area you want to show focus_flag I [] <> //0: show only //1: show with focus //2: show with focus and remove all other pages focus direction I [] <> //#define SLIDE_RIGHT 1 //#define SLIDE_LEFT 2 //#define SLIDE_UP 3 //#define SLIDE_DOWN 4 //#define SLIDE_MIDDLE2VSIDE 5 //#define NONE_FADE 6 speed I [] <> //the bigger the faster I [] ShowPage 02 01 page_handle H [] <> focus_flag I [] <> //1 -- add ctrls handing input in this page into focus list; //0 -- not add ctrls handing input in this page into focus list. I [] ShowPageFade 03 01 //Show Page with fade in effect, should no other page share palette with it show at the same time. page_handle H [] <> //page handle want to show focus_flag I [0] <> //0: not add focus 1:add focus 2:add focus and remove other fade_speed I [0] <> //0~7 larger the faster I [] ShowPageSlide 04 01 page_handle H [] <> focus_flag I [0] <> //0: show only //1: show with focus //2: show with focus and remove all other pages focus direction I [] <> //#define SLIDE_RIGHT 1 //#define SLIDE_LEFT 2 //#define SLIDE_UP 3 //#define SLIDE_DOWN 4 //#define SLIDE_MIDDLE2VSIDE 5 //#define FADE_IN 6 //#define ZOOM_IN 7 //#define ROTATE_IN 8 speed I [] <> //step or speed I [] UITaskChangPrio <> 01 01 //Change the priority of UITask, whose default priority is 17. //To improve the performance of music, user can change priority of UITask to 20 when it is playing music. new_priority I [] <> // // I [] I [] AFMSG_SYS_REGISTER <> AFMSG_SYS_DRAW <> AFMSG_SYS_HIDE <> AFMSG_SYS_INIT <> AFMSG_SYS_PAGE_DESTROYED <> AFMSG_SYS_TIMER <> AFMSG_SYS_LOST_FOCUS <> AFMSG_SYS_GOT_FOCUS <> AFMSG_SYS_DRIVER_REGISTER <> <> uDisplayDevice [] 00000002 <> OSD1_H I [] OSD1_W I [] OSD2_H I [] OSD2_W I [] AFMSG_SYS_REGISTER <> uSPINorDevice [] 00000002 <> DevFormat <> 00 01 I [] ReadSpiData <> 01 01 //read spi DATA,retrun int SpiAddr I [] <> I [] WrintSpiData <> 02 01 //write a int to Spi. SpiAddr I [] <> WriteData I [] <> I [] AFMSG_SYS_REGISTER <> uUsbDevice [] 00000001 <> StartUsbGadget <> 00 01 I [] AFMSG_SYS_REGISTER <> uCardDevice [] 00000009 AFMSG_SYS_REGISTER <> uFileItem1 [FileBrowserItem] 00000010 <> XYWH <> GR [] name_area H [Rect] state <> I [:ButtonState] file_name <> S [] file_type <> I [] unfucos_icon RI [] fucos_icon RI [] unfocu_typeicon RI [] //the file type icon unfocus focus_typeicon RI [] //the type icon fucos focus_color I [0~16777215] unfocus_color I [0~16777215] attr_name AS [;] //This is only the interface between this item and it's container control. //Container put "attribute name" in this array (the array count is initialized by Item control ) before container draw this item. //If the array count n (initialized by item control) is smaller than container's attributes number, only first n attributes are put in this array. attr_val AS [;] //This is only the interface between this item and it's container control. //Container put "attribute value" in this array (the array count is initialized by Item control ) before container draw this item. //If the array count n (initialized by item control) is smaller than container's attributes number, only first n attributes are put in this array. iconpos AI [0~10;] //(0,1):unfucos_icon pos (2,3):focus_icon pos Draw <> 00 01 I [] Hide <> 00 01 I [] Refresh <> 00 01 //Just refresh draw icons. I [] <> uGlobalVal [] 00000016 <> CurDevPath <> S [] ComboStatus <> I [] CurModeType <> S [] CurDeviceName <> S [] SetupTemUse <> I [] AlbumsStatus <> S [] PCStatus <> S [] AlbumsType <> S [] //Albums type: "General", "Family", "Tour", "Party" CopyDelete I [0~2] //To flag copy operation or delete operation: 0: no copy delete; 1: copy operation; 2: delete operation. CopyMode I [0~1] //To flag copy mode: 0: normal copy; 1: resize copy. CopyDelFileType I [0~3] //Copy delete file type: 0: photo, 1: music, 2: video, 3: reserved. CopyDelAlbums S [] //Copy delete albums: "General", "Family", "Tour", "Party", "2007", etc. CopyDelMark I [0~1] //Copy delete mark or all: 0: copy delete all, 1: copy delete mark StartingMode <> I [0~3] //Power on play mode:0:Photo mode,1:Movie mode,2:Blending mode,3:reserved Brightness <> I [] //Brigtness para. Contrast <> I [] //Contrast para. Color <> I [] //Color para. Rotate <> I [] //Direction para. Transition <> I [] //Transition effect para. DisplayMode <> I [] //Display mode para. Interval <> I [] //Interval para. Repeat <> I [] //Repeat para. GetCurDevPath <> 00 01 //Get current active device path S [] GetComboStatus <> 00 01 //Get combo play status, 1:combo play; 0:not combo play I [] SetComboStatus <> 01 01 //Set combo play status, 1: combo play; 0: not combo play is_combo_play I [] <> //the input para for current combo play status. I [] SetCurDevPath <> 01 01 //Set current active device path path S [] <> //the current device path input partameter I [] GetCurModeType <> 00 01 //Get current mode type: Album,Photo,Music,Movie,Calendar,Setup,Help S [] SetCurcModeType <> 01 01 //Set current mode type: Album,Photo,Music,Movie,Calendar,Setup,Help modetype S [] <> //Album,Photo,Music,Movie,Calendar,Setup,Help I [] GetCurDevName <> 00 01 //Get current device name S [] SetCurDevName <> 01 01 //Set current device name DevName S [] <> //current device name : NAND,SD2,USB,CF,SD I [] SetDevNamByPath <> 01 01 devpath S [] <> //devpath: /mnt/NAND/nanda1 I [] SetAlbumsStatus <> 01 01 //there two status: "Albums2Thumb" and "Thumb2Albums" flag S [] <> //two status: "Albums2Thumb" and "Thumb2Albums" S [] GetAlbumsStatus <> 00 01 //two status: "Albums2Thumb" and "Thumb2Albums" S [] SetPCStatus <> 01 01 //Set PC Status: "PC_Connected" or "PC_DisConnecting" or "NO_PC_Connected" status S [] <> //Set PC Status: "PC_Connected" or "PC_DisConnecting" or "NO_PC_Connected" S [] GetPCStatus <> 00 01 //Get PC Status: "PC_Connected" or "PC_DisConnecting" or "NO_PC_Connected" S [] SetAlbumsType <> 01 01 //Albums type: "General", "Family", "Tour", "Party" albumstype S [] <> //Albums type: "General", "Family", "Tour", "Party" S [] GetAlbumsType <> 00 01 //Albums type: "General", "Family", "Tour", "Party" S [] SetCopyDelete <> 01 01 //To set copydelete opertion: 0: no copy delete; 1: copy operation; 2: delete operation. copyordelete I [0~2] <> //0: no copy delete; 1: copy; 2: delete. I [] GetCopyDelete <> 00 01 //Get copy delete status: 0: no copy delete; 1: copy; 2: delete. I [] SetCopyMode <> 01 01 //To set copy mode: 0: normal copy; 1: resize copy. copymode I [0~1] <> //0: normal copy; 1: resize copy I [] GetCopyMode <> 00 01 //copy mode: 0: normal copy; 1: resize copy. I [] SetCopyDelFileT <> 01 01 //Set copy delete file type: 0: photo, 1: music, 2: video, 3: reserved. filetype I [0~3] <> //0: photo, 1: music, 2: video, 3: reserved. I [] GetCopyDelFileT <> 00 01 //Get copy delete file type: 0: photo, 1: music, 2: video, 3: reserved. I [] SetCopyDelAlbu <> 01 01 //Set copy delete albums: "General", "Family", "Tour", "Party", "2007", "2008", "All" etc. albums S [] <> //"General", "Family", "Tour", "Party", "2007", "2008", "All", etc. S [] GetCopyDelAlbu <> 00 01 //"General", "Family", "Tour", "Party", "2007", "2008", "All", etc. S [] SetCopyDelMark <> 01 01 //Set copy delete mark or all: 0: copy delete all, 1: copy delete mark. mark I [0~1] <> //0: all, 1: mark I [] GetCopyDelMark <> 00 01 //0: all, 1: mark I [] GetStartingMode <> 00 01 //Get starting mode:0:Photo mode,1:Movie mode,2:Blending mode,3:reserved I [] SetStartingMode <> 01 01 is_start_play I [] <> //input para for current control starting mode I [] <> uHardControl [] 00000006 <> RtcCrystalTest <> 00 01 I [] SysMute <> 01 01 //HW mute mute I [0~1] <> //0:unmute, 1:mute I [] SysBacklight <> 01 01 //power on/off system backlight. on_off I [] <> //0: power off, 1: power on. I [] <> uIconButton [ButtonGroupItem] 00000015 <> XYWH GR [] //Position and Size of Button Item state <> I [:ButtonState] //The State of Button label <> S [] //Text option <> I [] unfocus_bg_icon RI [] //1: not clear rect when Hide unfocus_fg_icon GI [] unfocus_label GS [] focus_bg_icon RI [] focus_fg_icon GI [] focus_label GS [] disable_bg_icon RI [] disable_fg_icon GI [] disable_label GS [] press_bg_icon RI [] press_fg_icon GI [] press_label GS [] drawrectnum I [] //draw rect arear nums multilineflag <> I [] //0: one line 1:multi-line line_length I [] //char number y_distance I [] //the distance drawrect AI [0~10;] //0:osd layer 1:x0 2:y0 3:w 4:h 5:distance 6:clear color 7:draw color 8:draw mode Draw <> 00 01 //Draw I [] Hide <> 00 01 //Hide I [] DrawRect <> 01 01 //draw rect item I [] <> //draw rect numbers I [] ChangeIcon <> 03 01 unfocus_bg_icon RI [] <> focus_bg_icon RI [] <> disable_bg_icon RI [] <> I [] <> uUpgradeHandle [UpgradeHandle] 00000001 <> Check <> 02 01 Platform I [] Customer I [] I [] AFMSG_UPG_UPGRADE_CHECK_OK AFMSG_UPG_UPGRADE_CHECK_ERROR AFMSG_UPG_UPGRADE_FAIL AFMSG_UPG_UPGRADE_FINISHED AFMSG_UPG_UPGRADE_IN_PROGESS AFMSG_UPG_UPGRADE_OPEN_ERROR <> uBsp [Bsp] 00000004 <> SystemDesc I [] SystemReset <> 00 01 //System reset. I [] <> AVIPlayer [BasicPlayer,AttributeSource] 00000021 FastPlayTime I [] //unit: 0.1s; 0: fast forward/backward without playing sound SendMsgFun I [] //Readonly, Container send msg function. This is internal interface set by container and casted to type of function pointer. Player call it to send it's message SendMsgArg I [] //Readonly, Container send msg arg. //This is internal interface set by container and casted to type of "void*", BasicPlayer assign it message pointer before calling SendMsgFun. AppType S [] //The supported files's extention name, has the format like: //"mp3,mov,mp4" ThumbnailCfg <> I [] //thumbnail config, input: 1 thumbnail prefered, DisplayMode <> I [0~5] //0: DISPLAY_ADJUST_KEEP_RATIO //1: DISPLAY_ADJUST_STRETCH //2: DISPLAY_4_3_TO_16_9_SUBTITLE //3: DISPLAY_4_3_TO_16_9_NO_SUBTITLE //4: DISPLAY_16_9_TO_4_3_TV //5: DISPLAY_KEEP_ORIGINAL InterSubtitle <> H [ShowSubtitle] VidDecodeFilter <> I [] //used for configure which video format should be filtered out,if a certain media type is filtered, Unsupport message will be sent out //bit0 : FILTER_DIVX //bit1: FILTER_MPEG1 //bit2: FILTER_MPEG2 //bit3: FILTER_MPEG4 //bit4: FILTER_MJPEG //bit5: FILTER_H263 //bit6: FILTER_H264 PreviewMode <> I [] //0: full screen //1: keep ratio ntfsupportfb <> I [] GetAttribute 02 01 url S [] <> //url of item attr_name S [] <> //The name of attribute S [] //attr value Start 00 01 //Create app task I [] Quit 00 01 //Delete app task I [] Play 05 01 //Play the file (url is not NULL and state is "STOP") //Or change state from "PAUSE", "FF", "FB" to normal playing ( url is NULL) url S [] <> //if url is not NULL and player is in "STOP" state, play a new item (player must be in "STOP" state) //if url is NULL and player is in "PAUSE", "FF", "FB", change state to normal playing (player can not be in "STOP" state) window_x I [] <> // window_y I [] <> window_width I [] <> window_height I [] <> // I [:StreamType] //fail, return -1 //not support, return -2 //success: //return StreamType: //STREAMTYPE_AUDIOONLY, //STREAMTYPE_PICTURE, //STREAMTYPE_VIDEO Stop 00 01 //Stop playing I [] Pause 00 01 //Pause I [] FastForward 01 01 //Fast forward level I [] <> I [] //return -1 if not support FastBackward 01 01 //Fast backward level I [] <> I [] //return -1 if not support TimeSearch 02 01 // time I [] <> //start play time; pause_flag I [] <> //flag: 0 normal play after time search, 1 pause after time search I [] //return -1 if not support Zoom 01 01 //Zoom, input: zoom level: 0, return normal display level I [] <> I [] Pan 02 01 // direction I [] <> distance I [] <> I [] SetParam 02 01 //set parameters for below method, it will be reset after any of below method are called: //1. method of Play: //"time", the start playing time param_name S [] <> value I [] <> I [] AdjDisplayMode <> 01 01 //ajust video display mode mode I [] <> //video adjust mode. //0xff: DISPLAY_ADJUST_TOGGLE ajust from 0 to 4 in turn //0: DISPLAY_ADJUST_KEEP_RATIO //1: DISPLAY_ADJUST_STRETCH //2: DISPLAY_4_3_TO_16_9_SUBTITLE //3: DISPLAY_4_3_TO_16_9_NO_SUBTITLE //4: DISPLAY_16_9_TO_4_3_TV //5: DISPLAY_KEEP_ORIGINAL //0xfe: DISPLAY_ADJUST_DISABLE I [] AFMSG_BPLAY_SHOW_SUBTITLE <> AFMSG_BPLAY_ZOOM_LEVEL <> <> BatchPlayer [] 00000042 <> PlayList H [PlayList] //playlist control handle FastBackwardMax <> I [] //maximum fast backward playing level FastForwardMax <> I [] //maximum fast forward playing level MaxPrefetchNum <> I [] PlayWindow H [Rect] //the control define the play area PlayTime I [] //play time TotalTime I [] //the total time of current played item, it is adjusted and varies during playing if the stream is vbr DefAudioProp <> I [] //bit[0~7]: default language ID //bit[15~8]: reserved CurAudioStream I [] //Current audio stream ID TotAudioStream I [] //The total number of audio streams AudStreamTable H [StringTableWR] DefSubtitleProp <> I [] //bit[0~7] default language ID CurSubtitleID I [] TotSubtitleNum I [] SubtitleTable H [StringTableWR] Config <> I [] //bit [0~1] "play end" policy, the policy when player has played to the end of one file // 00 play next item of playlist // 01 back to first frame // 10 stop and keep last frame // 11 stop and clear screen // 01,10,11 will AFMSG_BPLAY_STATE_CHANGE message //bit [2~3] "fast backward to start" policy // 00 play the same item // 01 pause at start // 10 goto previous item //bit [4~7] start playing policy // 00 normal playing // 01 stop at begining before start playing // send AFMSG_BPLAY_ITEM_CHANGING (include new item's PlayingPos, PlayingURL), // prop of PlayingPos, PlayingURL are old's // 10 pause at begining //bit[8] play thumbnail if it has PlayWindow //bit[12~15] fail policy // 0 play next item // 1 stop after fail (or unsupport) //bit[16~17] audio stream control // 0 normal // 1 disable audio // 2, 3: reserved //bit[18] 1: use audio stream with DefAudioProp as default audio stream //bit[19] only enable external subtitle //bit[20] 1: enable subtitle auto load //bit[21] 0: use first subtitle as default subtitle; 1: use subtitle with DefSubtitleProp as default subtitle //bit[22~23] : movie icon mode //0: normal mode //1: movie I only //2: movie run State I [:BatchPlay_State] //current state of batchplayer BusyFlag I [] //1: batchplayer is busy (changing play item,etc), can not receive command. //Do not call method when BusyFlag is not 0. PlayingPos I [] //the current playing pos in PlayList, which is updated when message of AFMSG_BPLAY_ITEM_CHANGED is sent //-1 if not avaiable or player is state of STOP PlayingURL S [] //the current playing url in PlayList, which is updated when message of AFMSG_BPLAY_ITEM_CHANGED is sent //"" if not avaiable or player is state of STOP ExSubtitlFinder H [SubtitleFinderT] ExternSubtitles AH [;BasicSubtitle] players AH [1~;BasicPlayer] //players handle SetPlayList <> 01 01 //Set playlist playlist_handle H [PlayList] <> I [] ReqPlay 01 01 //Play the current item in playlist //mode: 0 normal; 1 pause at first frame, only valid when State is "STOP". //"Blocking call is supported" (when POLICY_STOP_AT_BEGIN is not set), the result is get from InOutParam.GetBlkFunRetStr("s_ret"): SUCCESS, NOT_SUPPORT,FAIL,EMPTY mode I [] //mode: 0 normal; 1 pause at first frame, only valid when State is "STOP", I [] ReqStop 01 01 //Stop playing mode I [] <> //flag: //0: clear/black screen //1: back to first frame I [] ReqPause <> 00 01 //Pause playing I [] ReqPlayNextItem <> 01 01 //Play the next item in playlist //mode: 0 normal; 1 pause at first frame mode I [] I [] ReqPlayPrevItem <> 01 01 //Play the previous item in playlist //mode: 0 normal; 1 pause at first frame mode I [] I [] ReqFastForward <> 01 01 //Fastforward or change fastforward/fastbackward level //level: 0, increase fastforward level; none 0, set fastforward level (max value is defined by prop of FastForwardMax) level I [] I [] ReqFastBackward <> 01 01 //Fastbackward or change fastforward/fastbackward level //level: 0, increase fastbackward level; none 0, set fastbackward level (max value is defined by prop of FastBackwardMax) level I [] I [] ReqTimeSearch <> 02 01 //Time search, input: time, flag (0 normal play; 1 pause ) time I [] <> pause_flag I [] <> //if pause_flag is 1, pause after time search I [] ReqSetAudStream <> 02 01 //Change audio stream //flag: //0, set audio stream by stream_id //1, switch current audio stream_id between {0,1,2,..., stream_num-1} stream_id I [] <> flag I [] I [] ReqSetVidStream <> 02 01 //Change video stream stream_id I [] <> flag I [] I [] ReqSetSubtitle <> 03 01 //Set subtitle //flag: //0, enable subtitle and set subtitle by id //1, enable subtitle and switch current subtitle id between {0, 1,2, ..., max_subtitle_num-1} //2, enable subtitle and swithc current subtitle id between {-1,0,1,2, ..., max_subtitle_num-1} //3, enable subtitle and keep old subtitle id //4, enable subtitle and set subtitle by external_url //-1, disable subtitle id I [] <> external_url S [] flag I [] I [] ReqPlayItem <> 02 01 //play one item, input: item url //mode: 0 normal; 1 pause at first frame url S [] <> mode I [] I [] Mute <> 00 01 //Mute I [] UnMute <> 00 01 //Unmute I [] SetAspectRatio <> 00 01 //Set aspect ratio I [] Zoom <> 01 01 //Zoom, input: zoom level level I [] <> I [] Pan <> 02 01 //input: direction direction I [] <> distance I [] <> I [] SetPlayWindow <> 01 01 play_window H [Rect] <> I [] IsSupport <> 01 01 //check if some file can be played by this batchplayer; return 1 if this file is supported, otherwise return 0. url S [] <> I [] AdjDisplayMode <> 01 01 //adjust video display mode mode I [] <> //video adjust mode. //0xff: DISPLAY_ADJUST_TOGGLE ajust from 0 to 4 in turn //0: DISPLAY_ADJUST_KEEP_RATIO //1: DISPLAY_ADJUST_STRETCH //2: DISPLAY_4_3_TO_16_9_SUBTITLE //3: DISPLAY_4_3_TO_16_9_NO_SUBTITLE //4: DISPLAY_16_9_TO_4_3_TV //5: DISPLAY_KEEP_ORIGINAL //0xfe: DISPLAY_ADJUST_DISABLE I [] ResetPlayingPos <> 01 01 playingpos I [] <> I [] AFMSG_FITRE_REFRESH //This message is sent by PlayList when the items in PlayList have changed. AFMSG_BPLAY_STATE_CHANGE <> AFMSG_BPLAY_PLAYLIST_EMPTY <> AFMSG_BPLAY_PLAY_TIME <> AFMSG_BPLAY_PLAY_FAIL <> AFMSG_BPLAY_ITEM_NOT_SUPPORT <> AFMSG_BPLAY_ITEM_CHANGING <> AFMSG_BPLAY_ITEM_CHANGED <> AFMSG_BPLAY_ALL_ITEM_PLAYED <> AFMSG_BPLAY_PIC_DISPLAY <> AFMSG_BPLAY_AUDIO_STREAM <> AFMSG_BPLAY_SUBTITLE_STREAM <> AFMSG_BPLAY_EVENT <> AFMSG_BPLAY_CMD_FAIL <> AFMSG_BPLAY_UNSUPPORTED_AUDIO <> <> BlockDevMonitor [] 00000022 MntPointConfig I [0~1] //0, mount points have format: /mnt/TypeStr/dev_name; 1, mount points have format: /mnt/dev_name AutoMountConfig I [] //bit[3~0] //0, auto detection of partitions and auto mount; //bit[7~4] //0, "unmount all" and send message of AFMSG_DEVST_PC_CONNECT when "pc connect" //1, only send message of AFMSG_DEVST_PC_CONNECT when "pc connect" //bit[8]: 1, do not mount resource device automatically; 0, mount resource device automatically. DeviceInfo H [StringTableWR] //if this prop is not NULL, the information of all mounted devices will be put into this table: //The name of each row is mount_point //the information put into cols are same as parameters of POST_MOUNT. //the nickname of each col is: //"dev_name": /dev/disk/nanda0, etc //"dev_type_str": UDISK, NAND, CF, SD, SD2, MMC, XD, MS, UPNP, PIC_GALLERY, etc //"mount_point" //"label" //"fs_type": FS_UNKNOWN, FAT_FS, NETFS_FS, etc //"fs_option": READ_ONLY, READ_WRITE DiskFreeSpace I [] //the return information of GetDiskInfo. DiskSectorNum I [] //the return information of GetDiskInfo. DiskSectorSize I [] //the return information of GetDiskInfo. MountRules AS [0~;] //The mount rule, format is "device_name:", sample: "/dev/disk/nanda1", do not mount '/dev/disk/nanda1' automatically Start <> 00 01 //Start "BolckDeviceMon", //To avoid missing some POST_MOUNT message, call this method only after "device select UI" has been created and can process messages. I [] Stop <> 01 01 flag I [] //reserved I [] GetMountPoint <> 01 01 //return mount point of file if this file has been mounted //otherwise return "" file_fullname S [] <> S [] //return mount point of file if this file has been mounted //otherwise return "" UnMountAll 01 01 flag I [] <> I [] UnMount 02 01 //This method can be called if user want to format some device. All partition device will be unmounted if it has partition. //How to format device: //Blocking call BlockDevMonitor->Unmount(dev_name); //BlockDevMonitor->Stop() //BlockDevFormat->Format(dev_name); //BlockDevMonitor->Start(); dev_name S [] <> flag I [] <> //reserved I [] GetDiskInfo 02 01 //only valid for FAT filesytem. //The return disk info is put into props of "DiskFreeSpace", "DiskSectorNum", "DiskSectorSize" //parameters: //disk_name: path name of some directory in disk; or disk type str , such like "NAND", etc //flag: reserved disk_name S [] <> flag I [] //reserved I [] CancelGetInfo <> 00 01 //cancel the process of GetDiskInfo I [] SetLabel <> 02 01 //only valid for FAT filesytem //disk_name: path name of some directory in disk; or disk type str , such like "NAND", etc disk_name S [] <> new_label S [] <> I [] AFMSG_DEVST_POST_MOUNT <> AFMSG_DEVST_PRE_UNMOUNT <> AFMSG_DEVST_POST_UNMOUNT <> AFMSG_DEVST_MOUNT_FAIL <> AFMSG_DEVST_PC_CONNECT <> AFMSG_DEVST_PC_DISCONNECT <> AFMSG_DEVST_DEVICE_NOT_RECONGNISED <> AFMSG_DEVST_MAX_HUB_TIERS <> <> ButtonGroup [ButtonGroup] 00000020 <> XYWH GR [] //position and size of button offset_xy GR [] RowNum I [] //row mode is supported if RowNum is not 0. option <> I [] //option[ bit 0] 0: a default focus will be set if all button's initial state are not "Focus"; 1: do not set default focus if all button's initial state are not "Focus" //option[ bit 1] 1: item state of GRAY_UNFOCUS, GRAY_FOCUS, GRAY_DISABLE are used instead of UNFOCUS, FOCUS, DISABLE when this ButtonGroup is unfocused //option[ bit 2] 1: goto first button when it has reached to the last button; goto last button when it has reached to the first button //option[ bit 3] 1: BUTTON_STATE_PRESS is used when focus item is pressed //option[ bit 4] init draw option, 0: draw all items in order; 1: draw focus item at last; // buttons_num I [] //Readonly, the number of buttons focus_slot I [] //Readonly, slot index of focus button focus_button S [] //Readonly, name of focus button FirstSlotBtnIdx I [] //Readonly, the button index in first slot FocusMoveHandle H [BtnFocusMoveT] AutoSlotsNum I [] //If AutoSlotsNum is not 0, n slots (same size of Slots[0]) will be created and put in the area defined by ButtonGroup.XYWH. In this case, Slots[1~...] will not be used. //slots number n: //AutoSlotsNum[bit0:15]*AutoSlotsNum[bit16:31] if AutoSlotsNum[bit16:31] is not 0 //AutoSlotsNum[bit0:15] if AutoSlotsNum[bit16:31] is 0 Slots AH [0~;Rect] //The total number of slot //Slot is used to define the position of button that are displayed in screen. It is possible that actual button number is larger or smaller than slots_num. //If slots_num is 0, the buttons in array of "init_button_num" are used to initialize the slot number and position. Buttons AH [0~;ButtonGroupItem] //The initial buttons Draw <> 01 01 //Draw the button //flag: 0, redraw items in order // 1, redraw unfocus items firstly, and focus item at last flag I [] I [] Hide <> 00 01 //Hide I [] AddButton <> 02 01 //Add new button into ButtonGroup, input: name, button handle button_name S [] <> button_handle H [ButtonGroupItem] <> I [] InsertButton <> 04 01 //Insert button, input: reference button name, the name of button inserted, button handle, flag (1, insert before reference; 0, insert after reference) ref_button_name S [] <> button_name S [] <> button_handle H [ButtonGroupItem] <> // before_flag I [0~1] <> //1: insert before ref_button; //0: insert after ref_button. I [] RemoveButton <> 02 01 //Remove button, input: name, flag (if flag is 0, switch focus to the first enabled button in slots if the removed button is focus ) button_name S [] <> flag I [0~1] <> //if flag is 0, switch focus to the first enabled button in slots if the removed button is focus I [] FocusButton <> 01 01 //Move focus to one button, and put this button in one slot, input: name, slot index button_name S [] <> //if the focused button pos is smaller than butons in slot, it move this button into first slot and focus it; //if the focused button pos is larger thant buttons in slot, it mvoe this button into the last slot and focus it. I [] GotoNextButton <> 01 01 //Goto next button, input: mode (if mode is 1, goto first button when it has reached to the last button) mode I [] <> //if mode is 1, goto first button when it has reached to the last button I [] GotoPreButton <> 01 01 //Goto previous button, input: mode (if mode is 1, goto last button when it has reached to the first button) mode I [] <> //if mode is 1, goto last button when it has reached to the first button I [] GotoNextPage <> 01 01 //Goto next page, input: mode (if mode is 1, goto first button when it has reached to the last button mode I [] <> //if mode is 1, goto first button when it has reached to the last button I [] GotoPrePage <> 01 01 //Goto previous page, input: mode (if mode is 1, goto last button when it has reached to the first button) mode I [] <> //if mode is 1, goto last button when it has reached to the first button I [] GotoNextRow <> 01 01 mode I [] <> I [] GotoPreRow <> 01 01 mode I [] <> I [] GetButtonName <> 01 01 button_idx I [] <> S [] GetButtonIndex <> 01 01 button_name S [] <> I [] //return -1 if there is not this button SetButtonLabel <> 02 01 button_name S [] <> new_label S [] <> I [] SetButtonState <> 02 01 button_name S [] <> new_state I [:ButtonState] <> I [] GetButtonLabel <> 01 01 button_name S [] <> S [] GetButtonState <> 01 01 button_name S [] <> I [:ButtonState] GetSlotNum <> 00 01 I [] //the number of slots SetSlotPos <> 02 01 idx I [] <> rect H [Rect] <> I [] AFMSG_INPUT_REMOTE_INPUT AFMSG_GUI_ITEM_FOCUS_CHANGE <> AFMSG_GUI_ITEM_FOCUS_SELECTED <> AFMSG_SYS_DRAW AFMSG_SYS_HIDE <> Calculator [] 00000004 RetVal <> I [] Add <> 02 01 //RetVal = a + b a I [] b I [] I [] Sub <> 02 01 //RetVal = a - b a I [] b I [] I [] GetBits <> 03 01 //RetVal = (value>>position) & ((1< 03 01 position I [] bits I [] value I [] //RetVal = value & (((1< 02 01 //RetVal = a * b a I [] b I [] I [] Div <> 02 01 //RetVal = a / b a I [] b I [] I [] Mod <> 02 01 //RetVal = a % b a I [] b I [] I [] ShiftLeft <> 02 01 //RetVal = value << bits value I [] bits I [] I [] ShiftRight <> 02 01 //RetVal = value >> bits value I [] bits I [] I [] Random <> 01 01 //rand()%range range I [] I [] <> DrawTools [] 00000019 <> drawed_area GR [] //returne the drawing area after some draw method is called DrawLine <> 06 01 //Draw a line layer I [] <> x0 I [] <> y0 I [] <> x1 I [] <> y1 I [] <> color I [] <> I [] DrawIcon <> 03 01 //af_draw_icon( x, y, icon_resource) layer I [] <> rect H [Rect] <> icon RI [] <> I [] DrawIconEx <> 08 01 //put "icon" to "rect" with "mode" and "effect" layer I [] <> //put icon to osd layer -- 0 or 1 x I [] <> //dest x y I [] <> //dest y icon RI [] <> //icon resource id mode I [] <> //0 -- not write 100% transparent pixels in icon to preserve background //1 -- write all pixels effect I [] //effct: //0 -- no effect //1 -- scale to "effect_rect" //2 -- clip to "effect_rect" //2 -- x_rotate, 0-360 degree in "effect_param" //3 -- y_rotate, 0-360 degree in "effect_param" effect_rect I [] //dest rect for "effect" effect_param I [] //param for "effect" I [] DrawString <> 05 01 layer I [] <> text S [] <> rect H [Rect] <> color I [] <> size I [] //only useful when current font is a true type font I [] DrawStringM <> 05 01 layer I [] <> text S [] <> rect H [Rect] <> color I [] <> size I [] //only useful when current font is a true type font I [] DrawStringID <> 06 01 layer I [] <> string_id RS [] <> rect H [Rect] <> color I [] <> font_group_id I [] <> size I [] //only useful when current font is a true type font I [] DrawStringIDM <> 06 01 layer I [] <> string_id RS [] <> rect H [Rect] <> color I [] <> font_group_id I [] <> size I [] //only useful when current font is a true type font I [] DrawStringR <> 06 01 layer I [] <> text S [] <> rect H [Rect] <> color I [] <> font_group_id I [] size I [] //only useful when current font is a true type font I [] DrawStringIDR <> 06 01 layer I [] <> string_id RS [] <> rect H [Rect] <> color I [] <> font_group_id I [] <> size I [] //only useful when current font is a true type font I [] DrawRect <> 04 01 layer I [] <> rect H [Rect] <> color I [] <> mode I [] <> I [] CopyVideo <> 04 01 //Copy image in window "src_wnd" on current video layer to OSD position ('dst_x", "dst_y") on osd "layer" src_wnd H [Rect] <> layer I [] <> dst_x I [] <> dst_y I [] <> I [] <> FileBrowser [] 00000041 <> // XYWH GR [] //position and size of filebrowser data_source H [FileBrowserSrc] //data source (filenav or playlist) handle previewer <> H [ThumbnailPlayer] //thumbnail player handle or Rect for preview focus_item I [] //Readonly, item index of focus focus_slot I [] //"fix focus mode" is used: slot index of focus item //"fix focus mode" is not used: the initial value of this prop is used as the initial focus slot everytime it enter into new directory; The value of this prop will be update after FileBrowser is showed focus_fullname S [] //ReadOnly, the full name (path and filename) of focus item cur_directory S [] NonEmptySlotNum I [] //The number of none empty slots. //Now only valid for none focus slot mode. error_code I [] firstslot_item I [] //the item index of first slot, it is equal to (focus_item-focus_slot). //now only valid for none fix focus mode. ItemNumPerPage I [] col_num I [] //The number of colums in each row, which is used when GotoNextRow, GotoPreRow root_directory <> S [] //If root directory is set, the browser will disable "UpDirectory" when current directory is "root directory", in this case , message of AFMSG_FIBRW_STATE_CHANGE (UpRootDirectory) is sent out. option I [] //filebrowser configuration: //bit 0: 1, do not enter into empty directory //bit 1: 1, reserved, circular browsing mode (not support for "fix focus mode" and "row mode") //bit 2: 1, go to first item when it get to last one; go to last item when it get to first one //bit 3: 1, fix focus slot ; the "focus slot" index is set in Prop of "focus_slot" //bit 4: 1, go to first item when it "up directory" //bit 5: 1, focus to first slot when page up/down (only for none fixed focus mode) //bit 6: 1, do not enter into directory for input key of "Enter" (user can call EnterDirectory to enter this dir ), message of FOCUS_SELECTED will be sent out //bit 7: 1, draw items in order (the focused item is drawed at last when this bit is 0) //bit 8: 1, auto call data_source.ReqGetItemNum to get total item number. // Result is sent out by msg of AFMSG_FIBRW_ITEM_COUNT_UPDATE. // If this bit is set, do not call data_source.ReqGetItemNum directly in rule. //bit9: 0, focus to item 0 when msg of AFMSG_FITRE_REFRESH (FILETREEREFRTYPE_CACHINGDONE) comes; // 1, keep focus for focused item when msg of AFMSG_FITRE_REFRESH (FILETREEREFRTYPE_CACHINGDONE) comes //bit10: 0, remove "xxx" in "xxx$%name" when draw filename; 1, do not change filename for displaying //bit11: 1, hide old focus slot before every drawing //bit [15~11], reserved //bit [23~16], maximum sliding page number for previewer. It is 2 defaultly, and no limit if it is 0xff. attributes <> S [] //the name of attrs used by FileBrowser or it's items (FileBrowserItem). For example "Mark.Select, CreatedTime",etc //The names are get from GeneralFileTree.attributes if this prop is not set. items AH [;FileBrowserItem] //The UI items Array Draw 02 01 //Draw items of filebrowser again, do not re-read filename and attributes flag I [] //flag[bit 0], 1: do not refresh Thumbnail //flag[bit 1~2]: // 00: redraw all items (do not read items again) // 01: it will draw only the items that are not drawed during "DrawState" of FileBrowser is 0. "DrawState" is set by global function of "SetCntDrawState()" // 10: read and redraw all items // 11: read and redraw item in slot_index slot_index I [] //only valid when flag[bit 1~2] is 11 I [] Hide <> 00 01 //Hide I [] GotoNextItem 01 01 //Goto next item mode I [] <> //if mode is 1, goto first item when it has reached to the last item I [] GotoPreItem 01 01 //Goto previous item mode I [] <> //if mode is 1, goto last item when it has reached to the first item I [] EnterDirectory 01 01 //Enter into directory path_name S [] <> I [] UpDirectory 00 01 //Go back to UP directory I [] GotoNextRow 01 01 //Goto next row mode I [0~1] <> //if mode is 1, goto first item when it has reached to the last item I [] GotoPreRow 01 01 //Goto previous row mode I [0~1] <> //if mode is 1, goto last item when it has reached to the first item I [] GotoNextPage 01 01 //Goto next page mode I [0~1] <> //if mode is 1, goto first item when it has reached to the last item I [] GotoPrePage 01 01 //Goto previous page, par: mode (if mode is 1, goto last item when it has reached to the first item) mode I [0~1] <> //if mode is 1, goto last item when it has reached to the first item I [] FocusItem 02 01 //Move focus to one item, and put this item in one slot item_pos I [] <> flag I [] <> //* "focus slot" is set if (flag&0x8000)==0x8000, flag&0x7fff is the focus slot index. //If (flag&0x10000)!=0, focus will fail if the focus item index is large than the maximum file number. Otherwise, maximum item will be focused. I [] FocusFile 02 01 filename S [] <> //if filename is full filename with format of " /fullpath/filename" or filename only (without path) //this method will EnterDirectory of "/fullpath" if there is path , and it will search file of "filename" and set focus to it. flag I [] <> //* "focus slot" is set if (flag&0x8000)==0x8000, flag&0x7fff is the focus slot index. //If (flag&0x10000)!=0, focus will fail if the focus item index is large than the maximum file number. Otherwise, maximum item will be focused. I [] SetAttr 02 01 //Set attribute for focus item, input: attr name, attr value. //The attribute should be supported by data_source's method of "ReadAttr" and "ReqSetAttr" attr_name S [] <> //Set attribute for focus item attr_value S [] <> I [] SetAttrInt 02 01 //convert decimal number to string and set this string to attribute of "attr_name" //The attribute should be supported by data_source's method of "ReadAttr" and "ReqSetAttr" attr_name S [] <> value I [] <> I [] GetAttr <> 02 01 //Get attribute of item in one slot, input: slot index , attr name, output: attr value. //The attribute should be supported by data_source's method of "ReadAttr" slot_index I [] <> attr_name S [] <> S [] GetAttrInt <> 02 01 //Get attribute of item in one slot, //convert attr string to decimal number and return //The attribute should be supported by data_source's method of "ReadAttr" slot_index I [] <> attr_name S [] <> I [] GetTypeStr <> 01 01 //Get file type string, it include below strings and the media type name which is defined in FileTreeManager: //Dir, Hide, System , Other (all files not defined in FileTreeManager) //If one item is both dir and hide item, the string returned is "Dir,Hide" slot_index I [] <> S [] //return NULL if slot_index is not valid GetFileName <> 01 01 //return full file name (include path) slot_index I [] <> S [] SetSource <> 02 01 //Set new data_source of FileBrowser. //The calling of this method will not cause the refreshing of displaying; User need call EnterDirectory,etc to refresh the displaying. data_source H [FileBrowserSrc] <> flag I [] //reserved I [] AFMSG_GUI_ITEM_FOCUS_CHANGE <> AFMSG_GUI_ITEM_FOCUS_SELECTED <> AFMSG_FIBRW_STATE_CHANGE <> //This message is sent out when state of FileBrowser has changed, AFMSG_FIBRW_ITEM_COUNT_UPDATE <> //this message is sent out to inform UI change it's scroll bar. The item count is the count of all files only when parameter of update_done is 1. AFMSG_FITRE_REQUEST_READY AFMSG_FITRE_REFRESH AFMSG_INPUT_REMOTE_INPUT AFMSG_SYS_DRAW AFMSG_SYS_HIDE <> FileTreeManager [FileTreeMgr] 00000031 //Provide management of path cache, attributes, media type //There are four types of attributes //1. predefined attributes: //ModifiedTime, ModifiedTime.Year, ModifiedTime.Month, ModifiedTime.Day, ModifiedTime.YearMonth //CreatedTime, CreatedTime.Year, CreatedTime.Month, CreatedTime.Day, CreatedTime.YearMonth //FileSize //FileName //PathName //SubItemURL.0, SubItemURL.1, etc //SubItemCount //TypeStr (file type string, it include below strings and the media type name which is defined in FileTreeManager: Dir, Hide, System , Other (all files not defined in FileTreeManager) //If one item is both dir and hide item, the string returned is "Dir,Hide") //2. Mark, Mark.xxx (xxx is defined in Prop of "MarkDefines) //3. User defined attributes: they are defined in Prop of "UserAttrNames" and "UserAttrSources", one "UserAttrSources" can support multi attr names (see detail in FileNav document) //4. ReadOnly Attributes: these attributes are returned by RdOnlyAttrSrc (see detail in FileNav document) //* attributes of "SubItemCount", "SubItemURL.xxx" can not be used in filter or Sorter Config I [] //Config[bit 7~0] pre-allocated attr cache size for each file item. If 0, the pre-allocated attr cached size is calculated base on the total size of default attr value //Config[bit 8], 0: only cache files whose media type is registered; 1: cache all files //Config[bit 9], 1: do not cache file name; filename is cached if bit 9 is 0 (default) MallocMargin <> I [] //If MallocMargin is not zero, free memory space will be monitored during caching and dir will not be cached after free memory space is below this level. The unit is Byte. MaxFileNum <> I [] //If MaxFileNum is set (not 0), the total file number will be limited to this value. CachedAttrs S [] //it has format of "ModifiedTime,Rating",etc, the catched attribute can be pre-defined attributes or attributes from RdOnlyAttrSrc, UserAttrSources. //"Mark" is always cached even it is not listed in "CachedAttrs". //Caching of some attributes will improve the performance, but more memory space is needed also. UserAttrNames AS [;] //the name of the attributes (Read/Write) that are defined by User. //Each user defined attribute have one UserAttrSource, which is defined in array of "UserAttrSources". //The format of each item in array is like: //"Favorite,Rating", "Favorite", "Favorite:0,Rating:0" etc. //"Favorite:0,Rating:0" means the default value of Favorite is "0" ; "" is used as default value if default value is not set. //The default will be used (and cached) if the corresponding UserAttrSource return "" or NULL. UserAttrSources AH [;AttributeRWSrc] //the source handle of the attributes that are defined by User. It's name is defined in array of UserAttrNames MarkDefines AS [;] //1. the format is "Favorite:5",etc //this string define Mark of "Favorite", which has the maximum state of 5 (0~4) //2. Use attribute name of "Mark.Favorite" to access it's value //3. The total bits used by all Marks must be less than or equal to 8 MediaDefines AS [0~8;] //the format is "Audio:mp3,wma,wav",etc. This string define media type of "Audio"; HeadNodDefines AS [;] //User can define some special virtual file nodes at the head of each directory, such like: "__UP__", "Play All". //User need give the ext name for each virtual file node, so that this special file node can have a media type (defined by prop of "MediaDefines") and can be filtered if user does not want to show it. //One special virtual file node is "__UP__.xxx" (xxx is ext name), FileBrowser will call method of "UpDirectory" automatically when this file node is clicked. LoadUAttr2Cache 03 01 //Load user attrs of all files in directory or sub-directories of base_dir into cache. //The attrs should be defined in prop of UserAttrNames UserAttrNames S [] <> //it has format of "attr_name1,attr_names", etc base_dir S [] <> //usually it is mount_point flag I [] <> //flag[bit 3~0]: //0,1, use default value if the attr of some item does not exist in DB file (AttrsDB) //2, get attr value from UserAttrSources again if the attr of some item does not exist in DB file (AttrsDB) //flag[bit4]: //0, attr value should be loaded immediately after the disk is mounted (has better performance) //1, attr value can be loaded any time I [] GetAttribute 02 01 //now only "Blocking call" is supported. //the return parameter name is: "s_ret" (STR, get by control InOutParam.GetBlkFunRetStr). url S [] <> attr_name S [] <> S [] SetAttribute 03 01 //now only "Blocking call" is supported. url S [] <> attr_name S [] <> attr_val S [] <> S [] ClearMark <> 01 01 //clear all files' mark (only for mark of "mark_name") //mark_name: the name of Mark that will be cleared. mark_name S [] <> I [] ClearAttrsCache <> 04 01 //Clear attrs cache of one item of url (directory_flag=0) or all items in sub-directory of url (directory_flag=1 or 2). //directory_flag: //0: clear attr cache of one item of url. //1: clear all items in directory and sub-directory of url //2: cear all items in directory of url. url S [] <> directory_flag I [] <> //directory_flag: //0: clear attr cache of one item of url. //1: clear all items in directory and sub-directory of url //2: cear all items in directory of url. attr_name S [] <> flag I [] //reserved I [] ReqFillPath <> 01 01 //Request to fill path cache, sub directories are included. pathname S [] <> I [] ClearPathCache <> 02 01 pathname S [] <> clear_subdir I [] <> I [] AFMSG_DEVST_PRE_UNMOUNT //This type of control should process the message of "PRE_UNMOUNT" , check if any directory in it's path cache has been unmounted. //If any directory in it's path cache is unmounted, it need refresh it's cache and broadcast message of "FILETREE_REFRESH", //The UI control (FileBrowser) will refresh displaying. AFMSG_DEVST_DEV_REFRESH //message of "DEV_REFRESH" should be processed , usually this message is sent out by any control that may change files in some disk (such like copy,del method in GeneralFileOp) //If any directory files in it's path cache is changed, it need refresh it's cache and broadcast message of "FILETREE_REFRESH" . The UI control (FileBrowser) will refresh displaying AFMSG_DEVST_POST_MOUNT AFMSG_FITRE_CACHING_PROGRESS <> AFMSG_FITRE_CACHING_DONE <> <> GeneralFileList [PlayList,FileBrowserSrc] 00000027 <> FileTreeSrc H [FileTreeEx] //The control that read entry from filesystem Config I [] //config[bit 0], 1: directories are included //config[bit 1], 1: files are excluded //config[bit 2], 1: filter is valid for directory, only include the files in directories that are not filtered. //config[bit 3], reserved //config[bit 4], 1: item can still be get before sorting is finished. After sorting is finished, msg of FITRE_REFRESH (FILETREEREFRTYPE_CACHINGDONE) will be sent out in order to refresh displaying of FileBrowser,etc. //name sort config: //config[bit 16], 0: ignore case 1: do not ignore case //config[bit 17], 0: filename sort, 1: fullname sort SortType <> I [:SortType] PlayMode <> I [:PlayList_Mode] EntryTable H [StringTableWR] //The entry url will be stored in this table if it is not NULL, //the row name is entry url, StartPlayURL <> S [] //If this prop is a valid full filename, the playlist will set it as current item. //This prop will be clear automatically after playlist set it as current item. CachedItemCount <> I [] PlayingPos <> I [] PlaylistConfig I [] //bit 0: 0, disable "PlayMode" if playlist has this option; 1, enable "play mode" Sorter <> H [SorterT] CurPathName S [] AddEntry 02 01 //Add playlist entry, input: the entry url, the entry max reading deep level //entry url can include multi entries, which has format of "entry1_url,entry2_url,entry3_url",etc. //This method can be "Blocking" called, the return parameters are: "s_result" (String, "SUCCESS" or "FAIL"). url S [] <> // the url of entry. max_deep I [] <> I [] RemoveEntry 01 01 url S [] <> I [] RemoveAllEntry 00 01 //Remove all entries I [] ReqRefresh <> 02 01 //Refresh filelist, usually called while DEVICE_REFRESH message come, input: dir; flag (bit 0,include subdir; bit 1, fill cache now ) url S [] <> flag I [] <> I [] GetCurItem 00 01 //return the url of current pos S [] GetNextItem 00 01 //returen the url of next item S [] GetPrevItem 00 01 //return the url of previous item S [] GetCurItemType 00 01 //Get type value of current playing pos, output: type I [] GetCurItemAttr 01 01 //Get attribute value of current playing pos, input: attribute name (in array of attribute_num),output: attribute value attr_name S [] <> S [] //attr value SetSorter <> 01 01 Sorter H [SorterT] <> I [] ReqGetItemNum 00 01 //This method can be "Blocking" called, the return parameter name is: "i_ret" (INT, get by control InOutParam.GetBlkFunRetVal). //If this method is not "Blocking" called, the result is get by msg of AFMSG_FITRE_REQ_GET_ITEM_NUM_READY. I [] BldShuffleTable <> 01 01 //build shuffle table, current PlayingPos or StartPlayURL will be the first item in shuffle table. //flag[bit 0]: //0, does not rebuild the shuffle table after the whole playlist is repeated //1, rebuild the shuffle table after the whole playlist is repeated. //[bit 4]: //1: random the first PlayingPos when build shuffle table flag I [] <> I [] ReqGetItems 02 01 //Request to read count of items from start_pos (include start_pos). //The result is read from method ReadResult after message of FILETREE_REQUEST_READY; //ReadResult read out one item url and increase readout index. //ReadType, ReadAttr are used to read type/attr of this item after ReadResult is called. And they do not increase readout index. //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). start_pos I [] <> count I [1~128] <> I [] ReqSetAttr 03 01 //Request to set attribute of item_pos, the operation is done after message of FILETREE_REQUEST_READY; //The new item result is read from method ReadResult. //ReadType, ReadAttr are used to read new type/attr of this item after ReadResult is called. //Attribute "Mark" of all items can be set by config input parameter "item_pos". //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). // item_pos I [] <> //1. pos[23~0] position of item ; //2. pos[31~24] mode: //set all items in subdir of item if mode is 1 ( * only valid for Mark or Mark.xxx , only valid when the item is directory) //3. pos[23~0]==0x3fffff: set all items in cur dir; pos[23~0]==0x3ffffe: set all items in cur dir/subdirs //(* only valid for Mark or Mark.xxx) attr_name S [] <> attr_value S [] <> I [] ReqChangDir 03 01 //Request to change directory and read count of items from start_pos (include start_pos). //The result is read from method ReadResult after message of FILETREE_REQUEST_READY; //ReadResult read out one item url and increase readout index. //ReadType, ReadAttr are used to read type/attr of this item after ReadResult is called. And they do not increase readout index. //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). path S [] <> start_pos I [] <> count I [0~128] <> I [] ReqSearch 01 01 //Request to read item with name of filename, the operation is done after message of FILETREE_REQUEST_READY; //The item result is read from method ReadResult. //ReadType, ReadAttr are used to read new type/attr of this item after ReadResult is called. //If filename is the full pathname, the current directory will be changed as the path of this file. //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). filename S [] <> I [] ReqGetAttr 02 01 //Request to get value of one attribute which is not listed in attribute_num. This method is usually used for attribute that takes long time to get . //the operation is done after message of FILETREE_REQUEST_READY; //The item result is read from method ReadResult; //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). item_pos I [] <> attr_name S [] <> //attr_name can be the name of single attribute or multi attributes with format of "name1,name2,name3",etc I [] ReadResult <> 00 01 //Readout the url of result item after message of FILETREE_REQUEST_READY is received. //The count time of "ReadResult" should be called if the result item include count items. S [] //The file url ReadType <> 00 01 //Read the type of item. It canbe called only after "ReadResult" is called and it does not increase readout index I [] //The file type. ReadAttr <> 01 01 //Read the attr of item. It can be called only after "ReadResult" has been called and it does not increase readout index. attr_name S [] <> S [] //The attr value GetAttrsName 00 01 //Returen the attributes name that supported by method of "ReadAttr", //The format is like "Size,Mark.Select,ModifiedTime", etc S [] //Returen the attributes name that supported by method of "ReadAttr" GetCachItemNum <> 01 01 flag I [] <> //0: get items count in cache //1: get items count in cache only when all items are in cache; otherwise return -1 I [] CancelRequest <> 01 01 flag I [] <> I [] SetAttrsName 01 01 //Set the attributes name that supported by method of "ReadAttr", //The format is like "Size,Mark.Select,ModifiedTime", etc. //This method will re-assign the value of the attributes (array) names_str S [] <> I [] AFMSG_FITRE_ADD_ENTRY_RESULT <> //this message is sent out after method AddEntry is called, with this message , user can learn if new entry has been added successfully . If there is not valid item in this entry, it will fail to add entry. AFMSG_FITRE_REQ_GET_ITEM_NUM_READY <> AFMSG_DEVST_PRE_UNMOUNT //This type of control should process the message of "PRE_UNMOUNT" , check if any directory in it's path cache has been unmounted. //If any directory in it's path cache is unmounted, it need refresh it's cache and broadcast message of "FILETREE_REFRESH", //The UI control (FileBrowser) will refresh displaying. AFMSG_DEVST_DEV_REFRESH //message of "DEV_REFRESH" should be processed , usually this message is sent out by any control that may change files in some disk (such like copy,del method in GeneralFileOp) //If any directory files in it's path cache is changed, it need refresh it's cache and broadcast message of "FILETREE_REFRESH" . The UI control (FileBrowser) will refresh displaying AFMSG_FITRE_REFRESH <> //This message is sent out to inform UI control (such like FileBrowser) to refresh displaying when this control has refreshed it's cache. Usually it happens when receiving message of PRE_UNMOUNT or DEV_REFRESH AFMSG_FITRE_REQUEST_READY <> //This message is sent to MsgProcHandle when data requested by methods of ReqGetItems, ReqChangDir, ReqSetAttr, ReqGetAttr, ReqSearch is ready. <> GeneralFileTree [FileTreeEx,PlayList,FileBrowserSrc] 00000048 <> FileTreeManager H [FileTreeMgr] PlayMode <> I [:PlayList_Mode] ExcludeDir I [0~1] IncludeHideFile I [0~1] IncludeSysFile I [0~1] Config I [] //config[bit 0~3]: reserved //config[bit 4], 1: item can still be get before sorting is finished. After sorting is finished, msg of FITRE_REFRESH (FILETREEREFRTYPE_CACHINGDONE) will be sent out in order to refresh displaying of FileBrowser,etc. PlayingPos <> I [] PlaylistConfig I [] //bit 0: 0, disable "PlayMode" if playlist has this option; 1, enable "play mode" Sorter <> H [SorterT] CurPathName S [] SortType <> I [:SortType] MediaTypeMask I [] //Set bit n if files with type 'n' are included; MSB (bit 15) is used for directory; bit 14 is used as hiden files; bit 13 is used as system files; bit 12 is used for file types unregistered InitMediaType I [] MsgProcHandle H [] //The control that receive and process the message sent by this control. //If MsgProcHandle is not assigned, there are no messages to be sent by this control. CancelReqFlag I [] ApplyFilter4Dir <> I [] IncludMediTypes AS [;] //The name of "MediaTypes" is defined in "FileTreeManager". //Only files with these types are listed. //If "Other" is used , it will also list all files that are not defined in "FileTreeManager" //If this array is not set, all files are included. attributes AS [;] //Obsolete (Now user can set "FileBrowser.attributes" for attrs that will be used by FileBrowser) ReqRefresh <> 02 01 //Refresh filelist, usually called while DEVICE_REFRESH message come, input: dir; flag (bit 0,include subdir; bit 1, fill cache now ) refresh_path S [] <> flag I [] <> //bit 0,include subdir; bit 1, fill cache now I [] DuplicateProps <> 01 01 source_handle H [FileTreeEx] <> I [] GetCurItem 00 01 //return the url of current pos S [] GetNextItem 00 01 //returen the url of next item S [] GetPrevItem 00 01 //return the url of previous item S [] GetCurItemType 00 01 //Get type value of current playing pos, output: type I [] GetCurItemAttr 01 01 //Get attribute value of current playing pos, input: attribute name (in array of attribute_num),output: attribute value attr_name S [] <> S [] //attr value SetSorter <> 01 01 Sorter H [SorterT] <> I [] ReqGetItemNum 00 01 //This method can be "Blocking" called, the return parameter name is: "i_ret" (INT, get by control InOutParam.GetBlkFunRetVal). //If this method is not "Blocking" called, the result is get by msg of AFMSG_FITRE_REQ_GET_ITEM_NUM_READY. I [] BldShuffleTable <> 01 01 //build shuffle table, current PlayingPos or StartPlayURL will be the first item in shuffle table. //flag[bit 0]: //0, does not rebuild the shuffle table after the whole playlist is repeated //1, rebuild the shuffle table after the whole playlist is repeated. //[bit 4]: //1: random the first PlayingPos when build shuffle table flag I [] <> I [] SetMediaType <> 05 01 //Parameters: //(1) IncluMediTypes: Media type string is defined in "FileTreeManager.MediaDefines". //Multi-media type strings can be set, each media type string is separated with ',' //example: "photo,music,video" //(2) IncludMntpoints: Valid only when BlockDevMonitor.MntPointConfig is 1 //mount_points that are included. //All mount_points are inclued if it is set as "" or not set. //example: "/mnt/nanda1,/mnt/usba01",etc IncludMediTypes S [] <> //Media type string is defined in "FileTreeManager.MediaDefines". //Multi-media type strings can be set, each media type string is separated with ',' //example: "photo,music,video" ExcludeDir I [] <> IncludeHideFile I [] <> IncludeSysFile I [] <> IncludMntpoints S [] //Valid only when BlockDevMonitor.MntPointConfig is 1 //mount_points that are included. //All mount_points are inclued if it is set as "" or not set. //example: "/mnt/nanda1,/mnt/usba01",etc I [] SetMntPoints <> 01 01 //Parameters: //(1) Mntpoints: Valid only when BlockDevMonitor.MntPointConfig is 1 //mount_points that are included. //All mount_points are inclued if it is set as "" or not set. //example: "/mnt/nanda1,/mnt/usba01",etc Mntpoints S [] <> //Valid only when BlockDevMonitor.MntPointConfig is 1 //mount_points that are included. //All mount_points are inclued if it is set as "" or not set. //example: "/mnt/nanda1,/mnt/usba01",etc I [] ReqGetItems 02 01 //Request to read count of items from start_pos (include start_pos). //The result is read from method ReadResult after message of FILETREE_REQUEST_READY; //ReadResult read out one item url and increase readout index. //ReadType, ReadAttr are used to read type/attr of this item after ReadResult is called. And they do not increase readout index. //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). start_pos I [] <> count I [1~128] <> I [] ReqSetAttr 03 01 //Request to set attribute of item_pos, the operation is done after message of FILETREE_REQUEST_READY; //The new item result is read from method ReadResult. //ReadType, ReadAttr are used to read new type/attr of this item after ReadResult is called. //Attribute "Mark" of all items can be set by config input parameter "item_pos". //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). // item_pos I [] <> //1. pos[23~0] position of item ; //2. pos[31~24] mode: //set all items in subdir of item if mode is 1 ( * only valid for Mark or Mark.xxx , only valid when the item is directory) //3. pos[23~0]==0x3fffff: set all items in cur dir; pos[23~0]==0x3ffffe: set all items in cur dir/subdirs //(* only valid for Mark or Mark.xxx) attr_name S [] <> attr_value S [] <> I [] ReqChangDir 03 01 //Request to change directory and read count of items from start_pos (include start_pos). //The result is read from method ReadResult after message of FILETREE_REQUEST_READY; //ReadResult read out one item url and increase readout index. //ReadType, ReadAttr are used to read type/attr of this item after ReadResult is called. And they do not increase readout index. //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). path S [] <> start_pos I [] <> count I [0~128] <> I [] ReqSearch 01 01 //Request to read item with name of filename, the operation is done after message of FILETREE_REQUEST_READY; //The item result is read from method ReadResult. //ReadType, ReadAttr are used to read new type/attr of this item after ReadResult is called. //If filename is the full pathname, the current directory will be changed as the path of this file. //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). filename S [] <> I [] ReqGetAttr 02 01 //Request to get value of one attribute which is not listed in attribute_num. This method is usually used for attribute that takes long time to get . //the operation is done after message of FILETREE_REQUEST_READY; //The item result is read from method ReadResult; //This method can be "Blocking" called (ReadResult can be called after it is "Blocking" called), the return parameters are: "i_start_pos" (INT), "i_result_count" (INT). item_pos I [] <> attr_name S [] <> //attr_name can be the name of single attribute or multi attributes with format of "name1,name2,name3",etc I [] ReadResult <> 00 01 //Readout the url of result item after message of FILETREE_REQUEST_READY is received. //The count time of "ReadResult" should be called if the result item include count items. S [] //The file url ReadType <> 00 01 //Read the type of item. It canbe called only after "ReadResult" is called and it does not increase readout index I [] //The file type. ReadAttr <> 01 01 //Read the attr of item. It can be called only after "ReadResult" has been called and it does not increase readout index. attr_name S [] <> S [] //The attr value GetAttrsName 00 01 //Returen the attributes name that supported by method of "ReadAttr", //The format is like "Size,Mark.Select,ModifiedTime", etc S [] //Returen the attributes name that supported by method of "ReadAttr" GetCachItemNum <> 01 01 flag I [] <> //0: get items count in cache //1: get items count in cache only when all items are in cache; otherwise return -1 I [] CancelRequest <> 01 01 flag I [] <> I [] SetAttrsName 01 01 //Set the attributes name that supported by method of "ReadAttr", //The format is like "Size,Mark.Select,ModifiedTime", etc. //This method will re-assign the value of the attributes (array) names_str S [] <> I [] SetFilterRules <> 01 01 //Set Filter Rule string, each rule has format such like: "FileSize<=5000","Mark.Favorite==1",etc ; //There is logic relation character ( '&' or '|' ) between rules. //The first char ( '&' or '|' ) is logic relation to previous rule; //Any attribute used by Rule should appear in array of "attributes" also. rules S [] <> I [] GetFilterRules 00 01 S [] SetMultiAttrs 06 01 attr_name S [] <> attr_value S [] <> dir_name S [] <> include_subdir I [] <> media_type I [] <> filter S [] <> I [] FileTreeCntl 02 01 cmd I [] <> param I [] <> I [] AFMSG_FITRE_REQ_GET_ITEM_NUM_READY <> AFMSG_DEVST_PRE_UNMOUNT //This type of control should process the message of "PRE_UNMOUNT" , check if any directory in it's path cache has been unmounted. //If any directory in it's path cache is unmounted, it need refresh it's cache and broadcast message of "FILETREE_REFRESH", //The UI control (FileBrowser) will refresh displaying. AFMSG_DEVST_DEV_REFRESH //message of "DEV_REFRESH" should be processed , usually this message is sent out by any control that may change files in some disk (such like copy,del method in GeneralFileOp) //If any directory files in it's path cache is changed, it need refresh it's cache and broadcast message of "FILETREE_REFRESH" . The UI control (FileBrowser) will refresh displaying AFMSG_FITRE_REFRESH <> //This message is sent out to inform UI control (such like FileBrowser) to refresh displaying when this control has refreshed it's cache. Usually it happens when receiving message of PRE_UNMOUNT or DEV_REFRESH AFMSG_FITRE_REQUEST_READY <> //This message is sent to MsgProcHandle when data requested by methods of ReqGetItems, ReqChangDir, ReqSetAttr, ReqGetAttr, ReqSearch is ready. <> GPlayer [BasicPlayer,AttributeSource] 00000016 <> // FastPlayTime I [] //unit: 0.1s; 0: fast forward/backward without playing sound SendMsgFun I [] //Readonly, Container send msg function. This is internal interface set by container and casted to type of function pointer. Player call it to send it's message SendMsgArg I [] //Readonly, Container send msg arg. //This is internal interface set by container and casted to type of "void*", BasicPlayer assign it message pointer before calling SendMsgFun. AppType S [] //The supported files's extention name, has the format like: //"mp3,mov,mp4" ThumbnailCfg <> I [] //thumbnail config, input: 1 thumbnail prefered, DisplayMode <> I [0~5] //0: DISPLAY_ADJUST_KEEP_RATIO //1: DISPLAY_ADJUST_STRETCH //2: DISPLAY_4_3_TO_16_9_SUBTITLE //3: DISPLAY_4_3_TO_16_9_NO_SUBTITLE //4: DISPLAY_16_9_TO_4_3_TV //5: DISPLAY_KEEP_ORIGINAL VidDecodeFilter <> I [] //used for configure which video format should be filtered out,if a certain media type is filtered, Unsupport message will be sent out //bit0 : FILTER_DIVX //bit1: FILTER_MPEG1 //bit2: FILTER_MPEG2 //bit3: FILTER_MPEG4 //bit4: FILTER_MJPEG //bit5: FILTER_H263 //bit6: FILTER_H264 PreviewMode <> I [] //0: full screen //1: keep ratio Config <> I [] //bit0: preview mode policy // 0: full screen // 1: keep ratio //bit4: spectrum policy // 0:disable spectrum // 1:enable spectrum // notice: It's best to set this config in rules(set before play music&clear after stop music), as gplayer will play video //bit5: lyric policy // 0:disable lyric // 1:enable lyric //bit6: get time use memory policy // 0: use default memory // 1: malloc memory //..... ShowLyric <> H [ShowSubtitle] Start 00 01 //Create app task I [] Quit 00 01 //Delete app task I [] Play 05 01 //Play the file (url is not NULL and state is "STOP") //Or change state from "PAUSE", "FF", "FB" to normal playing ( url is NULL) url S [] <> //if url is not NULL and player is in "STOP" state, play a new item (player must be in "STOP" state) //if url is NULL and player is in "PAUSE", "FF", "FB", change state to normal playing (player can not be in "STOP" state) window_x I [] <> // window_y I [] <> window_width I [] <> window_height I [] <> // I [:StreamType] //fail, return -1 //not support, return -2 //success: //return StreamType: //STREAMTYPE_AUDIOONLY, //STREAMTYPE_PICTURE, //STREAMTYPE_VIDEO Stop 00 01 //Stop playing I [] Pause 00 01 //Pause I [] FastForward 01 01 //Fast forward level I [] <> I [] //return -1 if not support FastBackward 01 01 //Fast backward level I [] <> I [] //return -1 if not support TimeSearch 02 01 // time I [] <> //start play time; pause_flag I [] <> //flag: 0 normal play after time search, 1 pause after time search I [] //return -1 if not support Zoom 01 01 //Zoom, input: zoom level: 0, return normal display level I [] <> I [] Pan 02 01 // direction I [] <> distance I [] <> I [] SetParam 02 01 //set parameters for below method, it will be reset after any of below method are called: //1. method of Play: //"time", the start playing time param_name S [] <> value I [] <> I [] GetAttribute 02 01 url S [] <> //url of item attr_name S [] <> //The name of attribute S [] //attr value AdjDisplayMode <> 01 01 //adjust video display mode mode I [] <> //video adjust mode. //0xff: DISPLAY_ADJUST_TOGGLE ajust from 0 to 4 in turn //0: DISPLAY_ADJUST_KEEP_RATIO //1: DISPLAY_ADJUST_STRETCH //2: DISPLAY_4_3_TO_16_9_SUBTITLE //3: DISPLAY_4_3_TO_16_9_NO_SUBTITLE //4: DISPLAY_16_9_TO_4_3_TV //5: DISPLAY_KEEP_ORIGINAL //0xfe: DISPLAY_ADJUST_DISABLE I [] AFMSG_GPLAY_UPDATE_SPECTRUM <> AFMSG_GPLAY_UPDATE_LYRIC <> AFMSG_BPLAY_ZOOM_LEVEL <> <> InOutParam [] 00000009 RetVal <> I [] RetStr <> S [] SetPageInputVal <> 04 01 param_name S [] <> param_val I [] <> page_handle H [] <> flag I [] //bit[0]: 0, set this parameter as n/a after page is destroyed; 1, keep the value of this parameter after page is destroyed. I [] SetPageInputStr <> 04 01 param_name S [] <> param_str S [] <> page_handle H [] <> flag I [] //bit[0]: 0, set this parameter as n/a after page is destroyed; 1, keep the value of this parameter after page is destroyed. I [] GetPageInputVal <> 01 01 param_name S [] <> I [] GetPageInputStr <> 01 01 param_name S [] <> S [] SetPageRetVal <> 02 01 param_name S [] <> param_val I [] <> I [] SetPageRetStr <> 02 01 param_name S [] <> param_str S [] <> I [] GetBlkFunRetVal <> 01 01 param_name S [] <> I [] GetBlkFunRetStr <> 01 01 param_name S [] <> // S [] <> NameTimeSorter [SorterT] 00000001 <> SorType <> I [] ItemCount I [] //The total count of items need to be sorted. //This prop is set by caller controls (StringTable, FileTree) that use this Sorter ResultIndexPtr I [] //This prop value is casted to the address pointer of the index buffer, which is allocated and provided by caller controls (StringTable, FileTree). And the control of "Sorter" should make sorting and put the sorted index into this buffer. For example, if origin SortAttrValPtr={"bbb","aaa","dddd", "ccc"}, and the dictionary-order sorting will give the index as {1, 0, 3, 2} SortAttrName AS [;] //this Array give the name of each attribute, the value of it is used for sorting SortAttrType AI [;] //this Array give the value type of each attribute //0: the value of the attribute is "String" //1: the value of the attribute is "Int" SortAttrValPtr AI [;] //each item of this array is casted to the address pointer of attribute value buffer, this buffer is allocated and provided by caller controls( StringTable, FileTree) , in which the same attribute's value of all sortting items are listed. Sorting 00 01 //Sorter do the sorting when this method is called I [] GetSortAttrName 00 01 //return the name of attrs that will be used by Sorter, it has the format like: //"FileName, Mark.Tag0", etc S [] SetGetParam 02 01 //Reserved type I [] <> value I [] <> I [] <> NecRemoteInput [] 00000011 <> customer_code I [] leader_act_time <> I [] //leader active time (¦Ěs) , format as : 0xaaaabbbb, aaaa---max time, bbbb---min time leader_idl_time <> I [] //leader idle time (¦Ěs) , format as : 0xaaaabbbb, aaaa---max time, bbbb---min time rep_idl_time <> I [] //repeat leader active time (¦Ěs) , format as : 0xaaaabbbb, aaaa---max time, bbbb---min time bit0_ident_time <> I [] //bit 0 identification time (¦Ěs) , format as : 0xaaaabbbb, aaaa---max time, bbbb---min time ir_polarity <> I [0~1] //Polarity of the input signal, defaut is 0, you can set as 1 to change the polarity IRQ_selection <> I [0~3] //IRQ Selection and width measurement reset: //00: IR Decoder done [default] //01: IR input rising or falling edge detected //10: IR input falling edge detected //11: IR rising edge detected frame_mask <> I [0~3] //Frame mask. These bits are used to qualify frames for capture. //11: Capture all frames good or bad //01: Capture only frames where data=~data. Ignore custom codes //10: Capture only frames where custom_code = ~custom_code. Ignore data codes //00: Capture only frames where (data=~data) and (custom_code = ~custom_code) (default) hold_first_key <> I [0~1] //Hold Last Key. If this parameter is set as 0, then the frame data register will only be updated if hasn't already been updated. Once updated, the frame data register will not be updated again until it has been read. This bit can be used to guarantee the first TV remote code captured will not be overwritten by subsequent transmissions from a TV remote. //NOTE: You must read the frame data register to clear an internal hold last flag if this parameter set as 0. //default: 0 decode_mode <> I [0~3] //Decoder mode //00: NEC Frames: Decode Leader and 32 bits [default] //01: Only accumulate bits (skip the leader) //10: Measure Mode. //11: NEC Frames: Decode Leader and 32 bits bit_number <> I [0~31] //Number of bits in the IR frame (N-1), default [0x1f] rawcodesavemode <> I [0~1] //0 --- save row code[0~0xff] with ordinal in a map [default] //1 --- save row code in a map without ordinal, slowly in read process //You must set it if the remote row data code has more than 8 bits raw_code AI [;] afkey_val AI [;:AfKey] afkey_flag <> AI [;] afkey_str AS [;] Enable <> 01 01 bEnable I [0~1] <> I [] //0,disable,other,enable(default) AFMSG_INPUT_REMOTE_INPUT <> AFMSG_SYS_REGISTER <> PicPlayer [BasicPlayer,AttributeSource] 00000048 <> SlideDuration <> I [] //Slide duration, index mode or user define time mode. //data format [31][30...........0] //index mode 0 index. //user mode 1 time(in ms) (for example. define a 15ms slideshow duration as 0x8000000e) //index mode define // {1s, 3s, 5s, 10s,INFINITY,15s,30s,1m,5m,10m,15m,30m,1h,24h,0,4h ,12h} ; //if you can't fine the slideshow duration time you need. please use user define mode. DisplayOption <> I [] //Picture display option:PIC_SHOW_SMART_CROP (1),PIC_SHOW_FULL_IMAGE (0),PIC_SHOW_CINEMA_MODE (5),PIC_SHOW_FULL_SCREEN_KEEP_RATIO (3); BGroundColor <> I [] ErrProcessCfg <> I [] //Error Process Config, bit[0]: use default jpeg instead of error picture when error happen Config <> I [] //Config, bit[0~3] zoom mode, 0 normal zoom . config[4] is for photo style mode. 0 means no photo style. bit[5] is for gif animation, if 1, gif animation will be opened. SlideTransLeft <> I [] SlideTransRight <> I [] TranMode <> I [] //Slide show transition mode TranCfg0 <> I [] //Slide show random transition config TranCfg1 <> I [] //Slide show random transition config TranCfg2 <> I [] //Slide show random transition config TranCfg3 <> I [] //Slide show random transition config FrameDirection <> I [] RotateInput <> I [] BkEnable <> I [] BkClear <> I [] MovieIconEnable <> I [] RotateLevel <> I [] ExtraInfo <> H [PicUtil] FastPlayTime I [] //unit: 0.1s; 0: fast forward/backward without playing sound SendMsgFun I [] //Readonly, Container send msg function. This is internal interface set by container and casted to type of function pointer. Player call it to send it's message SendMsgArg I [] //Readonly, Container send msg arg. //This is internal interface set by container and casted to type of "void*", BasicPlayer assign it message pointer before calling SendMsgFun. AppType S [] //The supported files's extention name, has the format like: //"mp3,mov,mp4" ThumbnailCfg <> I [] //thumbnail config, input: 1 thumbnail prefered, MagicWinMode <> I [] MagicWinEnable <> I [] InputMagicIndex <> I [] DefaulPic <> RT [] //play default picture when unsupport picture. InputMagicWin ART [;] MagicWinAngle ART [;] GetAttribute 02 01 url S [] <> //url of item attr_name S [] <> //The name of attribute S [] //attr value Rotate <> 01 01 direction I [] <> I [] //0: clockwise ,90 degree //1: antilclockwise ,90 degree. //2: 180 degree. SetInterval <> 01 01 //Set slide show interval interval I [] <> //0:1s 1:3s 2:5s 3:10s 4:forever 5:15s 6:30s 7:1m 8:5m 9:10m 10:15m 11:1h 12:1day 13:0s I [] SetPicEnhance <> 01 01 flag I [:PicEnhance] <> I [] SetPicPolicy <> 02 01 type I [:PIC_EFFECT] <> flag I [] <> I [] SetTransMode <> 00 01 I [] StartMagicWin <> 01 01 //enable sub window slideshow with transition effect para I [] <> I [] StopMagicWin <> 01 01 para I [] <> I [] StopTransition 01 01 //stop current transition immediately flag I [] <> I [] SetFrameDir <> 01 01 frame_direction I [] <> //Set Frame Direction I [] SetDispOption <> 01 01 dispoption I [] <> I [] Start 00 01 //Create app task I [] Quit 00 01 //Delete app task I [] Play 05 01 //Play the file (url is not NULL and state is "STOP") //Or change state from "PAUSE", "FF", "FB" to normal playing ( url is NULL) url S [] <> //if url is not NULL and player is in "STOP" state, play a new item (player must be in "STOP" state) //if url is NULL and player is in "PAUSE", "FF", "FB", change state to normal playing (player can not be in "STOP" state) window_x I [] <> // window_y I [] <> window_width I [] <> window_height I [] <> // I [:StreamType] //fail, return -1 //not support, return -2 //success: //return StreamType: //STREAMTYPE_AUDIOONLY, //STREAMTYPE_PICTURE, //STREAMTYPE_VIDEO Stop 00 01 //Stop playing I [] Pause 00 01 //Pause I [] FastForward 01 01 //Fast forward level I [] <> I [] //return -1 if not support FastBackward 01 01 //Fast backward level I [] <> I [] //return -1 if not support ReqPageUP <> 00 01 //use special page up transition effect I [] ReqPageDOWN <> 00 01 //use special page down transition effect I [] TimeSearch 02 01 // time I [] <> //start play time; pause_flag I [] <> //flag: 0 normal play after time search, 1 pause after time search I [] //return -1 if not support Zoom 01 01 //Zoom, input: zoom level: 0, return normal display level I [] <> I [] Pan 02 01 // direction I [] <> distance I [] <> I [] SetParam 02 01 //set parameters for below method, it will be reset after any of below method are called: //1. method of Play: //"time", the start playing time param_name S [] <> value I [] <> I [] ReloadCurPic <> 00 01 I [] ChkProgressive <> 01 01 //check if the jpeg file is progressive or not name S [] <> //jpeg file name I [] AFMSG_PIC_PROCESS_FINISH <> <> Rect [Rect] 00000001 <> XYWH GR [] //The position and size of control <> ResPlayList [PlayList] 00000005 <> play_mode <> I [:PlayList_Mode] PlayingPos <> I [] PlaylistConfig I [] //bit 0: 0, disable "PlayMode" if playlist has this option; 1, enable "play mode" ResourceFiles ART [1~;] GetCurItem 00 01 //return the url of current pos S [] GetNextItem 00 01 //returen the url of next item S [] GetPrevItem 00 01 //return the url of previous item S [] GetCurItemType 00 01 //Get type value of current playing pos, output: type I [] GetCurItemAttr 01 01 //Get attribute value of current playing pos, input: attribute name (in array of attribute_num),output: attribute value attr_name S [] <> S [] //attr value <> StringTable [StringTableWR,StringTableRD,StringTable,StringTableEx] 00000026 <> Sorter H [SorterT] InitRow <> AS [;] //the initial row in this table, it has format like: "row_name,col0_string,col1_string", etc RowProfContent <> AS [;] //The Configuration for the row that is needed to be saved or loaded with "profile" //Each configuration item has format of: "row_name:ALL", "row_name:STR", or "row_name:SELCOL". //"row_name:STR" will save the string of each col , "row_name:SELCOL" will save the selected col index of this row. "row_name:ALL" will save both of these two information. //If this prop is not set, all rows will be loaded or saved when calling LoadProfile and SaveProfile. ColNickNameList AS [;] //Nickname of "__ROWNAME__", "__INFO__" are reserved for row_name and info_data of each row. //"0","1","15",etc are used if Nickname of some col is not set. Query <> 03 01 //return the string in colmun "return_col", if the string in same row and in column "col" has "match_string" col I [] <> result_col I [] <> match_string S [] <> S [] QueryEx <> 03 01 col_name S [] <> result_col_name S [] <> match_string S [] <> S [] QueryN <> 04 01 col I [] <> result_col I [] <> match_string S [] <> cmp_num I [] <> S [] QueryExN <> 04 01 col_name S [] <> result_col_name S [] <> match_string S [] <> cmp_num I [] <> S [] SetValue <> 03 01 row_name S [] <> col_index I [] <> value I [] <> I [] GetValue <> 02 01 row_name S [] <> col_index I [] <> I [] GetValueEx <> 02 01 row_name S [] <> col_name S [] <> I [] GetStringEx <> 02 01 row_name S [] <> col_name S [] <> S [] Query2StrTable <> 02 01 //Query the rows that meet the condition in "cond_string" //The result is put into prop of "QueryResultTab" (another StringTable) cond_string S [] <> // it has format of: //"col_nickname1==ABC", //"col_nickname1==ABC&colnickname2!=DEF", //"col_nickname1==ABC|colnickname2==DEF", //"col_nickname1==ABC|colnickname2==DEF&colnickname3!=GHI" //etc //* col_nickname is defined by user (prop of "ColNickNameList") or have the default name (set by owner control) //* Order of Precedence: & (AND) is higher than | (OR) result_str_tab H [StringTableWR] <> S [] GetColIndex <> 01 01 //The the col index by it's nickname {0~ColCount-1} //Return -1 if ColNickName does not exist. ColNickName S [] <> I [] GetRowCount <> 00 01 I [] GetColCount <> 01 01 row_name S [] <> I [] GetString <> 02 01 row_name S [] <> col_index I [] <> S [] GetRowName <> 01 01 row_index I [] <> S [] GetRowIndex <> 01 01 row_name S [] <> I [] LoadProfile <> 01 01 profile_src H [Profile] <> I [] SaveProfile <> 02 01 //save profile of all rows that are set in "RowProfContent" if row_name is zero length string. profile_src H [Profile] <> //save profile of all rows that are set in "RowProfContent" if row_name is zero length string. row_name S [] <> //save profile of all rows that are set in "RowProfContent" if row_name is zero length string. I [] SetSorter <> 01 01 Sorter H [SorterT] I [] AddRow <> 01 01 row_name S [] <> I [] DelRow <> 01 01 row_name S [] <> I [] SetString <> 03 01 row_name S [] <> col_index I [] <> string S [] <> I [] DelString <> 02 01 row_name S [] <> col_index I [] <> I [] Release <> 00 01 I [] GetRowInfo <> 01 01 row_name S [] <> I [] SetRowInfo <> 02 01 row_name S [] <> info_data I [] <> I [] GetSelColIndex <> 01 01 row_name S [] <> I [] SetSelColIndex <> 02 01 row_name S [] <> col_index I [] <> I [] GetRowNameStrID 01 01 row_name S [] <> I [] SetRowNameStrID <> 02 01 row_name S [] <> strID RS [] <> I [] GetRowIndexNcas <> 01 01 row_name S [] <> I [] AFMSG_STRTB_REFRESH <> <> StrManipulator [] 00000011 <> RetVal <> I [] RetStr <> S [] IsSubStr <> 02 01 //RetVal = (int)strstr(str2, str1) substr S [] <> str S [] <> I [] SubStr <> 03 01 //RetStr = substring of str from position to position+length-1 str S [] <> position I [] <> length I [] <> S [] StrCat <> 02 01 //RetStr = strcat(str1, str2); str1 S [] <> str2 S [] <> S [] StrToInt <> 01 01 //RetVal = atoi(str) str S [] <> I [] IntToStr <> 01 01 //RetStr = itoa(value) value I [] <> S [] HexStrToInt <> 01 01 //RetVal = htoi(str) str S [] <> I [] FilenameCmp <> 02 01 //Compare filename with each pathname in PathSet, return compare result if filename is equal or in one of these path. //The pathname is put in prop of RetStr. //return value: //0, not match //1, filename==path //2, filename is in directory of path //3, filename is in directory or subdirectory of path filename S [] <> PathSet S [] <> //the name of one path or multi path (have format of "path1,path2,path3", etc ) I [] //return value: //0, not match //1, filename==path //2, filename is in directory of path //3, filename is in directory or subdirectory of path ExtractFileName <> 01 01 //extract the filename from full path name of file, the filename is put prop of RetStr also fullname S [] <> S [] //filename ExtractPath <> 01 01 //extract the path from full path file name, result is assigned to property RetStr. fullname S [] <> S [] //path ExtractFileExt <> 01 01 fullname S [] <> S [] ExtractVPath <> 01 01 //use it to extract the path from virtual path, result is assigned to property RetStr. //eg: ":/mnt/SD/5in1/Photo/:" to "/mnt/SD/5in1/Photo/", remove ':' in the path. sour_str S [] <> S [] <> Upgrade [] 00000013 <> SystemHandle <> H [Bsp] FileName S [] UpgradeHandle <> H [UpgradeHandle] Info AS [;] Customer AI [;] Version AI [;] CreateDate AI [;] Platform AI [;] Slot AI [;] GetInfo <> 01 01 num I [] <> S [] GetPlatform <> 01 01 num I [] <> I [] GetVersion <> 01 01 num I [] <> I [] GetCreateDate <> 01 01 num I [] <> I [] GetCustomer <> 01 01 num I [] <> I [] Check <> 00 01 //Check whether it is a legal file I [] Start <> 00 01 //Start Upgrade process I [] SetFileName <> 01 01 //Set Upgrade File Name filename S [] <> //upgrade filename , full path I [] //Success or Fail AFMSG_UPG_UPGRADE_CHECK_OK <> AFMSG_UPG_UPGRADE_CHECK_ERROR <> AFMSG_UPG_UPGRADE_FAIL <> AFMSG_UPG_UPGRADE_OPEN_ERROR <> AFMSG_UPG_UPGRADE_FINISHED <> AFMSG_UPG_UPGRADE_IN_PROGESS <> <> Variables [] 00000001 int0 <> I [] int1 <> I [] int2 <> I [] int3 <> I [] int4 <> I [] int5 <> I [] int6 <> I [] int7 <> I [] string0 <> S [] string1 <> S [] string2 <> S [] string3 <> S [] string4 <> S [] string5 <> S [] string6 <> S [] string7 <> S [] <> VOBPlayer [BasicPlayer,AttributeSource] 00000012 FastPlayTime I [] //unit: 0.1s; 0: fast forward/backward without playing sound SendMsgFun I [] //Readonly, Container send msg function. This is internal interface set by container and casted to type of function pointer. Player call it to send it's message SendMsgArg I [] //Readonly, Container send msg arg. //This is internal interface set by container and casted to type of "void*", BasicPlayer assign it message pointer before calling SendMsgFun. AppType S [] //The supported files's extention name, has the format like: //"mp3,mov,mp4" ThumbnailCfg <> I [] //thumbnail config, input: 1 thumbnail prefered, DisplayMode <> I [0~5] //0: DISPLAY_ADJUST_KEEP_RATIO //1: DISPLAY_ADJUST_STRETCH //2: DISPLAY_4_3_TO_16_9_SUBTITLE //3: DISPLAY_4_3_TO_16_9_NO_SUBTITLE //4: DISPLAY_16_9_TO_4_3_TV //5: DISPLAY_KEEP_ORIGINAL InterSubtitle <> H [ShowSubtitle] //show internal subtitle VidDecodeFilter <> I [] //used for configure which video format should be filtered out,if a certain media type is filtered, Unsupport message will be sent out //bit0 : FILTER_DIVX //bit1: FILTER_MPEG1 //bit2: FILTER_MPEG2 //bit3: FILTER_MPEG4 //bit4: FILTER_MJPEG //bit5: FILTER_H263 //bit6: FILTER_H264 PreviewMode <> I [] //0: full screen //1: keep ratio GetAttribute 02 01 url S [] <> //url of item attr_name S [] <> //The name of attribute S [] //attr value Start 00 01 //Create app task I [] Quit 00 01 //Delete app task I [] Play 05 01 //Play the file (url is not NULL and state is "STOP") //Or change state from "PAUSE", "FF", "FB" to normal playing ( url is NULL) url S [] <> //if url is not NULL and player is in "STOP" state, play a new item (player must be in "STOP" state) //if url is NULL and player is in "PAUSE", "FF", "FB", change state to normal playing (player can not be in "STOP" state) window_x I [] <> // window_y I [] <> window_width I [] <> window_height I [] <> // I [:StreamType] //fail, return -1 //not support, return -2 //success: //return StreamType: //STREAMTYPE_AUDIOONLY, //STREAMTYPE_PICTURE, //STREAMTYPE_VIDEO Stop 00 01 //Stop playing I [] Pause 00 01 //Pause I [] FastForward 01 01 //Fast forward level I [] <> I [] //return -1 if not support FastBackward 01 01 //Fast backward level I [] <> I [] //return -1 if not support TimeSearch 02 01 // time I [] <> //start play time; pause_flag I [] <> //flag: 0 normal play after time search, 1 pause after time search I [] //return -1 if not support Zoom 01 01 //Zoom, input: zoom level: 0, return normal display level I [] <> I [] Pan 02 01 // direction I [] <> distance I [] <> I [] SetParam 02 01 //set parameters for below method, it will be reset after any of below method are called: //1. method of Play: //"time", the start playing time param_name S [] <> value I [] <> I [] AdjDisplayMode <> 01 01 //adjust video display mode mode I [] <> //video adjust mode. //0xff: DISPLAY_ADJUST_TOGGLE ajust from 0 to 4 in turn //0: DISPLAY_ADJUST_KEEP_RATIO //1: DISPLAY_ADJUST_STRETCH //2: DISPLAY_4_3_TO_16_9_SUBTITLE //3: DISPLAY_4_3_TO_16_9_NO_SUBTITLE //4: DISPLAY_16_9_TO_4_3_TV //5: DISPLAY_KEEP_ORIGINAL //0xfe: DISPLAY_ADJUST_DISABLE I [] AFMSG_BPLAY_SHOW_SUBTITLE <> AFMSG_BPLAY_ZOOM_LEVEL <> <> uAdFileFilter [FileFilterT] 00000002 <> filter_type <> I [] //0, exclude //1, include FilterCh <> S [] //such like "MV" (Mxxxx, Vxxxx will be filtered, x is number) IsInclude 05 01 path S [] <> dp I [] <> param1 I [] <> param2 I [] <> param3 I [] <> I [] <> AFMSG_BPLAY_STATE_CHANGE 15287200 AFMSG_BPLAY_PLAY_TIME 15287201 AFMSG_BPLAY_ITEM_CHANGING 15287202 AFMSG_BPLAY_ITEM_CHANGED 15287203 AFMSG_BPLAY_ITEM_NOT_SUPPORT 15287204 AFMSG_BPLAY_PLAY_FAIL 15287205 AFMSG_BPLAY_ALL_ITEM_PLAYED 15287206 AFMSG_BPLAY_PLAYLIST_EMPTY 15287207 AFMSG_BPLAY_PIC_DISPLAY 15287208 AFMSG_BPLAY_EVENT 15287209 AFMSG_BPLAY_SHOW_SUBTITLE 1528720a AFMSG_BPLAY_AUDIO_STREAM 1528720b AFMSG_BPLAY_SUBTITLE_STREAM 1528720c AFMSG_BPLAY_CMD_FAIL 1528720d AFMSG_BPLAY_ZOOM_LEVEL 1528720e AFMSG_BPLAY_UNSUPPORTED_AUDIO 1528720f AFMSG_BT_OPP_CONNECT 00004a00 AFMSG_BT_OPP_DISCONNECT 00004a01 AFMSG_BT_BIP_CONNECT 00004a02 AFMSG_BT_BIP_DISCONNECT 00004a03 AFMSG_BT_FTP_CONNECT 00004a04 AFMSG_BT_FTP_DISCONNECT 00004a05 AFMSG_BT_DEV_ABORT 00004a06 AFMSG_BT_DEV_DOWN 00004a07 AFMSG_BT_PIN_CODE_REQ 00004a08 AFMSG_BT_HID_CONNECT 00004a09 AFMSG_BT_HID_DISCONNECT 00004a0a AFMSG_BT_HID_DATA 00004a0b AFMSG_BT_HF_STATE_CHANGE 00004a0c AFMSG_BT_HF_STATE_CALL 00004a0d AFMSG_BT_HF_STATE_CALLSETUP 00004a0e AFMSG_BT_BT_DEV_INSERT 00004a0f AFMSG_BT_BT_DEV_REMOVE 00004a10 AFMSG_DEVST_PRE_UNMOUNT 2230ee00 AFMSG_DEVST_UNLOCK_DEV_INSERT 2230ee01 AFMSG_DEVST_POST_UNMOUNT 2230ee02 AFMSG_DEVST_POST_MOUNT 2230ee03 AFMSG_DEVST_MOUNT_FAIL 2230ee04 AFMSG_DEVST_PC_CONNECT 2230ee05 AFMSG_DEVST_PC_DISCONNECT 2230ee06 AFMSG_DEVST_PRINTER_CONNECT 2230ee07 AFMSG_DEVST_PRINTER_DISCONNECT 2230ee08 AFMSG_DEVST_DEV_REFRESH 2230ee09 AFMSG_DEVST_CARD_PLUG_IN 2230ee0a AFMSG_DEVST_CARD_PLUG_OUT 2230ee0b AFMSG_DEVST_DEVICE_NOT_RECONGNISED 2230ee0c AFMSG_DEVST_MAX_HUB_TIERS 2230ee0d AFMSG_DVD_CHAPTER_CHANGED 000dba00 AFMSG_DVD_AUDIO_CHANGED 000dba01 AFMSG_DVD_SPU_CHANGED 000dba02 AFMSG_DVD_ANGLE_CHANGED 000dba03 AFMSG_DVD_ZOOM_CHANGED 000dba04 AFMSG_DVD_STATUS_CHANGED 000dba05 AFMSG_DVD_TIME_INFO 000dba06 AFMSG_DVD_FORBIDDEN 000dba07 AFMSG_DVD_PLAY_FAIL 000dba08 AFMSG_DVD_DOMAIN_CHANGED 000dba09 AFMSG_DVD_TITLE_CHANGED 000dba0a AFMSG_FIBRW_STATE_CHANGE 33635000 AFMSG_FIBRW_ITEM_COUNT_UPDATE 33635001 AFMSG_FIOP_REQ_COMPLETE 01e89800 AFMSG_FIOP_REQ_CANCELED 01e89801 AFMSG_FIOP_START 01e89802 AFMSG_FIOP_PROGRESS 01e89803 AFMSG_FIOP_SUCCESS 01e89804 AFMSG_FIOP_FAIL 01e89805 AFMSG_FITRE_REQUEST_READY 33968000 AFMSG_FITRE_REQ_GET_ITEM_NUM_READY 33968001 AFMSG_FITRE_REFRESH 33968002 AFMSG_FITRE_ADD_ENTRY_RESULT 33968003 AFMSG_FITRE_CACHING_PROGRESS 33968004 AFMSG_FITRE_CACHING_DONE 33968005 AFMSG_FITRE_LOAD_DB 33968006 AFMSG_FITRE_REQ_PREPARE_DB 33968007 AFMSG_FITRE_PREPARE_DB_DONE 33968008 AFMSG_FITRE_EMPTY_FILTERED_DIR_NOTIFY 33968009 AFMSG_GENMG_INDICATION 3a6d4a00 AFMSG_GPLAY_UPDATE_SPECTRUM 3db42700 AFMSG_GPLAY_UPDATE_LYRIC 3db42701 AFMSG_GUI_ITEM_FOCUS_CHANGE 00162f00 AFMSG_GUI_ITEM_FOCUS_SELECTED 00162f01 AFMSG_GUI_ITEM_DRAW_FINISHED 00162f02 AFMSG_GUI_ITEM_SLIDE_FINISHED 00162f03 AFMSG_IME_IME_FINISH 001b0500 AFMSG_IME_IME_QUERY_EXIT 001b0501 AFMSG_INPUT_REMOTE_INPUT 4d5fbe00 AFMSG_INPUT_MOUSE_INPUT 4d5fbe01 AFMSG_NET_YAHOO_RESULT_REFRESH 00287900 AFMSG_NET_POPMAIL_CLIENT_EVENT 00287901 AFMSG_NET_POPMAIL_NEW_MAIL 00287902 AFMSG_NET_SNTP_SYNC 00287903 AFMSG_NET_DATASRC_READY 00287904 AFMSG_NET_PIC_DOWNLOAD_READY 00287905 AFMSG_NET_DOWNLOAD_TASK_INFO 00287906 AFMSG_NETST_DEV_OFF 7342a600 AFMSG_NETST_DEV_ON 7342a601 AFMSG_NETST_DEV_PLUG 7342a602 AFMSG_NETST_DEV_UNPLUG 7342a603 AFMSG_NETST_NETIF_OFF 7342a604 AFMSG_NETST_NETIF_ON 7342a605 AFMSG_NETST_NETIF_READY 7342a606 AFMSG_NETST_METIF_MAC_CHANGED 7342a607 AFMSG_NETST_WIFI_SCAN_READY 7342a608 AFMSG_NETST_WIFI_SCAN_REFRESH 7342a609 AFMSG_NETST_WIFI_CONNECT_TIMEOUT 7342a60a AFMSG_NETST_WIFI_CONNECT_CANCEL 7342a60b AFMSG_NETST_WIFI_WPS_RESULT 7342a60c AFMSG_NETST_WIFI_WPS_CONNECT_RESULT 7342a60d AFMSG_NSTS_NET_STATUS_READY 046cb400 AFMSG_PHOWB_LOGIN_SUCCESS 84534e00 AFMSG_PHOWB_LOGIN_FAIL 84534e01 AFMSG_PIC_PROCESS_FINISH 002e8600 AFMSG_PRINT_PM_FINISHED 87423500 AFMSG_PRINT_PM_CONNECT 87423501 AFMSG_PRINT_PM_DISCONNECT 87423502 AFMSG_PRINT_PM_WAITING 87423503 AFMSG_PRINT_PM_PROGRESS 87423504 AFMSG_PRINT_PM_PRITING 87423505 AFMSG_PRINT_PM_WARNING 87423506 AFMSG_PRINT_PM_ERROR 87423507 AFMSG_PRINT_PM_FILEERROR 87423508 AFMSG_STRTB_REFRESH a049ff00 AFMSG_SWF_INFOMATION 00388e00 AFMSG_SYS_REGISTER 0038d100 AFMSG_SYS_DRAW 0038d101 AFMSG_SYS_HIDE 0038d102 AFMSG_SYS_INIT 0038d103 AFMSG_SYS_PAGE_DESTROYED 0038d104 AFMSG_SYS_TIMER 0038d105 AFMSG_SYS_LOST_FOCUS 0038d106 AFMSG_SYS_GOT_FOCUS 0038d107 AFMSG_SYS_DRIVER_REGISTER 0038d108 AFMSG_THUMB_ONE_THUM_READY a4d31a00 AFMSG_THUMB_ALL_THUM_READY a4d31a01 AFMSG_THUMB_THUM_IDLE a4d31a02 AFMSG_THUMB_ONE_THUM_FAIL a4d31a03 AFMSG_THUMB_THUM_START a4d31a04 AFMSG_UPG_SKYWORTH_IMG_READY 003d8400 AFMSG_UPG_UPGRADE_FINISHED 003d8401 AFMSG_UPG_SKYWORTH_XML_READY 003d8402 AFMSG_UPG_UPGRADE_CHECK_OK 003d8403 AFMSG_UPG_UPGRADE_CHECK_ERROR 003d8404 AFMSG_UPG_UPGRADE_OPEN_ERROR 003d8405 AFMSG_UPG_UPGRADE_FAIL 003d8406 AFMSG_UPG_UPGRADE_IN_PROGESS 003d8407 AFMSG_UPNP_AVTRANSPORT_PLAY 067db900 AFMSG_UPNP_AVTRANSPORT_STOP 067db901 AFMSG_UPNP_AVTRANSPORT_PAUSE 067db902 AFMSG_XFER_GOT_CALLBACK 0746f700