SKYENGINE 简介

SKYENGINE API 参考手册

背景

考察全球手机产业发展情况，依据用户、手机终端平台、网络、发行等诸多方面的具体进程将手机产业的发展分为三个阶段，即引入期、成长期、成熟期。当前中国手机应用正处于产业发展的成长期，发展潜力巨大。但中国手机应用产业的成熟，深受当前诸多客观条件，如移动网络、手机终端平台和发行渠道等方面的制约。

从目前的手机市场来看，中低端机占了绝大部分的市场份额，特别是在各种手机应用的主要用户群――学生当中，更是中低端手机的天下，而中低端手机的硬件配置有很大的局限性。无论是CPU的速度、ROM容量、Flash Rom容量，都十分有限。如何在这样有限的空间和速度里实现丰富多彩的手机应用，需要一个占用空间小，高效而灵活的引擎。然而开发这样一个引擎，却是一件非常消耗人力物力的事。这就意味着手机厂商要想在自己的手机上快速提供大量精彩的应用，必须投入大量的人力和物力，并耗费大量的时间才能实现。在这样的背景下，一个精简、高效、可扩展、可快速移植的手机应用引擎，成为了手机开发的迫切需要。

特性

SKYENGINE开发组从2003年中期就开始了SKYENGINE手机引擎的开发，目标是提供给手机厂商一个优质低价、精简高效的手机应用引擎。SKYENGINE手机应用引擎具有如下特点：

  • 完善的中文支持。支持GB2312、Unicode等字符集。
  • 具备良好的可移植性。支持多种手机开发平台（高通Brew平台、TI平台、MTK平台、展迅平台、ADI平台等）。
  • 十分优异的应用驱动性能。SKYENGINE手机引擎可以在恶劣的环境下流畅的运行各种手机应用。
  • 提供多种应用存储方式，手机应用可固化存储于Rom中，也可以动态存储于FlashRom中，支持应用的空中下载。可以在厂商的手机门户网站上放置可供下载的手机应用。
  • 极小的空间占用量，约为120K。
  • 优质低价，SKYENGINE手机引擎是本公司自主研发的产品，本公司拥有完全的自主产权，所以在成本上可以得到有效的控制，相比其他的产品而言，可以有很强的价格优势。

可见，SKYENGINE具有良好的可移植性，能够方便简洁的移植到各种平台的手机上，并有着占用空间小、性能高、应用和游戏可以无线下载等优势。

平台结构示意图

Copyright ?2005-20010 SKY-MOBI


外部移植接口

外部移植接口

SkyEngine外部移植接口是指虚拟机核心提供给外部使用的接口，移植层调用这些接口来使用SkyEngine提供的服务或将事件通知给SkyEngine。


mr_start_dsm

int32 mr_start_dsm(const char* entry)

Description
通过入口参数来启动虚拟机。
Parameters

Name | Description
entry | dsm入口标志，该标志用于启动非dsm根目录的项目。启动dsm根目录时该参数填NULL（相当于运行”*A”固化应用）。若该参数以’*’开头，则执行固化应用（参见“注册固化应用”小节），”*A”表示index为0的应用，”*B”表示index为1的应用，以此类推。若该参数以’%’开头，则执行根目录下的mrp文件，如”%QQ.mrp”执行QQ.mrp文件。

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

初始化SkyEngine引擎，并运行指定的应用。当SkyEngine引擎启动时会调用mr_mem_get获取引擎需要的内存。 mr_mem_get函数由移植者实现，以取得引擎需要的内存。entry是SkyEngine入口参数。

Example
See Also

mr_start_dsmB
mr_start_dsmC
mr_start_dsm_ex


mr_start_dsmB

int32 mr_start_dsmB(const char* entry)

Description
直接启动mrp文件，并且可以传参过去。
Parameters

Name | Description
entry | dsm入口标志，该标志用于启动非dsm根目录的项目。启动dsm根目录时该参数填NULL（相当于运行”*A”固化应用）。若该参数以’*’开头，则执行固化应用（参见“注册固化应用”小节），”*A”表示index为0的应用，”*B”表示index为1的应用，以此类推。若该参数以’%’开头，则执行根目录下的mrp文件，如”%QQ.mrp”执行QQ.mrp文件。

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

此函数主要在非精简虚拟上用来直接启动mrp文件。

Example
See Also

mr_start_dsm
mr_start_dsmC
mr_start_dsm_ex


mr_start_dsmC

int32 mr_start_dsmC(const char* entry)

Description
通过入口参数来启动虚拟机。
Parameters

Name | Description
entry | dsm入口标志，该标志用于启动非dsm根目录的项目。启动dsm根目录时该参数填NULL（相当于运行”*A”固化应用）。若该参数以’*’开头，则执行固化应用（参见“注册固化应用”小节），”*A”表示index为0的应用，”*B”表示index为1的应用，以此类推。若该参数以’%’开头，则执行根目录下的mrp文件，如”%QQ.mrp”执行QQ.mrp文件。

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

初始化SkyEngine引擎，并运行指定的应用。当SkyEngine引擎启动时会调用mr_mem_get获取引擎需要的内存。 mr_mem_get函数由移植者实现，以取得引擎需要的内存。entry是SkyEngine入口参数。

Example
See Also

mr_start_dsm
mr_start_dsmB
mr_start_dsm_ex


mr_start_dsm_ex

int32 mr_start_dsm_ex(const char* path, const char* entry)

Description
通过入口参数来启动虚拟机。
Parameters

Name | Description
path | mrp文件路径
entry | dsm入口标志，该标志用于启动非dsm根目录的项目。启动dsm根目录时该参数填NULL（相当于运行”*A”固化应用）。若该参数以’*’开头，则执行固化应用（参见“注册固化应用”小节），”*A”表示index为0的应用，”*B”表示index为1的应用，以此类推。若该参数以’%’开头，则执行根目录下的mrp文件，如”%QQ.mrp”执行QQ.mrp文件。

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

初始化SkyEngine引擎，并运行指定的应用。当SkyEngine引擎启动时会调用mr_mem_get获取引擎需要的内存。 mr_mem_get函数由移植者实现，以取得引擎需要的内存。entry是SkyEngine入口参数。

Example
See Also

mr_start_dsm
mr_start_dsmB
mr_start_dsmC


mr_stop

int32 mr_stop(void)

Description
停止虚拟机，并释放相关资源。
Parameters

Name Description

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

退出SkyEngine并释放相关资源。引擎退出时会调用mr_mem_free函数释放由mr_mem_get函数取得的内存。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_pauseApp

int32 mr_pauseApp(void)

Description
暂停虚拟机。
Parameters

Name Description

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

当有电话呼入或其他需要暂停应用的事件到来时，调用该函数暂停应用。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_resumeApp

int32 mr_resumeApp(void)

Description
恢复虚拟机运行。
Parameters

Name Description

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_event

int32 mr_event(int16 type, int32 param1, int32 param2)

Description
发送事件给虚拟机，在应用层将通过mrc_event接收到相应的消息。
Parameters

Name | Description
type | 虚拟机预定义的事件类型，各个事件类型的具体定义请参考MR_EVENT_E
param1 | 参数1，由事件定义
param2 | 参数2，由事件定义

Return Value

当成功将事件发送到虚拟机并进行处理后将返回MR_SUCCESS, 如果未将事件传到虚拟机将返回MR_FAILED，如果是虚拟机不支持的事件将返回MR_IGNORE。在返回值上这里有一点要特别注意，mr_event的返回值不等于mrc_event的返回值，某些时候我们可能期望通过mr_event来调用应用中的相应功能，但切记，通过mrc_event返回的值，在平台的移植层是得不到的。

Remarks

在移植层将本地的事件转换成虚拟机事件后，需要通过mr_event 将事件发送到虚拟机，应用层会由mrc_event接收，这里的发送是同步的，其实就是同步的调用过程，mr_event发送的事件遵循公共且唯一的定义，各个事件可带有1至2个参数，参数的个数和具体的移植由事件本身定义，应用和移植层遵循此协议。

事件定义

enum {
MR_KEY_PRESS, /*按键按下事件, param1 为按键值*/
MR_KEY_RELEASE, /*1*/
MR_MOUSE_DOWN, /*2*/
MR_MOUSE_UP, /*3*/
MR_MENU_SELECT, /*4*/
MR_MENU_RETURN, /*5*/
MR_DIALOG_EVENT, /*6*/
MR_SMS_INDICATION, /*7*/
MR_EVENT_EXIT, /*8*/
MR_SMS_RESULT, /*9*/
MR_LOCALUI_EVENT, /*10*/
MR_OSD_EVENT, /*11*/
MR_MOUSE_MOVE, /*12*/
MR_ERROR_EVENT, /*13执行异常通过这个事件来通知*/
MR_PHB_EVENT,
MR_SMS_OP_EVENT,
MR_SMS_GET_SC,
MR_DATA_ACCOUNT_EVENT,
MR_MOTION_EVENT,
MR_MCHAT_EVENT = 100,
}MR_EVENT_E;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_timer

int32 mr_timer(void)

Description
定时器通知函数。
Parameters

Name Description

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

定时器到期时调用定时器事件，SkyEngine引擎将对之进行处理。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_smsIndiaction

int32 mr_smsIndiaction(uint8 *pContent, int32 nLen, uint8 *pNum, int32 type)

Description
新消息提示。
Parameters

Name | Description
pContent | 接收到的短信内容
nLen | 短信内容长度
pNum | 短信发送者号码
type MR_ENCODE_ASCII: ASCII码
MR_ENCODE_UNICODE: Unicode码, 网络字节序

Return Value

操作成功返回MR_SUCCESS，操作失败返回MR_FAILED，不处理返回MR_IGNORE，在返回非MR_IGNORE的情况下需要删除该短信。

Remarks

当手机收到短消息时调用该函数。该函数检测新来的消息是否为SkyEngine配置消息，如果是SkyEngine配置消息，则进行对应的配置操作，返回MR_SUCCESS或MR_FAILED；不是SkyEngine配置消息则返回MR_IGNORE。每当手机收到新来的短消息，调用这个接口，如果返回值是MR_SUCCESS或MR_FAILED，则需要丢弃(删除)该消息。如果返回值是MR_IGNORE，该消息不是SkyEngine配置消息，无须进行特殊处理。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_save_mrp

int32 mr_save_mrp(void *p, uint32 l)

Description
文件下载判断与保存。
Parameters

Name | Description
p | 下载内容指针，指向保存下载文件内容的地址
l | 下载内容长度

Return Value

当下载的是skyengine的应用，并保存成功，返回MR_SUCCESS，如果保存失败返回MR_FAILED. 如下载的是非skyengine应用，返回MR_IGNORE。

Remarks

对下载内容（保存在内存区中的一个下载的文件）进行判断，若下载文件是SkyEngine应用，由SkyEngine引擎对下载文件进行保存。使用本函数时，下载文件应该已经下载完全，并且全部内容保存在所给的内存中。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_newSIMInd

int32 mr_newSIMInd(int16 type, uint8* old_IMSI)

Description
用户SIM卡变更通知。
Parameters

Name | Description
type MR_SIM_NEW, //新手机第一次插入SIM卡
MR_SIM_CHANGE, //用户更换SIM卡
MR_SIM_SAME //未进行换卡操作，当前SkyEngine忽略该情况
old_IMSI | 长度为16字节的旧IMSI号指针，若type为MR_SIM_NEW或MR_SIM_SAME，置为NULL

Return Value

成功返回MR_SUCCESS，失败返回MR_FAILED，不关心返回MR_IGNORE。

Remarks

通知SkyEngine引擎，用户插入了新的SIM卡(包括第一次使用该手机和换卡操作)。当新手机插入SIM卡，或者用户进行换卡消息时，通知SkyEngine引擎进行备份。建议在短消息模块初始化完成后，调用该函数，确保该函数能正确执行。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_registerAPP

int32 mr_registerAPP(uint8 *p, int32 len, int32 index)

Description
注册固化应用。
Parameters

Name | Description
entry | 固化应用的数据块内存指针
len | 固化应用的数据块长度
index | 注册位置,取值0-9（VM 1922版本起扩展到0-19）

Return Value

MR_SUCCESS 成功
MR_FIALED 失败

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


抽象移植接口

抽象移植接口

SkyEngine抽象接口是SkyEngine根据移植的需要以及不同手机软件平台的共性，向下抽象的一套需求接口函数，无论什么样的软硬件平台上，只要实现了这些接口函数， 也就完成了平台上对SkyEngine核心的支持，安装在手机平台上的SkyEngine游戏和应用程序，就能够正常运行。


mr_drawBitmap

void mr_drawBitmap(uint16* bmp, int16 x, int16 y, uint16 w, uint16 h)

Description
绘制BITMAP。
Parameters

Name | Description
bmp | 图片在内存中存放的地址首指针
x,y | 图片左上角在屏幕中的坐标
w,h | 图片宽, 图片高

Return Value

无返回值。

Remarks

将bmp指向的Bitmap图片绘制于屏幕中。bmp指向的图片格式是16bit色深的w*h大小的Bitmap图片，象素顺序是：从左上角的象素开始，从左到右，从上到下排列象素。每个象素的16bit的r,g,b分别为：5 bit、6 bit、5 bit。
如纯红色为：0b1111100000000000
如纯绿色为：0b0000011111100000
如纯篮色为：0b0000000000011111

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_getCharBitmap

const char *mr_getCharBitmap(uint16 ch, uint16 fontSize, int *width, int *height)

Description
获取字符点整。
Parameters

Name | Description
ch

Unicode码，若CPU是little endian，则该Unicode码是little endian，比如“1”为0x0031

若CPU是big endian，则该Unicode码是big endian，比如“1”为0x0031
fontSize

字体大小，可能的值是

MR_FONT_SMALL,

MR_FONT_MEDIUM,

MR_FONT_BIG

如果手机平台不支持多种字体，可以合并一些字体，具体策略是：若支持两种字体，将MR_FONT_MEDIUM、 MR_FONT_BIG合并；若支持一种字体，将所有字体合并。
width, height | 返回的字符的宽和高

Return Value

放回字符的点整的起始地址，如果失败返回NULL。 当字库里没有该字体的点阵信息是，希望不要返回失败，建议返回一个”口”这样的字体信息。

Remarks

获取unicode码ch指向的字体的点阵信息，并告之该字体的宽和高，获取到的点阵信息每一个bit表示字体的一个象素。目前的版本字体每行的象素都是以紧凑的方式排布，即不按字节对齐的方式。

注：若字库中的字体每行的象素必须按字节对齐，也就是说如果一个字体宽为12，则需要用两个字节来表示该信息，第二个字节的后四个bit为0，从第三个字节开始才表示下一行的点阵数据。则需要特别编译特殊的版本。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_getScreenInfo

int32 mr_getScreenInfo(mr_screeninfo * screeninfo)

Description
获取屏幕信息。
Parameters

Name | Description
screeninfo | 返回屏幕信息数据结构mr_screeninfo

Return Value

MR_SUCCESS 成功启动
MR_FAILED 失败

Remarks

获取屏幕宽、高、象素深度等信息。
mr_screeninfo数据结构：
typedef struct
{
uint32 width; //屏幕宽
uint32 height; //屏幕高
uint32 bit; //屏幕象素深度，单位bit，如：6万5千色（16bit色深）应该返回16。
}mr_screeninfo;

Example

/*mrp code*/

mr_screeninfo info;
mrc_getScreenInfo( &info );
mrc_printf( "Screen info:width = %d, height = %d, bit = %d.", info.width, info.height, info.bit );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_startShake

int32 mr_startShake(int32 ms)

Description
启动震动。
Parameters

