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#*/