⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cms_wsp.c

📁 wap 协议栈 包括1.2 和2.0 由c开发 基于brew平台
💻 C
📖 第 1 页 / 共 4 页
字号:
//		if(pBrowserInfo)
//		{
//			pBrowserInfo->FileType = CMS_HTTP_CONTENT_ML;
//		}
		FileType = CMS_HTTP_CONTENT_ML;
		break;
	
	case  0x21:/* "image/vnd.wap.wbmp", 0x21 ,*/
		////cms_trace("download a WBMP");
//		if(pBrowserInfo)
//		{
//			pBrowserInfo->FileType = CMS_HTTP_CONTENT_WBMP;
//		}
		FileType = CMS_HTTP_CONTENT_WBMP;
		break;

	case 0x1D:/* "image/vnd.wap.GIF", 0x21 ,*/
		////cms_trace("download a GIF");
//		if(pBrowserInfo)
//		{
//			pBrowserInfo->FileType = CMS_HTTP_CONTENT_GIF;
//		}
		FileType = CMS_HTTP_CONTENT_GIF;
	break;
	
	case 0x1E:/* "image/vnd.wap.JPEG", 0x21 ,*/
		////cms_trace("download a JPEG");
//		if(pBrowserInfo)
//		{
//			pBrowserInfo->FileType = CMS_HTTP_CONTENT_JPEG;
//		}
		FileType = CMS_HTTP_CONTENT_JPEG;
	break;

	case 0x20:/* "image/png", 0x21 ,*/
		////cms_trace("download a png");
//		if(pBrowserInfo)
//		{
//			pBrowserInfo->FileType = CMS_HTTP_CONTENT_PNG;
//		}
		FileType = CMS_HTTP_CONTENT_PNG;
	break;

	case 0x08:/*{ "text/vnd.wap.wml", 0x08 },*/
		////cms_trace("download a WML");
//		if(pBrowserInfo)
//		{
//			pBrowserInfo->FileType = CMS_HTTP_CONTENT_ML;
//		}
		FileType = CMS_HTTP_CONTENT_ML;
		break;
	
	case 0x03:/* "text/plain", 0x03 ,*/
		u=0x14;
		break;

	case 0x09:/* "text/vnd.wap.wmlscript", 0x09 */
	
		break;

	case 0x15:/* "application/vnd.wap.wmlscriptc", 0x15 ,*/
		////cms_trace("download a wmlscript");
		
//		if(NULL != pBrowserInfo)
//		{
//			pBrowserInfo->FileType = CMS_HTTP_CONTENT_WMLSCRIPT;
//		}
		FileType = CMS_HTTP_CONTENT_WMLSCRIPT;
		break;
	//else if(u>=32 && u<=126) /*Content type is text type  --Shawn */  
	case 0x3e:
		*content_type = octstr_create_from_data("application/vnd.wap.mms-message",strlen("application/vnd.wap.mms-message"));
		*content_data = octstr_create_from_data(pdu->data+data_pos,pdu->len-(off+headerslen-i-2));
