亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ptp-pack.c

?? USB Host 開發中支持數碼相機的源碼。即Picture To Picture協議的完整實現
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* curently this file is included into ptp.c */static inline uint16_thtod16p (PTPParams *params, uint16_t var){	return ((params->byteorder==PTP_DL_LE)?htole16(var):htobe16(var));}static inline uint32_thtod32p (PTPParams *params, uint32_t var){	return ((params->byteorder==PTP_DL_LE)?htole32(var):htobe32(var));}static inline voidhtod16ap (PTPParams *params, unsigned char *a, uint16_t val){	if (params->byteorder==PTP_DL_LE)		htole16a(a,val); else 		htobe16a(a,val);}static inline voidhtod32ap (PTPParams *params, unsigned char *a, uint32_t val){	if (params->byteorder==PTP_DL_LE)		htole32a(a,val); else 		htobe32a(a,val);}static inline uint16_tdtoh16p (PTPParams *params, uint16_t var){	return ((params->byteorder==PTP_DL_LE)?le16toh(var):be16toh(var));}static inline uint32_tdtoh32p (PTPParams *params, uint32_t var){	return ((params->byteorder==PTP_DL_LE)?le32toh(var):be32toh(var));}static inline uint16_tdtoh16ap (PTPParams *params, unsigned char *a){	return ((params->byteorder==PTP_DL_LE)?le16atoh(a):be16atoh(a));}static inline uint32_tdtoh32ap (PTPParams *params, unsigned char *a){	return ((params->byteorder==PTP_DL_LE)?le32atoh(a):be32atoh(a));}#define htod8a(a,x)	*(uint8_t*)(a) = x#define htod16a(a,x)	htod16ap(params,a,x)#define htod32a(a,x)	htod32ap(params,a,x)#define htod16(x)	htod16p(params,x)#define htod32(x)	htod32p(params,x)#define dtoh8a(x)	(*(uint8_t*)(x))#define dtoh16a(a)	dtoh16ap(params,a)#define dtoh32a(a)	dtoh32ap(params,a)#define dtoh16(x)	dtoh16p(params,x)#define dtoh32(x)	dtoh32p(params,x)static inline char*ptp_unpack_string(PTPParams *params, char* data, uint16_t offset, uint8_t *len){	int i;	char *string=NULL;	*len=dtoh8a(&data[offset]);	if (*len) {		string=malloc(*len);		memset(string, 0, *len);		for (i=0;i<*len && i< PTP_MAXSTRLEN; i++) {			string[i]=(char)dtoh16a(&data[offset+i*2+1]);		}		/* be paranoid! :( */		string[*len-1]=0;	}	return (string);}static inline voidptp_pack_string(PTPParams *params, char *string, char* data, uint16_t offset, uint8_t *len){	int i;	*len = (uint8_t)strlen(string);		/* XXX: check strlen! */	htod8a(&data[offset],*len+1);	for (i=0;i<*len && i< PTP_MAXSTRLEN; i++) {		htod16a(&data[offset+i*2+1],(uint16_t)string[i]);	}}static inline uint32_tptp_unpack_uint32_t_array(PTPParams *params, char* data, uint16_t offset, uint32_t **array){	uint32_t n, i=0;	n=dtoh32a(&data[offset]);	*array = malloc (n*sizeof(uint32_t));	while (n>i) {		(*array)[i]=dtoh32a(&data[offset+(sizeof(uint32_t)*(i+1))]);		i++;	}	return n;}static inline uint32_tptp_unpack_uint16_t_array(PTPParams *params, char* data, uint16_t offset, uint16_t **array){	uint32_t n, i=0;	n=dtoh32a(&data[offset]);	*array = malloc (n*sizeof(uint16_t));	while (n>i) {		(*array)[i]=dtoh16a(&data[offset+(sizeof(uint16_t)*(i+2))]);		i++;	}	return n;}/* DeviceInfo pack/unpack */#define PTP_di_StandardVersion		 0#define PTP_di_VendorExtensionID	 2#define PTP_di_VendorExtensionVersion	 6#define PTP_di_VendorExtensionDesc	 8#define PTP_di_FunctionalMode		 8#define PTP_di_OperationsSupported	10static inline voidptp_unpack_DI (PTPParams *params, char* data, PTPDeviceInfo *di){	uint8_t len;	unsigned int totallen;		di->StaqndardVersion = dtoh16a(&data[PTP_di_StandardVersion]);	di->VendorExtensionID =		dtoh32a(&data[PTP_di_VendorExtensionID]);	di->VendorExtensionVersion =		dtoh16a(&data[PTP_di_VendorExtensionVersion]);	di->VendorExtensionDesc = 		ptp_unpack_string(params, data,		PTP_di_VendorExtensionDesc, &len); 	totallen=len*2+1;	di->FunctionalMode = 		dtoh16a(&data[PTP_di_FunctionalMode+totallen]);	di->OperationsSupported_len = ptp_unpack_uint16_t_array(params, data,		PTP_di_OperationsSupported+totallen,		&di->OperationsSupported);	totallen=totallen+di->OperationsSupported_len*sizeof(uint16_t)+sizeof(uint32_t);	di->EventsSupported_len = ptp_unpack_uint16_t_array(params, data,		PTP_di_OperationsSupported+totallen,		&di->EventsSupported);	totallen=totallen+di->EventsSupported_len*sizeof(uint16_t)+sizeof(uint32_t);	di->DevicePropertiesSupported_len =		ptp_unpack_uint16_t_array(params, data,		PTP_di_OperationsSupported+totallen,		&di->DevicePropertiesSupported);	totallen=totallen+di->DevicePropertiesSupported_len*sizeof(uint16_t)+sizeof(uint32_t);	di->CaptureFormats_len = ptp_unpack_uint16_t_array(params, data,		PTP_di_OperationsSupported+totallen,		&di->CaptureFormats);	totallen=totallen+di->CaptureFormats_len*sizeof(uint16_t)+sizeof(uint32_t);	di->ImageFormats_len = ptp_unpack_uint16_t_array(params, data,		PTP_di_OperationsSupported+totallen,		&di->ImageFormats);	totallen=totallen+di->ImageFormats_len*sizeof(uint16_t)+sizeof(uint32_t);	di->Manufacturer = ptp_unpack_string(params, data,		PTP_di_OperationsSupported+totallen,		&len);	totallen+=len*2+1;	di->Model = ptp_unpack_string(params, data,		PTP_di_OperationsSupported+totallen,		&len);	totallen+=len*2+1;	di->DeviceVersion = ptp_unpack_string(params, data,		PTP_di_OperationsSupported+totallen,		&len);	totallen+=len*2+1;	di->SerialNumber = ptp_unpack_string(params, data,		PTP_di_OperationsSupported+totallen,		&len);}	/* ObjectHandles array pack/unpack */#define PTP_oh				 0static inline voidptp_unpack_OH (PTPParams *params, char* data, PTPObjectHandles *oh){	oh->n = ptp_unpack_uint32_t_array(params, data, PTP_oh, &oh->Handler);}/* StoreIDs array pack/unpack */#define PTP_sids			 0static inline voidptp_unpack_SIDs (PTPParams *params, char* data, PTPStorageIDs *sids){	sids->n = ptp_unpack_uint32_t_array(params, data, PTP_sids,	&sids->Storage);}/* StorageInfo pack/unpack */#define PTP_si_StorageType		 0#define PTP_si_FilesystemType		 2#define PTP_si_AccessCapability		 4#define PTP_si_MaxCapability		 6#define PTP_si_FreeSpaceInBytes		14#define PTP_si_FreeSpaceInImages	22#define PTP_si_StorageDescription	26static inline voidptp_unpack_SI (PTPParams *params, char* data, PTPStorageInfo *si){	uint8_t storagedescriptionlen;	si->StorageType=dtoh16a(&data[PTP_si_StorageType]);	si->FilesystemType=dtoh16a(&data[PTP_si_FilesystemType]);	si->AccessCapability=dtoh16a(&data[PTP_si_AccessCapability]);	/* XXX no dtoh64a !!! skiping next two */	si->FreeSpaceInImages=dtoh32a(&data[PTP_si_FreeSpaceInImages]);	si->StorageDescription=ptp_unpack_string(params, data,		PTP_si_StorageDescription, &storagedescriptionlen);	si->VolumeLabel=ptp_unpack_string(params, data,		PTP_si_StorageDescription+storagedescriptionlen*2+1,		&storagedescriptionlen);}/* ObjectInfo pack/unpack */#define PTP_oi_StorageID		 0#define PTP_oi_ObjectFormat		 4#define PTP_oi_ProtectionStatus		 6#define PTP_oi_ObjectCompressedSize	 8#define PTP_oi_ThumbFormat		12#define PTP_oi_ThumbCompressedSize	14#define PTP_oi_ThumbPixWidth		18#define PTP_oi_ThumbPixHeight		22#define PTP_oi_ImagePixWidth		26#define PTP_oi_ImagePixHeight		30#define PTP_oi_ImageBitDepth		34#define PTP_oi_ParentObject		38#define PTP_oi_AssociationType		42#define PTP_oi_AssociationDesc		44#define PTP_oi_SequenceNumber		48#define PTP_oi_filenamelen		52#define PTP_oi_Filename			53static inline uint32_tptp_pack_OI (PTPParams *params, PTPObjectInfo *oi, char** oidataptr){	char* oidata;	uint8_t filenamelen;	uint8_t capturedatelen=0;	/* let's allocate some memory first; XXX i'm sure it's wrong */	oidata=malloc(PTP_oi_Filename+(strlen(oi->Filename)+1)*2+4);	/* the caller should free it after use! */#if 0	char *capture_date="20020101T010101"; /* XXX Fake date */#endif	memset (oidata, 0, (PTP_oi_Filename+(strlen(oi->Filename)+1)*2+4));	htod32a(&oidata[PTP_oi_StorageID],oi->StorageID);	htod16a(&oidata[PTP_oi_ObjectFormat],oi->ObjectFormat);	htod16a(&oidata[PTP_oi_ProtectionStatus],oi->ProtectionStatus);	htod32a(&oidata[PTP_oi_ObjectCompressedSize],oi->ObjectCompressedSize);	htod16a(&oidata[PTP_oi_ThumbFormat],oi->ThumbFormat);	htod32a(&oidata[PTP_oi_ThumbCompressedSize],oi->ThumbCompressedSize);	htod32a(&oidata[PTP_oi_ThumbPixWidth],oi->ThumbPixWidth);	htod32a(&oidata[PTP_oi_ThumbPixHeight],oi->ThumbPixHeight);	htod32a(&oidata[PTP_oi_ImagePixWidth],oi->ImagePixWidth);	htod32a(&oidata[PTP_oi_ImagePixHeight],oi->ImagePixHeight);	htod32a(&oidata[PTP_oi_ImageBitDepth],oi->ImageBitDepth);	htod32a(&oidata[PTP_oi_ParentObject],oi->ParentObject);	htod16a(&oidata[PTP_oi_AssociationType],oi->AssociationType);	htod32a(&oidata[PTP_oi_AssociationDesc],oi->AssociationDesc);	htod32a(&oidata[PTP_oi_SequenceNumber],oi->SequenceNumber);		ptp_pack_string(params, oi->Filename, oidata, PTP_oi_filenamelen, &filenamelen);/*	filenamelen=(uint8_t)strlen(oi->Filename);	htod8a(&req->data[PTP_oi_filenamelen],filenamelen+1);	for (i=0;i<filenamelen && i< PTP_MAXSTRLEN; i++) {		req->data[PTP_oi_Filename+i*2]=oi->Filename[i];	}*/	/*	 *XXX Fake date.	 * for example Kodak sets Capture date on the basis of EXIF data.	 * Spec says that this field is from perspective of Initiator.	 */#if 0	/* seems now we don't need any data packed in OI dataset... for now ;)*/	capturedatelen=strlen(capture_date);	htod8a(&data[PTP_oi_Filename+(filenamelen+1)*2],		capturedatelen+1);	for (i=0;i<capturedatelen && i< PTP_MAXSTRLEN; i++) {		data[PTP_oi_Filename+(i+filenamelen+1)*2+1]=capture_date[i];	}	htod8a(&data[PTP_oi_Filename+(filenamelen+capturedatelen+2)*2+1],		capturedatelen+1);	for (i=0;i<capturedatelen && i< PTP_MAXSTRLEN; i++) {		data[PTP_oi_Filename+(i+filenamelen+capturedatelen+2)*2+2]=		  capture_date[i];	}#endif	/* XXX this function should return dataset length */		*oidataptr=oidata;	return (PTP_oi_Filename+(filenamelen+1)*2+(capturedatelen+1)*4);}static inline voidptp_unpack_OI (PTPParams *params, char* data, PTPObjectInfo *oi){	uint8_t filenamelen;	uint8_t capturedatelen;	char *capture_date;	char tmp[16];	struct tm tm;	memset(&tm,0,sizeof(tm));	oi->StorageID=dtoh32a(&data[PTP_oi_StorageID]);	oi->ObjectFormat=dtoh16a(&data[PTP_oi_ObjectFormat]);	oi->ProtectionStatus=dtoh16a(&data[PTP_oi_ProtectionStatus]);	oi->ObjectCompressedSize=dtoh32a(&data[PTP_oi_ObjectCompressedSize]);	oi->ThumbFormat=dtoh16a(&data[PTP_oi_ThumbFormat]);	oi->ThumbCompressedSize=dtoh32a(&data[PTP_oi_ThumbCompressedSize]);	oi->ThumbPixWidth=dtoh32a(&data[PTP_oi_ThumbPixWidth]);	oi->ThumbPixHeight=dtoh32a(&data[PTP_oi_ThumbPixHeight]);	oi->ImagePixWidth=dtoh32a(&data[PTP_oi_ImagePixWidth]);	oi->ImagePixHeight=dtoh32a(&data[PTP_oi_ImagePixHeight]);	oi->ImageBitDepth=dtoh32a(&data[PTP_oi_ImageBitDepth]);	oi->ParentObject=dtoh32a(&data[PTP_oi_ParentObject]);	oi->AssociationType=dtoh16a(&data[PTP_oi_AssociationType]);	oi->AssociationDesc=dtoh32a(&data[PTP_oi_AssociationDesc]);	oi->SequenceNumber=dtoh32a(&data[PTP_oi_SequenceNumber]);	oi->Filename= ptp_unpack_string(params, data, PTP_oi_filenamelen, &filenamelen);	capture_date = ptp_unpack_string(params, data,		PTP_oi_filenamelen+filenamelen*2+1, &capturedatelen);	/* subset of ISO 8601, without '.s' tenths of second and 	 * time zone	 */	if (capturedatelen>15)	{		strncpy (tmp, capture_date, 4);		tmp[4] = 0;		tm.tm_year=atoi (tmp) - 1900;		strncpy (tmp, capture_date + 4, 2);		tmp[2] = 0;		tm.tm_mon = atoi (tmp) - 1;		strncpy (tmp, capture_date + 6, 2);		tmp[2] = 0;		tm.tm_mday = atoi (tmp);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲精品中文字幕| 成人免费毛片aaaaa**| 亚洲欧洲av在线| 26uuu另类欧美| 日韩一区二区电影网| 91麻豆精品91久久久久同性| 欧美精品在线一区二区三区| 7777精品伊人久久久大香线蕉的| 欧美色中文字幕| 欧美日本一区二区三区| 欧美一卡二卡在线观看| 欧美一二三区在线| 26uuu久久天堂性欧美| 国产欧美精品一区| 亚洲私人黄色宅男| 一级日本不卡的影视| 亚洲国产精品一区二区久久| 日韩国产高清在线| 久久精品国产成人一区二区三区| 三级欧美在线一区| 久久99精品久久久久婷婷| 激情久久五月天| www.一区二区| 欧美猛男gaygay网站| 欧美va亚洲va香蕉在线| 国产日产亚洲精品系列| 亚洲品质自拍视频| 美女脱光内衣内裤视频久久网站 | 国产精品一品视频| 成人一区二区三区中文字幕| 色偷偷88欧美精品久久久| 欧美日韩久久一区二区| 国产亚洲成aⅴ人片在线观看| 亚洲日本va午夜在线电影| 亚洲福利视频一区二区| 国产精品66部| 欧美日韩专区在线| 国产精品毛片a∨一区二区三区| 专区另类欧美日韩| 免费精品视频在线| 色视频成人在线观看免| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲图片另类小说| 九九精品一区二区| 欧洲精品视频在线观看| 欧美韩国日本不卡| 天堂va蜜桃一区二区三区| 国产激情一区二区三区| 在线综合视频播放| 欧美激情一区在线| 麻豆精品国产传媒mv男同| 91农村精品一区二区在线| 精品国产麻豆免费人成网站| 性欧美大战久久久久久久久| av一本久道久久综合久久鬼色| 精品国产亚洲一区二区三区在线观看 | 99国产精品久久久久久久久久久| 欧美一区二区视频在线观看| 亚洲日本中文字幕区| 国产麻豆视频一区| 日韩精品一区在线观看| 亚洲一二三四在线| 91亚洲精品久久久蜜桃| 日本一区二区成人| 韩国成人精品a∨在线观看| 欧美精品少妇一区二区三区| 亚洲国产精品久久人人爱蜜臀| 成人免费va视频| 久久精品这里都是精品| 精品一区二区国语对白| 91精品国产综合久久久久久久久久 | 一区二区三区美女视频| 9久草视频在线视频精品| 精品国产一区二区三区不卡| 麻豆免费精品视频| 日韩一区二区免费在线观看| 日日摸夜夜添夜夜添精品视频 | 欧美午夜片在线观看| 亚洲日韩欧美一区二区在线| 成人av影院在线| 亚洲欧美在线另类| 91免费视频网址| 亚洲尤物在线视频观看| 欧洲av一区二区嗯嗯嗯啊| 一级女性全黄久久生活片免费| 91麻豆国产精品久久| 亚洲综合免费观看高清完整版 | 国产精品99久久久久| 亚洲欧美日本韩国| 丝袜美腿亚洲色图| 日韩欧美成人一区| 色婷婷综合在线| 不卡av在线免费观看| 麻豆成人免费电影| 午夜视频一区二区三区| 亚洲丝袜制服诱惑| 中文在线一区二区| 久久精品在线观看| www激情久久| 欧美一级片免费看| 精品视频在线免费看| 成人免费高清在线| 国产成人一级电影| 精品一二线国产| 免费欧美在线视频| 日韩成人午夜电影| 午夜影院久久久| 亚洲第一久久影院| 亚洲一区二区三区视频在线 | 91麻豆精品91久久久久久清纯 | 日韩一区二区视频在线观看| 欧美视频一区在线观看| 欧美色视频一区| 99久久er热在这里只有精品15| 国产一区二区精品久久99| 美女网站在线免费欧美精品| 热久久一区二区| 捆绑紧缚一区二区三区视频| 日韩av在线发布| 日韩福利视频导航| 麻豆精品视频在线观看| 国产美女精品人人做人人爽| 免费观看30秒视频久久| 韩国欧美国产一区| 国产一区二区三区蝌蚪| 国产成人综合视频| 高清免费成人av| 97se亚洲国产综合自在线不卡 | 日韩欧美色电影| 欧美成人国产一区二区| 久久久综合精品| 国产精品久久午夜| 亚洲大型综合色站| 蜜桃视频免费观看一区| 黄网站免费久久| www.色综合.com| 欧美日韩精品是欧美日韩精品| 91麻豆精品国产91久久久资源速度 | 欧美精品一区二区三区很污很色的| 日韩精品一区二区三区视频播放 | 午夜伊人狠狠久久| 久久精品99国产精品| 国产91丝袜在线18| 欧美综合亚洲图片综合区| 欧美精品亚洲二区| 国产三级精品视频| 亚洲精品免费播放| 久久国产福利国产秒拍| 91在线播放网址| 日韩免费视频一区| 综合婷婷亚洲小说| 久久精品国产精品青草| 91原创在线视频| 精品国产乱码久久久久久1区2区| 国产精品女人毛片| 日韩电影在线一区| 成av人片一区二区| 日韩欧美久久久| 亚洲欧美另类图片小说| 久久精品免费看| 日本高清不卡视频| 久久久久一区二区三区四区| 亚洲一区二区综合| 国产成人亚洲精品青草天美| 在线免费视频一区二区| 久久久不卡网国产精品二区| 亚洲一区二区精品久久av| 国产精品一区二区三区99| 欧美撒尿777hd撒尿| 国产精品无码永久免费888| 日韩高清一级片| 在线观看免费成人| 欧美国产国产综合| 蜜臀av一区二区三区| 在线欧美小视频| 国产精品国产三级国产aⅴ中文 | 色视频一区二区| 中文字幕av一区二区三区| 日韩精品国产欧美| 91日韩一区二区三区| 国产日韩欧美精品电影三级在线| 污片在线观看一区二区| 一本色道久久综合亚洲91| 国产性色一区二区| 国产在线一区二区| 日韩一区二区免费在线观看| 午夜私人影院久久久久| 色综合久久中文字幕综合网| 亚洲国产精品v| 国产在线视频不卡二| 精品日韩成人av| 青青草国产成人av片免费| 欧美三级日本三级少妇99| 亚洲欧美日本在线| 色综合天天视频在线观看| 国产精品美女久久久久aⅴ国产馆| 精品在线观看免费| 日韩免费高清av| 日韩电影在线免费看| 91精品国产综合久久婷婷香蕉 |