返回列表 回复 发帖 点我体验网上斗地主的乐趣

[ELF相关] ELF新函数汇总贴

相关搜索: ELF, 函数, 汇总
最近出了不少新函数,有点混乱了,所以开此帖,方便大家查找和添加。对ELF程序开发者用处更大。
如果你不明白如何把这些函数特征码的使用,就看看“PortKit使用及相关”这个帖子。

按照老毛子他们的格式:
1。函数功能说明
2。函数特征码
3。函数的参数用法和说明


如果你有新的函数请跟帖,格式如上三条。

本帖严格管理,无新函数请不要回复本帖。


现在的几个新的函数:
1。LED灯函数(SDK V0.2已加入)
2。HAPI_LP393X_set_tri_color_led T B51C050A0F12AB00801A060A0F1207090F09805A8099881A21042A00D1002100
3。void HAPI_LP393X_set_tri_color_led(int type, int val);
type: 0-side, 1 flashlight; val: 0xRGB (0x000 - 0xFFF), the example 0x00E-blue

1。调节背光等亮度函数(SDK V0.2已加入)
2。HAPI_LP393X_disp_backlight_intensity T 495DB508784A2302439A704A2800D001431A704A221302124310AB0080187848
3。void HAPI_LP393X_disp_backlight_intensity(int light);// ligth: 0-100

1。SEEM读取函数(SDK V0.2已加入)
2。SEEM_FDI_OUTSIDE_SEEM_ACCESS_read T b5ffb0891c1eab008cd823064358????18407947ac029a0b9200ab008cd920001c239a0a
3。UINT32 SEEM_FDI_OUTSIDE_SEEM_ACCESS_read( UINT32 seem, UINT32 p2, void*seem_data, UINT32 count ); // p2 = 1

1。SEEM写入函数(SDK V0.2已加入)
2。SEEM_FDI_OUTSIDE_SEEM_ACCESS_write T b5ffb08d1c0d9f16200aab007518260020064368????184079409004ac069a1092001c231c29980d9a0f
3。UINT32 SEEM_FDI_OUTSIDE_SEEM_ACCESS_write( UINT32 p1, UINT32 seem, UINT32 p3, void* seem_data, UINT32 count ); // p1 = 0, p3 = 1

1。开启Funlight(SDK V0.2已加入)
2。DL_AudStartFunlight T b5f81c0e1c0524052a00????????????2801
3。UINT32 DL_AudStartFunlight( UINT8 fl_id, UINT32 p2, UINT32 p3 ); // p3 = 0 // p2 = 1

1。关闭Funlight(SDK V0.2已加入)
2。DL_AudStopFunlight T b508ab00????7018????46693217????????b001bc084718
3。UINT32 DL_AudStopFunlight( UINT8 fl_id );

1。重启 (SDK V0.2已加入)
2。HAPI_WATCHDOG_soft_reset A B580200A????????49??8808221043908008
3。void HAPI_WATCHDOG_soft_reset

1。关机 (SDK V0.2已加入)
2。pu_main_powerdown T B5B01C04????????2000????????4d??782806000F002801
3。void pu_main_powerdown(UINT32 r0);
// r0   0 到 5
//0 = normal_powerdown
//1 = reboot
//3 = Boot

1。播放声音。
2。MME_GC_playback_open_audio_play_forget T B5F1B08821002200A806C0064E972000
3。UINT32 MME_GC_playback_open_audio_play_forget(WCHAR* filename );
6

评分次数

  • 大月兒

  • lq0719

  • panda0986

  • renyong51

  • Kalvinxp