//			*content_data = octstr_create_from_data(&pdu[off],headerslen - i);
		return 1;

	case 0x23:	
	case 0x22:/* jar */
		////cms_trace("jar");	
		break;

	case 0xf0:/* down load a mid    */
	case 0xf1:/* down load a midi	*/
	case 0xf2:/* down load a x-mid  */
	case 0xf3:/* down load a x-midi */
	case 0xf4:/* down load a sp-midi*/

		////cms_trace("down load a x-mid");

		FileType = CMS_HTTP_CONTENT_MIDI;

		break;

	case 0x3D:/* text/css */

		FileType = CMS_HTTP_CONTENT_CSS;
		break;
		
	case 0xFF01:/* audio/amr */
		FileType = CMS_HTTP_CONTENT_AMR;
		////cms_trace("access unpackage: arm file\n" );
		break;
	case 0xFF02:/* audio/MP3 */
		FileType = CMS_HTTP_CONTENT_MP3;
		////cms_trace("access unpackage: arm file\n" );
		break;
	case 0xFF03:/* image_flash */
		FileType = CMS_HTTP_CONTENT_IMAGE_ZDD;
		////cms_trace("access unpackage: image/vnd.ziyitong.zdd file\n" );
		break;
	case 0xFF04:/* image_flash */
		FileType = CMS_HTTP_CONTENT_IMAGE_VIS;
		////cms_trace("access unpackage: image/vnd.ziyitong.vis file\n" );
		break;
	case 0xFF05:/* image_flash */
		FileType = CMS_HTTP_CONTENT_IMAGE_DRM;
		////cms_trace("access unpackage: image/vnd.ziyitong.drm file\n" );
		break;
		
	case 0xFF06:/* mmf */
	case 0xFF07:/* mmf */
		FileType = CMS_HTTP_BROWSER_MUSIC_SMAF;
		////cms_trace("access unpackage: mmf file\n" );
		break;
	
	case 0xFF08:/* wave */
		FileType = CMS_HTTP_CONTENT_X_WAVE;
		////cms_trace("access unpackage: wave file\n" );
		break;
	case 0xFF09:/*image_bill*/
		FileType = CMS_HTTP_CONTENT_IMAGE_BILL;
		////cms_trace("access unpackge: image bill\n");
		break;
	case 0xFF0A:
		FileType = CMS_HTTP_CONTENT_CHAOTEX;
		////cms_trace("access unpackge: chaotex\n");
		break;
	case 0xFF0B:
		FileType = CMS_HTTP_CONTENT_DRM_MESSAGE;
		////cms_trace("access unpackge: drm msg");
		break;
	case 0xFF0C:
		//FileType = (Cms_ContentType_e)CMS_GetContentType(text_content_type, NULL);
		////cms_trace( "access: get filetype from plat : %d\n", FileType );
		break;
	default:
		//CmsSetContentType( FileType );
		////cms_trace("error unpack udp: not know content type!\n");

		return 0;

	}
	
	//CmsSetContentType( FileType );
		
	////cms_trace("pdutype = %d\n", u);
	
	off = data_pos;

	if (u==0x14)
	{
		//shawn 2004.02.26
		result = (P_CMS_U8)malloc(20*1024);
		memset(result,0,20*1024);
		if(result != NULL)
		{
			int i1 = (int)pdu->data+off;
			int i2 = (int)pdu->len-off;

			if(i2 < 10 *1024)
			{


				//CmsWAPWBXMLToWML((P_CMS_U8)i1, (CMS_U32)i2, result, 20*1024);
			}
			else
			{
				unsigned char wrongpage[] = { 
  				 0x3c, 0x3f, 0x78, 0x6d, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 
  				 0x6e, 0x3d, 0x22, 0x31, 0x2e, 0x30, 0x22, 0x3f, 0x3e, 0x3c, 0x21, 0x44, 
  				 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, 0x77, 0x6d, 0x6c, 0x20, 0x50, 
 				 0x55, 0x42, 0x4c, 0x49, 0x43, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x41, 0x50, 
				 0x46, 0x4f, 0x52, 0x55, 0x4d, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x57, 
 				 0x4d, 0x4c, 0x20, 0x31, 0x2e, 0x31, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x20, 
  				 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 
   				 0x77, 0x61, 0x70, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 
   				 0x2f, 0x44, 0x54, 0x44, 0x2f, 0x77, 0x6d, 0x6c, 0x5f, 0x31, 0x2e, 0x31, 
    			 0x2e, 0x78, 0x6d, 0x6c, 0x22, 0x3e, 0x3c, 0x77, 0x6d, 0x6c, 0x3e, 0x3c, 
  				 0x68, 0x65, 0x61, 0x64, 0x3e, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x20, 0x63, 
   				 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x6d, 0x61, 0x78, 0x2d, 
   				 0x61, 0x67, 0x65, 0x3d, 0x30, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x68, 0x65, 
  				 0x61, 0x64, 0x3e, 0x3c, 0x63, 0x61, 0x72, 0x64, 0x20, 0x74, 0x69, 0x74, 
   				 0x6c, 0x65, 0x3d, 0x22, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x61, 
   				 0x67, 0x65, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x50, 0x61, 0x67, 0x65, 0x20, 
   				 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 
  				 0x6f, 0x6e, 0x67, 0x21, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x63, 0x61, 
   				 0x72, 0x64, 0x3e, 0x3c, 0x2f, 0x77, 0x6d, 0x6c, 0x3e, 0x00,
				};
				Cms_StrCpy((char*)result,(char*)wrongpage);
			} 
			////CmsDebugFunc((unsigned char*)"result = ",(short)strlen((char*)result),(void*)result);
		}
		*content_data = octstr_create(result);
		////CmsDebugFunc((unsigned char*)"*content_data = ",(short)20,(void*)result);
		free(result);
		result = NULL;
	}
	else if(u == 0x22)
	{
		*content_data = OTA_octstr_create_from_data( pdu->data + off,octstr_len(pdu) - off);
	}
	else
	{
		*content_data = octstr_create_from_data( pdu->data + off,octstr_len(pdu) - off);
	}
	
	return 0;
}

