mrporting.h
26.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
#ifndef mrporting_h
#define mrporting_h
/*如果手机平台没有定义下面的类型,将#if 语句内的定义生效*/
#if 1
typedef unsigned short uint16; /* Unsigned 16 bit value */
typedef unsigned uint32; /* Unsigned 32 bit value */
typedef int int32; /* signed 32 bit value */
typedef unsigned char uint8; /* Signed 8 bit value */
typedef signed char int8; /* Signed 8 bit value */
typedef signed short int16; /* Signed 16 bit value */
#endif
enum {
MR_KEY_0, //按键 0
MR_KEY_1, //按键 1
MR_KEY_2, //按键 2
MR_KEY_3, //按键 3
MR_KEY_4, //按键 4
MR_KEY_5, //按键 5
MR_KEY_6, //按键 6
MR_KEY_7, //按键 7
MR_KEY_8, //按键 8
MR_KEY_9, //按键 9
MR_KEY_STAR, //按键 *
MR_KEY_POUND, //按键 #
MR_KEY_UP, //按键 上
MR_KEY_DOWN, //按键 下
MR_KEY_LEFT, //按键 左
MR_KEY_RIGHT, //按键 右
MR_KEY_POWER, //按键 挂机键
MR_KEY_SOFTLEFT, //按键 左软键
MR_KEY_SOFTRIGHT, //按键 右软键
MR_KEY_SEND, //按键 接听键
MR_KEY_SELECT, //按键 确认/选择(若方向键中间有确认键,建议设为该键)
MR_KEY_VOLUME_UP, //按键 侧键上
MR_KEY_VOLUME_DOWN, //按键 侧键下
MR_KEY_CLEAR,
MR_KEY_A, //游戏模拟器A键
MR_KEY_B, //游戏模拟器B键
MR_KEY_CAPTURE, //拍照键
#if 1 // #ifdef __MR_CFG_FEATURE_QWERTY_KEYPAD__ // 这个宏要去掉,否则会造成库里MR_KEY_NONE值不一样
MR_KEY_QWERTY_A,
MR_KEY_QWERTY_B,
MR_KEY_QWERTY_C,
MR_KEY_QWERTY_D,
MR_KEY_QWERTY_E,
MR_KEY_QWERTY_F,
MR_KEY_QWERTY_G,
MR_KEY_QWERTY_H,
MR_KEY_QWERTY_I,
MR_KEY_QWERTY_J,
MR_KEY_QWERTY_K,
MR_KEY_QWERTY_L,
MR_KEY_QWERTY_M,
MR_KEY_QWERTY_N,
MR_KEY_QWERTY_O,
MR_KEY_QWERTY_P,
MR_KEY_QWERTY_Q,
MR_KEY_QWERTY_R,
MR_KEY_QWERTY_S,
MR_KEY_QWERTY_T,
MR_KEY_QWERTY_U,
MR_KEY_QWERTY_V,
MR_KEY_QWERTY_W,
MR_KEY_QWERTY_X,
MR_KEY_QWERTY_Y,
MR_KEY_QWERTY_Z,
MR_KEY_QWERTY_DEL,
MR_KEY_QWERTY_ENTER,
MR_KEY_QWERTY_SPACE,
MR_KEY_QWERTY_SYMBOL,
/*************************************/
#if 0
MR_KEY_QWERTY_SYMBOL_1, /*; ,*/
MR_KEY_QWERTY_SYMBOL_2, /*: .*/
MR_KEY_QWERTY_SYMBOL_3, /*/ @*/
MR_KEY_QWERTY_SYMBOL_4, /*& '*/
MR_KEY_QWERTY_SYMBOL_5, /*! ?*/
#endif
/*************************************/
MR_KEY_QWERTY_SHIFT,
MR_KEY_QWERTY_CTRL,
MR_KEY_QWERTY_ALT,
MR_KEY_QWERTY_QUESTION,
MR_KEY_QWERTY_CURRENCY,
MR_KEY_QWERTY_FN,
#endif //__MR_CFG_FEATURE_QWERTY__
MR_KEY_NONE //按键 保留
};
enum {
MR_NET_ID_MOBILE, //移动
MR_NET_ID_CN, // 联通gsm
MR_NET_ID_CDMA, //联通CDMA
MR_NET_ID_NONE, //未插卡
MR_NET_ID_OTHER /*其他网络*/
};
enum {
MR_EDIT_ANY, //任何字符
MR_EDIT_NUMERIC, // 数字
MR_EDIT_PASSWORD, //密码,用"*"显示
MR_EDIT_ALPHA
};
enum {
MR_SIM_NEW, //新手机第一次插入SIM卡
MR_SIM_CHANGE, //用户更换SIM卡
MR_SIM_SAME //未进行换卡操作
};
enum {
MR_DIALOG_OK, //对话框有"确定"键。
MR_DIALOG_OK_CANCEL,
MR_DIALOG_CANCEL,
MR_DIALOG_NONE =100
};
enum {
MR_DIALOG_KEY_OK,
MR_DIALOG_KEY_CANCEL
};
enum {
MR_LOCALUI_KEY_OK,
MR_LOCALUI_KEY_CANCEL,
MR_LOCALUI_ACTIVE
};
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,
MR_AUDIO_EVENT,
MR_EVENT_IDLE_WIDGET, /*20*/
MR_MCHAT_EVENT = 100,
};
enum
{
MR_DATA_ACCOUNT_OP_GET,
MR_DATA_ACCOUNT_OP_SET,
};
enum
{
DSM_ERROR_NO_ERROR =0,
DSM_ERROR_UNKNOW,
DSM_ERROR_NO_SPACE,
DSM_ERROR_TERMINATED
};
enum
{
MR_SMS_OP_GET_ME_SIZE,
MR_SMS_OP_GET_SIM_SIZE,
MR_SMS_OP_DELETE,
MR_SMS_OP_GET_MSG_CONTENT,
MR_SMS_OP_SAVE_SMS,
#ifdef __MR_CFG_SET_SMS_STATUS__
MR_SMS_OP_SET_STATUS
#endif
};
typedef enum
{
MR_SOUND_MIDI,
MR_SOUND_WAV,
MR_SOUND_MP3,
MR_SOUND_PCM, //8K
MR_SOUND_M4A,
MR_SOUND_AMR,
MR_SOUND_AMR_WB
}MR_SOUND_TYPE;
typedef enum
{
MR_FONT_SMALL,
MR_FONT_MEDIUM,
MR_FONT_BIG
}MR_FONT_TYPE;
enum
{
MR_SEEK_SET,
MR_SEEK_CUR,
MR_SEEK_END
};
enum
{
MR_SOCK_STREAM,
MR_SOCK_DGRAM
};
enum
{
MR_IPPROTO_TCP,
MR_IPPROTO_UDP
};
enum
{
MR_ENCODE_ASCII,
MR_ENCODE_UNICODE
};
enum
{
MRSOCK_OPENED,
MRSOCK_CONNECTING,
MRSOCK_CONNECTED,
MRSOCK_CLOSED,
MRSOCK_ERR
};
typedef enum
{
IMG_BMP, //BMP 图片
IMG_JPG, //jpg 图片
IMG_PNG, //png 图片
IMG_GIF //gif 图片
}IMG_TYPE;
typedef enum
{
SRC_NAME, //传到移植接口是文件名
SRC_STREAM //传到移植接口的是图片数据流
}SRC_TYPE;
typedef enum
{
MR_CALL_RING,
MR_SMS_RING,
MR_ALARM_RING
}DSM_RING_TYPE;
typedef enum
{
MR_SCENE_NORMAL,
MR_SCENE_MEETING,
MR_SCENE_INDOOR,
MR_SCENE_OUTDOOR,
MR_SCENE_MUTE
}T_DSM_SCENE;
typedef struct
{
int32 scene;
int32 type;
char *path; //gb
}T_DSM_RING_SET;
#define DSM_ARTIST_LEN 100
typedef struct
{
char artist[DSM_ARTIST_LEN+2]; //big endian usc2
int32 totaltime;//单位为s
}T_DSM_AUDIO_INFO;
#define MR_SMS_ENCODE_FLAG 7
#define MR_SMS_REPORT_FLAG 8
enum {
MR_SOCKET_BLOCK, //阻塞方式(同步方式)
MR_SOCKET_NONBLOCK //非阻塞方式(异步方式)
};
typedef struct
{
uint16 year; //年
uint8 month; //月
uint8 day; //日
uint8 hour; //时,24小时制
uint8 minute; //分
uint8 second; //秒
}mr_datetime;
typedef struct
{
uint32 width; //屏幕宽
uint32 height; //屏幕高
uint32 bit; //屏幕象素深度,单位bit
}mr_screeninfo;
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; //SW ver
uint8 spare[12]; //备用
}mr_userinfo;
typedef struct
{
int32 socket;
int32 port;
int32 ip;
}mr_bind_st;
#ifdef MR_FS_ASYN
typedef int32 (*MR_ASYN_FS_CB)(int32 result, uint32 cb_param);
typedef struct
{
void* buf; //文件缓存地址
uint32 buf_len; //缓冲长度,即要读取/写入的长度
uint32 offset; //文件读取/写入偏移
MR_ASYN_FS_CB cb; //回调函数
uint32 cb_param; //回调参数
}mr_asyn_fs_param;
#endif
#define MR_GIF_SUPPORT_NO 3
typedef struct
{
int32 width; //图片的宽度
int32 height; //图片的高
int32 img_type;
}T_DSM_IMG_INFO;
typedef struct
{
char *src; //文件名,或是数据流的buf的地址,如果是文件名,是GB格式
int32 len; //src所指的buf的大小
int32 src_type; //指明src中存放的是文件名,还是数据流
}T_DSM_GET_IMG_INFO;
#define MR_DEOCDE_TYPE_NORMAL 0
#define MR_DEOCDE_TYPE_DBL 1
#define MR_DEOCDE_TYPE_WG 2
typedef struct
{
char *src; //文件名,或是数据流的buf的地址,如果是文件名,是GB格式
int32 len; //src所指的buf的大小
int32 width; //用户图片显示的区域的宽度
int32 height; //用于图片显示的区域的高度
int32 src_type; //指明src中存放的是文件名,还是数据流
char *dest; //解码后的图片数据存放的buf
//新增100716,对老版要特殊考虑,否则当机了
int32 type; //指明解码的方式:0:默认方式,居中显示方式,1:等比例缩放,2:按指定宽高缩放
}T_DSM_IMG_DECODE;
typedef struct T_DSM_FRAME_INFO
{
int32 fwidth; //本帧的宽度
int32 fheight; //本帧的高度
int32 ox; //本帧左上角的x坐标(相对逻辑屏幕)
int32 oy; //本帧左上角的y坐标(相对逻辑屏幕)
int32 transparent_flag; //是否需要透明显示
int32 transparent_color; //透明显示的颜色
int32 delay_time; //本帧显示的时间
char *pdata; //解压好的图片数据
struct T_DSM_FRAME_INFO *next; //指向下一帧的数据结构
}T_DSM_FRAME_INFO;
typedef struct
{
int32 id;
int32 width; //gif的宽度
int32 height; //gif的高度
int32 bg_color; //gif的背景色
int32 frame_count;
T_DSM_FRAME_INFO *first; //指向gif的第一帧的数据结构
}T_DSM_GIF_HEADER;
typedef struct
{
int32 width; //gif的宽度
int32 height; //gif的高度
int bg_color; //gif的背景色
char *pdata; //解压好的图片数据
}T_DSM_PNG_HEADER;
typedef struct
{
int32 id;
}T_DSM_GIF_ID;
#if 0 //取消
typedef struct
{
uint32 mr_head; //Mythroad文件标签
uint32 mri_len; //应用信息头长度
uint32 app_len; //应用长度
uint32 appid; //应用ID
char filename[12]; //应用文件名
uint16 appname[20]; //应用名,Unicode
uint16 appversion[10]; //应用版本,Unicode
uint16 vendor[20]; //开发商信息,Unicode
uint16 description[40]; //应用描述,Unicode
char mrdata[32]; //应用数据
}mr_appSt;
#endif
#define MR_FILE_RDONLY 1//以只读的方式打开文件。
#define MR_FILE_WRONLY 2//以只写的方式打开文件。
#define MR_FILE_RDWR 4//以读写的方式打开文件。
#define MR_FILE_CREATE 8//如果文件不存在,创建该文件。
#define MR_FILE_SHARD 16
#define MR_FILE_COMMITTED 32
#define MR_IS_FILE 1 //文件
#define MR_IS_DIR 2 //目录
#define MR_IS_INVALID 8 //无效(非文件、非目录)
#define MR_FILE_HANDLE int32
#define MR_SEARCH_HANDLE int32
#define MR_SUCCESS 0 //成功
#define MR_FAILED -1 //失败
#define MR_IGNORE 1 //不关心
#define MR_WAITING 2 //异步(非阻塞)模式
//#define MR_NO_SUPPORT -2 //不支持
#define MR_PLAT_VALUE_BASE 1000 //用于某些返回值的基础值
/*定时器到期时调用定时器事件,Mythroad平台将对之进行处理。
p是启动定时器时传入的Mythroad定时器数据*/
extern int32 mr_timer(void);
/*在Mythroad平台中对按键事件进行处理,press = MR_KEY_PRESS按键按下,
= MR_KEY_RELEASE按键释放,key 对应的按键编码*/
extern int32 mr_event(int16 type, int32 param1, int32 param2);
/*退出Mythroad并释放相关资源*/
extern int32 mr_stop(void);
/****************外部接口定义*********************/
#if 0 //已取消
/*当启动Mythroad应用的时候,应该调用Mythroad的初始化函数,
用以对Mythroad平台进行初始化,并用在Mythroad平台上运行指
定的应用,app指向将要运行的游戏或应用的启动数据*/
extern int32 mr_start(mr_appSt* app);
#endif
/*当启动DSM应用的时候,应该调用DSM的初始化函数,
用以对DSM平台进行初始化*/
extern int32 mr_start_dsm(const char* entry);
extern int32 mr_start_dsm_ex(const char *entry,const char *param);
/*注册固化应用*/
extern int32 mr_registerAPP(uint8 *p, int32 len, int32 index);
#if 0 //已取消
/*取得应用列表
appList:指向已经安装未安装应用列表的第一个元素
appLen:应用的个数
注意:appList所指向的内存空间必须由调用此函数的程序员
释放
*/
extern int32 mr_getAppList(mr_appSt** appList, uint32* appLen);
/*取得应用说明*/
void mr_getAppInfo(char* info, mr_appSt *app);
/*删除指定的应用
app:该应用的数据指针
*/
extern int32 mr_uninstall(mr_appSt *app);
#endif
/*暂停应用*/
extern int32 mr_pauseApp(void);
/*恢复应用*/
extern int32 mr_resumeApp(void);
/*当手机收到短消息时调用该函数*/
extern int32 mr_smsIndiaction(uint8 *pContent, int32 nLen, uint8 *pNum, int32 type);
extern int32 mr_smsIndiactionEx(uint8 *pContent, int32 nLen, uint8 *pNum, int32 type);
/*对下载内容(保存在内存区中的一个下载的文件)进行判断,
若下载文件是DSM菜单,由DSM引擎对下载文件进行保存。使用
本函数时,下载文件应该已经下载完全,并且全部内容保存在
所给的内存中。*/
extern int32 mr_save_mrp(void *p,uint32 l);
/*功能同mr_save_mrp,但传入的是一个打开的文件句柄,文件由
调用者关闭。该函数目前尚未实现,若需要使用,请联系ouli*/
extern int32 mr_save_mrp_with_handle(MR_FILE_HANDLE f);
/*用户SIM卡变更*/
extern int32 mr_newSIMInd(int16 type, uint8* old_IMSI);
/*函数mr_initNetwork使用的回调函数定义*/
typedef int32 (*MR_INIT_NETWORK_CB)(int32 result);
/*函数mr_initNetwork使用的回调函数定义*/
typedef int32 (*MR_CONNECT_CB)(int32 result);
/*函数mr_getHostByName使用的回调函数定义*/
typedef int32 (*MR_GET_HOST_CB)(int32 ip);
/****************外部接口定义*********************/
/*********************以下是抽象接口定义******************************/
/*调试打印*/
extern void mr_printf(const char *format,...);
/*内存申请*/
extern int32 mr_mem_get (char** mem_base, uint32* mem_len);
/*内存释放*/
extern int32 mr_mem_free(char* mem, uint32 mem_len);
/*******************************************************************/
/*当使用本地屏幕缓冲时使用的接口*/
/*在屏幕上绘BMP*/
extern void mr_drawBitmap(uint16* bmp, int16 x, int16 y, uint16 w, uint16 h);
/*取得获取unicode码ch指向的字体的点阵信息,并告之
该字体的宽和高,获取到的点阵信息每一个bit表示
字体的一个象素,字体每行的象素必须按字节对其,
也就是说如果一个字体宽为12,则需要用两个字节
来表示该信息,第二个字节的后四个bit为0,从第三
个字节开始才表示下一行的点阵数据*/
extern const char *mr_getCharBitmap(uint16 ch, uint16 fontSize, int *width, int *height);
/*******************************************************************/
#if 0
/*******************************************************************/
/*当使用厂商屏幕缓冲时使用的接口*/
/*显示字符串于屏幕,绘制左上角为x,y。color是RGB颜色*/
extern void mr_drawText(char * pcText, int16 x, int16 y, uint32 color);
/*从显示缓冲区到显示设备的图象更新操作。更新范围左上角为x,y,
宽高为w,h*/
extern void mr_bufToScreen(int16 x, int16 y, uint16 w, uint16 h);
/*取得屏幕缓冲区指针*/
extern void* mr_getScreenBuf(void);
/*******************************************************************/
#endif
/*启动定时器*/
extern int32 mr_timerStart(uint16 t);
/*停止定时器。*/
extern int32 mr_timerStop(void);
/*取得时间,单位ms*/
extern uint32 mr_getTime(void);
/*获取系统日期时间。*/
extern int32 mr_getDatetime(mr_datetime* datetime);
/*取得手机相关信息。*/
extern int32 mr_getUserInfo(mr_userinfo* info);
/*任务睡眠,单位ms*/
extern int32 mr_sleep(uint32 ms);
/*平台扩展接口*/
extern int32 mr_plat(int32 code, int32 param);
/*增强的平台扩展接口*/
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
extern int32 mr_platEx(int32 code, uint8* input, int32 input_len, uint8** output, int32* output_len, MR_PLAT_EX_CB *cb);
/*文件和目录操作*/
extern int32 mr_ferrno(void);
extern MR_FILE_HANDLE mr_open(const char* filename, uint32 mode);
extern int32 mr_close(MR_FILE_HANDLE f);
extern int32 mr_info(const char* filename);
extern int32 mr_getLen(const char* filename);
extern int32 mr_write(MR_FILE_HANDLE f,void *p,uint32 l);
extern int32 mr_read(MR_FILE_HANDLE f,void *p,uint32 l);
extern int32 mr_seek(MR_FILE_HANDLE f, int32 pos, int method);
extern int32 mr_remove(const char* filename);
extern int32 mr_rename(const char* oldname, const char* newname);
extern int32 mr_mkDir(const char* name);
extern int32 mr_rmDir(const char* name);
/*异步文件读写接口*/
#ifdef MR_FS_ASYN
extern int32 mr_asyn_read(MR_FILE_HANDLE f, mr_asyn_fs_param *param);
extern int32 mr_asyn_write(MR_FILE_HANDLE f, mr_asyn_fs_param *param);
#endif
/*目录搜索开始*/
extern MR_SEARCH_HANDLE mr_findStart(const char* name, char* buffer, uint32 len);
/*取得一个目录搜索结果*/
extern int32 mr_findGetNext(MR_SEARCH_HANDLE search_handle, char* buffer, uint32 len);
/*目录搜索结束*/
extern int32 mr_findStop(MR_SEARCH_HANDLE search_handle);
/*退出平台*/
extern int32 mr_exit(void);
/*开始手机震动*/
extern int32 mr_startShake(int32 ms);
/*结束手机震动*/
extern int32 mr_stopShake(void);
/*播放音频数据*/
extern int32 mr_playSound(int type, const void* data, uint32 dataLen, int32 loop);
/*停止播放音频*/
extern int32 mr_stopSound (int type);
/*发送一条短消息*/
extern int32 mr_sendSms(char* pNumber, char*pContent, int32 encode);
/*拨打电话*/
extern void mr_call(char *number);
/*取得网络ID,0 移动,1 联通*/
extern int32 mr_getNetworkID(void);
/*连接WAP*/
extern void mr_connectWAP(char* wap);
/*GUI 接口*/
extern int32 mr_menuCreate(const char* title, int16 num);
extern int32 mr_menuSetItem(int32 menu, const char *text, int32 index);
extern int32 mr_menuShow(int32 menu);
/*设置选中项目,保留*/
extern int32 mr_menuSetFocus(int32 menu, int32 index);
extern int32 mr_menuRelease(int32 menu);
extern int32 mr_menuRefresh(int32 menu);
extern int32 mr_sleep(uint32 ms);
extern int32 mr_dialogCreate(const char * title, const char * text, int32 type);
extern int32 mr_dialogRelease(int32 dialog);
extern int32 mr_dialogRefresh(int32 dialog, const char * title, const char * text, int32 type);
extern int32 mr_textCreate(const char * title, const char * text, int32 type);
extern int32 mr_textRelease(int32 text);
extern int32 mr_textRefresh(int32 handle, const char * title, const char * text);
extern int32 mr_editCreate(const char * title, const char * text, int32 type, int32 max_size);
extern int32 mr_editRelease(int32 edit);
extern const char* mr_editGetText(int32 edit);
extern int32 mr_winCreate(void);
extern int32 mr_winRelease(int32 win);
extern int32 mr_getScreenInfo(mr_screeninfo * screeninfo);
/*Socket接口*/
extern int32 mr_initNetwork(MR_INIT_NETWORK_CB cb, const char *mode);
extern int32 mr_closeNetwork(void);
extern int32 mr_getHostByName(const char *name, MR_GET_HOST_CB cb);
extern int32 mr_socket(int32 type, int32 protocol);
extern int32 mr_connect(int32 s, int32 ip, uint16 port, int32 type);
extern int32 mr_closeSocket(int32 s);
extern int32 mr_recv(int32 s, char *buf, int len);
extern int32 mr_recvfrom(int32 s, char *buf, int len, int32 *ip, uint16 *port);
extern int32 mr_send(int32 s, const char *buf, int len);
extern int32 mr_sendto(int32 s, const char *buf, int len, int32 ip, uint16 port);
#define MR_MEDIA_INIT 201
#define MR_MEDIA_BUF_LOAD 203
#define MR_MEDIA_FILE_LOAD 202
#define MR_MEDIA_PLAY_CUR_REQ 204
#define MR_MEDIA_PAUSE_REQ 205
#define MR_MEDIA_RESUME_REQ 206
#define MR_MEDIA_STOP_REQ 207
#define MR_MEDIA_CLOSE 208
#define MR_MEDIA_GET_STATUS 209
#define MR_MEDIA_SETPOS 210
#define MR_MEDIA_GETTIME 211
#define MR_MEDIA_GET_TOTAL_TIME 212
#define MR_MEDIA_GET_CURTIME 213
#define MR_MEDIA_GET_CURTIME_MSEC 215
#define MR_MEDIA_FREE 216
#define MR_MEDIA_ALLOC_INRAM 220
#define MR_MEDIA_FREE_INRAM 221
#define MR_MEDIA_OPEN_MUTICHANNEL 222
#define MR_MEDIA_PLAY_MUTICHANNEL 223
#define MR_MEDIA_STOP_MUTICHANNEL 224
#define MR_MEDIA_CLOSE_MUTICHANNEL 225
typedef struct
{
int32 index;
int8 type;
}T_DSM_GET_SMS_INFO_REQ;
typedef struct
{
int32 index;
int8 type;
int8 state;
}T_DSM_SET_SMS_STATE_REQ;
typedef struct
{
int32 index;
int8 type;
}T_DSM_DELETE_SMS_REQ;
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;
typedef enum
{
MR_SMS_STORAGE_SIM,
MR_SMS_STORAGE_ME
}MR_SMS_STORAGE;
typedef enum
{
MR_SMS_NOT_READY = MR_PLAT_VALUE_BASE,
MR_SMS_READY
}MR_SMS_STATUS;
typedef enum
{
MR_NORMAL_SCREEN = MR_PLAT_VALUE_BASE,
MR_TOUCH_SCREEN,
MR_ONLY_TOUCH_SCREEN
}MR_SCREEN_TYPE;
typedef enum
{
MR_CHINESE = MR_PLAT_VALUE_BASE,
MR_ENGLISH,
MR_TCHINESE,//繁体
MR_SPANISH,//西班牙
MR_DANISH,//丹麦语
MR_POLISH,//波兰
MR_FRENCH,//法国
MR_GERMAN,//德国
MR_ITALIAN,//意大利
MR_THAI,//泰语
MR_RUSSIAN,// 俄罗斯
MR_BULGARIAN,//保加利亚
MR_UKRAINIAN,//乌克兰
MR_PORTUGUESE,//葡萄牙
MR_TURKISH,//土耳其
MR_VIETNAMESE,//越南
MR_INDONESIAN,//印度尼西亚
MR_CZECH,//捷克
MR_MALAY,//马来西亚
MR_FINNISH,//芬兰的
MR_HUNGARIAN,//匈牙利
MR_SLOVAK,//斯洛伐克
MR_DUTCH,//荷兰
MR_NORWEGIAN,//挪威
MR_SWEDISH,//瑞典
MR_CROATIAN,//克罗地亚
MR_ROMANIAN,//罗马尼亚
MR_SLOVENIAN,//斯洛文尼亚
MR_GREEK,//希腊语
MR_HEBREW,//希伯来
MR_ARABIC,//阿拉伯
MR_PERSIAN,//波斯
MR_URDU,//乌尔都语
MR_HINDI,//北印度
MR_MARATHI,//马拉地语(属印欧语系印度语族)
MR_TAMIL,//泰米尔语
MR_BENGALI,//孟加拉人(语
MR_PUNJABI,//印度西北部的一地方
MR_TELUGU//泰卢固语(印度东部德拉维拉语言)
}MR_LANGUAGE;
typedef enum
{
MR_IDLE_BG_PAPER, /*背景*/
MR_IDLE_SAVER_PAPER /*屏保*/
}MR_IDLE_PAPER_TYPE;
typedef enum
{
MR_SMS_ACTION_SAVE = MR_PLAT_VALUE_BASE+1,
MR_SMS_ACTION_DELETE
}MR_SMS_ACTION_TYPE;
enum
{
MR_MSDC_NOT_EXIST = MR_PLAT_VALUE_BASE,
MR_MSDC_OK,
MR_MSDC_NOT_USEFULL /*可能在usb模式导致无法操作t卡*/
};
#define ACI_MIDI_DEVICE 1
#define ACI_WAVE_DEVICE 2
#define ACI_MP3_DEVICE 3
#define ACI_AMR_DEVICE 4
#define ACI_PCM_DEVICE 5
#define ACI_M4A_DEVICE 6
#define ACI_AMR_WB_DEVICE 7
#define MR_MEDIA_IDLE 1
#define MR_MEDIA_INITED 2
#define MR_MEDIA_LOADED 3
#define MR_MEDIA_PLAYING 4
#define MR_MEDIA_PAUSED 5
#define MR_MEDIA_SUSPENDED 6
#define MR_MEDIA_SUSPENDING 7
#define DSM_MAX_FILE_LEN 128
#define DSM_MAX_NAME_LEN 64
#define MR_PHB_NONE 0
#define MR_PHB_SIM 1 /*对sim 卡操作*/
#define MR_PHB_NVM 2 /* 对nvm操作 */
#define MR_PHB_BOTH 3
#define MR_PHB_BY_NAME 1
#define MR_PHB_BY_NUMBER 2
//电话本操作返回值
#define MR_PHB_SUCCESS (0+MR_PLAT_VALUE_BASE)
#define MR_PHB_ERROR (1+MR_PLAT_VALUE_BASE)
#define MR_PHB_READY (2+MR_PLAT_VALUE_BASE)
#define MR_PHB_NOT_SUPPORT (3+MR_PLAT_VALUE_BASE)
#define MR_PHB_NOT_READY (4+MR_PLAT_VALUE_BASE)
#define MR_PHB_NOT_FOUND (5+MR_PLAT_VALUE_BASE)
#define MR_PHB_STORAGE_FULL (6+MR_PLAT_VALUE_BASE)
#define MR_PHB_NUMBER_TOO_LONG (7+MR_PLAT_VALUE_BASE)
#define MR_PHB_OUT_OF_INDEX (8+MR_PLAT_VALUE_BASE)
#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)
#define MR_LCD_ROTATE_NORMAL 0
#define MR_LCD_ROTATE_90 1
#define MR_LCD_ROTATE_180 2
#define MR_LCD_ROTATE_270 3
#define MR_LCD_MIRROR 4
#define MR_LCD_MIRROR_ROTATE_90 5
#define MR_LCD_MIRROR_ROTATE_180 6
#define MR_LCD_MIRROR_ROTATE_270 7
#define MR_FMGR_TYPE_ALL 1
#define MR_FMGR_TYPE_FOLDER 2
#define MR_FMGR_TYPE_FOLDER_DOT 3
#define MR_FMGR_TYPE_UNKNOW 4
/* image */
#define MR_FMGR_TYPE_BMP 5
#define MR_FMGR_TYPE_JPG 6
#define MR_FMGR_TYPE_JPEG 7
#define MR_FMGR_TYPE_GIF 8
#define MR_FMGR_TYPE_PNG 9
#define MR_FMGR_TYPE_EMS 10
#define MR_FMGR_TYPE_ANM 11
#define MR_FMGR_TYPE_WBMP 12
#define MR_FMGR_TYPE_WBM 13
/* audio */
#define MR_FMGR_TYPE_IMY 14
#define MR_FMGR_TYPE_MID 15
#define MR_FMGR_TYPE_MIDI 16
#define MR_FMGR_TYPE_WAV 17
#define MR_FMGR_TYPE_AMR 18
#define MR_FMGR_TYPE_AAC 19
#define MR_FMGR_TYPE_DAF 20
#define MR_FMGR_TYPE_VM 21
#define MR_FMGR_TYPE_AWB 22
#define MR_FMGR_TYPE_AIF 23
#define MR_FMGR_TYPE_AIFF 24
#define MR_FMGR_TYPE_AIFC 25
#define MR_FMGR_TYPE_AU 26
#define MR_FMGR_TYPE_SND 27
#define MR_FMGR_TYPE_M4A 28
#define MR_FMGR_TYPE_MMF 29
#define MR_FMGR_TYPE_WMA 30
/* video */
#define MR_FMGR_TYPE_3GP 31
#define MR_FMGR_TYPE_MP4 32
#define MR_FMGR_TYPE_AVI 33
/* others */
#define MR_FMGR_TYPE_JAD 34
#define MR_FMGR_TYPE_JAR 35
#define MR_FMGR_TYPE_VCF 36
#define MR_FMGR_TYPE_VCS 37
#define MR_FMGR_TYPE_THEME 38
#define MR_FMGR_TYPE_MRP 39
#define MR_FMGR_TYPE_NES 40
#define MR_FMGR_TYPE_ZIP 41
#define MR_FMGR_TYPE_ZPK 42
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;
typedef struct
{
uint8* src;
uint8* dest;
uint16 src_width;
uint16 src_height;
uint16 src_pitch;
uint16 dest_width;
uint16 dest_height;
uint16 output_clip_x1;
uint16 output_clip_y1;
uint16 output_clip_x2;
uint16 output_clip_y2;
}mr_img_resize_struct;
/*********************nes end**********************/
typedef struct
{
uint16 lac;
uint16 cell_id;
uint8 mnc[2];
uint8 mcc[3];
uint8 mnc3[4];
}T_DSM_CELL_INFO;
typedef struct {
uint8 mcc[3]; //MCC
uint8 mnc[3]; //MNC
uint8 lac[2]; //LAC
uint16 cell_id; //cell ID
uint8 is_present;
}dsm_rr_em_lai_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; //按键 其他,保留
} mr_nes_joypad_st;
typedef struct
{
int32 appid; //app id
uint8 describe[20]; //应用标志符 - "ipqq"
uint8* param; //预留扩展用
}mr_backstage_st;
typedef enum
{
DSM_PIC_DESTID_IDLE_ICON,
DSM_PIC_DESTID_IDLE_BG
}mr_pic_destId;
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;
typedef int32 (*startSkyLapp)(uint8* param);
void mr_registerLappEntry(void* entry);
typedef struct
{
int32 id;/*appid*/
int32 ver;
char* sidName;
int32 ram;
}mr_appInfoSt_st;
#ifndef __MMI_DSM_FULL_LIB__
extern mr_appInfoSt_st mrc_appInfo_st; //精简虚拟机才能使用
#endif
#endif
/*#auto end#*/