对了,这里还有两个今天下午自己找的函数,关闭和开启屏幕(黑屏效果),包里有个编译好的例子ELF(**关闭,*#开启),那个源代码是在柯南网友的基础上改的,还有一小段备份SEEM0032的源代码,有用的可以参考下。

1。关闭屏幕(SDK V0.2已加入)
2。DAL_DisableDisplay A E92D407CE1A04000E3A05000E3A00000E58D0004
3。void DAL_DisableDisplay(UINT32 p1) ;//p1=0

1. 开启屏幕(SDK V0.2已加入)
2.DAL_EnableDisplay A E92D40F8E1A05000E3A06000E3A00000E58D0000
3.void DAL_EnableDisplay(UINT32 p1) ; //P1=0
附件: 您所在的用户组无法下载或查看附件, 点我体验网上斗地主的乐趣
1。获得日期。
2。DL_ClkGetDate T B508900048??46694AE7????????B001BC0806000E004718
3。UINT32 DL_ClkGetDate(CLK_DATE_T*);
   typedef struct
{
    UINT8     day;
    UINT8     month;
    UINT16    year;
} CLK_DATE_T;
   

1。获得时间。
2。DL_ClkGetTime T B5084ADB900048??46693202????????B001BC0806000E004718
3。UINT32 DL_ClkGetTime(CLK_TIME_T*);
typedef struct
{
    UINT8     h;
    UINT8     m;
    UINT8     s;
} CLK_TIME_T;
这个加到LTE.pat里,然后生成LIB文件,直接使用生成的LIB就可以了,不需要放到头文件。

DIV10用的函数,算除法和取余可能用到。

__rt_udiv10 A E240100AE0400120E0800220E0800420E0800820E1A001A0E0802100E0511082528000014281100AE12FFF1E
1 ) 开启关闭背光键盘
2 ) HAPI_PCAP_transceive T B5F01C04684068A6B08DA90891092100AB087319210473592101403046847399
3 )
=================================in SDK==================================
ypedef struct {
    unsigned int *addr;
    unsigned int  data;
    unsigned int  mask;
    UINT8          rw;
    UINT8             reg;
} HAPI_CAP_ACCESS;

void HAPI_PCAP_transceive(HAPI_CAP_ACCESS*);
==========================================================================
================================in_C_by_om2804 ========================================
#define create_mask(mask, sbit, len)\
    (mask = 0xFFFFFFFFL,\
     mask >>= sbit,\
     mask <<= (sizeof(mask) * 8) - len,\
     mask >>= (sizeof(mask) * 8) - (sbit + len))

#define set_data(dest, sbit, data) (dest = ((unsigned int)data) << sbit)
#define get_data(data, sbit) (data >>= sbit)

void hPCAPwrite(UINT8  port, UINT8 pin, UINT8 len, UINT8 write_data)
{
    HAPI_CAP_ACCESS hapi_cap_params;
    UINT8 num_bits = len;
    UINT8 bit_specifier = pin;

    create_mask(hapi_cap_params.mask, bit_specifier, num_bits);
    set_data(hapi_cap_params.data, bit_specifier, write_data);
    hapi_cap_params.rw = 1;
    hapi_cap_params.reg = port;
    hapi_cap_params.addr = 0;
    HAPI_PCAP_transceive(&hapi_cap_params);
}

unsigned int hPCAPread(UINT8  port, UINT8 pin, UINT8 len)
{
    unsigned int data_buffer;
    HAPI_CAP_ACCESS hapi_cap_params;
    UINT8 num_bits = len;
    UINT8 bit_specifier = pin;

    create_mask(hapi_cap_params.mask, bit_specifier, num_bits);
    set_data(hapi_cap_params.data, bit_specifier, 0);
    hapi_cap_params.rw = 0;
    hapi_cap_params.reg = port;
    hapi_cap_params.addr = &hapi_cap_params.data;
    HAPI_PCAP_transceive(&hapi_cap_params);
    data_buffer = get_data(hapi_cap_params.data, bit_specifier);
    return(data_buffer);
}

//比如://
hPCAPwrite(0x15,0,3, 1);/ / 打开

hPCAPwrite(0x15,0,3, 1);/ / 关闭

==============================================================================
刚看到的 就发上来了
3

评分次数

本人网上仿古家具店:http://shop59981391.taobao.com
欢迎大家有空进去看看
1.创建播放
2。MME_GC_playback_create T B5FFB08D9E191C0F24002000900B2500
3。typedef UINT32 MME_GC_MEDIA_FILE;
MME_GC_MEDIA_FILE * MME_GC_playback_create(SU_PORT_T * port, WCHAR * uri, UINT32 unk1);

1.开始播放
2。MME_GC_playback_start T B5F7B08A27001C04AA07214CF7FF
3。UINT32 MME_GC_playback_start(MME_GC_MEDIA_FILE * media_file, UINT32 unk1, UINT32 unk2);

1.停止播放
2。MME_GC_playback_stop T B5BC24001C05466A214CF7FEFCD1
3。UINT32 MME_GC_playback_stop(MME_GC_MEDIA_FILE * media_file);

1.暂停播放
2。MME_GC_playback_pause T B5BC24001C05466A214CF7FEFC96
3。UINT32 MME_GC_playback_pause(MME_GC_MEDIA_FILE * media_file);

1。删除创建
2.MME_GC_playback_delete T B5F0B0852400900421009103
3。UINT32 MME_GC_playback_delete(MME_GC_MEDIA_FILE * media_file);
2