/*=== LHY_050217 ===*/
static void null_scr_appid_cnting(WSPMachine *machine,WSPEvent *event)
{
	char u_a[256]; 
	P_CMS_U8 pAppAccept=NULL; 
	Octstr *cap_head = NULL;

	memset(u_a,0,sizeof(u_a));

	/* test */
	//cms_strcpy(u_a,(char*)brw_UA);
	//Cms_Set_Useragent((unsigned char *)u_a);
#if 0
	//user-agent 在测试的过程中,为了能够进行正常的页面测试,利用nokia6230进行测试 
	cms_strcpy((char*)u_a, "Nokia6230/2.0 (03.14) Profile/MIDP-2.0 Configuration/CLDC-1.1");
#else
	//user-agent
	//Cms_Set_Useragent((unsigned char *)u_a);
#endif

	pAppAccept = (P_CMS_U8)malloc(256);
	if(NULL != pAppAccept)
	{
		memset(pAppAccept,0,256);
		Cms_StrCpy((char *)pAppAccept, (const char*)"application/vnd.syncml+xml");
	}
	
	cap_head = octstr_create_empty();
	append_uintvar(cap_head, sizeof(brwcap)); 

	append_uintvar(cap_head,sizeof(brwhead)+strlen(u_a)+strlen((char *)pAppAccept)+4); //0xa9 '\0' 0x80 '\0'

	octstr_append_data(cap_head,brwcap,sizeof(brwcap));

	if(NULL != pAppAccept)
	{
		octstr_append_char(cap_head,0x80);
		octstr_append_data(cap_head,(unsigned char *)pAppAccept,strlen((char *)pAppAccept));
		octstr_append_char(cap_head,'\0');

		free(pAppAccept);
		pAppAccept = NULL;
	}

	octstr_append_data(cap_head,brwhead,sizeof(brwhead));

	octstr_append_char(cap_head,0xa9);
	octstr_append_data(cap_head,(unsigned char *)u_a,strlen(u_a));
	octstr_append_char(cap_head,'\0');

	null_scr_1_cnting(machine,event,cap_head);

	octstr_destroy(cap_head);

	return;
}

static void null_scr_type0_cnting(WSPMachine *machine, WSPEvent * event )
{

//	char u_a[256];
//	char profile[512];
	char *u_a = NULL;
	char *profile = NULL;
	Octstr* mms_head = NULL;
//	memset(u_a, 0, sizeof(u_a));
//	memset( profile, 0, sizeof(profile) );

	u_a = (char*)malloc(256);
	profile = (char *)malloc(512);
	if (NULL == u_a || NULL == profile)
	{
		return;
	}
	memset(u_a,0,256);
	memset(profile,0,512);

	//Cms_Set_Useragent((unsigned char*)u_a); //UA 和 profile字段
	//Cms_Browser_Set_UAProfile((char*)profile);

    mms_head = octstr_create_empty();
	append_uintvar(mms_head, sizeof(mmscap));

	append_uintvar(mms_head, sizeof(mmshead)+strlen(u_a)+2+strlen(profile)+2);

	octstr_append_data( mms_head, mmscap, sizeof(mmscap));
	octstr_append_data( mms_head, mmshead, sizeof(mmshead) );
	octstr_append_char( mms_head, 0xb5 );
	octstr_append_data( mms_head, (unsigned char*)profile, strlen(profile));
	octstr_append_char( mms_head, '\0' );

	octstr_append_char( mms_head, 0xa9 );
	octstr_append_data( mms_head, (unsigned char*)u_a, strlen(u_a) );
	octstr_append_char( mms_head, '\0' );

	null_scr_1_cnting(machine,event,mms_head);
	
	octstr_destroy( mms_head );

	free(u_a);
	u_a = NULL;
	free(profile);
	profile = NULL;

	return;
}

/*=== end of LHY_050217 ===*/
static void null_scr_type1_cnting(WSPMachine *machine,WSPEvent *event)
{
	//char u_a[256];
	char* u_a = NULL;
	Octstr *cap_head = NULL;

	u_a = (char*)malloc(256);
	if( NULL == u_a )
	{
		return;
	}
	memset(u_a,0,256);
#if 0
	//user-agent 在测试的过程中,为了能够进行正常的页面测试,利用nokia6230进行测试 
	cms_strcpy((char*)u_a, "Nokia6230/2.0 (03.14) Profile/MIDP-2.0 Configuration/CLDC-1.1");
#else
	//user-agent
	//Cms_Set_Useragent((unsigned char *)u_a);
#endif
	
	cap_head = octstr_create_empty();
	append_uintvar(cap_head, sizeof(brwcap)); 

	append_uintvar(cap_head,sizeof(brwhead)+strlen(u_a)+1+1); //0xa9 '\0'

	octstr_append_data(cap_head,brwcap,sizeof(brwcap));

	octstr_append_data(cap_head,brwhead,sizeof(brwhead));

	octstr_append_char(cap_head,0xa9);
	octstr_append_data(cap_head,(unsigned char *)u_a,strlen(u_a));
	octstr_append_char(cap_head,'\0');

	null_scr_1_cnting(machine,event,cap_head);

	octstr_destroy(cap_head);

	free(u_a);
	u_a = NULL;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -