SKYENGINE API 参考手册返回目录 |
(int32 code =
1006,
int32 mr_platEx
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函数来释放移植层分配的资源
MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能
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;
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;
}