Name | Description
ms | 震动持续的毫秒数

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_startShake( 2000 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_playSound

int32 mr_playSound(int type, const void* data, uint32 dataLen, int32 loop)

Description
播放音频。
Parameters

Name | Description
type

音频类型，取值可以为：

MR_SOUND_MIDI,

MR_SOUND_WAV,

MR_SOUND_MP3,

MR_SOUND_AMR,

MR_SOUND_PCM //8K
data | 音频数据
datalen | 数据长度
loop | !=0，音乐循环播放；==0，单次播放

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

调用mr_playSound播放音频，调用mr_stopSound停止播放音频。

Example

/*mrp code*/

VOID* data; // 音频数据流地址
int32 len; //数据长度
mr_playSoundEx( MR_SOUND_MIDI, data, len, 0 );

See Also
mr_stopSound


mr_stopSound

int32 mr_stopSound (int type)

Description
停止播放音频。
Parameters

Name Description
type

音频类型，取值可以为：

MR_SOUND_MIDI,

MR_SOUND_WAV,

MR_SOUND_MP3,

MR_SOUND_PCM //8K

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

调用mr_playSound播放音频，调用mr_stopSound停止播放音频。

Example

/*mrp code*/

mr_stopSoundEx( MR_SOUND_MIDI );

See Also

mr_playSound


mr_timerStart

int32 mr_timerStart(uint16 t)

Description
定时器启动。
Parameters

Name | Description
t | 时间间隔，单位为毫秒

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

此定时器函数为单次函数，VM调用此函数来启动一次定时操作，但timeout后，需要调用外部移植接口mr_timer来通知VM。

Example
See Also

mr_timer
mr_timerStop


mr_timerStop

int32 mr_timerStop(void)

Description
停止定时器。
Parameters

Name Description

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

用于停止mr_timerStart启动的定时器，如果之前没有调用过mr_timerStart,多调用此函数应该不会产生其他影响。

Example
See Also

mr_timer
mr_timerStart


mr_getLen

int32 mr_getLen(const char* filename)

Description
取得文件长度。
Parameters

Name | Description
filename | 文件名

Return Value

>=0 文件长度
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_getLen( "testFile.txt" );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_open

MR_FILE_HANDLE mr_open(const char* filename, uint32 mode)

Description
打开文件。
Parameters

Name | Description
filename | 文件名
mode | 打开方式

Return Value

非NULL 文件句柄
NULL 失败

Remarks

mode取值:
MR_FILE_RDONLY //以只读的方式打开文件。
MR_FILE_WRONLY //以只写的方式打开文件。（可以将这个方式实现为与MR_FILE_RDWR相同的操作）
MR_FILE_RDWR //以读写的方式打开文件。
MR_FILE_CREATE //如果文件不存在，创建该文件，该参数不会单独出现，只能与其他值一同出现（使用“或”运算）
MR_FILE_RECREATE //无论文件存不存在，都重新创建该文件，该参数不会单独出现，只能与其他值一同出现（使用“或”运算）

mode可能的取值：
a、 前三个参数的其中一个
b、 MR_FILE_WRONLY、MR_FILE_RDWR和MR_FILE_CREATE的“或”值
c、 MR_FILE_WRONLY、MR_FILE_RDWR和MR_FILE_RECREATE的“或”值

Example

/*mrp code*/

MR_FILE_HANDLE fh;
fh = mrc_open( "testFile.txt", MR_FILE_CREATE|MR_FILE_RDWR ); //创建可读写文件testFile.txt
fh = mrc_open( "testFile.txt", MR_FILE_CREATE|MR_FILE_WRONLY ); //创建可写文件testFile.txt
fh = mrc_open( "testFile.txt", MR_FILE_RECREATE|MR_FILE_WRONLY ); //重新创建可写文件testFile.txt
fh = mrc_open( "testFile.txt", MR_FILE_CREATE|MR_FILE_RDWR ); //重新创建可读写文件testFile.txt
fh = mrc_open( "testFile.txt", MR_FILE_WRONLY ); //以只写的方式打开文件testFile.txt
mrc_close( fh );

See Also

mr_close


mr_read

int32 mr_read(MR_FILE_HANDLE f, void *p, uint32 l)

Description
读取文件内容到指定的缓冲区。
Parameters

Name | Description
f | 文件句柄
p | 文件缓存地址
l | 缓冲长度

Return Value

>= 0 读取的字节数
MR_FAILED 失败

Remarks

初始化SkyEngine引擎，并运行指定的应用。当SkyEngine引擎启动时会调用mr_mem_get获取引擎需要的内存。 mr_mem_get函数由移植者实现，以取得引擎需要的内存。entry是SkyEngine入口参数。

Example

/*mrp code*/

MR_FILE_HANDLE fh;
char buffer[60];
fh = mrc_open( "testFile.txt", MR_FILE_RDWR ); //可读写方式打开文件testFile.txt
mrc_read( fh, (void*)buffer, sizeof(buffer) );
mrc_close( fh );

See Also

mr_open
mr_close


mr_write

int32 mr_write(MR_FILE_HANDLE f, void *p, uint32 l)

Description
写文件。
Parameters

Name | Description
f | 文件句柄
p | 待写入数据存放地址
l | 待写入数据长度

Return Value

> 0 实际写入的字节数
MR_FAILED 失败

Remarks

初始化SkyEngine引擎，并运行指定的应用。当SkyEngine引擎启动时会调用mr_mem_get获取引擎需要的内存。 mr_mem_get函数由移植者实现，以取得引擎需要的内存。entry是SkyEngine入口参数。

Example

/*mrp code*/

MR_FILE_HANDLE fh;
char buffer[60] = "Hello sky!";
fh = mrc_open( "testFile.txt", MR_FILE_RDWR ); //可读写方式打开文件testFile.txt
mrc_write( fh, (void*)buffer, sizeof(buffer) );
mrc_close( fh );

See Also

mr_open
mr_close


mr_close

int32 mr_close(MR_FILE_HANDLE f)

Description
关闭文件。
Parameters

Name | Description
f | 要关闭的文件句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

MR_FILE_HANDLE fh;
fh = mrc_open( "testFile.txt",
  MR_FILE_CREATE|MR_FILE_RDWR );
mrc_close( fh
);

See Also

mr_open


mr_info

int32 mr_info(const char* filename)

Description
获取文件属性。
Parameters

Name | Description
filename | 文件名

Return Value

返回取值如下：
#define MR_IS_FILE 1//是文件
#define MR_IS_DIR 2//是目录
#define MR_IS_INVALID 8//文件不存在，或既不是文件也不是目录

Remarks

Example

/*mrp code*/

int32 state;
state = mrc_fileState( "testFile.txt"
);

See Also

Copyright ?2005-20010 SKY-MOBI


mr_seek

int32 mr_seek(MR_FILE_HANDLE f, int32 pos, int method)

Description
设置文件读写指针。
Parameters

Name | Description
f | 文件句柄
pos | 文件读写指针位置
method 设置方式,可能的取值为：
MR_SEEK_SET, //从文件头开始搜索；
MR_SEEK_CUR, //从文件尾开始搜索；
MR_SEEK_END, //从文件当前位置开始搜索；

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

MR_FILE_HANDLE fh;
fh = mrc_open( "testFile.txt",
  MR_FILE_RDWR );
mrc_seek( fh, 10, MR_SEEK_SET);
  //从文件头开始搜索；
mrc_seek( fh, 0, MR_SEEK_END);  //从文件尾开始搜索；
mrc_seek(
  fh, 10, MR_SEEK_CUR);  //从文件当前位置开始搜索；
mrc_close( fh
);

See Also

mr_open
mr_close


mr_remove

int32 mr_remove(const char* filename)

Description
删除文件。
Parameters

Name | Description
filename | 文件名

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_remove( "testFile.txt" );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_rename

int32 mr_rename(const char* oldname, const char* newname)

Description
文件重命名。
Parameters

Name | Description
oldname | 原文件名
newname | 新文件名

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

这里有个需要特别注意的地方是，不在相同目录下的rename，这样的操作就相当于move，由于移植层没做特殊处理直接转掉平台的函数，所以就存在平台接口差异导致该接口表现不完全一致，目前在MTK上是可以带路径rename的，但展讯上不行。

Example

/*mrp code*/

mrc_rename( "testFile.txt", "newtestFile.txt" );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_mkDir

int32 mr_mkDir(const char* name)

Description
创建目录。
Parameters

Name | Description
name | 目录名

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_mkDir( "testDir" );

See Also

mr_rmDir


mr_rmDir

int32 mr_rmDir(const char* name)

Description
删除目录。
Parameters

Name | Description
name | 目录名

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

删除的文件夹必须为空。

Example

/*mrp code*/

mrc_rmDir( "testDir" );

See Also

mr_mkDir


mr_findStart

MR_SEARCH_HANDLE mr_findStart(const char* name, char* buffer, uint32 len)

Description
开始目录搜索。
Parameters

Name | Description
name | 目录名
buffer | 缓冲区，用于存放查找成功时第一个文件名或一级子目录名，GB编码
len | 缓冲区大小

Return Value

>0 返回的文件查找句柄
MR_FAILED 失败

Remarks

准备搜索name指定的目录，当dsm调用该函数后，系统初始化一个目录搜索，并返回第一个目录搜索的结果，每当dsm调用一次mr_findGetNext函数，系统返回下一个该目录下的文件或一级子目录名。该函数只返回查找句柄。当name为空字符串""时（注意name指向空串，但name不是NULL），搜索SkyEngine引擎的文件根目录。如：若手机以"/dsmdata/"作为SkyEngine引擎的文件根目录，当name为空字符串时，搜索目录"/dsmdata"。
例：一个目录下有文件：“a.bmp”、”b.mrp”和目录“data”，则mr_findStart返回查找句柄和“a.bmp”，紧接着的三次调用mr_findGetNext返回“b.mrp”、“data”和MR_FAILED。

Example

/*mrp code*/

char buffer[60] = { 0 };
mrc_findStart( "testDir", buffer, sizeof(buffer) );

See Also

mr_findGetNext
mr_findStop


mr_findGetNext

int32 mr_findGetNext(MR_SEARCH_HANDLE search_handle, char* buffer, uint32 len)

Description
取得一个目录搜索的结果。
Parameters

Name | Description
search_handle | 调用mr_findStart时返回的查找句柄
buffer | 缓冲区，用于存放查找成功时文件名或一级子目录名，GB编码
len | 缓冲区大小

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

取得一个目录搜索的结果。将结果放置于buffer中。当目录中的结果都遍历过后，返回NULL。
这里需要注意的是，使用mr_findGetNext获得的子目录不能是“.”和“..”。

Example

/*mrp code*/

int32 hFnd = 0;
char
  buffer[60] = { 0 };
char buffer_fndGetNxt[60] = { 0 };

hFnd = mrc_findStart( "testDir", buffer,
  sizeof(buffer) );
mrc_findGetNext( hFnd, buffer_fndGetNxt,
  sizeof(buffer_fndGetNxt) );

See Also

mr_findStart
mr_findStop


mr_findStop

int32 mr_findStop(MR_SEARCH_HANDLE search_handle)

Description
结束目录查找。
Parameters

Name | Description
search_handle | 查找句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

int32 hFnd = 0;
char buffer[60] = { 0
  };

hFnd = mrc_findStart( "testDir",
  buffer, sizeof(buffer) );
mrc_findStop(
hFnd );

See Also
mr_findStart


mr_ferrno

int32 mr_ferrno(void)

Description
返回错误信息。
Parameters

Name Description

Return Value

返回最近一次文件操作的错误信息。

Remarks

该函数用于调试使用，返回的是最后一次操作文件失败的错误信息，返回的错误信息具体含义与平台上使用的文件系统有关。
如果文件系统不支持该功能，可以将该函数实现为返回MR_SUCCESS。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_sendSms

int32 mr_sendSms(char* pNumber, char*pContent, int32 flags)

Description
发送一条短信。
Parameters

Name | Description
pNumber | 电话号码，ASCII码
pContent | 消息内容，ASCII码或Unicode码，由flags参数决定。
flags

0～2bit：编码类型

MR_ENCODE_ASCII: ASCII码

MR_ENCODE_UNICODE: Unicode码, 网络字节序。

3bit：是否隐藏状态报告

1：隐藏状态报告

0：不隐藏状态报告

4bit：是否隐藏发送结果（成功/失败）提示

1：隐藏

0：不隐藏

5～31 bit：保留

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 未准备好

Remarks

Example

/*mrp code*/

#define SEND_SMS_TO "10086"
#define SEND_CONTENT "Hello: Sky Test!"

mrc_sendSms( SEND_SMS_TO, SEND_CONTENT, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_call

void mr_call(char * pNumber)

Description
拨打电话。
Parameters

Name | Description
pNumber | 电话号码

Return Value

无返回值。

Remarks

Example

/*mrp code*/

mrc_call( "10086" );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_connectWAP

void mr_connectWAP(char* wap)

Description
连接WAP。
Parameters

Name | Description
wap | url地址，长度不超过256

Return Value

无返回值。

Remarks

Example

/**mrp code/

mrc_connectWap( "http://wap.baidu.com" );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_getNetworkID

int32 mr_getNetworkID(void)

Description
获取网络ID。
Parameters

Name Description

Return Value

返回取值如下：
enum {
MR_NET_ID_MOBILE, //移动GSM
MR_NET_ID_CN, // 联通GSM
MR_NET_ID_CDMA, //联通CDMA
MR_NET_ID_NONE //未插卡或网络错误
};

Remarks

Example

/*mrp code*/

int32 netID;

netID = mrc_getNetworkID();

See Also

Copyright ?2005-20010 SKY-MOBI


mr_initNetwork

int32 mr_initNetwork(MR_INIT_NETWORK_CB cb, const char *mode)

Description
网络初始化。
Parameters

Name | Description
cb | 当网络初始化使用异步模式时，使用该回调函数通知引擎初始化结果。
mode | 拨号方式，” cmnet”或” cmwap”的拨号方式。

Return Value

MR_SUCCESS 同步模式，初始化成功，不再调用cb
MR_FAILED （立即感知的）失败，不再调用cb
MR_WAITING 使用回调函数通知引擎初始化结果.

Remarks

网络初始化，如果没有拨号，进行拨号操作。
这里需要注意的是，本文档描述的所有网络接口函数在实现时建议优先考虑采用非阻塞方式。
若网络初始化使用异步模式，使用回调函数通知引擎初始化结果。
typedef int32 (*MR_INIT_NETWORK_CB)(int32 result);
回调函数参数说明：
result： MR_SUCCESS初始化成功
MR_FAILED 初始化失败

Example

/*mrp code*/

int32 cbInitNetwork(int32 result);
  //回调函数

cbInitNetwork( mrc_initNetwork( cbInitNetwork, "cmnet" )
  );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_closeNetwork

int32 mr_closeNetwork(void)

Description
断开网络拨号。
Parameters

Name Description

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_closeNetwork();

See Also

Copyright ?2005-20010 SKY-MOBI


mr_getHostByName

int32 mr_getHostByName(const char *name, MR_GET_HOST_CB cb)

Description
域名解析。
Parameters

Name | Description
name | 主机名
cb | 回调函数

Return Value

MR_FAILED （立即感知的）失败，不再调用cb
MR_WAITING 使用回调函数通知引擎获取IP的结果
其他值 同步模式，立即返回的IP地址，不再调用cb

Remarks

通过主机名获得该主机的IP地址值，如果一个主机的IP地址为218.18.95.203，则值为218<<24 + 18<<16 + 95<<8 + 203 = 0xda125fcb。
若获取主机IP使用异步模式，使用回调函数通知引擎获取IP的结果。
typedef int32 (*MR_GET_HOST_CB)(int32 ip);
回调函数参数说明：
ip： MR_FAILED 获取IP失败
其他值 IP地址

Example

/*mrp code*/

int32 cbGetHost(int32 ip); //回调函数

cbGetHost( mrc_getHostByName( "www.baidu.com", cbGetHost ) );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_socket

int32 mr_socket(int32 type, int32 protocol)

Description
创建一个socket。
Parameters

Name Description
type Socket类型：
MR_SOCK_STREAM
MR_SOCK_DGRAM
protocol 具体协议类型:
MR_IPPROTO_TCP，
MR_IPPROTO_UDP

Return Value

>=0 socket句柄
MR_FAILED 失败

Remarks

Example

/*mrp code*/

int32 hSoc = 0;

hSoc = mrc_socket( MR_SOCK_STREAM, MR_IPPROTO_TCP
  );

See Also

mr_closeSocket


mr_connect

int32 mr_connect(int32 s, int32 ip, uint16 port, int32 type)

Description
建立 socket 连接。
Parameters

Name | Description
s | socket 句柄
ip | 对端ip地址
port | 对端端口号
type

MR_SOCKET_BLOCK //阻塞方式（同步方式）
MR_SOCKET_NONBLOCK //非阻塞方式（异步方式）

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 使用异步方式进行连接，VM需要轮询该socket的状态以获知连接状况

Remarks

初始化SkyEngine引擎，并运行指定的应用。当SkyEngine引擎启动时会调用mr_mem_get获取引擎需要的内存。 mr_mem_get函数由移植者实现，以取得引擎需要的内存。entry是SkyEngine入口参数。

Example

/*mrp code*/

#define IPADDR(a,b,c,d) (((uint32)a)<<24 | ((uint32)b)<<16 | ((uint32)c)<<8 | ((uint32)d))
int32 hSoc = 0;

hSoc = mrc_socket( MR_SOCK_STREAM, MR_IPPROTO_TCP );
mrc_connect( hSoc , IPADDR(119, 75, 218, 45), 80, MR_SOCKET_NONBLOCK);

See Also

mr_socket
mr_closeSocket


mr_closeSocket

int32 mr_closeSocket(int32 s)

Description
关闭socket。
Parameters

Name | Description
s | socket 句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

int32 hSoc = 0;

hSoc = mrc_socket( MR_SOCK_STREAM, MR_IPPROTO_TCP
  );
mrc_closeSocket( hSoc );

See Also

mr_socket


mr_recv

int32 mr_recv (int32 s, char *buf, int len)

Description
接收数据。
Parameters

Name | Description
s | socket 句柄
buf | 接收数据缓冲区
len | 缓冲区大小

Return Value

>=0 实际接收的数据大小
MR_FAILED 出错

Remarks

Example

/*mrp code*/

#define SOCKET_RECVBUFFER_SIZE 2048
static UCHAR sRecvBuffer[SOCKET_RECVBUFFER_SIZE]; //接收数据缓冲区

mrc_recv( hSoc, (PSTR)sRecvBuffer, SOCKET_RECVBUFFER_SIZE ); //hSoc为mr_socket创建的socket句柄

See Also

Copyright ?2005-20010 SKY-MOBI


mr_send

int32 mr_send(int32 s, const char *buf, int len)

Description
发送数据。
Parameters

Name | Description
s | socket 句柄
buf | 待发送数据buffer
len | 待发送数据长度

Return Value

>= 0 实际发送数据的字节数
MR_FAILED 出错

Remarks

Example

/*mrp code*/

#define SOCKET_SENDBUFFER_SIZE 2048
const char
  sSendBuffer[SOCKET_SENDBUFFER_SIZE ];

mrc_send( hSoc,
  sSendBuffer, SOCKET_SENDBUFFER_SIZE );
//hSoc为mr_socket创建的句柄

See Also

Copyright ?2005-20010 SKY-MOBI


mr_recvfrom

int32 mr_recvfrom(int32 s, char *buf, int len, int32 *ip, uint16 *port)

Description
接受数据报。
Parameters

Name | Description
s | socket 句柄
buf | 接收数据buffer
len | buffer长度
ip | 对端的IP地址
port | 对端的端口号

Return Value

>=0 实际接收到的数据字节数
MR_FAILED 出错

Remarks

Example

/*mrp code*/

#define SOCKET_RECVBUFFER_SIZE 2048
static UCHAR sRecvBuffer[SOCKET_RECVBUFFER_SIZE]; //接收数据缓冲区

mrc_recvfrom( hSoc, (PSTR)sRecvBuffer, SOCKET_RECVBUFFER_SIZE, (int32*)&ip, (uint16*)&port ); /*hSoc为mr_socket创建的句柄，ip为对端的IP地址，port为对端的端口号。*/

See Also

Copyright ?2005-20010 SKY-MOBI


mr_sendto

int32 mr_sendto(int32 s, const char *buf, int len, int32 ip, uint16 port)

Description
发送数据报。
Parameters

Name | Description
s | socket句柄
buf | 待发送数据buffer
len | 待发送数据字节数
ip | 对端IP
port | 对端端口

Return Value

>=0 实际发送的字节数
MR_FAILED 出错

Remarks

Example

/*mrp code*/

#define SOCKET_SENDBUFFER_SIZE 2048
const char sSendBuffer[SOCKET_SENDBUFFER_SIZE ];

mrc_sendto( hSoc, sSendBuffer, SOCKET_SENDBUFFER_SIZE, (int32*)&ip, (uint16*)&port ); /*hSoc为mr_socket创建的句柄，ip为对端的IP地址，port为对端的端口号。*/

See Also

Copyright ?2005-20010 SKY-MOBI


mr_menuCreate

int32 mr_menuCreate(const char * title, int16 num)

Description
创建菜单。
Parameters

Name | Description
title | 菜单的标题，unicode编码，网络字节序。
num | 菜单项的数目

Return Value

>0 菜单句柄
MR_FAILED 失败

Remarks

创建一个菜单，并返回菜单句柄，title是菜单的标题。

Example

/*mrp code*/

int32 hMenu = 0;
hMenu = mrc_menuCreate( (const
  char*)SGL_LoadString(STR_MENU), 18 );
//STR_MENU字符串资源ID

See Also

mr_menuShow


mr_menuSetItem

int32 mr_menuSetItem(int32 menu, const char *text, int32 index)

Description
设置菜单项。
Parameters

Name | Description
menu | 菜单句柄
text | 菜单项的名字，使用unicode编码，网络字节序。
index | 菜单项的index号，从0开始

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

在菜单里设置一个菜单项，参数index是该菜单项的序号，当用户选中某个菜单项时，把index号通过mr_event函数发送到SkyEngine中。

Example

/*mrp code*/
int32 hMenu = 0;
hMenu = mrc_menuCreate( (const char*)SGL_LoadString(STR_MENU), 18 ); //STR_MENU字符串资源ID
mrc_menuSetItem( hMenu, (const char*)SGL_LoadString(STR_MENU0), 0 ); //STR_MENU0字符串资源ID

See Also
mr_menuCreate


mr_menuShow

int32 mr_menuShow(int32 menu)

Description
显示菜单。
Parameters

Name | Description
menu | 菜单句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

显示菜单。当菜单显示时，如果用户选择了菜单上的某一项，系统将构造SkyEngine消息，通过mr_event函数传送给SkyEngine，消息类型为MR_MENU_SELECT，参数为该菜单项的index。如果用户选择了退出该菜单，系统将构造SkyEngine消息，通过mr_event函数传送给SkyEngine，消息类型为MR_MENU_RETURN。

Example

/*mrp code*/

int32 hMenu = 0;

hMenu = mrc_menuCreate( (const
  char*)SGL_LoadString(STR_MENU), 1 );
  //STR_MENU字符串资源ID
mrc_menuSetItem( hMenu, (const
  char*)SGL_LoadString(STR_MENU0), 0 );
  //STR_MENU0字符串资源ID
mrc_menuShow(hMenu);

//response the MR_MENU_SELECT
case MR_MENU_SELECT:
{
int32 index = wParam; //the selected menu item index
// your code
........
}

//response the MR_MENU_SELECT and MR_MENU_RETURN
case MR_MENU_RETURN:
{
//your code
.............
}

See Also

mr_menuCreate
mr_menuSetItem


mr_menuRelease

int32 mr_menuRelease(int32 menu)

Description
释放菜单。
Parameters

Name | Description
menu | 菜单句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_menuRelease( hMenu ); //hMenu为mrc_menuCreate创建的句柄

See Also

mr_menuCreate


mr_menuRefresh

int32 mr_menuRefresh(int32 menu)

Description
刷新菜单。
Parameters

Name | Description
menu | 菜单句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_menuRefresh( hMenu ); //hMenu为mrc_menuCreate创建的句柄

See Also

mr_menuCreate


mr_dialogCreate

int32 mr_dialogCreate(const char * title, const char * text, int32 type)

Description
创建对话框。
Parameters

Name | Description
title | 对话框的标题，unicode编码，网络字节序。
text | 对话框内容，unicode编码，网络字节序。
type 对话框类型：
MR_DIALOG_OK：对话框有“确定”键。
MR_DIALOG_OK_CANCEL：对话框有“确定”和“取消”键。
MR_DIALOG_CANCEL：对话框有 “取消”键。

Return Value

>0 对话框句柄
MR_FAILD 失败

Remarks

创建一个对话框，并返回对话框句柄。当对话框显示时，如果用户按了对话框上的某个键，系统将构造SkyEngine消息，通过mr_event函数传送给SkyEngine，消息类型为MR_DIALOG_EVENT，参数为该按键的ID。“确定”键ID为：MR_DIALOG_KEY_OK；“取消”键ID为：MR_DIALOG_KEY_CANCEL。

Example

/*mrp code*/

int32 hDialog = 0;
hDialog = mrc_dialogCreate( (const char*)SGL_LoadString(STR_DIALOG), (const char*)SGL_LoadString(STR_DIALOG), MR_DIALOG_OK_CANCEL ); //STR_DIALOG字符串资源ID

//response the MR_DIALOG_EVENT
case MR_DIALOG_EVENT:
{
if (wParam == MR_DIALOG_KEY_CANCEL)
{
//your code
........
}
else if (wParam == MR_DIALOG_KEY_OK)
{
//your code
........
}
}

See Also

mr_dialogRelease


mr_dialogRefresh

int32 mr_dialogRefresh(int32 dialog, const char * title, const char * text, int32 type)

Description
刷新对话框。
Parameters

Name | Description
dialog | 对话框的句柄
title | 对话框的标题，unicode编码，网络字节序。
text | 对话框内容，unicode编码，网络字节序。
type 若type为-1，表示type不变。
对话框类型：
MR_DIALOG_OK：对话框有“确定”键。
MR_DIALOG_OK_CANCEL：对话框有“确定”和“取消”键。
MR_DIALOG_CANCEL：对话框有 “取消”键。

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

int32 hDialog = 0;

hDialog = mrc_dialogCreate( (const char*)SGL_LoadString(STR_DIALOG), (const char*)SGL_LoadString(STR_DIALOG), MR_DIALOG_OK_CANCEL ); //STR_DIALOG字符串资源ID
mrc_dialogRefresh( hDialog, (const char*)SGL_LoadString(STR_DIALOGREFRESH), (const char*)SGL_LoadString(STR_DIALOGREFRESH), MR_DIALOG_OK_CANCEL ); //STR_DIALOGREFRESH被刷新的字符串资源ID

See Also

mrc_dialogCreate


mr_dialogRelease

int32 mr_dialogRelease(int32 dialog)

Description
释放对话框。
Parameters

Name | Description
dialog | 对话框句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_dialogRelease( hDialog ); //hDialog为mrc_dialogCreate创建的句柄

See Also

mr_dialogCreate


mr_textCreate

int32 mr_textCreate(const char * title, const char * text, int32 type)

Description
建立文本框。
Parameters

Name | Description
title | 文本框的标题，unicode编码，网络字节序。
text | 文本框内容，unicode编码，网络字节序。
type 文本框类型：
MR_DIALOG_OK：文本框有“确定”键。
MR_DIALOG_OK_CANCEL：文本框有“确定”和“取消”键。
MR_DIALOG_CANCEL：文本框有 “取消”键。

Return Value

>0 对话框句柄
MR_FAILED 失败

Remarks

创建一个文本框，并返回文本框句柄。文本框用来显示只读的文字信息。文本框和对话框并没有本质的区别，仅仅是显示方式上的不同，在使用上它们的主要区别是：对话框的内容一般较短，文本框的内容一般较长，对话框一般实现为弹出式的窗口，文本框一般实现为全屏式的窗口。也可以将对话框和文本框用相同方式实现。

文本框和对话框的消息参数是一样的。当文本框显示时，如果用户选择了文本框上的某个键，系统将构造SkyEngine消息，通过mr_event函数传送给SkyEngine，消息类型为MR_DIALOG_EVENT，参数为该按键的ID。“确定”键ID为：MR_DIALOG_KEY_OK；“取消”键ID为：MR_DIALOG_KEY_CANCEL。

Example

/*mrp code*/

int32 hText = 0;
hText = mrc_textCreate( (const char*)SGL_LoadString(STR_TEXT), (const char*)SGL_LoadString(STR_TEXT), MR_DIALOG_OK_CANCEL ); //STR_TEXT文本框显示字符串资源ID

//response the MR_DIALOG_EVENT
case MR_DIALOG_EVENT:
{
if (wParam == MR_DIALOG_KEY_CANCEL)
{
//your code
........
}
else if (wParam == MR_DIALOG_KEY_OK)
{
//your code
........
}
}

See Also
mr_textRelease


mr_textRefresh

int32 mr_textRefresh(int32 handle, const char * title, const char * text)

Description
刷新文本框。
Parameters

Name | Description
handle | 文本框的句柄
title | 文本框的标题，unicode编码，网络字节序。
text | 文本框内容，unicode编码，网络字节序。

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

int32 hText = 0;
hText = mrc_textCreate( (const char*)SGL_LoadString(STR_TEXT), (const char*)SGL_LoadString(STR_TEXT), MR_DIALOG_OK_CANCEL ); //STR_TEXT文本框显示字符串资源ID
mrc_textRefresh( hText, (const char*)SGL_LoadString(STR_TEXTREFRESH), (const char*)SGL_LoadString(STR_TEXTREFRESH) ); //STR_TEXTREFRESH文本框被刷新显示的字符串资源ID

See Also

mr_textCreate


mr_textRelease

int32 mr_textRelease(int32 text)

Description
释放文本框。
Parameters

Name | Description
text | 文本框句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_textRelease( hText ); //hText为mrc_textCreate创建的句柄

See Also

mr_textCreate


mr_editCreate

int32 mr_editCreate(const char * title, const char * text, int32 type, int32 max_size)

Description
创建编辑框。
Parameters

Name | Description
title | 编辑框的标题，unicode编码，网络字节序。
text | 编辑框的初始内容，unicode编码，网络字节序。
type 输入法类型：
MR_EDIT_ANY： 任何字符
MR_EDIT_NUMERIC： 数字
MR_EDIT_PASSWORD： 密码，用“*”显示
max_size | 最多可以输入的字符（unicode）个数，这里每一个中文、字母、数字、符号都算一个字符。

Return Value

>0 编辑框句柄
MR_FAILED 失败

Remarks

创建一个编辑框，并返回编辑框句柄。编辑框用来显示并提供用户编辑文字信息。text是编辑框显示的初始内容。
当编辑框显示时，如果用户选择了编辑框上的某个键，系统将构造SkyEngine消息，通过mr_event函数传送给SkyEngine，消息类型为MR_DIALOG_EVENT，参数为该按键的ID。“确定”键ID为：MR_DIALOG_KEY_OK；“取消”键ID为：MR_DIALOG_KEY_CANCEL。

Example

/*mrp code*/

int32 hEdit = 0;
hEdit = mrc_editCreate( (const char*)SGL_LoadString(STR_EDIT), (const char*)SGL_LoadString(STR_EDIT), MR_DIALOG_OK_CANCEL, 100 ); //STR_EDIT为编辑框初始内容的资源ID

//response the MR_DIALOG_EVENT
case MR_DIALOG_EVENT:
{
if (wParam == MR_DIALOG_KEY_CANCEL)
{
//your code
........
}
else if (wParam == MR_DIALOG_KEY_OK)
{
//your code
........
}
}

See Also

mr_editRelease


mr_editRelease

int32 mr_editRelease(int32 edit)

Description
释放编辑框。
Parameters

Name | Description
edit | 编辑框句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_editRelease( hEdit ); //hEdit为mrc_editCreate创建的句柄

See Also

mr_editCreate


mr_editGetText

const char* mr_editGetText(int32 edit)

Description
获取编辑框内容。
Parameters

Name | Description
edit | 编辑框句柄

Return Value

非NULL 编辑框内容的起始地址(编辑框的内容指针，大端unicode编码
NULL 返回

Remarks

获取编辑框内容，unicode编码。调用该函数后，SkyEngine平台会在平台内部建立一个内容的备份，调用者不需保证在编辑框释放后内容仍然有效。该函数会在编辑框释放之前调用。

Example

/*mrp code*/

const char *wstr = NULL;

wstr = mrc_editGetText( hEdit );
  //hEdit为mrc_editCreate创建的句柄

See Also

mr_editCreate


mr_winCreate

int32 mr_winCreate(void)

Description
创建可扩展窗体。
Parameters

Name Description

Return Value

>0 窗体句柄
MR_FAILED 失败

Remarks

创建一个可扩展窗体，并返回可扩展窗体句柄。可扩展窗体是一种可动态下载更新的窗体模式，可动态扩充功能，可以实现进度条、扩展控件、交互小应用等等强大的扩充功能。

可扩展窗体创建之后，需要将用户的按键和触摸屏事件构造成SkyEngine消息，通过mr_event函数传送给SkyEngine，按键事件的消息类型为MR_KEY_PRESS、MR_KEY_RELEASE，触摸屏事件的消息类型为MR_MOUSE_DOWN、MR_MOUSE_UP。

Example

/*mrp code*/

int32 hExtWnd = 0;
hExtWnd = mrc_winCreate();

See Also

mr_winRelease


mr_winRelease

int32 mr_winRelease(int32 win)

Description
释放窗体。
Parameters

Name | Description
win | 可扩展窗体句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example

/*mrp code*/

mrc_winRelease( hExtWnd ); //hExtWnd为mrc_winCreate创建的句柄

See Also

mr_winCreate


mr_printf

void mr_printf(const char *format, ...)

Description
调试信息打印。
Parameters

Name | Description
format | 格式化字符串

Return Value

无返回值。

Remarks

Example

/*mrp code*/

int32 width = 100, height = 1000, bit = 16;
mrc_printf( "Screen info:width = %d, height = %d, bit = %d.", width, height, bit );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_mem_get

int32 mr_mem_get (char** mem_base, uint32* mem_len)

Description
内存申请函数。
Parameters

Name | Description
mem_base | 返回的内存基地址
mem_len | 返回的内存长度

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

当引擎正常启动时，引擎取得系统内存资源。该函数在SkyEngine引擎启动时只会调用一次，一次性取得所有需要的内存。在SkyEngine引擎启动之后，SkyEngine引擎会自己管理内存资源。

Example
See Also

mr_mem_free


mr_mem_free

int32 mr_mem_free (char* mem, uint32 mem_len)

Description
内存释放接口。
Parameters

Name | Description
mem | 释放由mr_mem_get分配的内存
mem_len | 内存大小，mr_mem_get返回的值

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example
See Also

mr_mem_get


mr_exit

int32 mr_exit(void)

Description
退出应用。
Parameters

Name Description

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

当用户选择退出应用时，SkyEngine应用调用该函数，通知系统释放资源。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_getTime

uint32 mr_getTime(void)

Description
获取毫秒时间。
Parameters

Name Description

Return Value

当前的毫秒时间。

Remarks

获取系统时间，单位毫秒。系统时间可以以SkyEngine引擎启动之前的任意时刻为起始时间，返回从起始时间到目前经过的毫秒数。例如这个函数可以实现为返回系统启动后经过的毫秒数。

Example

/*mrp code*/

int32 tm = 0;
tm = mrc_getUptime();
mrc_printf( "time_ms = %d", tm );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_getDatetime

int32 mr_getDatetime(mr_datetime* datetime)

Description
获取当前的日期。
Parameters

Name | Description
datetime | 日期时间

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

获取系统日期时间。
mr_datetime格式如下：
typedef struct
{
uint16
  year;
  //年
uint8
  month;
  //月
uint8
  day;
  //日
uint8
  hour;
  //时，24小时制
uint8
  minute;
  //分
uint8
  second;
  //秒
}mr_datetime;

Example

/*mrp code*/

mr_datetime dt;
mrc_getDatetime( &dt );
mrc_printf( "Get date time is %d:%d:%d,%d:%d:%d", dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_getUserInfo

int32 mr_getUserInfo(mr_userinfo* info)

Description
获取手机相关信息。
Parameters

Name | Description
info | 手机信息

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

返回手机相关信息。
mr_userinfo数据结构：
typedef struct
{
uint8 IMEI[16]; //IMEI len eq 15
uint8 IMSI[16]; //IMSI len not more then 15
char manufactory[8]; //厂商名，最大7个字符，空字节填\0
char type[8]; //mobile type，最大7个字符，空字节填\0
uint32 ver; //移植版本, 参考移植版本号规则
uint8 spare[12]; //备用
}mr_userinfo;

Example

/*mrp code*/

mr_userinfo info;
mrc_getSysInfo( &info );
mrc_printf( "manufactory:%s,type:%s,version:%d,IMEI:%s,IMSI:%s", info.manufactory, info.type, info.ver, info.IMEI, info.IMSI );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_sleep

int32 mr_sleep(uint32 ms)

Description
让当前任务睡眠ms毫秒。方便调试的接口，可实现为空。
Parameters

Name | Description
ms | 睡眠时间，单位为毫秒。

Return Value

MR_SUCCESS 成功
MR_FAILED 失败

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


扩展接口(mr_plat/mr_platEx)

扩展接口

mr_plat和mr_platEx接口的主要目的是：在不对VM进行修改的前提下，可以扩展VM支持的功能，使得VM扩展功能不必在新增抽象接口。Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。

考虑到mr_plat和mr_platEx接口会使用MR_SUCCESS、MR_FAILED、MR_WAITING、MR_IGNORE等返回值来表示mr_plat和mr_platEx接口本身的执行情况，定义偏移MR_PLAT_VALUE_BASE = 1000，当mr_plat或mr_platEx需要返回（有限）整型数值时，加上偏移量MR_PLAT_VALUE_BASE。

之前已经存在了不少加MR_PLAT_VALUE_BASE作为返回值的接口，后续的接口不建议使用这个处理返回值的方法，这样会使返回值具有多重功能，而有可能1000加上这个值刚好就是MR_SUCCESS等里面的一个，将会导致错误。还有就是mr_plat接口和mr_platEx都具有扩展虚拟机的功能，在通常情况下，不在建议通过mr_plat来扩展，全部通过mr_platEx来扩展，这样做的好处在于同一个模块的功能不会一部分code是通过mr_palt调用的，而另一部分的code是通过mr_platEx来调用的。


mr_plat

int32 mr_plat(int32 code, int32 param)

Description
基本的平台调用接口，对应于应用层的mrc_plat接口。
Parameters

Name | Description
code | 扩展接口事件
param | 事件参数

Return Value

返回对应code事件的处理结果，MR_SUCCESS表示成功，MR_FAILED表示失败，MR_IGNORE表示对应的code.在老的接口上，有些code的返回值会加上MR_PLAT_VALUE_BASE = 1000，具体请参考每个code的详细定义。

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。code的说明详见附录A。对于移植层不支持的code，移植层需要返回MR_IGNORE以告知VM和APP。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx

int32 mr_platEx

(int32 code,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
扩展的平台调用接口，对应于应用层的mrc_platEx。
Parameters

Name | Description
code | 事件code
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

成功启动返回MR_SUCCESS,失败返回MR_FAILED，未实现返回MR_IGNORE.

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


code 定义

mr_plat/mr_platEx 事件定义

旧版本中的CODE范围定义

在老的版本中扩展接口code遵循着一下的范围约束。

code 范围 | 说明
0-99 | 展讯平台
100-199 | MTK平台
200-299 | ADI平台
300-999 | 保留
1000-10000 | 多平台通用
新版本中CODE的组织方式

新版本中，将code划分成2个部分，高16位表示 group, 低16位表示功能。这样有效的将功能按组进行划分，原来的全部code对应的group为0。


mr_plat(1) - 调节CPU频率

int32 mr_plat(int32 code = 1, int32 param)

Description
调节cpu频率。
Parameters

Name Description
param 1：36M
2：48M
3：72M
其他值：不变

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能。

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(2) - 获取平台可映射虚拟键数

int32 mr_plat(int32 code = 2, int32 param)

Description
获取平台可映射虚拟键数目。
Parameters

Name | Description
param | 无定义

Return Value

MR_PLAT_VALUE_BASE + 键数目
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(3) - 获取虚拟键状态

int32 mr_plat(int32 code = 3, int32 param)

Description
获取虚拟键对应的按下、弹起状态。
Parameters

Name | Description
param | 虚拟键的index

Return Value

MR_PLAT_VALUE_BASE + 0 弹起（un-pressed）
MR_PLAT_VALUE_BASE + 1 按下（pressed）
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(4) - nes特殊操作

int32 mr_plat(int32 code = 4, int32 param)

Description
nes特殊操作。
Parameters

Name Description
param 0：禁闭
1：恢复

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

关闭、恢复平台某些可能与nes模拟器冲突的资源。如：信息提示音、低压警告音等与nes的pcm播放冲突（iram资源。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(5) - 保存模拟器游戏积分

int32 mr_plat(int32 code = 5, int32 param)

Description
保存模拟器游戏积分（覆盖式保存）。
Parameters

Name | Description
param | 保存积分数目

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(6) - 读取模拟器游戏积分

int32 mr_plat(int32 code = 6, int32 param)

Description
读取模拟器游戏积分。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_WAITING 未初始化（即首次读写）
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(7) - 按键音开启关闭控制

int32 mr_plat(int32 code = 7, int32 param)

Description
按键音开启关闭控制。
Parameters

Name | Description
param | 0 关闭， 1 开启

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。code的说明详见附录A。对于移植层不支持的code，移植层需要返回MR_IGNORE以告知VM和APP。

Example

/*mrp code*/

mrc_plat( 7, 1 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(8) - 设置wap下载的.nes保存所使用的存储器

int32 mr_plat(int32 code = 8, int32 param)

Description
设置wap下载的.nes保存所使用的存储器。
Parameters

Name Description
param 各种盘符标志的定义与platEx（1204）必须相同，不同的是以ascii码值表示（不区分大小写），如：
‘B’ 或‘b’： 普通用户可操作存储盘（即可usb连接在PC上操作）
‘C’： 外插存储设备，如mmc，sd，t-flash等
‘D’： 第二外插存储设备

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(11) - 获取手机平台的mp3存储目录名称

int32 mr_platEx

(int32 code = 11,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取手机平台的mp3存储目录名称。
Parameters

Name | Description
input | 无
input_len | 无
output | 返回指向名称字串的指针（gb编码）
output_len | 返回名称字串的长度
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

char*pStor = NULL;
int32 len = 0;
mrc_platEx( 11, NULL, 0, (uint8**)&pStor, (int32*)&len, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(12) - 获取手机平台的picture存储目录名称

int32 mr_platEx

(int32 code = 12,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取手机平台的picture存储目录名称。
Parameters

Name | Description
input | 无
input_len | 无
output | 返回指向名称字串的指针（gb编码）
output_len | 输出参数大小（字节数）
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

char*pStor = NULL;
int32 len = 0;
mrc_platEx( 12, NULL, 0, (uint8**)&pStor, (int32*)&len, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1) - 创建一个单/多选菜单

int32 mr_platEx

(int32 code = 1,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
建一个单/多选list。
Parameters

Name | Description
input | MMIMR_LISTBOXSELECT_T结构指针
input_len | MMIMR_LISTBOXSELECT_T结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_FAILED 创建对象失败
其他 创建成功的对象的句柄.

Remarks

数据结构：
typedef struct
{
char *title; //标题(大端unicode 编码)
int16 itemNum; //list 的项目个数
int16 listType; //如下
}MMIMR_LISTBOXSELECT_T;
listType 的值：
0：MR_LIST_NO_ICON (不显示图标)
1：MR_LIST_NORMAL_ICON (一般的list，建议调用menu的接口来实现)
2：MR_LIST_SINGLE_SEL (单选框)
3：MR_LIST_MUTI_SEL (多选框)

Example

/*mrp code*/

MMIMR_LISTBOXSELECT_T list = { 0 };
int32 hMenu = 0;

list.itemNum = 18;
list.listType = MR_LIST_NO_ICON;
list.title = (char*)SGL_LoadString( STR_MENU );
hMenu = mrc_platEx( 1, (uint8*)&list, sizeof(MMIMR_LISTBOXSELECT_T), NULL, NULL, NULL );

See Also

mr_platEx(2)
mr_menuShow
mr_menuRelease


mr_platEx(2) - 设置菜单项

int32 mr_platEx

(int32 code = 2,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置菜单项。设置单/多选list中的item (调用创建接口后调用这个接口)。
Parameters

Name | Description
input | MMIMR_LISTBOXITEM_T 结构的指针
input_len | MMIMR_LISTBOXITEM_T 结构的大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

数据结构：
typedef struct
{
int32 menu; //list的句柄
char *text; //这一项的名称(大端unicode)
int32 index; //这一项在整个list中的位置(从0开始)
int32 selected; //这一项是否标记为选中(1：选中；0：未选中)
}MMIMR_LISTBOXITEM_T;。

Example

/*mrp code*/

MMIMR_LISTBOXITEM_T listItem = { 0 };

listItem.index = 0;
listItem.menu = hMenu; //mrc_platEx(1)创建的菜单句柄
listItem.selected = 0;
listItem.text = (char*)SGL_LoadString(STR_MENU0）；
mrc_platEx( 2, (uint8*)&listItem, sizeof(MMIMR_LISTBOXITEM_T), NULL, NULL, NULL );

See Also

mr_platEx(1)


mr_platEx(3)

int32 mr_platEx

(int32 code = 3,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
MR_LIST_CREATE_POP。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(4)

int32 mr_platEx

(int32 code = 4,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
MR_LIST_SET_ITEM_POP。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5)

int32 mr_platEx

(int32 code = 5,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
MR_LIST_SET_FOCUS。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(104) - 销毁窗口而不画屏幕

int32 mr_plat(int32 code = 104, int32 param)

Description
销毁窗口而不画屏幕。（BASE WIN以上的窗口都销毁）。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_IGNORE 不支持该功能

Remarks

这个接口会负责把base win以上的创建对象和申请的资源都释放掉，
要在启动另外一个应用之前调用这个接口，调用了这个接口之后只需
要销毁VM中的窗口，请不要再调用d_release 之类的释放本地接口
函数。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5101) - 修改本地UI的左右软键文本

int32 mr_platEx

(int32 code = 5101,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
修改菜单,TEXT,dialog等本地UI组件的左右软键文本。
Parameters

Name | Description
input | t_mr_setkeystr 数据结构
input_len | t_mr_setkeystr 数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

t_mr_setkeystr 数据结构:
typedef struct
{
int keypos;//位置 左键 = 0,右键=1.中间键=2;
char* keystr;//字符串指针
}t_mr_setkeystr;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1218) - 查询存储卡的状态

int32 mr_plat(int32 code = 1218, int32 param)

Description
查询存储卡的状态。
Parameters

Name | Description
param | 无

Return Value

存储卡状态的枚举如下：
enum
{
MR_MSDC_NOT_EXIST = MR_PLAT_VALUE_BASE,
MR_MSDC_OK,
MR_MSDC_NOT_USEFULL /*可能在usb模式导致无法操作t卡*/
};

Remarks

Example

/*mrp code*/

int32 GetTcardState(void)
{
return mrc_plat( 1218, 0 );
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1231) - 获得当前文件的指针的位置

int32 mr_plat(int32 code = 1231, int32 param)

Description
获得当前文件的指针的位置。
Parameters

Name | Description
param | 文件句柄

Return Value

MR_PLAT_VALUE_BASE+指针实际位置

Remarks

Example

/*mrp code*/

int32 GetFilePointPos(int32 fh)
  //fh为mrc_open打开的文件句柄
{
if (NULL ==
  fh)
return MR_FAILED;

/*1231:get
  file point pos*/
return mrc_plat( 1231, fh )
  - MR_PLAT_VALUE_BASE;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1204) - 切换目录

int32 mr_platEx

(int32 code = 1204,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
切换目录。
Parameters

Name | Description
input | 目录字符串指针
input_len | 目录字符串长度
output | 返回的路径字串缓冲。（GB编码）（只在输入为“Y”获取当前的路径设置的时候有效）
output_len | 返回的路径字串的长度。
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

功能：将SkyEngine的根目录切换至新目录。目录字符串如：”C:/App/”，第一个字符表示切换至的存储设备：（盘符不区分大小写，GB编码）
A： 普通用户不可见（不可操作）存储盘；
B： 普通用户可操作存储盘（即可usb连接在PC上操作）；
C： 外插存储设备，如mmc，sd，t-flash等；
D： 第二外插存储设备；
Y： 获取当前的路径设置，返回型如：”C:/App/”（即必须符合上述输入标准），gb编码；
Z： 返回应用刚启动时候的目录（后继子串参数无意义）；
X： 进入vm的根目录（后继子串参数无意义）。这个根目录必须放在用户不可见的，不能卸载的盘上。在这个根目录下可以保存一些设置信息，及收费信息等；
D～W： 保留。
第二、第三字符为“:/”，第四字符起为该存储设备上的目录名。

Example

/* mrp code*/

BOOL SwitchDisk(const char* strDisk)
  //strDisk为目录字符串,如"A:/","B:/"
{
int
  ret=MR_FAILED;
unsigned char*
  output=NULL;
int32 output_len=0;
#ifdef WIN32
return
  FALSE;
#endif
ret=mrc_platEx(
  1204, (uint8*)strDisk, mrc_strlen(strDisk), &output, &output_len, NULL
  );
return ret;
}

BOOL GetDir(char* strDir)
{
int32 ret=MR_FAILED;
int32 len;
unsigned char* pDir=NULL;
#ifdef WIN32
return FALSE;
#endif
ret =mrc_platEx( 1204, (uint8*)"Y", 1, &pDir, &len, NULL );
mrc_memcpy( (void*)strDir, (void*)pDir, len );
return ret;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1305) - 获得指定盘符的剩余空间

int32 mr_platEx

(int32 code = 1305,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得指定盘符的剩余空间大小。
Parameters

Name | Description
input | 盘符标记（不区分大小写ASCII）
input_len | 字符串长度
output | T_DSM_FREE_SAPCE结构指针
output_len | T_DSM_FREE_SAPCE结构长度
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能
注：要得到以byte 为单位的大小值可以通过 account×unit 得到.

Remarks

Typedef struct
{
uint32 total;
  //总的大小
uint32 tunit;
  //总大小的单位
uint32 account;
  //剩余空间的大小
uint32 unit;
  //剩余大小的单位
}T_DSM_FREE_SAPCE

Unit：
1 ：单位是 byte
1024 ：单位是 k byte
1024x1024 ：单位是 m byte
1024x1024x1024：单位是 g byte

Example

/*mrp code*/

T_DSM_FREE_SAPCE *getInfo = NULL;
char *disk = NULL;
int32 len = 0;

 disk = "A";
mrc_platEx( 1305, (uint8*)disk, sizeof(char),
  (uint8**)&getInfo, (int32*)&len, NULL
  );
mrc_printf( "Info:totalSpace=%d/%d,
  freeSpace=%d/%d",
getInfo->total, getInfo->tunit,
  getInfo->account, getInfo->unit );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1306) - 获取存储设备的名称

int32 mr_platEx

(int32 code = 1306,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
用来获取厂商自己设置的A、B、C、D、等存储设备的名称，例如：B设备名字为“U盘”。如果查询的设备不存在则返回MR_FAILED。（展讯接口）
Parameters

Name | Description
input | 盘符标记（不区分大小写ASCII）
input_len | 字符串长度
output | 设备名称，Unicode编码，以双0结尾， 比如 “U盘”。
output_len | 设备名称的字节长度（byte），包括结尾符双0的长度。
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

int32 len = 0;
const char* pDisk = "D:/";
char* pName = NULL;
char name[60] = { 0 };

mrc_platEx( 1306, (uint8*)pDisk, strlen(pDisk), (uint8**)&pName, (int32*)&len, NULL );
wstr2str( (PCWSTR)pName, (PSTR)&name[0], sizeof(name) ); //unicode to string.
mrc_printf( "Dir name: %s", name );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1001) - 查询socket的连接状态

int32 mr_plat(int32 code = 1001, int32 param)

Description
异步connect状态查询。
Parameters

Name | Description
param | socket句柄

Return Value

MR_SUCCESS 连接成功
MR_FAILED 连接失败
MR_WAITING 连接中
MR_IGNORE 不支持该功能

Remarks

轮询 socket connect 状态（主要用于TCP的异步连接）。

Example

/*mrp code*/

mrc_plat( 1001, hSoc ); //hSoc为socket句柄

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1002) - 设置socket的连接等待时间

int32 mr_plat(int32 code = 1002, int32 param)

Description
设置socketconnect等待时间，“废止“。
Parameters

Name | Description
param | 超时时间，单位ms

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1003) - 绑定一个socket到本机端口

int32 mr_platEx

(int32 code = 1003,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
绑定一个socket到本机端口（udp）。
Parameters

Name | Description
input | mr_bind_st 数据结构指针
input_len | mr_bind_st 数据结构长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

mr_bind_st 数据结构：
typedef struct
{
int32 socket; //socket 句柄
int32 port; //端口号
}mr_bind_st;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1226) - 获取PLMN

int32 mr_platEx

(int32 code = 1226,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得当前网络的id。
Parameters

Name | Description
input | 无
input_len | 无
output | 网络id（字符串ascii）
output_len | id数据的长度
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1327) - 查询WIFI是否可用

int32 mr_plat(int32 code = 1327, int32 param)

Description
查询WIFI是否可用，这里的可用是只已经连上热点。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 表示WIFI可用
MR_FAILED 不可用
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1328) - 设置是否使用WIFI联网

int32 mr_plat(int32 code = 1328, int32 param)

Description
设置是否使用WIFI联网。
Parameters

Name Description
param

0：表示不使用WIFI
非0：表示通过WIFI访问网络

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(6004) - 查询最后一次联网时间

int32 mr_platEx

(int32 code = 6004,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
查询当前SIM卡的最后一次联网时间。
Parameters

Name | Description
input | mr_datetime数据结构指针
input_len | mr_datetime数据结构长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1003) - 激活后台程序到前台

int32 mr_plat(int32 code = 1003, int32 param)

Description
将后台程序切换到前台运行。
Parameters

Name | Description
param | 要激活到前台的应用的appid

Return Value

MR_SUCCESS 激活成功
MR_FAILED 激活失败
MR_IGNORE 不支持该功能

Remarks

通知移植层将后台运行的应用激活到前台来运行。当激活后，移植层将通过mr_event()这个函数来通知应用。

注：mr_event 通知应用的参数说明：
mr_event(MR_LOCALUI_EVENT, MR_LOCALUI_ACTIVE, 0);
MR_LOCALUI_EVENT 10
MR_LOCALUI_ACTIVE 2

Example

/*mrp code*/

int32 AwakeApp(int32 appid)
{
int32 ret = MR_FAILED;
ret = mrc_plat( 1003, appid );
if (ret == MR_SUCCESS)
{
/*唤醒成功需要停止后台icon的闪动，这里建议在mr_event(MR_LOCALUI_EVENT, MR_LOCALUI_APPRESUME, 0)函数中进行调用本接口，这样可以做到主动唤醒和被动唤醒都可以关闭后台icon的闪动。*/

mrc_plat(1006,appid);

}
return ret;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1004) - 切换到后台运行

int32 mr_platEx

(int32 code = 1004,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
后台运行，通知移植层本应用需要后台运行。
Parameters

Name | Description
input | mr_backstage_st 数据结构指针
input_len | mr_backstage_st 数据结构长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 启动成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

mr_backstage_st 数据结构：
typedef struct
{
int32 appid; //app id
uint8 describe[20]; //应用标志符 - "ipqq"
uint8* param; //预留扩展用
}mr_backstage_st;

Example

/*mrp code*/

int32 MINApp(int32 appid)
{
mr_backstage_st  backRunIn;
int32
  ret;

memset(
  &backRunIn, 0, sizeof(mr_backstage_st)
  );
backRunIn.appid =
  appid;
  //当前移植层只做了appid的判断，用于区分是QQ还是其他产品，从而根据appid显示不同的icon。
ret = mrc_platEx( 1004, (uint8*)&backRunIn, sizeof(mr_backstage_st), 0, 0,
  0 );
return
ret;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1005) - 在状态栏上显示图标

int32 mr_platEx

(int32 code = 1005,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
显示一张图片，请求移植层显示一张图片（图片显示的位置由移植来确定，可能在idle，或者icon条，或者两个地方都显示等等情况）。
Parameters

Name | Description
input | mr_pic_req 数据结构指针
input_len | mr_pic_req 数据结构长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

mr_pic_req 数据结构：
typedef struct
{
int32
  appid;
int32
  time;
int32 img_type;
int32
  img_size;
int32 width;
int32 height;
uint16 color;
uint8 *buff;
uint8 destId;
}mr_pic_req;

参数说明：
appid：请求画图的应用的id。
time：图片闪动的时间，单位是：ms（毫秒）；如果为0 表示不用闪动。
img_type：图片类型
0：BMP 图片；1：jpg 图片；2：png 图片；3：gif 图片
如果是bmp图片的话，buffer 指向的是解压后的点阵数据信息。
img_size：buff 这个指针指向的空间的大小。
color： 透明色（bmp 图片时候起作用）。
buff： 图片数据。
destId：图片显示位置
0：表示画idle下的一个小图标
1：画idle下的整个背景

根据不同的timer大小，底层将确定进行怎样的操作
timer： 0 ：显示icon但不闪动（如果是QQ显示在线图标）
1000：闪动的显示icon（如果是QQ显示在线图标）
1：显示离开状态的QQ头像（QQ专用）
2：显示隐身状态的QQ头像（QQ专用）
5：MRSTAR平台专用，用于mrp通知移植层，当前QQ已经启动可以实现end键转后台（QQ专用）；
1001：显示离开状态的QQ头像（QQ专用）
1002：显示隐身状态的QQ头像（QQ专用）
-1：为显示离线状态的QQ头像（QQ专用）

Example

/*mrp code*/

void QQStateIconFicker(int32 appid, int32 timer)
{
mr_pic_req picture;
memset(&picture,0,sizeof(mr_pic_req));
picture.appid=appid;
picture.time = timer;
picture.img_type = 0;
picture.color= BM_TRANSPARENT;
picture.destId = 0;
mrc_platEx(1005,(uint8*)&picture, sizeof(mr_pic_req), 0, 0, 0);

}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1006) - 隐藏状态栏上的图标

int32 mr_plat(int32 code = 1006, int32 param)

Description
停止在idle上显示图标或者idle背景。
Parameters

Name | Description
param | appid

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

int32 HideStateIcon(int32 appid)
{
int32 ret = mrc_plat(1006,appid);
return ret;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1326) - 控制状态栏显示

int32 mr_plat(int32 code = 1326, int32 param)

Description
控制idle界面状态栏是否显示。
Parameters

Name Description
param 1：显示状态栏
0：关闭或者不显示状态栏

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1326, 1 ); //显示状态栏
mrc_plat( 1326, 0 ); //不显示状态栏

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1391) - 查询是否支持后台接口

int32 mr_plat(int32 code = 1391, int32 param)

Description
查询移植层是否支持后台运行接口。
Parameters

Name | Description
param | appid

Return Value

MR_SUCCESS 表示支持
MR_FAILED 不支持
MR_IGNORE 不支持该功能

Remarks

如果该移植版本支持后台运行，那么返回的是MR_SUCCESS 。当前版本没有进行任何的条件判断。

Example

       /*mrp
code*/

int32 GetBackStageSupport(int32 appid)
{
int32 ret =
mrc_plat(1391,appid);
return ret;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(6000) - 查询桌面气泡框是否支持

int32 mr_platEx

(int32 code = 6000,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
查询是否支持气泡框接口。
Parameters

Name | Description
input | 无
input_len | 无
output | int32 指针，为1 表示禁止长在线后台显示，为0表示运行显示。
output_len | 无
cb | 无

Return Value

MR_SUCCESS 支持后台气泡框
MR_FAILED 不支持后台气泡框
MR_IGNORE 不支持该接口

Remarks

Example

/*mrp code*/

BOOL CheckSupportTipInfo(void)
{
int32 *output =
  NULL;
re = mrc_platEx( 6000, NULL, 0,
  (uint8**)&output, NULL, NULL );
if (re ==
  MR_SUCCESS)
{
if((int32)output)
return
  FALSE;
return
  TRUE;
}
return
FALSE;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(6001) - 显示桌面气泡框

int32 mr_platEx

(int32 code = 6001,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
显示气泡框。
Parameters

Name | Description
input | mr_backstage_tipinfo_t 数据结构指针
input_len | mr_backstage_tipinfo_t 数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

mr_backstage_tipinfo_t数据结构：
typedef struct
{
uint32 style;
   /*0为浮动的，1为模态的*/
uint8*
  icon_path;     /*icon 文件名*/
int16
  icon_width,
  icon_height;
  /*图片宽高*/
uint8*
  title;
   /*对话框标题*/
uint8*
  content;
  /*对话框内容*/
uint8*
  lsk;
  //当style为模态时，设置左软键字串。
uint8*
  rsk;
   //当style为模态时，设置右软键字串。
}mr_backstage_tipinfo_t;

当style为模态时，按左右软键会有mr_event事件：
第一个参数为：MR_EVENT_IDLE_WIDGET
第二个参数为：MR_WIDGET_EVENT_LSK 或 MR_WIDGET_EVENT_RSK。

Example

/*mrp code*/

mr_backstage_tipinfo_t tipInfo = { 0 };

tipInfo.style = 1;
tipInfo.content = (uint8*)SGL_LoadString( STR_TIPINFO
  );
tipInfo.title = (uint8*)SGL_LoadString( STR_TIPINFOTITLE
  );
tipInfo.lsk = (uint8*)SGL_LoadString( STR_OK );
tipInfo.rsk =
  (uint8*)SGL_LoadString( STR_CANCEL);
mrc_platEx( 6001,
  (uint8*)&tipInfo, sizeof(mr_backstage_tipinfo_t), NULL, NULL, NULL
);

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(6002) - 隐藏桌面气泡框

int32 mr_platEx

(int32 code = 6002,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
隐藏气泡框。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_platEx( 6002, NULL, 0, NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(6003) - 是否在待机界面

int32 mr_platEx

(int32 code = 6003,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
是否在待机界面。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1323) - 设置异步转后台

int32 mr_platEx

(int32 code = 1323,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置异步转后台。
Parameters

Name | Description
input | mr_backstage_async_runinfo_t 数据结构指针
input_len | mr_backstage_async_runinfo_t 数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

mr_backstage_async_runinfo_t 数据结构：
typedef struct
{
uint32
  bSilence;
  //客户端不需要提示是否退出后台应用
uint32
  nTimerInterval;
  //延时启动的毫秒数
}mr_backstage_async_runinfo_t;

Example

/*mrp code*/

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(6005) - 停止异步转后台

int32 mr_platEx

(int32 code = 6005,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
停止异步转后台。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(201x) - 设备初始化

int32 mr_platEx

(int32 code = 201x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设备初始化。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

platEx(201x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2014, NULL, 0, NULL, NULL, NULL ); //Init media device for playing AMR audio.

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(202x) - 加载一个文件

int32 mr_platEx

(int32 code = 202x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
加载一个文件。
Parameters

Name | Description
input | 文件名指针，文件名可以带路径
input_len | 文件名长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

platEx(202x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2024, (uint8*)"testsound_amr.amr", strlen( "testsound_amr.amr",), NULL, NULL, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1302) - 设置声音的大小

int32 mr_plat(int32 code = 1302, int32 param)

Description
设置声音的大小，播放时候的大小，非情景模式中的设置。
Parameters

Name | Description
param | 声音的大小（sky Engine中音量等级）

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1302, 5 ); //set volum be 5.

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(203x) - 加载缓冲数据

int32 mr_platEx

(int32 code = 203x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
加载缓冲数据。
Parameters

Name | Description
input | LOAD_AUDIO_DATA_REQ数据结构指针
input_len | LOAD_AUDIO_DATA_REQ数据结构长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

LOAD_AUDIO_DATA_REQ数据结构：
typedef struct
{
char* buf;
  //缓冲数据指针
int32 buf_len;
  //缓冲数据长度
}LOAD_AUDIO_DATA_REQ;

platEx(203x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

#define audioBufLen 150*1024

void GetAudioDataStream(const char* name, char*buf, int32
  buflen)
{
MR_FILE_HANDLE fh;
int len=0;

   fh = mrc_open( name, MR_FILE_RDONLY);
len =
  mrc_read( fh, (void *)buf, buflen );
mrc_close(fh);
}

void LoadBufferData(void)
{
char *buffer = NULL;
LOAD_AUDIO_DATA_REQ loadReq;

buffer = (char*)malloc( audioBufLen );
GetAudioDataStream( "testsound_amr.amr", buffer, audioBufLen );
loadReq.buf = buffer;
loadReq.buf_len = audioBufLen;
mrc_platEx( 2034, (uint8*)&loadReq, sizeof(LOAD_AUDIO_DATA_REQ), NULL, NULL, NULL );
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(204x) - 从当前的位置开始播放

int32 mr_platEx

(int32 code = 204x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
从当前的位置开始播放。
Parameters

Name | Description
input 当input_len为0时不需要使用回调函数，当input_len>=12时，input传入一个结构，结构定义如下：
input：struct指针
input_len：struct长度
struct：
typedef struct
{
ACI_PLAY_CB cb; //回调函数
int32 loop;
int32 block;
};
typedef void (*ACI_PLAY_CB)(int32 result);
回调有两种可能的返回值：
ACI_PLAY_COMPLETE 0 //播放结束
ACI_PLAY_ERROR 1 //播放时遇到错误
Loop ：1，循环播放；0，不循环播放；2，PCM循环播放模式
Block：1，阻塞播放；0，不阻塞播放
input_len | 0 或 >=12
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

platEx(204x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2044, NULL, 0, NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(205x) - 暂停播放

int32 mr_platEx

(int32 code = 205x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
暂停播放。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

platEx(205x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2054, NULL, 0, NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(206x) - 继续播放

int32 mr_platEx

(int32 code = 206x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
继续播放。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

platEx(206x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2064, NULL, 0, NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(207x) - 停止播放

int32 mr_platEx

(int32 code = 207x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
停止播放。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

platEx(207x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2074, NULL, 0, NULL, NULL, NULL );//207X stop play;

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(208x) - 关闭设备

int32 mr_platEx

(int32 code = 208x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
关闭设备。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

platEx(208x),其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2084, NULL, 0, NULL, NULL, NULL );//207X stop play;

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(209x) - 获取当前设备的状态

int32 mr_platEx

(int32 code = 209x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取当前设备的状态。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_PLAT_VALUE_BASE + 设备状态值 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

返回成功得到状态，其枚举值为:
typedef enum tag_PLAY_STATE
{
MR_MEDIA_IDLE= 1001, /*1.not init; 2.device closed*/
MR_MEDIA_INITED = 1002,
MR_MEDIA_LOADED = 1003, /*1.loaded not play; 2.play finished; 3.play stoped*/
MR_MEDIA_PLAYING = 1004, /*1.playing*/
MR_MEDIA_PAUSED = 1005, /*1.paused*/
MR_MEDIA_SUSPENDED = 1006,
MR_MEDIA_SUSPENDING = 1007
}PLAY_STATE;

Remarks

platEx(209x),其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

int32 devState = 0;
devState = mrc_platEx( 2094, NULL, 0, NULL, NULL, 0
  );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(210x) - 设置播放位置，已经播放了多少时间

int32 mr_platEx

(int32 code = 210x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置播放位置，已经播放了多少时间。
Parameters

Name | Description
input

T_SET_PLAY_POS数据结构指针

input_len | T_SET_PLAY_POS数据结构长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

T_SET_PLAY_POS数据结构：
typedef struct
{
int32 pos; //单位,秒s.
}T_SET_PLAY_POS;

platEx(210x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

T_SET_PLAY_POS setPos = { 0 }；
setPos.pos = 18;
mrc_platEx( codes, (uint8*)&setPos, sizeof(setPos), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(211x) - 设置播放位置，已经播放了相对文件或者缓冲的起始位置的偏移量

int32 mr_platEx

(int32 code = 211x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置播放位置，已经播放了相对文件或者缓冲的起始位置的偏移量。
Parameters

Name | Description
input

T_SET_PLAY_POS数据结构指针

input_len | T_SET_PLAY_POS数据结构长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用ACI_STATUS命令轮询以获取状态
MR_IGNORE 不支持该功能

Remarks

T_SET_PLAY_POS数据结构：
typedef struct
{
int32 pos; //pos：相对文件或者缓冲的起始位置的偏移量
}T_SET_PLAY_POS;

platEx(211x),其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

T_SET_PLAY_POS setPos = { 0 }；
setPos.pos = 100;
mrc_platEx( codes, (uint8*)&setPos, sizeof(setPos), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(212x) - 获取整首歌的播放时间

int32 mr_platEx

(int32 code = 212x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取整首歌的播放时间。
Parameters

Name | Description
input | 无
input_len | 无
output | T_MEDIA_TIME数据结构指针
output_len | T_MEDIA_TIME数据结构大小（字节数）
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持改功能

Remarks

T_MEDIA_TIME数据结构：
typedef struct
{
int32 pos;
}T_MEDIA_TIME;

platEx(212x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

T_MEDIA_TIME *time = NULL;
int32 len = 0;
mrc_platEx( 2123, NULL, 0, (uint8**)&time, (int32*)&len, NULL );
mrc_printf( "Media total time: %d.", time->pos );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(213x) - 获取当前的播放进度时间

int32 mr_platEx

(int32 code = 213x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取当前的播放进度时间。
Parameters

Name | Description
input | 无
input_len | 无
output | T_MEDIA_TIME数据结构指针
output_len | T_MEDIA_TIME数据结构大小（字节数）
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_MEDIA_TIME数据结构：
typedef struct
{
int32 pos; //pos：当前的播放进度时间，单位s。
}T_MEDIA_TIME;

platEx(213x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

T_MEDIA_TIME *time = NULL;
int32 len = 0;
mrc_platEx( 2133, NULL, 0, (uint8**)&time, (int32*)&len, NULL );
mrc_printf( "Media total time: %d.", time->pos );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(215x) - 获取当前的播放进度时间

int32 mr_platEx

(int32 code = 215x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取当前的播放进度时间。
Parameters

Name | Description
input | 无
input_len | 无
output | T_MEDIA_TIME数据结构指针
output_len | T_MEDIA_TIME数据结构大小（字节数）
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_MEDIA_TIME数据结构：
typedef struct
{
int32 pos;//pos：当前的播放进度时间，单位ms。
}T_MEDIA_TIME;

platEx(215x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

T_MEDIA_TIME *time = NULL;
int32 len = 0;
mrc_platEx( 2153, NULL, 0, (uint8**)&time, (int32*)&len, NULL );
mrc_printf( "Media total time: %d.", time->pos );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(216x) - 多媒体模块释放

int32 mr_platEx

(int32 code = 216x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
多媒体模块释放。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

platEx(216x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(220x) - 占用IRAM

int32 mr_platEx

(int32 code = 220x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
占用IRAM。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

platEx(220x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(221x) - 释放IRAM

int32 mr_platEx

(int32 code = 221x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
释放IRAM。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

platEx(221x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(222x) - 多通道加载

int32 mr_platEx

(int32 code = 222x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
多通道加载。加载一个用于多通道的数据，目前只支持wav和midi 。
Parameters

Name | Description
input | T_BG_PLAY_REQ数据结构指针
input_len | T_BG_PLAY_REQ数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_FAILED 失败
其他 一个句柄，以后操作（播放，停止，关闭）都使用本句柄。

Remarks

T_BG_PLAY_REQ数据结构：
typedef struct
{
uint8
  *data;
uint32 len;
int32 loop;
}T_BG_PLAY_REQ;

platEx(222x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

void GetAudioDataStream(const char* name,char*buf,int32
  buflen)
{
MR_FILE_HANDLE fh;
int
  len=0;
fh = mrc_open( name, MR_FILE_RDONLY );
len = mrc_read( fh, (void *)buf, buflen );
mrc_close(
  fh) ;
}

int32 MultipathLoadAudio(const char*
  audioName)
{
T_BG_PLAY_REQ loadReq;
int32
  len_wav;
char *buffer_wav = NULL;
int32
  hdl_wav = 0;

len_wav = mrc_getLen( audioName
  );
buffer_wav = (char*)malloc(len_wav);
GetAudioDataStream( audioName, buffer_wav, len_wav );

loadReq.data = buffer_wav;
loadReq.len =
  len_wav;
loadReq.loop = 0;
hdl_wav =
  mrc_platEx( 2222, (uint8*)&loadReq, sizeof(T_BG_PLAY_REQ), NULL, NULL,
  NULL );
if(MR_FAILED == re)
return MR_FAILED;
else
return hdl_wav;
}

See Also

mr_platEx(225x)


mr_platEx(223x) - 多通道播放已经加载的数据

int32 mr_platEx

(int32 code = 223x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
播放已经加载的数据。
Parameters

Name | Description
input | 指向句柄的值
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

platEx(223x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2232, (uint8*)&hdl_wav, sizeof(int32), NULL, NULL, NULL); //hdl_wav 为platEx（222x）得到的句柄

See Also

mr_platEx(222x)
mr_platEx(224x)


mr_platEx(224x) - 多通道播放停止

int32 mr_platEx

(int32 code = 224x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
停止播放。
Parameters

Name | Description
input | 指向句柄的值
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

platEx(224x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2242, (uint8*)&hdl_wav, sizeof(int32), NULL, NULL, NULL); //hdl_wav 为platEx（222x）得到的句柄

See Also

mr_platEx(222x)
mr_platEx(223x)


mr_platEx(225x) - 多通道释放已经加载的数据

int32 mr_platEx

(int32 code = 225x,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
释放已经加载的数据。
Parameters

Name | Description
input | 指向句柄的值
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

platEx(225x)其中x代表音频类型的枚举值：
typedef enum tagT_MEDIA_TYPE
{
MEDIA_MIDI = 1,
MEDIA_WAVE,
MEDIA_MP3,
MEDIA_AMR,
MEDIA_PCM,
MEDIA_M4A,
MEDIA_AAC,
MEDIA_LYRIC,
MEDIA_UNKNOW
}T_MEDIA_TYPE;

Example

/*mrp code*/

mrc_platEx( 2252, (uint8*)&hdl_wav, sizeof(int32), NULL, NULL, NULL); //hdl_wav 为platEx（222x）得到的句柄

See Also

mr_platEx(222x)


mr_plat(102) - 告知驱动PCM写入数据的绝对地址

int32 mr_plat(int32 code = 102, int32 param)

Description
告知驱动PCM写入数据的绝对地址。（再根据数据的其实地址可以算出等待播放的数据量。）
Parameters

Name | Description
param | PCM写入数据的绝对地址

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

mr_plat(103)


mr_plat(103) - 取得PCM数据已经播放掉的数据的绝对地址

int32 mr_plat(int32 code = 103, int32 param)

Description
取得PCM数据已经播放掉的数据的绝对地址。
Parameters

Name | Description
param | 无

Return Value

MR_IGNORE 不支持该功能
其他 已经播放的的绝对地址

Remarks

Example
See Also

mr_plat(102)


mr_plat(2500) - 初始化

int32 mr_plat(int32 code = 2500, int32 param)

Description

初始化camera。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

关闭camera，调用mr_plat(2504)。

Example
See Also

mr_plat(2504)


mr_platEx(2501) - 进入预览状态

int32 mr_platEx

(int32 code = 2501,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
启动camera，进入preview状态。
Parameters

Name | Description
input | T_DSM_LAUNCH_CAMERA_REQ数据结构指针
input_len | T_DSM_LAUNCH_CAMERA_REQ 数据结构大小
output | T_DSM_COMMON_RSP数据结构指针地址
output_len | T_DSM_COMMON_RSP数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_DSM_LAUNCH_CAMERA_REQ数据结构:
typedef struct
{
uint32 preview_x;
  /*预览区域的x坐标*/
uint32 preview_y;
   /*预览区域的y坐标*/
uint32
  preview_w;    /*预览区域的宽度*/
uint32
  preview_h;     /*预览区域的高度*/
uint32
  img_w;
   /*拍下来的照片的宽度*/
uint32
  img_h;          /*拍下来的照片的高度*/
uint32 img_qt;
  /*图片质量*/
}T_DSM_LAUNCH_CAMERA_REQ;

T_DSM_COMMON_RSP数据结构：
typedef
  struct
{
int32 p1;
  /*camera句柄*/
int32 p2;
  /*osd层buffer*/
}T_DSM_COMMON_RSP;

Example

/*mrp code*/

T_DSM_LAUNCH_CAMERA_REQ launch={0};
T_DSM_COMMON_RSP *cameRSP =
  NULL;
int32 len;

launch.preview_h =
  SCREEN_HEIGHT;
launch.preview_w = SCREEN_WIDTH;
launch.preview_x =
  0;
launch.preview_y = 0;
launch.img_h = 32;
launch.img_w =
  32;
launch.img_qt =  0;
mrc_platEx( 2501, (uint8*)&launch,
  sizeof ( T_DSM_LAUNCH_CAMERA_REQ ), (uint8**)&cameRSP, (int32*)&len,
  NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(2502) - 暂停

int32 mr_plat(int32 code = 2502, int32 param)

Description
暂停camera。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 2502, 0 );

See Also

mr_plat(2503)


mr_plat(2503) - 恢复

int32 mr_plat(int32 code = 2503, int32 param)

Description
恢复camera到preview状态。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 2503, 0 );

See Also

mr_plat(2502)


mr_plat(2504) - 关闭

int32 mr_plat(int32 code = 2504, int32 param)

Description
关闭camera。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

mr_plat(2500)


mr_platEx(2505) - 拍照

int32 mr_platEx

(int32 code = 2505,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
拍照。
Parameters

Name | Description
input 指向是否连拍的标志。
*input的值：
1：连拍；
2：单拍，需要调用mr_plat(2503)重新进入preview状态。
input_len | sizeof(int32)
output | T_DSM_COMMON_RSP数据结构指针地址
output_len | T_DSM_COMMON_RSP数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_DSM_COMMON_RSP数据结构：
typedef struct
{
int32 p1;    /*图片buffer*/
int32 p2;
/*图片大小*/
}T_DSM_COMMON_RSP;

Example

/*mrp code*/

uint8 mode = 0;
int32 len = 0；
T_DSM_COMMON_RSP *photo = NULL;
mrc_platEx( 2505, (uint8*)&mode, sizeof (mode), (uint8**)&photo, (int32*)&len， NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(2506) - 获得缩放等级

int32 mr_plat(int32 code = 2506, int32 param)

Description
获得camera的缩放等级。
Parameters

Name | Description
param | 无

Return Value

缩放等级+ MR_PLAT_VALUE_BASE

Remarks

Example

/*mrp code*/

int32 zGrade = 0;
zGrade = mrc_plat( 2506, 0 );
mrc_printf( "Zoom grade = %d.", (zGrade - MR_PLAT_VALUE_BASE) );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(2507) - 放大

int32 mr_plat(int32 code = 2507, int32 param)

Description
camera 放大。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 2507, 0 );

See Also

mr_plat(2508)


mr_plat(2508) - 缩小

int32 mr_plat(int32 code = 2508, int32 param)

Description
camera 缩小。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 2508, 0 );

See Also

mr_plat(2507)


mr_platEx(2509) - 获取预览数据

int32 mr_platEx

(int32 code = 2509,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取预览数据。一旦调用该接口，则会获取预览数据，即使关闭了camera，任然在获取当前激活层的数据。
Parameters

Name | Description
input | 无
input_len | 无
output | T_LAYER_INFO数据结构指针地址
output_len | T_LAYER_INFO数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

typedef struct
{
int32 handle;
int32 w;
int32 h;
char *buffer;
}T_LAYER_INFO;

Example

/*mrp code*/

T_LAYER_INFO *pdata = NULL;
mrc_platEx( 2509, NULL, 0, (uint8**)&pdata, (int32*)&len, NULL );
mrc_printf( "Get data: data.Buffer = %d, data.height = %d, data.weight = %d",
pdata->buffer, pdata->h, pdata->w );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(2700) - 开始录音

int32 mr_platEx

(int32 code = 2700,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
开始录音。
Parameters

Name | Description
input | T_DSM_VOICE_REC_REQ数据结构指针
input_len | T_DSM_VOICE_REC_REQ 数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

数据结构如下：
typedef struct
{
char *src; /*录音文件的相对文件名*/
int32 src_len;
int32 src_type;
int32 format; /* MR_SOUND_WAV , MR_SOUND_PCM , MR_SOUND_AMR ,
MR_SOUND_AMR_WB */
}T_DSM_VOICE_REC_REQ;

注：录音的异常情况通过mr_event通知，mr_event的参数如下：
第一个：MR_ERROR_EVENT
第二个：DSM_ERROR_NO_SPACE：空间满
MED_RES_TERMINATED：被中断
DSM_ERROR_UNKNOW：未知错误
第三个：0

Example

/*mrp code*/

#define NAME "OATfile\\record_test\\rec_get_pcmdata.pcm"
#define
  REC_LEN 10*1024;

T_DSM_VOICE_REC_REQ recReq = { 0
  };
recReq.src = NAME ;
recReq.format = MR_SOUND_WAV
  ;
recReq.src_len = REC_LEN;
recReq.src_type =
  SRC_STREAM;
mrc_platEx( 2700, (uint8*)&recReq, sizeof(
  T_DSM_VOICE_REC_REQ ), NULL, NULL, 0 );

See Also

mr_plat(2703)


mr_plat(2701) - 暂停

int32 mr_plat(int32 code = 2701, int32 param)

Description
录音暂停。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 2701 , 0 );

See Also

mr_plat(2702)


mr_plat(2702) - 恢复

int32 mr_plat(int32 code = 2702, int32 param)

Description
录音恢复。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 2702 , 0 );

See Also

mr_plat(2701)


mr_plat(2703) - 停止

int32 mr_plat(int32 code = 2703, int32 param)

Description
录音停止。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 2703 , 0 );

See Also

mr_platEx(2700)


mr_platEx(2704) - 获得PCM数据

int32 mr_platEx

(int32 code = 2704,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
在录音启动的接口中将格式设置成pcm，src_type设置为SRC_STREAM的情况下，调用本接口来获得pcm数据 。
Parameters

Name | Description
input | 无
input_len | 无
output | pcm数据地址
output_len | pcm数据的长度
cb | 处理完本次pcm数据后需要调用的函数

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

uint8* pdata = NULL;
int32 re, len = 10;
MR_PLAT_EX_CB cb = NULL;

re = mrc_platEx( 2704 , NULL, 0, (uint8**)&pdata, &len, &cb
  );
if(MR_SUCCESS == re)
{
cb( (uint8*)pdata, len
  );
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3001) - 获取图片信息

int32 mr_platEx

(int32 code = 3001,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取图片信息。
Parameters

Name | Description
input | MRAPP_IMAGE_ORIGIN_T数据结构指针
input_len | MRAPP_IMAGE_ORIGIN_T数据结构大小
output | IMAGE_INFO数据结构指针地址
output_len | IMAGE_INFO数据结构大小（字节数）
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

MRAPP_IMAGE_ORIGIN_T数据结构：
typedef struct
{
char *src; //当type为SRC_STREAM时，此参数为图片数据流buffer；当type为SRC_NAME时，此参数为图片相对路径
int32 len; //当type为SRC_STREAM时，此参数为图片数据流buffer大小；当type为SRC_NAME时，此参数为0
int32 src_type; // 枚举MRAPP_SRC_TYPE
} MRAPP_IMAGE_ORIGIN_T;
typedef enum
{
SRC_NAME = 0, //传到移植接口的是文件名
SRC_STREAM //传到移植接口的是图片数据流
}MRAPP_SRC_TYPE;

IMAGE_INFO数据结构：
typedef struct
{
int32 width; //图片的宽度
int32 height; //图片的高度
}IMAGE_INFO;

Example

/*mrp code*/

#define GIF_ANIMATION
  "OATfile\\pic_test\\shoes.gif"

MRAPP_IMAGE_ORIGIN_T image_origin =
  {0};
IMAGE_INFO *imageinfo = NULL;
int32
  leninfo;

image_origin.src = (char
  *)imagebuffer;
   //图片数据流buffer
image_origin.len =
  mrc_getLen(GIF_ANIMATION);
   //图片大小
image_origin.src_type = SRC_STREAM;
mrc_platEx( 3001, (uint8* )&image_origin, sizeof(image_origin),
  (uint8**)&imageinfo, (int32*)&leninfo, NULL );
mrc_printf( "get
  info: width=%d,height=%d", imageinfo->width, imageinfo->height
);

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3002) - 图片解码

int32 mr_platEx

(int32 code = 3002,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
解码一张图片，将解完的数据放到dest所指的buf中，并通知vm解码结果。（gif不在此中处理）。
Parameters

Name | Description
input | MRAPP_IMAGE_DECODE_T数据结构指针
input_len | MRAPP_IMAGE_DECODE_T数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_WAITING 异步模式，需要使用命令轮询以获取状态
MR_IGNORE 不支持该功能
(注1：特殊平台可能有特殊返回值处理，当前不做考虑)

Remarks

MRAPP_IMAGE_DECODE_T数据结构：
typedef struct
{
char *src; //当type为SRC_STREAM时，此参数为图片数据流buffer；当type为SRC_NAME时，此参数为图片相对路径
int32 len; //当type为SRC_STREAM时，此参数为图片数据流buffer大小；当type为SRC_NAME时，此参数为0
int32 width; //图片宽度
int32 height; //图片高度
int32 src_type; // 枚举MRAPP_SRC_TYPE
char *dest; //rgb565 bmp格式(注1)
} MRAPP_IMAGE_DECODE_T;
typedef enum
{
SRC_NAME = 0, //传到移植接口的是文件名
SRC_STREAM //传到移植接口的是图片数据流
}MRAPP_SRC_TYPE;

Example

/*mrp code*/

#define PNG_IMAGE "OATfile\\pic_test\\image.png"
U8
  imagebuffer[100*100];
MRAPP_IMAGE_DECODE_T decodeReq = {0};

memset(
  imagebuffer, 0, sizeof(imagebuffer) );
decodeReq.src = (char
  *)PNG_IMAGE;
decodeReq.src_type = SRC_NAME;
decodeReq.width =
  24;
decodeReq.height = 24;
decodeReq.dest = (char*)imagebuffer;

mrc_platEx( 3002, (uint8* )&decodeReq, sizeof(MRAPP_IMAGE_DECODE_T), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3003) - 查询解码状态

int32 mr_platEx

(int32 code = 3003,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
取得图像解码状态（异步解码）。未实现。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 解码成功
MR_FAILED 解码失败
MR_WAITING 正在解码
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3004) - gif解码

int32 mr_platEx

(int32 code = 3004,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
解码一张GIF图片，将解完的数据放到dest所指的buf中，并通知vm解码结果。
Parameters

Name | Description
input | MRAPP_IMAGE_DECODE_T数据结构指针
input_len | MRAPP_IMAGE_DECODE_T数据结构大小
output | MRAPP_GIF_HEADER数据结构指针地址
output_len | MRAPP_GIF_HEADER数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

MRAPP_IMAGE_DECODE_T数据结构：
typedef struct
{
char *src; //文件名或是数据流的buf的地址，如果是文件名，是GB格式
int32 len; //src所指的buf的大小
int32 width; //用于图片显示的区域的宽度
int32 height; //用于图片显示的区域的高度
int32 src_type; // 枚举MRAPP_SRC_TYPE
char *dest; //解码后的图片数据存放的buffer
}MRAPP_IMAGE_DECODE_T;
typedef enum
{
SRC_NAME = 0, //传到移植接口的是文件名
SRC_STREAM //传到移植接口的是图片数据流
}MRAPP_SRC_TYPE;

MRAPP_GIF_HEADER数据结构：
typedef struct
{
int32 id;
int32
  width;
     //gif的宽度
int32
  height;
    //gif的高度
int
  bg_color;                                  //gif的背景色
int
  frame_count;
   //gif总的帧数
MRAPP_GIF_FRAME_INFO_T
  *first;
  //指向gif的第一帧的数据结构
}MRAPP_GIF_HEADER;

MRAPP_GIF_FRAME_INFO_T数据结构：
typedef
  struct _MRAPP_GIF_FRAME_INFO
{
int32
  fwidth;
     //本帧的宽度
int32
  fheight;
    //本帧的高度
int32
  ox;                                            //本帧左上角的x坐标(相对逻辑屏幕)
int32
  oy;
    //本帧左上角的y坐标(相对逻辑屏幕)
int32
  transparent_flag;
   //是否需要透明显示
int32
  transparent_color;                       //透明显示的颜色
int32
  delay_time;
   //本帧显示的时间
char
  *pdata;
  //解压好的图片数据
struct _MRAPP_GIF_FRAME_INFO *next;
  //指向下一帧的数据结构
}MRAPP_GIF_FRAME_INFO_T;

Example

/*mrp code*/

#define GIF_IMAGE "OATfile\\pic_test\\image.gif"
U8
  imagebuffer[100*100];
MRAPP_IMAGE_DECODE_T decodeReq =
  {0};
MRAPP_GIF_HEADER *decodeRsp = NULL;
int32 len;

memset(
  imagebuffer, 0, sizeof(imagebuffer) );
decodeReq.src = (char
  *)GIF_IMAGE;
decodeReq.src_type = SRC_NAME;
decodeReq.width =
  40;
decodeReq.height = 40;
decodeReq.dest = (char*)imagebuffer;

mrc_platEx( 3004, (uint8* )&decodeReq, sizeof(MRAPP_IMAGE_DECODE_T), (uint8**)&decodeRsp, (int32*)&len, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3005) - 释放gif解码资源

int32 mr_platEx

(int32 code = 3005,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
应用通知移植层释放先前gif解码（mr_platEx（3004））用到的资源。
Parameters

Name | Description
input | MRAPP_GIF_HEADER数据结构指针（mr_platEx（3004）返回的指针）
input_len | MRAPP_GIF_HEADER数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

MRAPP_GIF_HEADER *decodeRsp; //由mr_platEx(3004)得到
mrc_platEx( 3005, (uint8*)decodeRsp, sizeof(MRAPP_GIF_HEADER), NULL, NULL, NULL );

See Also

mr_platEx(3004)


mr_platEx(3007) - 绘制BUFFER

int32 mr_platEx

(int32 code = 3007,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
绘制BUFFER。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

  case
  MR_DRAW_BUFFER:
{
gdi_enable_non_block_blt();
GDI_LAYER_SET_FLAG(gdi_act_layer,GDI_LAYER_FLAG_FROZEN);
gdi_layer_blt_previous(0,0,
  GDI_LAYER.width-1,GDI_LAYER.height-1);
GDI_LAYER_CLEAR_FLAG(gdi_act_layer,GDI_LAYER_FLAG_FROZEN);
return MR_SUCCESS;
}

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3008) - 获取ACTIVE LAYER

int32 mr_platEx

(int32 code = 3008,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取active layer。
Parameters

Name | Description
input | 无
input_len | 无
output | gdi_layer_struct数据结构指针
output_len | gdi_layer_struct数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

gdi_layer_struct数据结构：
typedef struct gdi_layer_struct
{
U32 id;
U32 flag;
S32 layer_size; /* bytes */
U16 width, height;
S16 clipx1, clipy1, clipx2, clipy2;
U8 *buf_ptr;
U8 *buf_ptr1;
gdi_rect_struct clips[GDI_LAYER_CLIP_STACK_COUNT];
U8 bits_per_pixel;
U8 clips_top;
U8 cf; /* real color format ( it will support LCD color format) */
U8 vcf; /* virtual color format (convert to standard color format) */
gd_get_pixel_func get_pixel;
gd_put_pixel_func put_pixel;
struct gdi_layer_struct *child;
struct gdi_layer_struct *sib;
S32 offset_x, offset_y;
S32 offset_x_from_parent;
S32 offset_y_from_parent;
void (*lazy_free_callback)(gdi_handle handle);
gdi_color background; /* only valide when this layer is the "lowest" layer. */
U8 rotate_value;
} gdi_layer_struct;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3009) - DMA异步刷屏

int32 mr_platEx

(int32 code = 3009,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
直接刷屏（非阻塞形式)。
Parameters

Name | Description
input | 显示缓冲
input_len | 缓冲大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

uint16* lcdBuf = NULL;
lcdBuf = (uint16*)w_getScreenBuffer(); //获取屏幕缓冲buffer
mrc_platEx( 3009, (uint8* )lcdBuf, 0, NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3010) - 直接调用平台接口将图片绘制到指定的矩形内

int32 mr_platEx

(int32 code = 3010,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
直接调用平台接口将图片绘制到指定的矩形内。
Parameters

Name | Description
input | T_DRAW_DIRECT_REQ数据结构指针
input_len | T_DRAW_DIRECT_REQ数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_DRAW_DIRECT_REQ数据结构：
typedef struct
{
char
  *src;          //当type为SRC_STREAM时，此参数为图片数据流buffer；当type为SRC_NAME时，此参数为图片相对路径
int32
  src_len;
  //当type为SRC_STREAM时，此参数为图片数据流buffer大小；当type为SRC_NAME时，此参数为0
int32
  src_type;
  //枚举MRAPP_SRC_TYPE
int32
  ox;            //图片显示在x坐标
int32
  oy;
  //图片显示在y坐标
int32
  w;
  //图片宽度
int32
  h;
  //图片高度
}T_DRAW_DIRECT_REQ;
typedef enum
{
SRC_NAME = 0,
  //传到移植接口的是文件名
SRC_STREAM
   //传到移植接口的是图片数据流
}MRAPP_SRC_TYPE;

Example

/*mrp code*/

#define GIF_IMAGE "OATfile\\pic_test\\image.gif"

T_DRAW_DIRECT_REQ
  draw_direct = {0};
draw_direct.h =  40;
draw_direct.w =
  40;
draw_direct.ox = 10;
draw_direct.oy = 10;
draw_direct.src =(char
  *)GIF_IMAGE;
draw_direct.src_type = SRC_NAME ;

mrc_platEx( 3010, (uint8*)&draw_direct, sizeof( T_DRAW_DIRECT_REQ), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3011) - 显示gif动画

int32 mr_platEx

(int32 code = 3011,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
显示gif动画的接口（直接绘制到frame buffer上），每一帧动画的显示也都是mtk来控制。动画停止需要调用mr_plat(3012,句柄)。
Parameters

Name | Description
input | T_DRAW_DIRECT_REQ数据结构指针
input_len | T_DRAW_DIRECT_REQ数据结构大小
output | T_DSM_COMMON_RSP数据结构指针
output_len | T_DSM_COMMON_RSP数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_DRAW_DIRECT_REQ数据结构：
typedef struct
{
char
  *src;          //当type为SRC_STREAM时，此参数为图片数据流buffer；当type为SRC_NAME时，此参数为图片相对路径
int32
  src_len;
  //当type为SRC_STREAM时，此参数为图片数据流buffer大小；当type为SRC_NAME时，此参数为0
int32
  src_type;
  //枚举MRAPP_SRC_TYPE
int32
  ox;            //图片显示在x坐标
int32
  oy;
  //图片显示在y坐标
int32
  w;
  //图片宽度
int32
  h;
  //图片高度
}T_DRAW_DIRECT_REQ;
typedef enum
{
SRC_NAME = 0,
  //传到移植接口的是文件名
SRC_STREAM
   //传到移植接口的是图片数据流
}MRAPP_SRC_TYPE;

T_DSM_COMMON_RSP数据结构：
typedef struct
{
int32
  p1;
   //gif动画句柄
}T_DSM_COMMON_RSP;

Example

/*mrp code*/

#define GIF_ANIMATION "OATfile\\pic_test\\shoes.gif"
T_DRAW_DIRECT_REQ
  drawReq = { 0 };
T_DSM_COMMON_RSP *drawRes = NULL;
int32
  leninfo;

drawReq.h = 40;
drawReq.w = 40;
drawReq.ox =
  10;
drawReq.oy = 10;
drawReq.src =(char
  *)GIF_ANIMATION;
drawReq.src_type = SRC_NAME ;

mrc_platEx( 3011, (uint8*)&drawReq, sizeof( T_DRAW_DIRECT_REQ), (uint8**)&drawRes, &leninfo, NULL );
mrc_refreshScreen( (int16)10, (int16)10, (uint16)40, (uint16)40 );

See Also

mr_plat(3012)


mr_plat(3012) - 停止动画

int32 mr_plat(int32 code = 3012, int32 param)

Description
动画停止。
Parameters

Name | Description
param | mr_platEx(3011)得到的句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

T_DSM_COMMON_RSP *drawRes;
   //由mr_platEx(3011)得到
mrc_plat( 3012, drawRes->p1);

See Also

mr_platEx(3011)


mr_platEx(3013)

int32 mr_platEx

(int32 code = 3013,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
MR_SET_ANIMATION_BLT_CB，未实现。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3014) - 绘制mtk资源格式的图片

int32 mr_platEx

(int32 code = 3014,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
绘制mtk资源格式的图片。
Parameters

Name | Description
input | T_DRAW_DIRECT_REQ数据结构指针
input_len | T_DRAW_DIRECT_REQ数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

输入数据结构：
typedef struct
{
char
  *src;
int32 src_len;
int32 src_type;
int32
  ox;
int32 oy;
int32
  w;
int32 h;
}T_DRAW_DIRECT_REQ;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(3015) - 绘制mtk资源格式的gif动画

int32 mr_platEx

(int32 code = 3015,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
绘制mtk资源格式的gif动画。动画停止需要调用mr_plat(3012,句柄)。
Parameters

Name | Description
input | T_DRAW_DIRECT_REQ数据结构指针
input_len | T_DRAW_DIRECT_REQ数据结构大小（字节数）
output | T_DSM_COMMON_RSP数据结构指针
output_len | T_DSM_COMMON_RSP数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_DRAW_DIRECT_REQ数据结构：
typedef struct
{
char
  *src;          //当type为SRC_STREAM时，此参数为图片数据流buffer；当type为SRC_NAME时，此参数为图片相对路径
int32
  src_len;
  //当type为SRC_STREAM时，此参数为图片数据流buffer大小；当type为SRC_NAME时，此参数为0
int32
  src_type;
  //枚举MRAPP_SRC_TYPE
int32
  ox;            //图片显示在x坐标
int32
  oy;
  //图片显示在y坐标
int32
  w;
  //图片宽度
int32
  h;
  //图片高度
}T_DRAW_DIRECT_REQ;
typedef enum
{
SRC_NAME = 0,
  //传到移植接口的是文件名
SRC_STREAM
   //传到移植接口的是图片数据流
}MRAPP_SRC_TYPE;

T_DSM_COMMON_RSP数据结构：
typedef struct
{
int32
  p1;
   //gif动画句柄
}T_DSM_COMMON_RSP;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


电话本接口

电话本事件说明：

 电话本的操作事件采用mr_event的形式通知上层应用， mr_event(p1,p2,p3)的三个参数的具体说明如下：
p1 = 14
p2 = 0：添加条目
1：读取条目/*未使用*/
2：修改条目
3：删除条目
p3 = MR_FAILED 操作失败
MR_SUCCESS 操作成功

电话本宏值定义：

#define MR_PHB_SUCCESS (1000)
#define MR_PHB_ERROR (1001)
#define MR_PHB_READY (1002)
#define MR_PHB_NOT_SUPPORT (1003)
#define MR_PHB_NOT_READY (1004)
#define MR_PHB_NOT_FOUND (1005)
#define MR_PHB_STORAGE_FULL (1006)
#define MR_PHB_NUMBER_TOO_LONG (1007)
#define MR_PHB_OUT_OF_INDEX (1008)
#define MR_PHB_MAX_NAME (36*2)
#define MR_PHB_MAX_NUMBER (48*2)
#define MR_PHB_MAX_SEARCH_PATTERN (60*2)


mr_platEx(4011) - 电话本搜索

int32 mr_platEx

(int32 code = 4011,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
搜索电话本。
Parameters

Name | Description
input | T_MR_PHB_SEARCH_REQ数据结构指针
input_len | T_MR_PHB_SEARCH_REQ数据结构大小
output | T_MR_PHB_SEARCH_RSP数据结构指针
output_len | T_MR_PHB_SEARCH_RSP数据结构大小
cb | 无

Return Value

MR_PHB_NOT_READY (4+MR_PLAT_VALUE_BASE) //电话本初始化中
MR_PHB_SUCCESS (0+MR_PLAT_VALUE_BASE) //搜索成功
MR_PHB_NOT_FOUND (5+MR_PLAT_VALUE_BASE) //2种情况，1：搜索参数为空；2：未找到

Remarks

T_MR_PHB_SEARCH_REQ数据结构：
typedef struct
{
S8 pattern[MR_PHB_MAX_SEARCH_PATTERN]; /*搜索条件大端unicode*/
U16 search_type; /*搜索类型，1：通过名称；2：通过号码*/
U16 storage; /*不关心*/
}T_MR_PHB_SEARCH_REQ;

T_MR_PHB_SEARCH_RSP数据结构：
typedef struct
{
U16
  index;
  /*在列表中的位置，起始是 0*/
U16
  store_index;
  /*在sim卡或者手机中物理的位置*/
T_MR_PHB_ENTRY phb_entry;
  /*具体信息*/
}T_MR_PHB_SEARCH_RSP;
T_MR_PHB_ENTRY数据结构：
typedef struct
{
S8 name[MR_PHB_MAX_NAME];
S8 number[MR_PHB_MAX_NUMBER];
S8 homeNumber[MR_PHB_MAX_NUMBER];
S8 officeNumber[MR_PHB_MAX_NUMBER];
S8 faxNumber[MR_PHB_MAX_NUMBER];
S8 emailAddress[MR_PHB_MAX_NUMBER];
}T_MR_PHB_ENTRY;

电话本接口中对应的参数的定义：
#define MR_PHB_MAX_NAME (36*2) //暂时定位24个字节,12个汉字.
#define MR_PHB_MAX_NUMBER (48*2)//暂时定位可输入40个字节.40个数字
#define MR_PHB_MAX_SEARCH_PATTERN (60*2)

Example

/*mrp code*/

#define SEEK_NAME  "seekPHB"
T_MR_PHB_SEARCH_REQ serReq = { 0
  };
T_MR_PHB_SEARCH_RSP *serRsp = NULL;
int32
  len;

serReq.search_type = 1;
str2wstr( (PCSTR)SEEK_NAME,
  (PWSTR)serReq.pattern,(Sint32)MR_PHB_MAX_SEARCH_PATTERN );
mrc_platEx(
  4011, (uint8*)&serReq, sizeof ( T_MR_PHB_SEARCH_REQ ),
  (uint8**)&serRsp, &len, NULL) ;

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(4012) - 电话本编辑

int32 mr_platEx

(int32 code = 4012,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
修改，删除，添加电话本条目。
Parameters

Name | Description
input | T_MR_PHB_SET_ENTRY_REQ数据结构
input_len | T_MR_PHB_SET_ENTRY_REQ数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_PHB_SUCCESS (0+MR_PLAT_VALUE_BASE) 请求已经发出
MR_PHB_ERROR 请求发送失败
注：这个操作是一个异步的过程，操作的结构会通过mr_event的形式上送。
具体看事件说明电话本接口。

Remarks

T_MR_PHB_SET_ENTRY_REQ数据结构：
typedef struct
{
U16
  storage;
  //信息存储的位置，sim卡，还是手机
U16
  index;
  //要修改的条目在列表中的索引（0开始），如果是0xfffff表示增加一个条目。
T_MR_PHB_ENTRY
  entry;
  //具体的信息
}T_MR_PHB_SET_ENTRY_REQ;
注：当具体信息中的号码和名称为空的时候表示要删除index指向的那个条目。
T_MR_PHB_ENTRY数据结构：
typedef
  struct
{
S8 name[MR_PHB_MAX_NAME];
S8 number[MR_PHB_MAX_NUMBER];
S8 homeNumber[MR_PHB_MAX_NUMBER];
S8 officeNumber[MR_PHB_MAX_NUMBER];
S8 faxNumber[MR_PHB_MAX_NUMBER];
S8 emailAddress[MR_PHB_MAX_NUMBER];
}T_MR_PHB_ENTRY;

电话本接口中对应的参数的定义：
#define MR_PHB_MAX_NAME (36*2) //暂时定位24个字节,12个汉字.
#define MR_PHB_MAX_NUMBER (48*2)//暂时定位可输入40个字节.40个数字
#define MR_PHB_MAX_SEARCH_PATTERN (60*2)

Example

/*mrp code*/

#define ADD_NAME "addPHB"
#define ADD_NUMEBER "56231023"
T_MR_PHB_SET_ENTRY_REQ setReq = { 0 };
T_MR_PHB_SET_ENTRY_RSP *setRsp = NULL;
int32 len;

memset( &setReq, 0 , sizeof ( T_MR_PHB_SET_ENTRY_REQ ) );
str2wstr( (PCSTR)ADD_NUMEBER, (PWSTR)setReq.entry.number,(Sint32)MR_PHB_MAX_NUMBER );
str2wstr( (PCSTR)ADD_NAME, (PWSTR)setReq.entry.name,(Sint32)MR_PHB_MAX_NAME );
setReq.index = (U16)0xffff; //means add item in phone book.
setReq.storage = 3;
mrc_platEx(4012, (uint8*)&setReq, sizeof ( T_MR_PHB_SET_ENTRY_REQ ), (uint8**)&setRsp, &len, NULL);

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(4016) - 获取条目信息

int32 mr_platEx

(int32 code = 4016,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得电话本中指定的一个条目的信息。
Parameters

Name | Description
input | T_MR_PHB_GET_ENTRY_REQ数据结构
input_len | T_MR_PHB_GET_ENTRY_REQ数据结构大小
output | T_MR_PHB_GET_ENTRY_RSP数据结构指针
output_len | T_MR_PHB_GET_ENTRY_RSP数据结构大小
cb | 无

Return Value

MR_PHB_OUT_OF_INDEX (1008) 索引越界
MR_PHB_SUCCESS (1000) 读取成功
MR_PHB_NOT_READY (1004) /*电话本初始化中*/

Remarks

T_MR_PHB_GET_ENTRY_REQ数据结构：
typedef struct
{
U16 index;
   //条目在列表中的索引
U16
  storage;
   //条目保存的位置。
}T_MR_PHB_GET_ENTRY_REQ;
注：此处的index
  是相对于具体的存储位置而言的，不是在列表中的位置。

T_MR_PHB_GET_ENTRY_RSP数据结构：
typedef
  struct
{
T_MR_PHB_ENTRY
  entry;
  //本条目的具体信息
}T_MR_PHB_GET_ENTRY_RSP;
T_MR_PHB_ENTRY数据结构：
typedef
  struct
{
S8 name[MR_PHB_MAX_NAME];
S8 number[MR_PHB_MAX_NUMBER];
S8 homeNumber[MR_PHB_MAX_NUMBER];
S8 officeNumber[MR_PHB_MAX_NUMBER];
S8 faxNumber[MR_PHB_MAX_NUMBER];
S8 emailAddress[MR_PHB_MAX_NUMBER];
}T_MR_PHB_ENTRY;

电话本接口中对应的参数的定义：
#define MR_PHB_MAX_NAME (36*2) //暂时定位24个字节,12个汉字.
#define MR_PHB_MAX_NUMBER (48*2)//暂时定位可输入40个字节.40个数字
#define MR_PHB_MAX_SEARCH_PATTERN (60*2)

Example

/*mrp code*/

T_MR_PHB_GET_ENTRY_REQ getReq = { 0 };
T_MR_PHB_GET_ENTRY_RSP *getRsp =
  NULL;
int32 len;

getReq.index = 0;
getReq.storage =
  3;
mrc_platEx(4016, (uint8*)&getReq, sizeof ( T_MR_PHB_SEARCH_REQ ),
  (uint8**)&getRsp, &len, NULL);

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(4017) - 拷贝记录

int32 mr_plat(int32 code = 4017, int32 param)

Description
拷贝一条记录。（没实现）
Parameters

Name Description
param

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(4021) - 设置本机号码

int32 mr_platEx

(int32 code = 4021,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
添加本机号码记，指的是电话本的 MSISDN 区。（无实现）
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(4022) - 获取本机号码

int32 mr_plat(int32 code = 4022, int32 param)

Description
获得本机号码。（无实现）
Parameters

Name Description
param

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(4031) - 删除所有记录

int32 mr_plat(int32 code = 4031, int32 param)

Description
删除所有记录。（无实现）
Parameters

Name Description
param

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(4032) - 获取电话本条数

int32 mr_platEx

(int32 code = 4032,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得电话本的条数。
Parameters

Name | Description
input | T_MR_PHB_GET_COUNT_REQ数据结构指针
input_len | T_MR_PHB_GET_COUNT_REQ数据结构大小
output | T_MR_PHB_GET_COUNT_RSP数据结构指针
output_len | T_MR_PHB_GET_COUNT_RSP数据结构大小
cb | 无

Return Value

MR_PHB_SUCCESS (1000) 获得记录成功
MR_PHB_NOT_READY (1004) 电话本初始化中
MR_PHB_NOT_SUPPORT (1003) 输入参数错误

Remarks

T_MR_PHB_GET_COUNT_REQ数据结构：
typedef struct
{
int32
  storage;
  /*1：sim卡电话本；2：手机电话本；3；全部*/
}T_MR_PHB_GET_COUNT_REQ;

T_MR_PHB_GET_COUNT_RSP数据结构：
typedef struct
{
int32
  count;
  /*记录的个数*/
}T_MR_PHB_GET_COUNT_RSP;

Example

/*mrp code*/

T_MR_PHB_GET_COUNT_REQ getReq;
T_MR_PHB_GET_COUNT_RSP *getRsp;
int32 len;

getReq.storage = 3;
mrc_platEx( 4032, (uint8*)&getReq, sizeof ( T_MR_PHB_GET_COUNT_REQ ), (uint8**)&getRsp, &len, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(4033) - 获取电话本操作状态

int32 mr_platEx

(int32 code = 4033,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得电话本操作的状态。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_PHB_NOT_READY （1004） 初始化中
MR_PHB_READY （1002） 可以进行操作

Remarks

Example

/*mrp code*/

int32 state;
state = mrc_platEx( 4033, NULL, 0, NULL, NULL, NULL
);

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(4041) - 创建平台电话本浏览对象

int32 mr_platEx

(int32 code = 4041,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
创建平台的电话本浏览对像。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 创建浏览对象成功
MR_FAILED 创建浏览对象失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_platEx( 4041, NULL, 0, NULL, NULL, NULL );

See Also

mr_platEx(4043)


mr_platEx(4042) - 获得选中记录信息

int32 mr_platEx

(int32 code = 4042,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得选中的一个电话本记录的信息。
Parameters

Name | Description
input | 无
input_len | 无
output | T_MR_PHB_ENTRY 结构指针
output_len | T_MR_PHB_ENTRY 结构大小
cb | 无

Return Value

MR_SUCCESS 获得信息成功
MR_FAILED 获得信息失败
MR_IGNORE 不支持该功能

注：选中还是返回的操作将由MR_LOCALUI_EVENT（10）事件传递给VM：
0：MR_LOCALUI_OK （表示用户选择了一个文件）；
1：MR_LOCALUI_CANCEL（表示用户选择退出浏览这个功能）。

Remarks

T_MR_PHB_ENTRY数据结构：
typedef struct
{
S8 name[MR_PHB_MAX_NAME];
S8 number[MR_PHB_MAX_NUMBER];
S8 homeNumber[MR_PHB_MAX_NUMBER];
S8 officeNumber[MR_PHB_MAX_NUMBER];
S8 faxNumber[MR_PHB_MAX_NUMBER];
S8 emailAddress[MR_PHB_MAX_NUMBER];
}T_MR_PHB_ENTRY;

定义：
#define MR_PHB_MAX_NAME     (36*2)
#define MR_PHB_MAX_NUMBER        (48*2)
#define MR_PHB_MAX_SEARCH_PATTERN
(60*2)

Example

/*mrp code*/

T_MR_PHB_ENTRY *phbMsg = NULL;
int32 len;

mrc_platEx(4042, NULL, 0, (uint8**)&phbMsg, &len, NULL);

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(4043) - 销毁电话本浏览对象

int32 mr_platEx

(int32 code = 4043,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
销毁电话本浏览对象。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_platEx( 4043, NULL, 0, NULL, NULL, NULL );

See Also

mr_platEx(4041)


mr_platEx(1008) - 调用mtk的发送短信界面

int32 mr_platEx

(int32 code = 1008,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
调用mtk的发送短信界面。
Parameters

Name | Description
input | T_PLAT_SENDSMS_REQ 数据结构指针
input_len | T_PLAT_SENDSMS_REQ 数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_PLAT_SENDSMS_REQ数据结构：

typedef struct
{
char *pNum;/*目前没有使用该参数*/
char *pContent;/*大端unicode*/
}T_PLAT_SENDSMS_REQ;

Example

/*mrp code*/

T_PLAT_SENDSMS_REQ sendSMS = { 0 };
char wcontent[50];

str2wstr( (PCSTR)"hello", (PWSTR)&wcontent[0], (Sint32)sizeof(wcontent) );
sendSMS.pContent = wcontent;
mrc_platEx( 1008, (uint8*)&sendSMS, (int32)sizeof(T_PLAT_SENDSMS_REQ), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1011) - 设置收到新短信的时候是否显示提示界面

int32 mr_plat(int32 code = 1011, int32 param)

Description
设置收到新短信的时候是否显示提示界面。
Parameters

Name Description
param 1：显示新短信提示
0：不显示新短信提示

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1011, 1 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1100) - 获得短信操作的状态

int32 mr_plat(int32 code = 1100, int32 param)

Description
获得短信操作的状态。
Parameters

Name | Description
param | 无

Return Value

MR_SMS_NOT_READY (1000) 短信模块初始化中
MR_SMS_READY (1001) 短信模块初始化完毕可以操作

Remarks

Example

/*mrp code*/

mrc_plat( 1100, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1101) - 获得短信信箱中短息的条数

int32 mr_plat(int32 code = 1101, int32 param)

Description
获得短信信箱中短息的条数。
Parameters

Name Description
param MR_SMS_INBOX：收件箱
MR_SMS_OUTBOX：发件箱
MR_SMS_DRAFTS：草稿箱

Return Value

短信条数 + MR_PLAT_VALUE_BASE 成功
MR_FAILED 操作失败

Remarks

注各个枚举值：
typedef enum
{
MR_SMS_NOBOX ,
MR_SMS_UNREAD,
MR_SMS_INBOX,
MR_SMS_OUTBOX,
MR_SMS_DRAFTS,
MR_SMS_AWAITS,
MR_SMS_DATA,
MR_SMS_UNSENT,
MR_SMS_READED,
MR_SMS_SENT
}MR_MSG_STATUS;

Example

/*mrp code*/

int32 num;
num = mrc_plat( 1101, MR_SMS_INBOX );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1102) - 获得指定一条短信的信息

int32 mr_platEx

(int32 code = 1102,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得指定一条短信的信息。
Parameters

Name | Description
input | T_DSM_GET_SMS_INFO_REQ数据结构指针
input_len | T_DSM_GET_SMS_INFO_REQ数据结构大小
output | T_DSM_MSG_INFO数据结构指针
output_len | T_DSM_MSG_INFO数据结构大小
cb | 无

Return Value

MR_SUCCESS 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

短信的数据结构是：T_DSM_MSG_INFO
T_DSM_GET_SMS_INFO_REQ数据结构：
typedef struct
{
int32 index; //显示时候索引
int8 type; //MR_SMS_INBOX, MR_SMS_OUTBOX
}T_DSM_GET_SMS_INFO_REQ;

T_DSM_MSG_INFO数据结构：
typedef struct
{
int8 t_stamp [6]; /*t_stamp[0]年t_stamp[1]月t_stamp[2]日 t_stamp[3]时t_stamp[4]分t_stamp[5]秒*/
int8 num[21]; /*发送方号码*/
int8 sms_status; /*Read or Unread */
int8 sms_storage; /* MR_SMS_STORAGE_ME , MR_SMS_STORAGE_SIM*/
}T_DSM_MSG_INFO;

Example

/*mrp code*/

T_DSM_GET_SMS_INFO_REQ getInfoReq = { 0 };
T_DSM_MSG_INFO *msgInfo = NULL;
int32 lenmsginfo;

getInfoReq.index = 0;
getInfoReq.type = MR_SMS_OUTBOX;
mrc_platEx( 1102, (uint8* )&getInfoReq, sizeof( T_DSM_GET_SMS_INFO_REQ ), (uint8**)&msgInfo, (int32*)&lenmsginfo, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1103) - 读取一条短信

int32 mr_platEx

(int32 code = 1103,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
读取一条短信。
Parameters

Name | Description
input | T_DSM_GET_SMS_INFO_REQ数据结构指针
input_len | T_DSM_GET_SMS_INFO_REQ数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_WAITING 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

读取结果通过mr_event通知应用，各个参数的含义如下：
第一个：MR_SMS_OP_EVENT；
第二个：MR_SMS_OP_GET_MSG_CONTENT；
第三个：短信内容缓存的地址（编码方式是大端unicode）。

T_DSM_GET_SMS_INFO_REQ数据结果：
typedef struct
{
int32 index; //显示时候索引
int8 type; //MR_SMS_INBOX, MR_SMS_OUTBOX
}T_DSM_GET_SMS_INFO_REQ;

Example

/*mrp code*/

T_DSM_GET_SMS_INFO_REQ getInfoReq = { 0 };

getInfoReq.index = 0;
getInfoReq.type = MR_SMS_OUTBOX;
mrc_platEx( 1103, (uint8* )&getInfoReq, sizeof( T_DSM_GET_SMS_INFO_REQ ), NULL, NULL, NULL );

mr_event事件处理：
case
  MR_SMS_OP_EVENT:
{
switch ( wParam )
{
case
  MR_SMS_OP_GET_MSG_CONTENT:
{
char *utf8 = NULL;
int32
  utf8_size;

utf8_size = 2*wstrlen((PCWSTR)lParam);
utf8 = malloc( utf8_size );
buflog = malloc( utf8_size + 50
  );
wstr2str( (PCWSTR)lParam,
  (PSTR)utf8, utf8_size );
mrc_printf( buflog,
  "Response success, get content:%s", utf8
  );

free( utf8
  );
utf8 =
  NULL;
}
break;
default:
break;
}
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1104) - 删除一条短信

int32 mr_platEx

(int32 code = 1104,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
删除一条短信。
Parameters

Name | Description
input | T_DSM_DELETE_SMS_REQ数据结构指针
input_len | T_DSM_DELETE_SMS_REQ数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_WAITING 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

删除结果通过mr_event通知应用，各个参数的含义如下：
第一个：MR_SMS_OP_EVENT；
第二个：MR_SMS_OP_DELETE；
第三个：MR_SUCCESS 删除成功
MR_FAILED 删除失败

T_DSM_DELETE_SMS_REQ数据结构：
typedef struct
{
int32
  index;
   //显示时候索引
int8
  type;
   //MR_SMS_INBOX, MR_SMS_OUTBOX
} T_DSM_DELETE_SMS_REQ;

Example

/*mrp code*/

T_DSM_DELETE_SMS_REQ delReq = { 0 };
delReq.index = 0;
delReq.type = MR_SMS_OUTBOX;
mrc_platEx( 1104, (uint8* )&delReq, sizeof( T_DSM_DELETE_SMS_REQ ), NULL, NULL, NULL );

mr_event事件处理：
case MR_SMS_OP_EVENT:
{
switch ( wParam )
{
case MR_SMS_OP_DELETE:
{
//add your code here
 }
break;
default:
break;
}
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1105) - 发送获得手机和sim卡存储空间

int32 mr_plat(int32 code = 1105, int32 param)

Description
发送获得手机和sim卡存储空间的容量的请求。
Parameters

Name | Description
param | 无

Return Value

MR_WAITING 发送请求成功
MR_FAILED 调用失败

Remarks

处理结果通过mr_event返回给应用,mr_event的参数如下：
第一个：MR_SMS_OP_EVENT（15）；
第二个：MR_SMS_OP_GET_ME_SIZE ：表示第三个参数是手机上容量；
MR_SMS_OP_GET_SIM_SIZE：表示第三个参数是sim卡上容量；
第三个：短信的容量。
enum
{
MR_SMS_OP_GET_ME_SIZE,
MR_SMS_OP_GET_SIM_SIZE,
MR_SMS_OP_DELETE,
MR_SMS_OP_GET_MSG_CONTENT
};

Example

/*mrp code*/

mrc_plat( 1105, 0 );

mr_event事件处理：
case
  MR_SMS_OP_EVENT:
{
switch ( wParam )
{
case MR_SMS_OP_GET_ME_SIZE
  :
{
//add your code
  here
}
break;
case
  MR_SMS_OP_GET_SIM_SIZE:
{
//add your code here
}
break;
default:
break;
}
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1106) - 获得短信中心

int32 mr_plat(int32 code = 1106, int32 param)

Description
发送获得短信中心的号码的请求。
Parameters

Name | Description
param | 应用编号

Return Value

MR_WAITING 发送请求成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

处理结果通过mr_event返回给应用，mr_event的参数如下：
第一个：MR_SMS_GET_SC（16）；
第二个：ascii编码的短信中心的字符串的地址，地址为0标志获得失败；
第三个：0。

Example

/*mrp code*/

mrc_plat( 1106, 0 );

mr_event事件处理：
case MR_SMS_GET_SC:
{
int32 adr = (int32)wParam;
//add your code here

}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1203) - 发送彩信

int32 mr_platEx

(int32 code = 1203,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
调用发送彩信功能。
Parameters

Name | Description
input | mr_mms_st数据结构指针
input_len | mr_mms_st数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

mr_mms_st数据结构：
typedef struct
{
char*
  addr;
   //接收地址指针,ASCII
uint16* content;
  //预设内容指针，大端unicode
}mr_mms_st;

Example

/*mrp code*/

#define SENDSMSTO "10086"
#define SENDCONTENT "Hello: Sky Test!"
mr_mms_st seedReq = { 0 };
char wcontent[50];

str2wstr( (PCSTR)SENDCONTENT, (PWSTR)&wcontent[0], (Sint32)sizeof(wcontent) );
seedReq.addr = SENDSMSTO;
seedReq.content = (uint16*)wcontent;
mrc_platEx( 1203, (uint8*)&seedReq, (int32)sizeof(mr_mms_st), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


数据账号接口

MTK平台账号资料管理流程

Mythroad 联网流程介绍 (TCP)
初始化网络（mr_initNetwork）->创建连接（mr_socket）
->连接服务器（mr_connect）->收发数据(mr_recv, mr_send)
->关闭连接（mr_closeSocket）->断开网络（mr_closeNetwork）
MTK账号资料管理介绍

在mtk上账号资料分为两类：
A、 GSM账号资料（电路交换方式）
B、 GPRS账号资料
每种账号一般留有10个槽位（槽位个数手机设计公司可以进行调节）在创建socket的时候，有一个参数就是指这个账号资料的序号。目前Mythroad固定使用GPRS账号的最后一个槽位.

国内账号资料管理流程

在程序初始化网络（即调用mr_initNetwork）的时候，根据不通的拨号方式（CMNET,CMWAP，默认是CMNET）对指定槽位的账号资料进行设置（不论是否已经设置过，都会进行设置）。
优点：用户不需要关心账号资料的设置
缺点：如果是运营商的对联网的账号资料进行修改的话，就会造成无法连接网络的情况出现。

手机wap账号资料的管理

在wap的菜单中有这样一个菜单：
进入这个菜单后，会把手机上有的账号资料在列表中罗列出来供用户进行选择。

新账号资料管理方案（适用国内和海外）
流程图

新增接口

1、 本地UI设置账号资料接口
2、 设置账号资料接口
3、 读取账号资料接口
4、 设置是否使用当前设置接口（默认是不使用当前设置，设置的结果只对一次VM运行起作用，重新启动VM后自动复位）

优缺点

优点：
1、 账号资料可以完全保密
2、 实现复杂度低
缺点：
1、 检索的表是预置的无法修改（添加、删除）
2、 当表中没有记录的时候需要用户来设置（增加用户使用的难度）

代码实现

国内目前的实现：
国内现在拨号流程基本如下，工具用户的参数，拨CMWAP或者CMNET。

海外：
自动模式： 根据当前的MCC/MNC查询APN的数据库，如果有匹配项就使用匹配的APN信息进行拨号，如果出海外，你还得带上mr_getAPN接口的实现。 手动模式： 通过用户选择特定的数据账号，并将其保存下来。拨号的时候使用这个账号的信息进行拨号。
MTK上CODE的参考定义

#define MR_GET_DATA_ACCOUNT_REQ 1107 //mr_plat
#define MR_GET_DATA_ACCOUNT 1108 //mr_platEx
#define MR_SET_DATA_ACCOUNT 1109 //mr_platEx
#define MR_SET_DATA_ACCOUNT_USE_FLAG 1110 //mr_plat
#define MR_SET_DATA_ACCOUNT_MTK_UI 1111 // mr_plat
MR_GET_DATA_ACCOUNT_REQ

功能：发起获取数据账号的请求，在MTK上为异步方式，这个CODE需要配和MR_GET_DATA_ACCOUNT来取的数据账号的值
参数：无
返回：失败MR_FAILED, 获取过程中返回MR_WAITING，成功MR_SUCCESS
如果是异步返回的，获取成功后需要通知虚拟机，如下：
mr_event(MR_DATA_ACCOUNT_EVENT, MR_DATA_ACCOUNT_OP_GET, ret);

下面是2个枚举值在的定义，第3个参数 MR_SUCCESS 表示成功，MR_FAILED表示失败

enum {
MR_KEY_PRESS, /*0*/
MR_KEY_RELEASE, /*1*/
MR_MOUSE_DOWN, /*2*/
MR_MOUSE_UP, /*3*/
MR_MENU_SELECT, /*4*/
MR_MENU_RETURN, /*5*/
MR_DIALOG_EVENT, /*6*/
MR_SMS_INDICATION, /*7*/
MR_EVENT_EXIT, /*8*/
MR_SMS_RESULT, /*9*/
MR_LOCALUI_EVENT, /*10*/
MR_OSD_EVENT, /*11*/
MR_MOUSE_MOVE, /*12*/
MR_ERROR_EVENT, /*13执行异常通过这个事件来通知*/
MR_PHB_EVENT,
MR_SMS_OP_EVENT,
MR_SMS_GET_SC,
MR_DATA_ACCOUNT_EVENT,
MR_MOTION_EVENT,
};

enum
{
MR_DATA_ACCOUNT_OP_GET,
MR_DATA_ACCOUNT_OP_SET,
};
MR_GET_DATA_ACCOUNT

功能：返回由MR_GET_DATA_ACCOUNT_REQ发起获取的数据账号值
参数通过: output, output_len参数返回类型为T_DSM_DATA_ACCOUNT 的数据账号（这个结构的内存为移植层的全局数据，不需要应用层管理）
返回：MR_SUCCESS 表示成功，MR_FAILED表示失败

typedef struct
{
uint8
    authentication_type;
uint8
    user_name[32];
uint8
    password[32];
uint8 dns[4];
uint8 apn[100];
}T_DSM_DATA_ACCOUNT;
MR_SET_DATA_ACCOUNT

功能：设置数据账号
参数：input, input_len 为T_DSM_DATA_ACCOUNT结构类型的数据
返回：MR_SUCCESS 成功，MR_FAILED失败，MR_WAITING异步过程通过后续事件通知应用mr_event(MR_DATA_ACCOUNT_EVENT,MR_DATA_ACCOUNT_OP_SET,MR_FAILED);

前面两个参数参考MR_GET_DATA_ACCOUNT_REQ节的定义，第三个参数MR_SUCCESS表示成功，MR_FAILED表示失败。
MR_SET_DATA_ACCOUNT_USE_FLAG

功能：启用设置的数据账号
参数：0 表示使用原先的拨号流程，1，表示使用设置的数据账号
返回：成功MR_SUCCESS, 失败MR_FAILED
MR_SET_DATA_ACCOUNT_MTK_UI

功能：通过启用本地的界面显示全部可选的系统数据账号让用户选择，用户选择后，将选择的账号信息，保存到我们指定的数据账号中。
参数：无
返回：MR_SUCCESS,MR_FAILED


mr_plat(1107) - 发送获得apn信息的请求

int32 mr_plat(int32 code = 1107, int32 param)

Description
发送获得apn信息的请求。
Parameters

Name | Description
param | 无

Return Value

MR_WAITING 发送成功
MR_FAILED 发送失败
MR_IGNORE 不支持该功能

注：处理结果通过mr_event返回给应用，mr_event的参数如下：
第一个：MR_DATA_ACCOUNT_EVENT（17）
第二个：MR_DATA_ACCOUNT_OP_GET（0）
第三个：MR_SUCCESS 获取成功，apn信息已经放置在缓存中；
MR_FAILED 获取失败
当获取成功后调用mr_platEx(1108)获得缓冲中的内容。

Remarks

Example

/*mrp code*/

mrc_plat( 1107, 0 );

mr_event事件处理：
case MR_DATA_ACCOUNT_EVENT:
{
switch ( wParam
  )
{
case
  MR_DATA_ACCOUNT_OP_GET:
{
//add your code
  here
}
break;
case
  MR_DATA_ACCOUNT_OP_SET:
{
//add your code
  here
}
break;
default:
break;
}
break;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1108) - 从缓存中读取apn信息

int32 mr_platEx

(int32 code = 1108,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
从缓存中读取apn信息。
Parameters

Name | Description
input | 无
input_len | 无
output | T_DSM_DATA_ACCOUNT数据结构指针
output_len | T_DSM_DATA_ACCOUNT数据结构大小
cb | 无

Return Value

MR_SUCCESS 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

Apn的数据结果如下：
typedef struct
{
uint8
  authentication_type;
uint8
  user_name[32];
uint8 password[32];
uint8 dns[4];
uint8
apn[100];
}T_DSM_DATA_ACCOUNT;

Example

/*mrp code*/

T_DSM_DATA_ACCOUNT *apnInfo = NULL;
int32 len;

mrc_platEx( 1108, NULL, 0, (uint8**)&apnInfo, (int32*)&len, NULL );
mrc_printf( "authentication_type:%d, user_name:%s, password:%s, dns:%s, apn:%s",apnInfo->authentication_type, apnInfo->user_name, apnInfo->password, apnInfo->dns, apnInfo->apn );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1109) - 设置apn信息

int32 mr_platEx

(int32 code = 1109,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置apn信息。
Parameters

Name | Description
input | T_DSM_DATA_ACCOUNT数据结构指针
input_len | T_DSM_DATA_ACCOUNT数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_WAITING 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

设置结果异步通过mr_event返回，
mr_event各个参数的值如下：
第一个参数：MR_DATA_ACCOUNT_EVENT（17）
第二个参数：MR_DATA_ACCOUNT_OP_SET（1）
第三个参数：MR_FAILED 设置失败
MR_SUCCESS 设置成功

Example

/*mrp code*/

T_DSM_DATA_ACCOUNT setInfo = { 0 };
int32 len；

strncpy((char *)setInfo.apn,"cmnet",sizeof("cmnet") );
mrc_platEx( 1109, (uint8*)&setInfo, sizeof(T_DSM_DATA_ACCOUNT), NULL, NULL, NULL );

mr_event事件处理：
case MR_DATA_ACCOUNT_EVENT:
{
switch ( wParam
  )
{
case
  MR_DATA_ACCOUNT_OP_GET:
{
//add your code
  here
}
break;
case
  MR_DATA_ACCOUNT_OP_SET:
{
//add your code
  here
}
break;
default:
break;
}
break;
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1110) - 设置apn使用的标志位

int32 mr_plat(int32 code = 1110, int32 param)

Description
设置apn使用的标志位。
Parameters

Name Description
param 0：使用新的apn值
1：使用以前设置的值

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNORE 不支持该功能
注：本功能只使用海外的版本

Remarks

Example

/*mrp code*/

mrc_plat( 1110, 0 ); //set use new apn

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1111) - 调用mtk的界面设置apn

int32 mr_plat(int32 code = 1111, int32 param)

Description
调用mtk的界面设置apn。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 调用成功
MR_FAILED 调用失败
MR_IGNORE 不支持该功能
注：调用本功能后VM会被pause

Remarks

Example

/*mrp code*/

mrc_plat( 1111, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1205) - 获取手机是否是触摸屏信息

int32 mr_plat(int32 code = 1205, int32 param)

Description
获取手机是否是触摸屏信息。
Parameters

Name | Description
param | 无

Return Value

MR_PLAT_VALUE_BASE + 0 非触摸屏
MR_PLAT_VALUE_BASE + 1 触摸屏
MR_FAILED 获取失败
MR_IGNORE 不支持该功能

Remarks

#define MR_PLAT_VALUE_BASE 1000

Example

/*mrp code*/

int32 output = -1;
output = mrc_plat(　1205, 0 );
mrc_printf( ＂output = %d＂, output );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1214) - 设置挂机键是否回IDLE

int32 mr_plat(int32 code = 1214, int32 param)

Description
屏闭该界面下按挂机键回idle的功能。
Parameters

Name Description
param 1：屏蔽
0：打开

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1214, 1 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1009) - 设置墙纸

int32 mr_platEx

(int32 code = 1009,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置墙纸。
Parameters

Name | Description
input | T_SET_IDLE_PAPER_REQ数据结构指针
input_len | T_SET_IDLE_PAPER_REQ 数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_WAITING 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

T_SET_IDLE_PAPER_REQ数据结构：
typedef struct
{
int32 setType; /* MR_IDLE_BG_PAPER 墙纸，MR_IDLE_SAVER_PAPER屏保*/
U8 *filename; /*图片的相对路径*/
}T_SET_IDLE_PAPER_REQ;

typedef enum
{
MR_IDLE_BG_PAPER, /*背景*/
MR_IDLE_SAVER_PAPER /*屏保*/
}MR_IDLE_PAPER_TYPE;

Example

/*mrp code*/

#define IDLE_SAVER_PAPER "OATfile\\pic_test\\saver_paper.jpg"
T_SET_IDLE_PAPER_REQ setReq;

setReq.setType = MR_IDLE_SAVER_PAPER;
setReq.filename = (U8*)IDLE_SAVER_PAPER;
mrc_platEx( 1009,(uint8*)&setReq, sizeof(T_SET_IDLE_PAPER_REQ), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1116) - 获取编译时间

int32 mr_platEx

(int32 code = 1116,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取编译时间。
Parameters

Name | Description
input | 无
input_len | 无
output | 编译时间字符串，如"2010/09/26 21:36"。
output_len | 字符串长度+1
cb | 无

Return Value

MR_WAITING 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

char *pTime = NULL;
int32 len;

mrc_platEx( 1116, NULL, 0, (uint8**)&pTime, &len, NULL );
mrc_printf( "build date: %s", pTime );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1117) - 获取硬件版本号

int32 mr_platEx

(int32 code = 1117,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取硬件版本号。
Parameters

Name | Description
input | 无
input_len | 无
output | 版本号字符串
output_len | 字符串长度+1
cb | 无

Return Value

MR_WAITING 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

char *pVersion = NULL;
int32 len;

mrc_platEx( 1117, NULL, 0, (uint8**)&pVersion, &len, NULL );
mrc_printf( "hardware version: %s", pVersion );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1221) - 获取APPLIST标题

int32 mr_platEx

(int32 code = 1221,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得applist title 名称。
Parameters

Name | Description
input | 无
input_len | 无
output | 名称，Gb编码。
output_len | 名称的长度
cb | 无

Return Value

MR_WAITING 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

char *gbtitle = NULL;
uint16 *utitle = NULL;
char apptitle[50];
int32 len;

mrc_platEx( 1221, NULL, 0,(uint8**)&gbtitle, (int32*)&len, NULL );
utitle = (uint16*)mrc_c2u( gbtitle, NULL,(int32 *)&len); //gb to unicode.
wstr2str((PCWSTR)utitle, (PSTR)&apptitle[0], 50 ); //unicode to string.
mrc_printf( "Applist Title: %s", apptitle );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(101) - 设置旋转角度

int32 mr_plat(int32 code = 101, int32 param)

Description
设置图象旋转显示的角度。
Parameters

Name Description
param 0：MR_LCD_ROTATE_NORMAL
1：MR_LCD_ROTATE_90
2：MR_LCD_ROTATE_180
3：MR_LCD_ROTATE_270
4：MR_LCD_MIRROR
5：MR_LCD_MIRROR_ROTATE_90
6：MR_LCD_MIRROR_ROTATE_180
7：MR_LCD_MIRROR_ROTATE_270

Return Value

MR_WAITING 请求成功
MR_FAILED 请求失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 101, MR_LCD_ROTATE_90 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(105) - 获取旋转角度

int32 mr_plat(int32 code = 105, int32 param)

Description
获取旋转角度。（未实现）
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1112) - 激活手机主题

int32 mr_platEx

(int32 code = 1112,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
激活手机主题。
Parameters

Name | Description
input | 相对于根目录的目录，gb编码。
input_len | 字符串长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1113) - 还原手机主题

int32 mr_plat(int32 code = 1113, int32 param)

Description
还原手机主题。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1114) - 获得当前激活的主题的appid

int32 mr_plat(int32 code = 1114, int32 param)

Description
获得当前激活的主题的app id。
Parameters

Name | Description
param | 无

Return Value

当前激活的主题的app id + 1000 当前激活的主题的app id是返回值-1000
1000 当前没有设置主题
MR_FAILED 获取失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1115) - 设置主题中主菜单当前选中的宫格的index

int32 mr_plat(int32 code = 1115, int32 param)

Description
设置主题中主菜单当前选中的宫格的index。
Parameters

Name | Description
param | 宫格index

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1208) - 设置手机铃声

int32 mr_platEx

(int32 code = 1208,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置手机铃声。
Parameters

Name | Description
input | T_DSM_RING_SET数据结构指针
input_len | T_DSM_RING_SET 数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

T_DSM_RING_SET数据结构：
typedef struct
{
int32 scene;
int32 type;
char *path; //gb编码 （相对VM当前目录的路径和歌曲名称）
}T_DSM_RING_SET;

typedef enum
{
MR_SCENE_NORMAL,
MR_SCENE_MEETING,
MR_SCENE_INDOOR,
MR_SCENE_OUTDOOR,
MR_SCENE_MUTE
}T_DSM_SCENE;

typedef enum
{
MR_CALL_RING,
MR_SMS_RING,
MR_ALARM_RING
}DSM_RING_TYPE;

Example

/*mrp code*/

#define RING_ALARM "OATfile\\ring_test\\alarm_ring.mp3"
T_DSM_RING_SET set;

set.scene = MR_SCENE_NORMAL;
set.type = MR_ALARM_RING;
set.path = RING_ALARM;
mrc_platEx(1208, (uint8*)&set, sizeof ( T_DSM_RING_SET ), NULL, NULL,NULL);

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1206) - 获取手机当前设置的语言

int32 mr_plat(int32 code = 1206, int32 param)

Description
获取手机当前设置的语言。
Parameters

Name | Description
param | 无

Return Value

MR_PLAT_VALUE_BASE + 0 中文
MR_PLAT_VALUE_BASE + 1 英文
MR_FAILED 获取失败
MR_IGNORE 不支持该功能
注：其他语言的键值可以放在“英文”之后返回。

Remarks

#define MR_PLAT_VALUE_BASE 1000

Example

/*mrp code*/

mrc_plat(1206, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(0x90002)

int32 mr_platEx

(int32 code = 0x90002,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取手机支持的全部语言。
Parameters

Name | Description
input | 无
input_len | 无
output | 支持的语言数组，int32 数组。
output_len | 数组的大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

int32 *pLan = NULL;
int32 len;

mrc_platEx( 0x90002, NULL, 0, (uint8**)&pLan, &len, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1213) - 获得手机当前的情景模式

int32 mr_plat(int32 code = 1213, int32 param)

Description
获得手机当前的情景模式。
Parameters

Name | Description
param | 无

Return Value

返回值为：MR_PLAT_VALUE_BASE+主题枚举值
typedef enum
{
MR_SCENE_NORMAL,
MR_SCENE_MEETING,
MR_SCENE_INDOOR,
MR_SCENE_OUTDOOR,
MR_SCENE_MUTE
}T_DSM_SCENE;

Remarks

#define MR_PLAT_VALUE_BASE 1000

Example

/*mrp code*/

int32 scene = 0;

scene = mrc_plat( 1213, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1201) - 获取字宽字高

int32 mr_platEx

(int32 code = 1201,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取字宽字高。这个接口主要为了解决某些平台字宽字高不等的情况。这个接口返回在该平台上最大的字宽和字高。
Parameters

Name | Description
input | 无
input_len | 无
output | int32 指针
output_len | 输出大小
cb | 无

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

返回值为int32 指针： 0～7bit 中文字宽
8～15bit 中文字高
16～23bit 英文字宽
24～31bit 英文字高

Example

/*mrp code*/

int32 *info = NULL;
int32 len;
int32 re = -1;

re = mrc_platEx(
  1201, NULL, 0, (uint8**)&info, (int32*)&len, NULL );
if (
  MR_SUCCESS == re)
{
mrc_printf(
  "Chinese:width=%d,height=%d. English:width=%d,height=%d", (*info &
  0x000000ff),\
(*info & 0x0000ff00)>>8, (*info
  & 0x00ff0000)>>16, (*info & 0xff000000)>>24
);
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1004) - 设置使用SIM卡

int32 mr_plat(int32 code = 1004, int32 param)

Description
多sim卡待机时设置所用sim卡。
Parameters

Name | Description
param | Sim卡id（对应platEx（1307）结构MR_DUALSIM_SET_T 中simId，由手机或移植层定义）

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

Example

/*mrp code*/

MR_DUALSIM_SET_T *simInfo = NULL;
int32 setActID_index = 0;
int32
  oldActID_index = 0;
int32 re;
int32 len;

/*1307（get sim card info）*/
re = mrc_platEx( 1307, NULL,
  0,(uint8**)&simInfo, (int32*)&len, NULL );
if (MR_SUCCESS ==
  re)
{
oldActID_index =
  simInfo->curActive;
setActID_index =
  (simInfo->curActive == (simInfo->totalNum - 1)) ? (simInfo->curActive
  - 1) : (simInfo->curActive + 1);
}
mrc_plat( 1004,
  simInfo->simId[setActID_index] );

See Also

mr_platEx(1307)


mr_platEx(1307) - 获取SIM卡个数信息

int32 mr_platEx

(int32 code = 1307,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得sim卡个数等信息。
Parameters

Name | Description
input | 无
input_len | 无
output

MR_DUALSIM_SET_T数据结构指针

output_len | MR_DUALSIM_SET_T数据结构大小
cb | 无

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

用来获取多卡多待手机当前的sim状态信息。如果是非多卡多待手机，可以直接返回MR_IGNORE。
MR_DUALSIM_SET_T数据结构：
typedef struct
{
uint8 totalNum; //sim numbers, max to 6
uint8 curActive; //index of simId[] witch actived
uint16 dummy; //no use, just for align
int32 simId[4]; //mapping to plat sim socket id
char* simNamePtr[4]; //sim卡名字,unicode
uint16 simNameLen[4]; //名字长度
}MR_DUALSIM_SET_T;

Example

/*mrp code*/

MR_DUALSIM_SET_T *simInfo = NULL;
int32 re;
int32 len;

/*1307（get sim card info）*/
re = mrc_platEx( 1307, NULL,
  0,(uint8**)&simInfo, (int32*)&len, NULL );
if (MR_SUCCESS ==
  re)
{
mrc_printf( "totalNum=%d,curAct=%d",
  simInfo->totalNum, simInfo->curActive );
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5001) - 获取手机时间

int32 mr_platEx

(int32 code = 5001,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取手机时间。(未实现)
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源。

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5002) - 设置手机时间

int32 mr_platEx

(int32 code = 5002,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置手机时间。
Parameters

Name | Description
input | MYTIME数据结构指针
input_len | MYTIME 数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

数据结构如下，
typedef struct MYTIME
{
kal_uint16 nYear;
kal_uint8 nMonth;
kal_uint8 nDay;
kal_uint8 nHour;
kal_uint8 nMin;
kal_uint8 nSec;
kal_uint8 DayIndex;
} MYTIME;

Example

/*mrp code*/

MYTIME settime = { 0
  };
settime.nYear=2011;
settime.nMonth=6;
settime.nDay=1;
settime.nHour
  = 18;
settime.nMin = 00;
mrc_platEx( 5002, (uint8*)&settime, sizeof
  ( MYTIME ), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5011) - 设置手机闹钟

int32 mr_platEx

(int32 code = 5011,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置手机闹钟。（未实现）
Parameters

Name | Description
input | mr_alarm_set_req_struct数据结构指针
input_len | mr_alarm_set_req_struct数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

mr_alarm_set_req_struct数据结构：
typedef struct
{
UINT8 alarm_index; /*第几个闹铃*/
UINT8 recurr; /*一个星期哪一天闹铃*/
DSMTIME dsm_time;
}mr_alarm_set_req_struct;

说明:闹钟设置只针对小时、分。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5013) - 获得手机闹钟个数

int32 mr_platEx

(int32 code = 5013,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得手机闹钟个数。（未实现）
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5014) - 设置闹钟

int32 mr_platEx

(int32 code = 5014,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置闹钟，到时间启动获得天气的应用。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(0x90001) - 获取当前时区信息

int32 mr_platEx

(int32 code = 0x90001,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取当前时区信息。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 设置成功
MR_FAILED 设置失败
MR_IGNOR 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1210) - 获取NES模拟器按键布局

int32 mr_platEx

(int32 code = 1210,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取NES模拟器按键布局。
Parameters

Name | Description
input | 无
input_len | 无
output | mr_nes_keys_st数据结构指针
output_len | mr_nes_keys_st数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

mr_nes_keys_st数据结构：
typedef struct _mr_nes_keys_st
{
uint8 k_up;
uint8 k_down;
uint8 k_left;
uint8 k_right;
uint8 k_se;
uint8 k_st;
uint8 k_a;
uint8 k_b;
uint8 auto_a;
uint8 auto_b;
}mr_nes_keys_st;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1220) - 获得rom目录

int32 mr_platEx

(int32 code = 1220,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得rom目录。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 根目录下的绝对路径。Gb编码， 比如 mulgame/mr/nes。
output_len | 路径的长度
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源。

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

用来获取厂商自己设置的nes放置rom的目录名称，不要带盘符，返回一个型如“game/nes”的绝对目录名。(目前nes会默认搜索本地U盘跟外插存储卡)。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1225) - 获取手柄信息

int32 mr_platEx

(int32 code = 1225,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取手柄信息。
Parameters

Name | Description
input | MRAPP_HANDLE_CODE_T数据结构指针
input_len | MRAPP_HANDLE_CODE_T数据结构大小
output | MRAPP_HANDLE_INFO_T数据结构指针
output_len | MRAPP_HANDLE_INFO_T数据结构大小
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源。

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

MRAPP_HANDLE_INFO_T数据结构：
typedef struct
{
uint32 state; //手柄标志，目前使用
//0 bit：手柄状态，0手柄未插入；
// 1手柄已插入。

uint8 k_up; //按键上，当值为：0 未按下， 1 按下， 下同
uint8 k_down; //按键下
uint8 k_left; //按键左
uint8 k_right; //按键右

uint8 k_select; //按键 “选择”
uint8 k_start; //按键 “开始”
uint8 k_a; //按键 A
uint8 k_b; //按键 B

uint8 k_auto_a; //按键 自动A
uint8 k_auto_b; //按键 自动B
uint8 k_c; //按键 其他，保留
uint8 k_d; //按键 其他，保留

uint8 k_left_up; //按键 左上
uint8 k_left_down; //按键 左下
uint8 k_right_down; //按键 右下
uint8 k_right_up; //按键 右上

uint8 k_e; //按键 其他，保留
uint8 k_f; //按键 其他，保留
uint8 k_g; //按键 其他，保留
uint8 k_h; //按键 其他，保留

} MRAPP_HANDLE_INFO_T;

MRAPP_HANDLE_CODE_T数据结构：
typedef
  struct
{
int32 code;
  //手机配置信息：0：初始化；1：去初始化；2：获取手柄信息；
} MRAPP_HANDLE_CODE_T;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1401) - 初始化筛选器

int32 mr_platEx

(int32 code = 1401,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
初始化筛选器。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败返回
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_platEx( 1401, NULL, 0, NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1402) - 设置要显示的文件类型

int32 mr_platEx

(int32 code = 1402,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置要显示的文件类型（要浏览一类文件需要多次调用这个接口）。
Parameters

Name | Description
input | *input 要显示的文件类型的宏值（见文件类型的宏值）。
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败返回
MR_IGNORE 不支持该功能

Remarks

调用平台的浏览文件的功能，根据设置的筛选规则进行浏览，选择等操作。
文件类型的宏值：
1：MR_FMGR_TYPE_ALL
2：MR_FMGR_TYPE_FOLDER
3：MR_FMGR_TYPE_FOLDER_DOT
4：MR_FMGR_TYPE_UNKNOW
/* image */
5：MR_FMGR_TYPE_BMP
6：MR_FMGR_TYPE_JPG
7：MR_FMGR_TYPE_JPEG
8：MR_FMGR_TYPE_GIF
9：MR_FMGR_TYPE_PNG
10：MR_FMGR_TYPE_EMS
11：MR_FMGR_TYPE_ANM
12：MR_FMGR_TYPE_WBMP
13：MR_FMGR_TYPE_WBM
/* audio */
14：MR_FMGR_TYPE_IMY
15：MR_FMGR_TYPE_MID
16：MR_FMGR_TYPE_MIDI
17：MR_FMGR_TYPE_WAV
18：MR_FMGR_TYPE_AMR
19：MR_FMGR_TYPE_AAC
20：MR_FMGR_TYPE_DAF
21：MR_FMGR_TYPE_VM
22：MR_FMGR_TYPE_AWB
23：MR_FMGR_TYPE_AIF
24：MR_FMGR_TYPE_AIFF
25：MR_FMGR_TYPE_AIFC
26：MR_FMGR_TYPE_AU
27：MR_FMGR_TYPE_SND
28：MR_FMGR_TYPE_M4A
29：MR_FMGR_TYPE_MMF
30：MR_FMGR_TYPE_WMA
/* video */
31：MR_FMGR_TYPE_3GP
32：MR_FMGR_TYPE_MP4
33：MR_FMGR_TYPE_AVI
/* others */
34：MR_FMGR_TYPE_JAD
35：MR_FMGR_TYPE_JAR
36：MR_FMGR_TYPE_VCF
37：MR_FMGR_TYPE_VCS
38：MR_FMGR_TYPE_THEME
39：MR_FMGR_TYPE_MRP
40：MR_FMGR_TYPE_NES
41：MR_FMGR_TYPE_ZIP

Example

/*mrp code*/

int32 type = MR_FMGR_TYPE_ALL;
mrc_platEx( 1402, (uint8*)&type, sizeof(int32), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1403) - 设置不要显示的文件类型

int32 mr_platEx

(int32 code = 1403,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置不要显示的文件类型。
Parameters

Name | Description
input | *input 要显示的文件类型的宏值（见文件类型的宏值）
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败返回
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1404) - 调用平台本地浏览界面

int32 mr_platEx

(int32 code = 1404,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
创建浏览，调用平台本地浏览界面。
Parameters

Name | Description
input | MR_T_FMGR_REQ数据结构指针
input_len | MR_T_FMGR_REQ数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败返回
MR_IGNORE 不支持该功能

Remarks

数据结构：
typedef struct
{
int32 dft_list;
char list_path[260]; //gb绝对路径
}MR_T_FMGR_REQ;

Dft_list枚举值:
0：MR_DSPL_NONE
1：MR_DSPL_IMAGE
2：MR_DSPL_AUDIO
3：MR_DSPL_VIDEO
4：MR_DSPL_NES

注：当dft_list 等于MR_DSPL_NONE的时候才以list_path中路径为准，
其他的都调用手机默认的路径，选中还是返回的操作由MR_LOCALUI_EVENT（10）事件传递给VM，
0：MR_LOCALUI_OK （表示用户选择了一个文件）
1：MR_LOCALUI_CANCEL（表示用户选择退出浏览这个功能）

Example

/*mrp code*/

#define FILESCAN_PATH "C:/mythroad/OATfile/filesys_test"
MR_T_FMGR_REQ st_filescan;

memset( &st_filescan, 0, sizeof(MR_T_FMGR_REQ) );
st_filescan.dft_list = MR_DSPL_NONE;
memcpy( st_filescan.list_path, (const void *)FILESCAN_PATH, strlen((const char *)FILESCAN_PATH) );
mrc_platEx( 1404, (uint8*)&st_filescan, sizeof(MR_T_FMGR_REQ), NULL, NULL, NULL );

mr_event事件处理：
case MR_LOCALUI_EVENT:
{
switch (wParam)
{
case MR_LOCALUI_OK:
{//add your code here

}
break;
case MR_LOCALUI_CANCEL:
{//add your code here

}
break;

default:
break;
}

}
break;

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1405) - 获得选中的文件路径

int32 mr_platEx

(int32 code = 1405,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得通过浏览器选中的文件的绝对路径。
Parameters

Name | Description
input | 无
input_len | 无
output | 文件绝对路径（GB编码）
output_len | 路径的长度
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败返回
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

char *strpath = NULL;
int32 outputlen = 0;
uint16 *u_str = NULL;
char str[200] = {0};

mrc_platEx(1405,NULL,0,(uint8**)&strpath,(int32*)&outputlen,NULL);
u_str = (uint16*)mrc_c2u( strpath, NULL,(int32 *)&len); //gb to unicode
wstr2str((PCWSTR)u_str, (PSTR)&str[0], sizeof(str) ); //unicode to string
mrc_printf( "Get the path: %s", str );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1406) - 销毁浏览器对象

int32 mr_platEx

(int32 code = 1406,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
销毁浏览器对象。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败返回
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_platEx( 1406, NULL, 0, NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


动感芯片接口

动感芯片x，y，z坐标做如下定义：
1：当手机平放的时候，Z方向正值最大；
2：当手机平盖的时候，Z方向负值最大；
3：当手机屏幕向左，横立起来的时候，X方向正值最大；
4：当手机屏幕向右，横立起来的时候，X方向负值最大；
5：当屏幕对着自己的时候，竖立起来的时候，Y方向负值最大；
6：当屏幕背向着自己的时候，竖立起来的时候，Y方向正值最大。


mr_plat(4001) - 停止动感芯片监听

int32 mr_plat(int32 code = 4001, int32 param)

Description
停止动感芯片监听。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 4001, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(4002) - 给动感芯片上电

int32 mr_plat(int32 code = 4002, int32 param)

Description
给动感芯片上电。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 4002, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(4003) - 给动感芯片断电

int32 mr_plat(int32 code = 4003, int32 param)

Description
给动感芯片断电。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 4003, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(4004) - 动感芯片监听晃动模式

int32 mr_plat(int32 code = 4004, int32 param)

Description
动感芯片监听晃动模式。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

晃动的值将通过mr_event事件来传递，mr_event(p1,p2,p3)各参数定义：
p1：MR_MOTION_EVENT(18)
p2：MR_MOTION_EVENT_SHAKEA(0)
p3：指向T_MOTION_ACC数据结构的指针。

T_MOTION_ACC数据结构：
typedef struct
{
int32 x;
  //重力加速速度在x方向的分量
int32 y;
  //重力加速速度在y方向的分量
int32 z;
  //重力加速速度在z方向的分量
}T_MOTION_ACC;

Example

/*mrp code*/

mrc_plat( 4004, 0 );

mr_event事件处理：
case
  MR_MOTION_EVENT:
{
switch
  (wParam)
{
case
  MR_MOTION_EVENT_SHAKE:
{
mrc_printf( "Get motion Value: x=%d, y=%d, z=%d", motionAcc->x,
  motionAcc->y, motionAcc->z
  );
}
break;
case
  MR_MOTION_EVENT_TILT:
{
mrc_printf(
  "Get motion Value: x=%d, y=%d, z=%d", motionAcc->x, motionAcc->y,
  motionAcc->z
  );
}
break;
default:
break;
}
}
break;

See Also

mr_plat(4001)


mr_plat(4005) - 动感芯片监听倾斜模式

int32 mr_plat(int32 code = 4005, int32 param)

Description
设置动感芯片监听倾斜模式。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

晃动的值将通过mr_event值来传递，mr_event(p1,p2,p3)各参数定义如下：
p1:
  MR_MOTION_EVENT(18)
p2:
  MR_MOTION_EVENT_SHAKEA(1)
p3:指向T_MOTION_ACC数据结构的指针。

T_MOTION_ACC数据结构：
typedef
  struct
{
int32 x;
  //重力加速速度在x方向的分量
int32 y;
  //重力加速速度在y方向的分量
int32 z;
  //重力加速速度在z方向的分量
}T_MOTION_ACC;

Example

/*mrp code*/

mrc_plat( 4004, 0 );

mr_event事件处理：
case
  MR_MOTION_EVENT:
{
switch
  (wParam)
{
case
  MR_MOTION_EVENT_SHAKE:
{
mrc_printf( "Get motion Value: x=%d, y=%d, z=%d", motionAcc->x,
  motionAcc->y, motionAcc->z
  );
}
break;
case
  MR_MOTION_EVENT_TILT:
{
mrc_printf(
  "Get motion Value: x=%d, y=%d, z=%d", motionAcc->x, motionAcc->y,
  motionAcc->z
  );
}
break;
default:
break;
}
}
break;

See Also

mr_plat(4001)


mr_plat(4006) - 获取动感芯片上送的数值的范围值

int32 mr_plat(int32 code = 4006, int32 param)

Description
获取动感芯片上送的数值的范围值 。
Parameters

Name | Description
param | 无

Return Value

>1000 成功（若返回值为A，那么动感芯片上送的值的范围在（-（A-1000）到（A-1000）））
MR_FAILED 失败
MR_IGONRE 不支持该功能

注：以上动感芯片x，y，z坐标做如下定义：
1：当手机平放的时候，Z方向正值最大；
2：当手机平盖的时候，Z方向负值最大；
3：当手机屏幕向左，横立起来的时候，X方向正值最大；
4：当手机屏幕向右，横立起来的时候，X方向负值最大；
5：当屏幕对着自己的时候，竖立起来的时候，Y方向负值最大；
6：当屏幕背向着自己的时候，竖立起来的时候，Y方向正值最大。

Remarks

Example

/*mrp code*/

int32 out = -1;
out = mrc_plat( 4006, 0 );
if(out >
  1000)
{
mrc_printf( "max_acc = %d", re - 1000
  );
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1308) - 设置参与刷新的层

int32 mr_platEx

(int32 code = 1308,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置参与刷新的层的句柄的列表。
Parameters

Name | Description
input | T_BLT数据结构指针
input_len | T_BLT数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_BLT数据结构：
typedef struct
{
int32
  layer1;
int32 layer2;
int32
  layer3;
int32 layer4;
}T_BLT;

Example

/*mrp code*/

T_BLT blt;
blt.layer1 = layer1; //layer1,layer2,layer3,layer4 handle of layer
blt.layer2 = layer2;
blt.layer3 = layer3;
blt.layer4 = layer4;
mrc_platEx( 1308, (uint8*)&blt, sizeof(T_BLT), NULL, NULL, NULL );
SGL_UpdateWindow( SGL_GetNextChild ( HWND_DESKTOP, NULL ) );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1309) - 创建层

int32 mr_platEx

(int32 code = 1309,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
创建层。
Parameters

Name | Description
input | T_LAYER_CREATE数据结构指针
input_len | T_LAYER_CREATE数据结构大小
output | T_DSM_COMMON_RSP数据结构指针
output_len | T_DSM_COMMON_RSP 数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_LAYER_CREATE数据结构：
typedef struct
{
int32
  x;
int32 y;
int32
  w;
int32 h;
int32
  size;
char *buffer;
}T_LAYER_CREATE;

T_DSM_COMMON_RSP数据结构：
typedef struct
{
int32 p1; //层句柄 0是非法句柄
}T_DSM_COMMON_RSP;

Example

/*mrp code*/

T_LAYER_CREATE lCre;
int wBmp, hBmp;
int32 re,
  len;
T_DSM_COMMON_RSP *lhnd = NULL;

lCre.buffer =
  (char*)SGL_LoadBitmap( BMP_PLANE, &wBmp, &hBmp );
lCre.size =
  wBmp*hBmp*2;
lCre.w = wBmp;
lCre.h = hBmp;
lCre.x = 20;
lCre.y =
  100;
re = mrc_platEx( 1309, (uint8*)&lCre, sizeof(T_LAYER_CREATE),
  (uint8**)&lhnd, (int32*)&len, NULL );
if (MR_SUCCESS==
  re)
{
mrc_printf( "created layer handle:%d",
  lhnd->p1  );
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1310) - 释放层

int32 mr_plat(int32 code = 1310, int32 param)

Description
释放层。
Parameters

Name | Description
param | 层句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1310, lhnd); //lhnd 层句柄

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1311) - 获得base层的句柄

int32 mr_platEx

(int32 code = 1311,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得base层的句柄。
Parameters

Name | Description
input | T_LAYER_CREATE数据结构指针
input_len | T_LAYER_CREATE数据结构大小
output | T_DSM_COMMON_RSP数据结构
output_len | T_DSM_COMMON_RSP数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_LAYER_CREATE数据结构：
typedef struct
{
int32
  x;
int32 y;
int32
  w;
int32 h;
int32
  size;
char *buffer;
}T_LAYER_CREATE;

T_DSM_COMMON_RSP数据结构：
typedef struct
{
int32 p1;//层句柄 0是非法句柄
}T_DSM_COMMON_RSP;

Example

/*mrp code*/

T_DSM_COMMON_RSP *basel = NULL;
int32 re = -1;
int32 len;

re =
  mrc_platEx( 1311, NULL, 0, (uint8**)&basel, (int32*)&len, NULL
  );
if ( MR_SUCCESS == re )
{
mrc_printf(
  "Base layer handle: %d", basel->p1 );
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1312) - 设置激活层

int32 mr_plat(int32 code = 1312, int32 param)

Description
设置激活层。
Parameters

Name | Description
param | 层句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1312, lhand ); //lhand 层句柄

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1313) - 设置层位置

int32 mr_platEx

(int32 code = 1313,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置层位置。
Parameters

Name | Description
input | T_LAYER_POS数据结构指针
input_len | T_LAYER_POS数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_LAYER_POS数据结构：
typedef struct
{
int32
  x;
int32 y;
}T_LAYER_POS;

Example

/*mrp code*/

T_LAYER_POS pos;
pos.x = DISPLAYPIC_X-50;
pos.y = DISPLAYPIC_Y-10;
mrc_platEx( 1313, (uint8*)&pos, sizeof(T_LAYER_POS), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1314) - 设置png的背景层

int32 mr_plat(int32 code = 1314, int32 param)

Description
设置png的背景层。
Parameters

Name | Description
param | 层句柄

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1315) - 获取激活层信息

int32 mr_platEx

(int32 code = 1315,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取激活层信息。
Parameters

Name | Description
input | 无
input_len | 无
output | T_LAYER_INFO数据结构指针
output_len | T_LAYER_INFO数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_LAYER_INFO数据结构：
typedef struct
{
int32
  handle;
int32 w;
int32
  h;
char *buffer;
}T_LAYER_INFO;

Example

/*mrp code*/

T_LAYER_INFO *acLayInfo = NULL;
int32 len,re;
re = mrc_platEx( 1315,
  NULL, 0, (uint8**)&acLayInfo, (int32*)&len, NULL );
if(MR_SUCCESS
  == re)
{
mrc_printf( "Get active layer:%d",
  acLayInfo->handle );
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1316) - 层叠加

int32 mr_platEx

(int32 code = 1316,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
进行层叠加。
Parameters

Name | Description
input | T_LAYER_FLATTEN数据结构指针
input_len | T_LAYER_FLATTEN数据结构大小
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_LAYER_FLATTEN数据结构：
typedef struct
{
int32 desLayer;
int32 layer1;
int32 layer2;
int32 layer3;
int32 layer4;
}T_LAYER_FLATTEN;
注：将layer1，layer2，layer3，layer4，的数据叠加后放置在deslayer层中

Example

/*mrp code*/

T_LAYER_FLATTEN lflat = { 0 };
lflat.desLayer = baselayer;
lflat.layer1 = layer_hand1e_flatten1;
lflat.layer2 = layer_hand1e_flatten2;
mrc_platEx( 1316, (uint8*)&lflat, sizeof(T_LAYER_FLATTEN), NULL, NULL, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1317) - 设置层的透明值

int32 mr_plat(int32 code = 1317, int32 param)

Description
设置层的透明值。
Parameters

Name | Description
param | 值的范围在0～255之间（0：不透，255：全透）

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1317, 100 );

See Also

mr_plat(1318)


mr_plat(1318) - 关闭层的透明属性

int32 mr_plat(int32 code = 1318, int32 param)

Description
关闭层的透明属性。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1318, 0 );

See Also

mr_plat(1317)


mr_plat(1319) - 设置层的透明色

int32 mr_plat(int32 code = 1319, int32 param)

Description
设置层的透明色（透明色是纯蓝色）。
Parameters

Name | Description
param | 值的范围在0～255之间（0：不透，255：全透）

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1319, 255 );

See Also

mr_plat(1320)


mr_plat(1320) - 关闭层的透明色处理

int32 mr_plat(int32 code = 1320, int32 param)

Description
关闭层的透明色处理。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1320, 0 );

See Also

mr_plat(1319)


mr_plat(1321) - 设置刷屏锁

int32 mr_plat(int32 code = 1321, int32 param)

Description
设置刷屏锁后，之后的刷屏动作都无效
注：需要和解锁配对调用 。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1321, 0 );

See Also

mr_plat(1322)


mr_plat(1322) - 取消刷屏锁

int32 mr_plat(int32 code = 1322, int32 param)

Description
需要在调用刷屏锁之后匹配调用 。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1322, 0 );

See Also

mr_plat(1321)


mr_plat(1016) -初始化

int32 mr_plat(int32 code = 1016, int32 param)

Description
初始化信号强度。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1016, 0 );

See Also

mr_plat(1018)


mr_platEx(1017) - 获得信号强度

int32 mr_platEx

(int32 code = 1017,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得信号强度。
Parameters

Name | Description
input | 无
input_len | 无
output | T_RX 数据结构指针
output_len | T_RX数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

注：需要调用mr_plat中的1016和1018进行初始化和退出。

Remarks

T_RX数据结构：
typedef struct
{
uint8
  level;
uint8 current_band;
uint8
  rat;
uint8 flag;
}T_RX;

Example

/*mrp code*/

T_RX *signalInten = NULL;
int32 len;
int32 re = -1;
re =
  mrc_platEx( 1017, NULL, 0, (uint8**)&signalInten, (int32*)&len, NULL
  );
if ( MR_SUCCESS == re )
{
mrc_printf( "Get
  info:current_band=%d,level=%d,rat=%d,flag=%d",
  signalInten->current_band,\
signalInten->level,
  signalInten->rat, signalInten->flag );
}

See Also

mr_plat(1016)
mr_plat(1018)


mr_plat(1018) - 关闭

int32 mr_plat(int32 code = 1018, int32 param)

Description
关闭获得信号强度功能。
Parameters

Name Description
param

无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1018, 0 );

See Also

mr_plat(1016)


mr_plat(1020) - 获得当前背光状态

int32 mr_plat(int32 code = 1020, int32 param)

Description
获得当前背光状态x18x。
Parameters

Name | Description
param | 无

Return Value

1000 背光灭
其他值 背光亮

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1222) - 设置背光一直为开

int32 mr_platEx

(int32 code = 1222,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
设置lcd一直为开，lcd 不进入sleep。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1223) - 恢复背光设置

int32 mr_platEx

(int32 code = 1223,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
恢复lcd 设置，lcd 可定时进入sleep。
Parameters

Name | Description
input | 无
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1215) - 初始化

int32 mr_plat(int32 code = 1215, int32 param)

Description
获得cell id的初始化。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1215, 0 );

See Also

mr_plat(1216)


mr_plat(1216) - 关闭

int32 mr_plat(int32 code = 1216, int32 param)

Description
关闭获得cell id功能。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1216, 0 );

See Also

mr_plat(1215)


mr_platEx(1224) - 获取小区ID

int32 mr_platEx

(int32 code = 1224,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取小区ID等部分信息。
Parameters

Name | Description
input | 无
input_len | 无
output | T_DSM_CELL_INFO 数据结构指针
output_len | T_DSM_CELL_INFO数据结构大小
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

T_DSM_CELL_INFO数据结构：
typedef struct
{
uint16
  lac;
uint16
  cell_id;
uint8 mnc[2];
uint8
  mcc[3];
uint8 mnc3[4];
  /*移植版本x15x后增加的字段，mnc3[0]中表示的mnc的第三位*/
}T_DSM_CELL_INFO;

注：需要调用mr_plat中的1215和1216进行初始化和退出。

Example

/*mrp code*/

int32 re, len;
T_DSM_CELL_INFO *info = NULL;

re = mrc_platEx(
  1224, NULL, 0, (uint8**)&info, (int32*)&len, NULL );
if (
  MR_SUCCESS == re )
{
mrc_printf( "Get
  info:cellId=%d", info->cell_id );
}

See Also

mr_plat(1215)
mr_plat(1216)


mr_platEx(1001) - 获取屏幕缓冲

int32 mr_platEx

(int32 code = 1001,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
第二内存申请。在某些内存紧张的平台中，sky Engine尝试申请第二内存，第二内存与mr_mem_get获取的第一内存不必连续，以此方法解决某些平台内存紧张问题。若第二内存申请成功，将用于VM的屏幕缓冲，在128×160的平台上需要40K，在176×220的平台上需要76K。（一般返回lcd buffer）。
Parameters

Name | Description
input | 无
input_len | 无
output | 第二内存的地址
output_len | 第二内存长度
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

int32 len;
uint8 *pMemor = NULL;
int32 re = -1;

re =
  mrc_platEx( 1001, NULL, 0, (uint8**)&pMemor, (int32*)&len, NULL
  );
if ( MR_SUCCESS == re)
{
mrc_printf(
  "Applied memory:address = %d, len = %d", pMemor, len
);
}

See Also

mr_platEx(1002)


mr_platEx(1002) - 释放屏幕缓冲

int32 mr_platEx

(int32 code = 1002,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
释放申请到的第二内存。
Parameters

Name | Description
input | 第二内存的地址
input_len | 第二内存长度
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_platEx( 1002, (uint8*)pMemor, len , NULL, NULL, NULL ); //pMemor和len,由mr_platEx(1001)得到

See Also

mr_platEx(1001)


mr_platEx(1012) - 申请内部RAM

int32 mr_platEx

(int32 code = 1012,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
申请内部cache。
Parameters

Name | Description
input | 无
input_len | 要申请的buffer的大小
output | 申请到的buffer的指针
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_IGNORE 不支持该接口

Remarks

一直返回MR_SUCCESS，需要判断*output的值，未实现返回MR_IGNORE。

Example

/*mrp code*/

int32 len;
int32 cache_len = 1024;
uint8 *pCache = NULL;

mrc_platEx( 1012, NULL, cache_len, (uint8**)&pCache, (int32*)&len, NULL );
mrc_printf( "Applied cache:address = %d", pCache );

See Also

mr_platEx(1013)


mr_platEx(1013) - 释放内部RAM

int32 mr_platEx

(int32 code = 1013,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
释放申请内部cache。
Parameters

Name | Description
input | 已经申请到的buffer的地址
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_platEx( 1013, (uint8*)pCache, 0 , NULL, NULL, NULL ); //pCache,由mr_plat(1012)得到的地址

See Also

mr_platEx(1012)


mr_platEx(1014) - 申请扩展内存

int32 mr_platEx

(int32 code = 1014,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
申请扩展内存。
Parameters

Name | Description
input | 无
input_len | 要申请的buffer的大小
output | 申请到的buffer的指针
output_len | 申请到的内存的大小（和input_len相等）
cb | 无

Return Value

一直返回成功，需要判断*output的值。

Remarks

这个函数管理了2个屏幕大小的buffer，但是这个buffer在界面切换，或者被pause的时候需要主动释放掉。

Example

/*mrp code*/

int32 len;
int32 memor_len = 1024;
uint8 *pMemor = NULL;

mrc_platEx( 1014, NULL, memor_len, (uint8**)&pMemor, (int32*)&len, NULL );
mrc_printf( "Applied memory interface:address = %d", pMemor );

See Also

mr_plat(1015)


mr_platEx(1015) - 释放扩展内存

int32 mr_platEx

(int32 code = 1015,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
释放扩展内存。
Parameters

Name | Description
input | 已经申请到的buffer的地址
input_len | 无
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_platEx( 1015, (uint8*)pMemor, 0 , NULL, NULL, NULL ); //pMemor,由mr_plat(1014)得到

See Also

mr_plat(1014)


mr_platEx(1006) - 启动平台QQ

int32 mr_platEx

(int32 code = 1006,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
启动平台QQ。
Parameters

Name | Description
input | mr_custStartParam_st数据结构指针
input_len | mr_custStartParam_st数据结构大小
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

mr_custStartParam_st数据结构：
typedef struct
{
int32  appid;
  //sky应用唯一标志
uint8
   describe[20];
  //应用标志符 –
  可填入list的启动参数as："mtkqq"
uint8*  param;
   //启动验证参数
int32
  paramLen;             //启动验证参数长度
}mr_custStartParam_st;

Example

int32 StartPlatAPP(void)
{
mr_userinfo info={0};
mr_datetime
datetime={0};
int32 ret
= MR_FAILED;

mrc_getDatetime(&datetime);
mrc_getSysInfo(&info);
{
static mr_custStartParam_st
st={0};
static uint8 encode[128] =
{0};
uint8
buf[64]={0};
sprintf((char*)buf,"%s&%s&%s&%d",info.manufactory,info.type,info.IMEI,datetime.month);
ret = mrc_encode(buf, strlen((char*)buf),
encode);
if (ret >
0)
{
MR_PLAT_EX_CB cb = NULL;

mrc_setReloadFile(NULL,
NULL);
st.appid
=
203104;
strcpy((char*)st.describe,(char*)"qq2009r");
st.param = encode;//验证信息为加密后的厂商、机型信息、IMEI号和当前的月份；
st.paramLen =
strlen((char*)encode);
ret = mrc_platEx(1006, (uint8 *)&st, sizeof(mr_custStartParam_st), NULL,
NULL,&cb);
}
else
ret
= MR_FAILED;
}

return ret；
}

See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1332) -SKYQQ接口

int32 mr_platEx

(int32 code = 1332,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
SKYQQ接口。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1217) - 退出天气预报

int32 mr_plat(int32 code = 1217, int32 param)

Description
退出天气预报。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5015) - 获得天气信息

int32 mr_platEx

(int32 code = 5015,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获得天气信息。
Parameters

Name | Description
input | t_mr_weather_info数据结构指针
input_len | 输入参数大小（字节数）
output | 无
output_len | 无
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

t_mr_weather_info数据结构：
typedef struct
{
int weather;// 天气
int high;//最高温度
int low;//最低温度
int wind;//风力
int barometerj;//大气压强
int humidity;//湿度
int visibility ;//可见度
int dewpoint;//露点
t_sun_time sunrise;//日出时间
t_sun_time sunset;//日落时间
char city[64];//所在城市
t_dsm_date date;//天气的日期,表示哪天的天气.
}t_mr_weather_info;
t_sun_time时间结构
typedef struct
{
int hour;
int min;
}t_sun_time;
t_dsm_date日期结构
typedef struct
{
int year;
int month;
int day;
}t_dsm_date;

天气情况枚举值:
typedef enum
{
E_SUNNY, //晴
E_RAIN,//雨天
E_SNOW,//雪
E_CLOUDY,//多云
}e_weather_info;

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5016) - 进入天气预报

int32 mr_platEx

(int32 code = 5016,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
进入天气预报。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5017) - 退出天气预报

int32 mr_platEx

(int32 code = 5017,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
退出天气预报。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5018) - 获取天气通知

int32 mr_platEx

(int32 code = 5018,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取天气通知。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(5019) - 获取天气桌面信息

int32 mr_platEx

(int32 code = 5019,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
获取天气桌面信息。
Parameters

Name | Description
input | 输入参数的起始地址
input_len | 输入参数大小（字节数）
output | 输出参数的起始地址
output_len | 输出参数大小（字节数）
cb | 回调函数，由移植层返回给应用，如果应用成发现这个返回值为非空，那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层，移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数，函数的类型定义如下：
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作（比如output的内存是移植层动态申请的，需要VM层使用完后释放），可以给cb赋值，VM层在使用过output后，会调用cb。

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1211) - 生成随机数

int32 mr_plat(int32 code = 1221, int32 param)

Description
调用平台接口产生随即数。
Parameters

Name | Description
param | 要产生的随即数的范围(正整数)

Return Value

MR_PLAT_VALUE_BASE + 随机数 产生随即数成功
MR_FAILED 产生随机数失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

int32 randata = -1;

randata = mrc_plat( 1211, 100 );
mrc_printf( "Get random data: %d", randata );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1325) - 绘制主菜单背景

int32 mr_plat(int32 code = 1325, int32 param)

Description
绘制主菜单的背景（直接绘制在当前激活层上）。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example

/*mrp code*/

mrc_plat( 1325, 0 );

See Also

Copyright ?2005-20010 SKY-MOBI


mr_plat(1333) - 进入TODO LIST

int32 mr_plat(int32 code = 1333, int32 param)

Description
进入TODO LIST。
Parameters

Name | Description
param | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Example
See Also

Copyright ?2005-20010 SKY-MOBI


mr_platEx(1207) - UNICODE 转 GB

int32 mr_platEx

(int32 code = 1207,
uint8* input,
int32 input_len,
uint8** output,
int32* output_len,
MR_PLAT_EX_CB* cb
)

Description
unicode转gb。
Parameters

Name | Description
input | Unicode字符串指针(大端)
input_len | Unicode字符串长度，Unicode字符串以”\0\0”结尾，该值仅做参考。
output | 返回的GB字符串缓冲
output_len | 返回的GB字符串缓冲的长度。
cb | 无

Return Value

MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能

Remarks

Unicode字符串到gb字符串的转换。Unicode字符串以”\0\0”结尾，输入的“Unicode字符串长度”从Mythroad传下，仅有参考价值。

Example

/*mrp code*/

char *ustr = NULL;
char gbstr[50] = { 0 };
char *gbbuf = NULL;

ustr = "\x6d\x4b\x8b\xd5\x00\x74\x00\x65\x00\x73\x00\x74\x00\x00";//"测试test"
gbbuf = gbstr;
mrc_platEx( 1207, (uint8*)ustr, (int32)wstrlen((PCWSTR)ustr), (uint8**)&gbbuf, (int32*)&len, NULL );

See Also

Copyright ?2005-20010 SKY-MOBI


平台版本号规则

平台版本号规则

为了区分不同的手机平台，相同平台内的不同芯片及我们移植包版本，我们使用了一个32位的版本号来标识。这个版本号是由多个十进制的数段来表示，各个数段的表示如下表(1表示低位)：

11以上（十进制位） | 10（十进制位） | 9 （十进制位） | 8-7（十进制位） | 6-5 （十进制位） | 4-1 （十进制位）
未使用 | 预留 | 新旧规则 | 平台编码 | 平台内版本号 | 基线版本号

新旧规则

平台版本号的规则在2008年1月18号进行了修定，之前的为老的版本，之后的为新的版本，目前市场上的机子主要还是新版本。

  • 0 —— 表示老的版本
  • 1 —— 表示新版本
平台编码

由于我们的虚拟会在不同的手机平台上进行移植，这里给不同的手机平台分配了不同的ID以做标识。

平台 | 平台编码
MTK | 01
SPREADTRUM | 02
NXP | 03
WinCE | 04
Anyka | 05
ADI | 06
TI | 07
MSTAR | 08
VIA | 09
Symbian | 10
未定义 | 13
linux | 12
BREW | 13
coolsand | 14

平台内版本

同一个平台内通常会有多中芯片套系，为了区分这些芯片为平台内的每个芯片定义一个ID,这里称做平台内版本。

MTK平台芯片套系 | 平台内标识
MT6219 | 1
MT6223P
MT6223
MT6223P_S00 		2
MT6225 | 3
MT6226
MT6226M
MT6226D 		4
MT6228 | 5
MT6230 | 6
MT6227
MT6227D 		7
MT6235 | 8
MT6229 | 9
MT6253B | 10
MT6238 | 11
MT6239 | 12
MT6268 | 13

展讯平台芯片套系 | 平台内标识
6600d | 1
6600m | 2
rocky | 3
nile | 4
6600h | 5
mocor | 6
6600L | 7

MSTAR平台芯片套系 | 平台内标识
8528 | 1
8535 | 2
8538 | 3

基线版本

由于我们的移植层代码会由于不同的原因会不停的进行修改和变化，其中最主要的一个原因是移植层支持的功能在不停的增加，为了表示移植层在支持接口集上的差异我们启用了基线版本来表示。这个字段目前有4个十进制数表示，细分为这么3个部分：

  • 第4位 —— 1表示是双卡双带的机子，0表示不是
  • 2-3位 —— 这两位由平台组填写，直接和移植层支持的接口集匹配（接口版本号定义请参考接口跟踪表）
  • 第1位 —— 2表示不支持后台运行，其他值的意义未定义


接口跟踪表

移植层接口跟踪表

这里的版本号就是平台版本号规则里面的基线版本号，因为只有2-3两位表示支持的接口集，所以这里的第一和第三位都用x来表示。

版本号 新增支持接口集 发布时间及说明
x01x 6225jpeg解码接口
png解码接口
后台运行接口
修改活的获得cell id接口
获得文件指针位置接口
x04x 选择sim接口
追加发送短信接口
x08x 录音接口
拍照接口
设置屏保，背景
接收触摸屏move事件
非本地ui电话本接口
x09x 设置新短信是否提示接口
获得t卡状态
x10x 短信接口
获得网络ID接口
x11x 获得短信中心号码
接收副卡短信处理
流媒体接口fsal.c
x15x 获得信号强度
申请内部cache
申请大内存接口
背景播放接口
apn设置接口
连接wap的时候选择sim接口
mr_playsound的音量可控
x16x

对动感芯片的支持
对主题下载的支持
申请片内内存的接口
申请screen buffer的接口
修改x15xcamera拍照死机的问题
绘制gif动画接口
绘制mtk资源图片的接口
刷屏加减锁接口
绘制主菜单背景接口
显示关闭状态条接口
设置层属性接口（位置，是否透明，透明度）
创建释放layer
设置abm层（png）
设置刷新层
层叠加函数
获得base层接口
vm退出处理短信功能
获得当前激活层
修复mr_playsound音量可控的bug

 2009-1-20
x17x 录音支持直接读取录音pcm数据形式
写文件加强功能
短信加强功能
支持8G T卡 		2009-6-11
x18x 支持获得当前背光状态
支持获得当前网络失败码
支持获得手机菜单树 		2009-11-12


接口平台实现一览表

移植层接口平台实现一览表

针对各个接口在各平台的实现情况，现作出如下表格，以供参考。目前提供的只是最近版本的移植层接口实现情况。

 |  |  | 移植层接口 | MTK平台 | SPR平台 | BREW平台 | MSTAR平台
外部移植接口 |  |  | mr_start_dsm | √ | √ | √ | √
 |  |  | mr_start_dsmB | √ | √ | √ | √
 |  |  | mr_start_dsmC | √ | √ | √ | √
 |  |  | mr_start_dsm_ex | √ | √ | √ | √
 |  |  | mr_stop | √ | √ | √ | √
 |  |  | mr_pauseApp | √ | √ | √ | √
 |  |  | mr_resumeApp | √ | √ | √ | √
 |  |  | mr_event | √ | √ | √ | √
 |  |  | mr_timer | √ | √ | √ | √
 |  |  | mr_smsIndiaction | √ | √ | √ | √
 |  |  | mr_save_mrp | √ | √ | √ | √
 |  |  | mr_newSIMInd | √ | √ | √ | √
 |  |  | mr_registerAPP | √ | √ | √ | √
抽象移植接口 | 输出接口 |  | mr_drawBitmap | √ | √ | √ | √
 |  |  | mr_getCharBitmap | √ | √ | √ | √
 |  |  | mr_getScreenInfo | √ | √ | √ | √
 |  |  | mr_startShake | √ | √ | √ | √
 |  |  | mr_playSound | √ | √ | √ | √
 |  |  | mr_stopSound | √ | √ | √ | √
 | 定时器接口 |  | mr_timerStart | √ | √ | √ | √
 |  |  | mr_timerStop | √ | √ | √ | √
 | 文件系统接口 |  | mr_getLen | √ | √ | √ | √
 |  |  | mr_open | √ | √ | √ | √
 |  |  | mr_read | √ | √ | √ | √
 |  |  | mr_write | √ | √ | √ | √
 |  |  | mr_close | √ | √ | √ | √
 |  |  | mr_info | √ | √ | √ | √
 |  |  | mr_seek | √ | √ | √ | √
 |  |  | mr_remove | √ | √ | √ | √
 |  |  | mr_rename | √ | √ | √ | √
 |  |  | mr_mkDir | √ | √ | √ | √
 |  |  | mr_rmDir | √ | √ | √ | √
 |  |  | mr_findStart | √ | √ | √ | ×
 |  |  | mr_findGetNext | √ | √ | √ | ×
 |  |  | mr_findStop | √ | √ | √ | ×
 |  |  | mr_ferrno | √ |  |  | ×
 | 通信接口 |  | mr_sendSms | √ | √ | √ | √
 |  |  | mr_call | √ | √ | √ | √
 |  |  | mr_connectWAP | √ | × | √ | ×
 |  |  | mr_getNetworkID | √ | √ | √ | √
 |  | 网络接口 | mr_initNetwork | √ | √ | √ | √
 |  |  | mr_closeNetwork | √ | √ | √ | √
 |  |  | mr_getHostByName | √ | √ | √ | √
 |  |  | mr_socket | √ | √ | √ | √
 |  |  | mr_connect | √ | √ | √ | √
 |  |  | mr_closeSocket | √ | √ | √ | √
 |  |  | mr_recv | √ | √ | √ | √
 |  |  | mr_send | √ | √ | √ | √
 |  |  | mr_recvfrom | √ |  |  |
 |  |  | mr_sendto | √ |  |  |
 | 本地UI接口 | 菜单接口 | mr_menuCreate | √ | √ | √ | √
 |  |  | mr_menuSetItem | √ | √ | √ | √
 |  |  | mr_menuShow | √ | √ | √ | √
 |  |  | mr_menuRelease | √ | √ | √ | √
 |  |  | mr_menuRefresh | √ | √ | √ | √
 |  | 对话框接口 | mr_dialogCreate | √ | √ | √ | √
 |  |  | mr_dialogRefresh | √ | √ | √ | √
 |  |  | mr_dialogRelease | √ | √ | √ | √
 |  | 文本框接口 | mr_textCreate | √ | √ | √ | √
 |  |  | mr_textRefresh | √ | √ | √ | √
 |  |  | mr_textRelease | √ | √ | √ | √
 |  | 编辑框接口 | mr_editCreate | √ | √ | √ | √
 |  |  | mr_editRelease | √ | √ | √ | √
 |  |  | mr_editGetText | √ | √ | √ | √
 |  | 可扩展窗体接口 | mr_winCreate | √ | √ | × | √
 |  |  | mr_winRelease | √ | √ | × | √
 | 其他系统基本接口 |  | mr_printf | √ | √ | √ | √
 |  |  | mr_mem_get | √ | √ | √ | √
 |  |  | mr_mem_free | √ | √ | √ | √
 |  |  | mr_exit | √ | √ | √ | √
 |  |  | mr_getTime | √ | √ | √ | √
 |  |  | mr_getDatetime | √ | √ | √ | √
 |  |  | mr_getUserInfo | √ | √ | √ | √
 |  |  | mr_sleep | √ | √ |  | √
扩展接口（mr_plat/mr_platEx） | 展讯平台专有接口 |  | mr_plat(1) -调节CPU频率 |  |  |  |
 |  |  | mr_plat(2) -获取平台可映射虚拟键数 |  |  |  |
 |  |  | mr_plat(3)-获取虚拟键状态 |  |  |  |
 |  |  | mr_plat(4)-nes特殊操作 |  |  |  |
 |  |  | mr_plat(5)-保存模拟器游戏积分 |  |  |  |
 |  |  | mr_plat(6)-读取模拟器游戏积分 |  |  |  |
 |  |  | mr_plat(7)-按键音开启关闭控制 |  | √ |  |
 |  |  | mr_plat(8)-设置wap下载的.nes保存所使用的存储器 |  |  |  |
 |  |  | mr_platEx(11)-获取手机平台的mp3存储目录名称 |  | √ |  |
 |  |  | mr_platEx(12)-获取手机平台的picture存储目录名称 |  | √ |  |
 | 本地UI扩展接口 |  | mr_platEx(1)-创建一个单/多选菜单 | √ | √ | √ | √
 |  |  | mr_platEx(2)-设置菜单项 | √ | √ | √ | √
 |  |  | mr_platEx(3) |  |  |  |
 |  |  | mr_platEx(4) |  |  |  |
 |  |  | mr_platEx(5) |  |  |  |
 |  |  | mr_plat(104)-销毁窗口而不画屏 |  |  |  |
 |  |  | mr_platEx(5101)-修改本地UI的左右软件文本 |  |  |  |
 | 文件系统扩展接口 |  | mr_plat(1218)-查询存储卡的状态 | √ | √ | √ | ×
 |  |  | mr_plat(1231)-获得当前文件的指针的位置 | √ | √ | √ | √
 |  |  | mr_platEx(1204)-切换目录 | √ | √ | √ | √
 |  |  | mr_platEx(1305)-获得指定盘符的剩余空间 | √ | √ | √ | √
 |  |  | mr_platEx(1306)-获取存储设备的名字(展讯接口) |  | √ |  |
 | 网络扩展接口 |  | mr_plat(1001)-查询socket的连接状态 | √ | √ | √ | √
 |  |  | mr_plat(1002)-设置socket的连接等待时间 |  |  |  |
 |  |  | mr_platEx(1003)-绑定一个socket到本机端口 |  |  |  |
 |  |  | mr_platEx(1226)-获取PLMN | √ | √ | √ | ×
 |  |  | mr_plat(1327)-查询WIFI是否可用 |  |  |  |
 |  |  | mr_plat(1328)-设置是否使用WIFI联网 |  |  |  |
 |  |  | mr_platEx(6004)-查询最后一次联网时间 |  |  |  |
 | 后台程序接口 |  | mr_plat(1003)-激活后台程序到前台 | √ | √ |  | ×
 |  |  | mr_platEx(1004)-切换到后台运行 | √ | √ | √ | √
 |  |  | mr_platEx(1005)-在状态栏上显示图标 | √ | √ | √ | √
 |  |  | mr_plat(1006)-隐藏状态栏上的图标 | √ | √ | √ | ×
 |  |  | mr_plat(1326)-控制状态栏显示 | √ | × | × | ×
 |  |  | mr_plat(1391)-查询是否支持后台接口 | √ | √ | √ | ×
 |  |  | mr_platEx(6000)-查询桌面气泡框是否支持 | √ | × | × | ×
 |  |  | mr_platEX(6001)-显示桌面气泡框 | √ | × | × | ×
 |  |  | mr_platEx(6002)-隐藏桌面气泡框 | √ | × | × | ×
 |  |  | mr_platEx(6003)-是否在待机界面 |  |  |  |
 |  |  | mr_platEx(1323)-设置异步转后台 |  |  |  |
 |  |  | mr_platEx(6005)-停止异步转后台 |  |  |  |
 | 音频接口 |  | mr_platEx(201x)-设备初始化 | √ | √ | × | ×
 |  |  | mr_platEx(202x)-加载一个文件 | √ | √ | × | ×
 |  |  | mr_plat(1302)-设置声音的大小 | √ | √ | × | ×
 |  |  | mr_platEx(203x)-加载缓冲数据 | √ | √ | × | ×
 |  |  | mr_platEx(204x)-从当前的位置开始播放 | √ | √ | × | ×
 |  |  | mr_platEx(205x)-暂停播放 | √ | √ | × | ×
 |  |  | mr_platEx(206x)-继续播放 | √ | √ | × | ×
 |  |  | mr_platEx(207x)-停止播放 | √ | √ | × | ×
 |  |  | mr_platEx(208x)-关闭设备 | √ | √ | × | ×
 |  |  | mr_platEx(209x)-获取当前设备的状态 | √ | √ | × | ×
 |  |  | mr_platEx(210x)-设置播放位置，已经播放了多少时间 | √ | × | × | ×
 |  |  | mr_platEx(211x)-设置播放位置，已经播放了相对文件或者缓冲的起始位置的偏移量 | × | × | × | ×
 |  |  | mr_platEx(212x)-获取整首歌的播放时间 | √ | √(mp3) | × | ×
 |  |  | mr_platEx(213x)-获取当前的播放进度时间（s） | √ | √(mp3) | × | ×
 |  |  | mr_platEx(215x)-获取当前的播放进度时间（ms） | √ | × | × | ×
 |  |  | mr_platEx(216x)-多媒体模块释放 |  |  |  |
 |  |  | mr_platEx(220x)-占用IRAM |  |  |  |
 |  |  | mr_platEx(221x)-释放IRAM |  |  |  |
 |  |  | mr_platEx(222x)-多通道加载 | √ | × | × | ×
 |  |  | mr_platEx(223x)-多通道播放已经加载的数据 | √ | × | × | ×
 |  |  | mr_platEx(224x)-多通道播放停止 | √ | × | × | ×
 |  |  | mr_platEx(225x)-多通道释放已经加载的数据 | √ | × | × | ×
 |  |  | mr_plat(102)-告知驱动PCM写入数据的绝对地址 | √ | × | × | ×
 |  |  | mr_plat(103)-取得PCM数据已经播放掉的数据的绝对地址 | √ | × | × | ×
 | CAMERA接口 |  | mr_plat(2500)-初始化 | √ | × | × | ×
 |  |  | mr_platEx(2501)-进入预览状态 | √ | × | × | ×
 |  |  | mr_plat(2502)-暂停 | √ | × | × | ×
 |  |  | mr_plat(2503)-恢复 | √ | × | × | ×
 |  |  | mr_plat(2504)-关闭 | √ | × | × | ×
 |  |  | mr_platEx(2505)-拍照 | √ | × | × | ×
 |  |  | mr_plat(2506)-获得缩放等级 | √ | × | × | ×
 |  |  | mr_plat(2507)-放大 | √ | × | × | ×
 |  |  | mr_plat(2508)-缩小 | √ | × | × | ×
 |  |  | mr_platEx(2509)-获取预览数据 | √ | × | × | ×
 | 录音接口 |  | mr_platEx(2700)-开始录音 | √ | × | × | ×
 |  |  | mr_plat(2701)-暂停 | √ | × | × | ×
 |  |  | mr_plat(2702)-恢复 | √ | × | × | ×
 |  |  | mr_plat(2703)-停止 | √ | × | × | ×
 |  |  | mr_platEx(2704)-获得PCM数据 | √ | × | × | ×
 | 图片接口 |  | mr_platEx(3001)-获取图片信息 | √ | √ | √ | ×
 |  |  | mr_platEx(3002)-图片解码 | √ | × | √(jpg) | ×
 |  |  | mr_platEx(3003)-查询解码状态 |  |  |  |
 |  |  | mr_platEx(3004)-gif解码 | × | × | × | ×
 |  |  | mr_platEx(3005)-释放gif解码资源 | √ | × | × | ×
 |  |  | mr_platEx(3007)-绘制BUFFER |  |  |  |
 |  |  | mr_platEx(3008)-获取ACTIVE LAYER |  |  |  |
 |  |  | mr_platEx(3009)-DMA异步刷屏 | √ | × | × | ×
 |  |  | mr_platEx(3010)-直接调用平台接口将图片绘制到指定的矩形内 | √ | × | × | ×
 |  |  | mr_platEx(3011)-显示gif动画 | √ | × | × | ×
 |  |  | mr_plat(3012)-停止动画 | √ | × | × | ×
 |  |  | mr_platEx(3013)- |  |  |  |
 |  |  | mr_platEx(3014)-绘制mtk资源格式的图片 |  |  |  |
 |  |  | mr_platEx(3015)-绘制mtk资源格式的gif动画 |  |  |  |
 | 电话本接口 |  | mr_platEx(4011)-电话本搜索 | √ | × | × | ×
 |  |  | mr_platEx(4012)-电话本编辑 | √ | × | × | ×
 |  |  | mr_platEx(4016)-获取条目信息 | √ | × | × | ×
 |  |  | mr_plat(4017)-拷贝记录 |  |  |  |
 |  |  | mr_platEx(4021)-设置本机号码 |  |  |  |
 |  |  | mr_plat(4022)-获取本机号码 |  |  |  |
 |  |  | mr_plat(4031)-删除所有记录 |  |  |  |
 |  |  | mr_platEx(4032)-获取电话本条数 | √ | × | × | ×
 |  |  | mr_platEx(4033)-获取电话本操作状态 | √ | × | × | ×
 |  |  | mr_platEx(4041)-创建平台电话本浏览对象 | √ | × | × | ×
 |  |  | mr_platEx(4042)-获得选中记录信息 | √ | × | × | ×
 |  |  | mr_platEx(4043)-销毁电话本浏览对象 | √ | × | × | ×
 | 短信模块接口 |  | mr_platEx(1008)-调用mtk的发送短信界面 | √ | × | × | ×
 |  |  | mr_plat(1011)-设置收到新短信的时候是否显示提示界面 | √ | × | × | ×
 |  |  | mr_plat(1100)-获得短信操作的状态 | √ | × | × | ×
 |  |  | mr_plat(1101)-获得短信信箱中短信的条数 | √ | × | × | ×
 |  |  | mr_platEx(1102)-获得指定一条短信的信息 | √ | × | × | ×
 |  |  | mr_platEx(1103)-读取一条短信 | √ | × | × | ×
 |  |  | mr_platEx(1104)-删除一条短信 | √ | × | × | ×
 |  |  | mr_plat(1105)-发送获得手机和sim卡存储空间 | √ | × | × | ×
 |  |  | mr_plat(1106)-获得短信中心 | √ | √ | × | ×
 |  |  | mr_platEx(1203)-发送彩信 | √ | × | × | ×
 | 数据账号接口 |  | mr_plat(1107)-发送获得apn信息的请求 | √ | √ | √ | 待定
 |  |  | mr_platEx(1108)-从缓存中读取apn信息 | √ | √ | √ | 待定
 |  |  | mr_platEx(1109)-设置apn信息 | √ | × | √ | 待定
 |  |  | mr_plat(1110)-设置apn使用的标志位 | √ | √ | √ | √
 |  |  | mr_plat(1111)-调用mtk的界面设置apn | √ | √ | √ | √
 | 手机信息查询及设置接口 |  | mr_plat(1205)-获取手机是否是触摸屏信息 | √ | √ | √ | √
 |  |  | mr_plat(1214)-设置挂机键是否回IDLE | √ | √ | √ | √
 |  |  | mr_platEx(1009)-设置墙纸 | √ | × | √ | √
 |  |  | mr_platEx(1116)-获取编译时间 | √ | √ | × | ×
 |  |  | mr_platEx(1117)-获取硬件版本号 | √ | × | × | ×
 |  |  | mr_platEx(1221)-获取APPLIST标题 | √ | × | × | ×
 |  | LCD旋转 | mr_plat(101)-设置旋转角度 | √ | × | × | ×
 |  |  | mr_plat(105)-获取旋转角度 | √ | × | × | ×
 |  | 主题 | mr_platEx(1112)-激活手机主题 |  |  |  |
 |  |  | mr_plat(1113)-还原手机主题 |  |  |  |
 |  |  | mr_plat(1114)-获得当前激活的主题的appid |  |  |  |
 |  |  | mr_plat(1115)-设置主题中主菜单当前选中的宫格的index |  |  |  |
 |  | 铃音 | mr_platEx(1208)-设置手机铃声 | √ | × | × | ×
 |  | 语言 | mr_plat(1206)-获取手机当前设置的语言 | √ | √ | √ | √
 |  |  | mr_platEx(0x90002)-获取手机支持的全部语言 | √ | × | × | ×
 |  | 情景模式 | mr_plat(1213)-获得手机当前的情景模式 | √ | √ | √ | √
 |  | 字体 | mr_platEx(1201)-获取字宽字高 | √ | × | × | √
 |  | SIM卡信息 | mr_plat(1004)-设置使用SIM卡 | √ | √ | × | √
 |  |  | mr_platEx(1307)-获取SIM卡个数信息 | √ | √ | × | √
 |  | 时间日期 | mr_platEx(5001)-获取手机时间 |  |  |  |
 |  |  | mr_platEx(5002)-设置手机时间 | √ | √ | × | ×
 |  |  | mr_platEx(5011)-设置手机闹钟 |  |  |  |
 |  |  | mr_platEx(5013)-获得手机闹钟个数 |  |  |  |
 |  |  | mr_platEx(5014)-设置闹钟 |  |  |  |
 |  |  | mr_platEx(0x90001)-获取当前时区信息 |  |  |  |
 | NES模拟器接口 |  | mr_platEx(1210)-获取NES模拟器按键布局 |  |  |  |
 |  |  | mr_platEx(1220)-获得rom信息 |  |  |  |
 |  |  | mr_platEx(1225)-获取手柄信息 |  |  |  |
 | 文件浏览接口 |  | mr_platEx(1401)-初始化筛选器 | √ | √ | × | ×
 |  |  | mr_platEx(1402)-设置要显示的文件类型 | √ | √ | × | ×
 |  |  | mr_platEx(1403)-设置不要显示的文件类型 | √ | √ | × | ×
 |  |  | mr_platEx(1404)-调用平台本地浏览界面 | √ | √ | × | ×
 |  |  | mr_platEx(1405)-获得选中的文件路径 | √ | √ | × | ×
 |  |  | mr_platEx(1406)-销毁浏览对象 | √ | √ | × | ×
 | 动感芯片接口 |  | mr_plat(4001)-停止动感芯片监听 | √ |  | × |
 |  |  | mr_plat(4002)-给动感芯片上电 | √ |  | × |
 |  |  | mr_plat(4003)-给动感芯片断电 | √ |  | × |
 |  |  | mr_plat(4004)-动感芯片监听晃动模式 | √ |  | × |
 |  |  | mr_plat(4005)-动感芯片监听倾斜模式 | √ |  | × |
 |  |  | mr_plat(4006)-获取动感芯片上送的数值的范围值 | √ |  | × |
 | 层接口 |  | mr_platEx(1308)-设置参与刷新的层 | √ | × | × | ×
 |  |  | mr_platEx(1309)-创建层 | √ | × | × | ×
 |  |  | mr_plat(1310)-释放层 | √ | × | × | ×
 |  |  | mr_platEx(1311)-获得base层的句柄 | √ | × | × | ×
 |  |  | mr_plat(1312)-设置激活层 | √ | × | × | ×
 |  |  | mr_platEx(1313)-设置层位置 | √ | × | × | ×
 |  |  | mr_plat(1314)-设置png的背景层 |  |  |  |
 |  |  | mr_platEx(1315)-获取激活层信息 | √ | × | × | ×
 |  |  | mr_platEx(1316)-层叠加 | √ | × | × | ×
 |  |  | mr_plat(1317)-设置层的透明值 | √ | × | × | ×
 |  |  | mr_plat(1318)-关闭层的透明属性 | √ | × | × | ×
 |  |  | mr_plat(1319)-设置层的透明色 | √ | × | × | ×
 |  |  | mr_plat(1320)-关闭层的透明色处理 | √ | × | × | ×
 |  |  | mr_plat(1321)-设置刷屏锁 | √ | × | × | ×
 |  |  | mr_plat(1322)-取消刷屏锁 | √ | × | × | ×
 | 信号强度接口 |  | mr_plat(1016)-初始化 | √ | × | × | ×
 |  |  | mr_platEx(1017)-获得信号强度 | √ | × | × | ×
 |  |  | mr_plat(1018)-关闭 | √ | × | × | ×
 | 背光接口 |  | mr_plat(1020)-获得当前背光状态 |  |  |  |
 |  |  | mr_platEx(1222)-设置背光一直为开 | √ | √ | × | √
 |  |  | mr_platEx(1223)-恢复背光设置 |  |  |  |
 | 位置信息接口 |  | mr_plat(1215)-初始化 | √ | × | × | ×
 |  |  | mr_plat(1216)-关闭 | √ | × | × | ×
 |  |  | mr_platEx(1224)-获取小区ID | √ | × | × | ×
 | 内存扩展接口 |  | mr_platEx(1001)-获取屏幕缓冲 | √ | √ | √ | √
 |  |  | mr_platEx(1002)-释放屏幕缓冲 | √ | √ | √ | √
 |  |  | mr_platEx(1012)-申请内部RAM | √ | × | × | ×
 |  |  | mr_platEx(1013)-释放内部RAM | √ | × | × | ×
 |  |  | mr_platEx(1014)-申请扩展内存 | √ | √ | × | √
 |  |  | mr_platEx(1015)-释放扩展内存 | √ | √ | × | √
 | QQ相关接口 |  | mr_platEx(1006)-启动平台QQ |  |  |  |
 |  |  | mr_platEx(1332)-SKYQQ接口 |  |  |  |
 | 天气预报相关接口 |  | mr_plat(1217)-退出天气预报 |  |  |  |
 |  |  | mr_platEx(5015)-获得天气信息 |  |  |  |
 |  |  | mr_platEx(5016)-进入天气预报 |  |  |  |
 |  |  | mr_platEx(5017)-退出天气预报 |  |  |  |
 |  |  | mr_platEx(5018)-获取天气通知 |  |  |  |
 |  |  | mr_platEx(5019)-获取天气桌面信息 |  |  |  |
 | 其他未归类接口 |  | mr_plat(1211)-生成随机数 | √ | √ | × | ×
 |  |  | mr_plat(1325)-绘制主菜单背景 | √ | × | × | ×
 |  |  | mr_plat(1333)-进入TODO LIST |  |  |  |
 |  |  | mr_platEx(1207)-UNICODE转GB |  |  |  |