评分次数

  • renyong51

  • lovejaychou2005

补充说明:
LS鸡蛋给出的五个函数的用法
在头信息中添加如下代码:

typedef UINT32                  MME_GC_MEDIA_FILE;
UINT32 MME_GC_playback_start(MME_GC_MEDIA_FILE * media_file, UINT32 unk1, UINT32 unk2);
MME_GC_MEDIA_FILE * MME_GC_playback_create(SU_PORT_T * port, WCHAR * uri, UINT32 unk1);
UINT32 MME_GC_playback_delete(MME_GC_MEDIA_FILE * media_file);
UINT32 MME_GC_playback_stop(MME_GC_MEDIA_FILE * media_file);
UINT32 MME_GC_playback_pause(MME_GC_MEDIA_FILE * media_file);


说一下头信息的添加方法吧
就是把函数用法的代码添加到SDK里的dl.h中
跟添加functions的方法是一样的哈
1

评分次数

1.读取004A SEEM 值
2.DL_DbFeatureGetCurrentState T B58CAB0080184A??9101466948??3A0D
3.BOOL DL_DbFeatureGetCurrentState( UINT16 fstate_ID, UINT8 *result );
#define ID_KEYPAD_LOCK_79              0x86A // 79r
#define ID_KEYPAD_LOCK_49              0x7F3 // 49r

BOOL DL_DbFeatureGetCurrentState( UINT16 fstate_ID, UINT8 *result );
/ / fstate_ID offset in the base (DL_DB_FEATURE_ID_KEYPAD_LOCK b)
/ / result = 1 locked; result = 0 unlocked
[ 本帖最后由 逆时针 于 2008-1-14 23:09 编辑 ]
2

评分次数

1、播放音乐允许转到时间:允许按时间播放音乐,允许后台播放时暂停/播放 Only for E398
2、MME_GC_playback_seek T B5FE1C051C0F24001C28
3.UINT32 MME_GC_playback_seek (MME_GC_MEDIA_FILE * media_file, UINT32 time);//播放时间从0开始(即文件开头),time的值以毫秒计算,允许的时间范围由音乐文件的时间范围决定

=======================add_to_events.h==================================
#define EV_MME_OPEN_SUCCESS       0xC1000 // successfull file opening
#define EV_MME_OPEN_ERROR         0xC1001 // not successfull file opening
#define EV_MME_SEEK               0xC1002 // occurs after use of the fMME_GC_playback_seek
#define EV_MME_PLAY_COMPLETE      0xC100D // arose at the end of play

/*上面的4个是播放相关的事件,当你使用这些事件可以很好的起到提示或程序段连接的作用,比如EV_MME_PLAY_COMPLETE事件,就是在你播放完后会自动激发新的程序段,当然这个新程序段是你自己写的,最明显的用处就是自动连接到下一个歌曲文件.  __chinawrc__*/
=========================================================================

PS:水平有限,米写出elf,所以无法测试,等鸡蛋来吧
5

评分次数

  • renyong51

  • 娜娜

  • E想天开

  • 逆时针

  • flyleaves04

1) 感应灯光
2) HAPI_ATOD_convert_ambient_light_sensor T b51024002101203e????????2100205a????????21012086
3) UINT8 HAPI_ATOD_convert_ambient_light_sensor( void );


PS:老毛子网站上看见的,鸡蛋看看这个具体是干什么的,感应灯光是我按字面意思翻译的

[ 本帖最后由 逆时针 于 2008-1-6 16:31 编辑 ]
2

评分次数

  • tank

  • E想天开

1. Creates Internal Event (internal).  这个就是发送事件代码(具体没有测试)
2. ELFPACK V0.1以后的版本都有了,所以大家就没必要自己生成新的补丁了.
3.UINT32 AFW_CreateInternalQueuedEvAux( UINT32 ev_id, UINT32 flags, UINT32 att_size, void* att_data ); // flags=0x64,0x65; att_zise = 0; att_data = 0;ev_id就是事件代码;

比如:要使用FB(就是MOTO混音),就是:AFW_CreateInternalQueuedEvAux( 0x3DC, 0x64, NULL, NULL );
// 0x3DC就是MOTO混音的事件代码
1

评分次数

  • tank

改了一下关机的
pu_powerkey_hold_test T B580F7??FF??2801D10820FF30??F7??FF??2801D1052008F7??FF??BC80BC0847182000F7??FC??E7
用法估计应该是这样:
void pu_powerkey_hold_test( void );

但是elf运行测试未通过
一点反应都没给俺。。
不知是俺改函数的问题还是用法搞错了。。。
另外俩函数没能领会它是干啥用的。。。
闪人睡觉。。。
1。模拟按键
2。DL_KeyInjectKeyPress T B58CAB00711A71587199220092002300
3。void DL_KeyInjectKeyPress(UINT8 p1,UINT8 p2,UINT8 p3);
// p1是键值; p2为0时为按下,为1时为弹起(组合起来触发按键事件); P3暂时为0

void Autopress(UINT8 key)
{
DL_KeyInjectKeyPress(key,0,0);
DL_KeyInjectKeyPress(key,1,0);
}
1) 读取seem
2) SEEM_ELEMENT_DATA_read T B5F7B0??1C04250088202306435849??18407940

1) 写入seem
2) SEEM_ELEMENT_DATA_write T B5F3B0931C042500AE0C

3)
typedef UINT16 SEEM_ELEMENT_TYPE; // номер сима

typedef struct {
  SEEM_ELEMENT_TYPE   seem_element_id; // seem
  UINT16   seem_record_number; // record
  UINT32  seem_offset; // offset
  UINT32  seem_size;
} SEEM_ELEMENT_DATA_CONTROL;

// чтение из сима
UINT16   SEEM_ELEMENT_DATA_read     (     SEEM_ELEMENT_DATA_CONTROL  *data_ctrl_ptr,
                                UINT8  *data_buf,
                                BOOL read_zero_byte_allowed
                            );

// *data_ctrl_ptr - pointer to a data structure containing information on request
// *data_buf - pointer to the buffer where the data
// read_zero_byte_allowed - if true, it is possible to read the small symposium with a length less 255                                                                    
//                                                
UINT16  SEEM_ELEMENT_DATA_write    (      SEEM_ELEMENT_DATA_CONTROL  *data_ctrl_ptr,
                            UINT8  *seem_data_ptr
                        );        
// *seem_data_ptr - pointer to the buffer, which are stored recording data
1

评分次数

  • tank

1。写004A DB  
2。DL_DbFeatureStoreState T B583B0??AB008018A80330??4A??900148
3。UINT32 DL_DbFeatureStoreState(UINT16 fstate_ID, UINT8 state);
/ / fstate_ID:offset in the base  
/ / state :written value
1。设置音量
2。DL_AudSetVolumeSetting T B508AB007018483270592202380C4669
3。UINT32 DL_AudSetVolumeSetting(UINT8 volume_type,UINT8 volume);

1。获得音量
2。DL_AudGetVolumeSetting T B51CAB00701848291C0C91012208380B4669
3。UINT32 DL_AudGetVolumeSetting(UINT8 volume_type,UINT8 *volume);
1。信号强度

2。DL_SigRegQuerySignalStrength T 4A58B58032011C0148??F00E????BC80BC084718

3。typedef struct
{
    UINT8         percent;
    INT8    dbm;
} SIGNAL_STRENGTH_T;

void DL_SigRegQuerySignalStrength(SIGNAL_STRENGTH_T *signal_strength);
1

评分次数

  • Alar30

1。设置壁纸
2。UIS_SetWallpaper A E92D4008E1A01000E5??????E3A02001????????E3500008908FF100
3。
typedef struct
{
    WCHAR            *url;           
    UINT32           unk;   
} UIS_SETWALLPAPER_SETTINGS_T;

UINT32 UIS_SetWallpaper(UIS_SETWALLPAPER_SETTINGS_T * );
1.得到SIM的PIN状态
2.DL_SimMgrGetPinStatus T B5B01C052404206E????????2801D109????????2801D1052D02D203
3.UINT32 DL_SimMgrGetPinStatus(UINT8 card);
1st sim card - 0
2nd sim card - 1


1.判断路径是否合法有效
2.URINameValid T B5B01C04220C49??????????2800D100340C1C20
3.BOOL URINameValid( WCHAR* uri );
1。设置主屏显示
2。UIS_SetStatus A E350007D13500007E3A0300001A00003012FFF1EE92D4008E1A03002
3。
#define AUDIO_STATUS         0x69
#define GPRS_STATUS        0x1D
#define Network_STATUS  0x27

typedef UINT8 STATUS_ID;

typedef union
{
    INT32                            integer;
    BOOL                             boolean;
    WCHAR                            *currency;
    WCHAR                            *quoted_name;
    WCHAR                            *quoted_phone_number;
    WCHAR                            *quoted_string;
    UINT32                               phone_type;
} STATUS;

UINT32 UIS_SetStatus(STATUS_ID status_id, STATUS value);
返回列表