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

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

?? ptp-pack.c

?? USB Host 開發中支持數碼相機的源碼。即Picture To Picture協議的完整實現
?? C
?? 第 1 頁 / 共 2 頁
字號:
		strncpy (tmp, capture_date + 9, 2);		tmp[2] = 0;		tm.tm_hour = atoi (tmp);		strncpy (tmp, capture_date + 11, 2);		tmp[2] = 0;		tm.tm_min = atoi (tmp);		strncpy (tmp, capture_date + 13, 2);		tmp[2] = 0;		tm.tm_sec = atoi (tmp);		oi->CaptureDate=mktime (&tm);	}	free(capture_date);	/* now it's modification date ;) */	capture_date = ptp_unpack_string(params, data,		PTP_oi_filenamelen+filenamelen*2		+capturedatelen*2+2,&capturedatelen);	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);		strncpy (tmp, capture_date + 9, 2);		tmp[2] = 0;		tm.tm_hour = atoi (tmp);		strncpy (tmp, capture_date + 11, 2);		tmp[2] = 0;		tm.tm_min = atoi (tmp);		strncpy (tmp, capture_date + 13, 2);		tmp[2] = 0;		tm.tm_sec = atoi (tmp);		oi->ModificationDate=mktime (&tm);	}	free(capture_date);}/* Custom Type Value Assignement (without Length) macro frequently used below */#define CTVAL(type,func,target)  {					\		*target = malloc(sizeof(type));				\		**(type **)target =					\			func(data);\}static inline voidptp_unpack_DPV (PTPParams *params, char* data, void** value, uint16_t datatype){	switch (datatype) {		case PTP_DTC_INT8:			CTVAL(int8_t,dtoh8a,value);			break;		case PTP_DTC_UINT8:			CTVAL(uint8_t,dtoh8a,value);			break;		case PTP_DTC_INT16:			CTVAL(int16_t,dtoh16a,value);			break;		case PTP_DTC_UINT16:			CTVAL(uint16_t,dtoh16a,value);			break;		case PTP_DTC_INT32:			CTVAL(int32_t,dtoh32a,value);			break;		case PTP_DTC_UINT32:			CTVAL(uint32_t,dtoh32a,value);			break;		/* XXX: other int types are unimplemented */		/* XXX: int arrays are unimplemented also */		case PTP_DTC_STR:		{			uint8_t len;			(char *)(*value)=ptp_unpack_string(params,data,0,&len);			break;		}	}}/* Device Property pack/unpack */#define PTP_dpd_DevicePropertyCode	0#define PTP_dpd_DataType		2#define PTP_dpd_GetSet			4#define PTP_dpd_FactoryDefaultValue	5/* Custom Type Value Assignement macro frequently used below */#define CTVA(type,func,target)  {					\		target = malloc(sizeof(type));				\		*(type *)target =					\			func(&data[PTP_dpd_FactoryDefaultValue+totallen]);\			totallen+=sizeof(type);				\}/* Many Custom Types Vale Assignement macro frequently used below */#define MCTVA(type,func,target,n) {					\		uint16_t i;						\		for (i=0;i<n;i++) {					\			target[i] = malloc(sizeof(type));		\			*(type *)target[i] =				\			func(&data[PTP_dpd_FactoryDefaultValue+totallen]);\			totallen+=sizeof(type);				\		}							\}static inline voidptp_unpack_DPD (PTPParams *params, char* data, PTPDevicePropDesc *dpd){	uint8_t len;	int totallen=0;	dpd->DevicePropertyCode=dtoh16a(&data[PTP_dpd_DevicePropertyCode]);	dpd->DataType=dtoh16a(&data[PTP_dpd_DataType]);	dpd->GetSet=dtoh8a(&data[PTP_dpd_GetSet]);	dpd->FactoryDefaultValue = NULL;	dpd->CurrentValue = NULL;	switch (dpd->DataType) {		case PTP_DTC_INT8:			CTVA(int8_t,dtoh8a,dpd->FactoryDefaultValue);			CTVA(int8_t,dtoh8a,dpd->CurrentValue);			break;		case PTP_DTC_UINT8:			CTVA(uint8_t,dtoh8a,dpd->FactoryDefaultValue);			CTVA(uint8_t,dtoh8a,dpd->CurrentValue);			break;		case PTP_DTC_INT16:			CTVA(int16_t,dtoh16a,dpd->FactoryDefaultValue);			CTVA(int16_t,dtoh16a,dpd->CurrentValue);			break;		case PTP_DTC_UINT16:			CTVA(uint16_t,dtoh16a,dpd->FactoryDefaultValue);			CTVA(uint16_t,dtoh16a,dpd->CurrentValue);			break;		case PTP_DTC_INT32:			CTVA(int32_t,dtoh32a,dpd->FactoryDefaultValue);			CTVA(int32_t,dtoh32a,dpd->CurrentValue);			break;		case PTP_DTC_UINT32:			CTVA(uint32_t,dtoh32a,dpd->FactoryDefaultValue);			CTVA(uint32_t,dtoh32a,dpd->CurrentValue);			break;		/* XXX: other int types are unimplemented */		/* XXX: int arrays are unimplemented also */		case PTP_DTC_STR:			(char *)dpd->FactoryDefaultValue = ptp_unpack_string				(params,data,PTP_dpd_FactoryDefaultValue,&len);			totallen=len*2+1;			(char *)dpd->CurrentValue = ptp_unpack_string				(params, data, PTP_dpd_FactoryDefaultValue + 				totallen, &len);			totallen+=len*2+1;			break;	}	/* if totallen==0 then Data Type format is not supported by this	code or the Data Type is a string (with two empty strings as	values). In both cases Form Flag should be set to 0x00 and FORM is	not present. */	dpd->FormFlag=PTP_DPFF_None;	if (totallen==0) return;	dpd->FormFlag=dtoh8a(&data[PTP_dpd_FactoryDefaultValue+totallen]);	totallen+=sizeof(uint8_t);	switch (dpd->FormFlag) {		case PTP_DPFF_Range:		switch (dpd->DataType) {			case PTP_DTC_INT8:			CTVA(int8_t,dtoh8a,dpd->FORM.Range.MinimumValue);			CTVA(int8_t,dtoh8a,dpd->FORM.Range.MaximumValue);			CTVA(int8_t,dtoh8a,dpd->FORM.Range.StepSize);			break;			case PTP_DTC_UINT8:			CTVA(uint8_t,dtoh8a,dpd->FORM.Range.MinimumValue);			CTVA(uint8_t,dtoh8a,dpd->FORM.Range.MaximumValue);			CTVA(uint8_t,dtoh8a,dpd->FORM.Range.StepSize);			break;			case PTP_DTC_INT16:			CTVA(int16_t,dtoh16a,dpd->FORM.Range.MinimumValue);			CTVA(int16_t,dtoh16a,dpd->FORM.Range.MaximumValue);			CTVA(int16_t,dtoh16a,dpd->FORM.Range.StepSize);			break;			case PTP_DTC_UINT16:			CTVA(uint16_t,dtoh16a,dpd->FORM.Range.MinimumValue);			CTVA(uint16_t,dtoh16a,dpd->FORM.Range.MaximumValue);			CTVA(uint16_t,dtoh16a,dpd->FORM.Range.StepSize);			break;			case PTP_DTC_INT32:			CTVA(int32_t,dtoh32a,dpd->FORM.Range.MinimumValue);			CTVA(int32_t,dtoh32a,dpd->FORM.Range.MaximumValue);			CTVA(int32_t,dtoh32a,dpd->FORM.Range.StepSize);			break;			case PTP_DTC_UINT32:			CTVA(uint32_t,dtoh32a,dpd->FORM.Range.MinimumValue);			CTVA(uint32_t,dtoh32a,dpd->FORM.Range.MaximumValue);			CTVA(uint32_t,dtoh32a,dpd->FORM.Range.StepSize);			break;		/* XXX: other int types are unimplemented */		/* XXX: int arrays are unimplemented also */		/* XXX: does it make any sense: "a range of strings"? */		}		break;		case PTP_DPFF_Enumeration:#define N	dpd->FORM.Enum.NumberOfValues		N = dtoh16a(&data[PTP_dpd_FactoryDefaultValue+totallen]);		totallen+=sizeof(uint16_t);		dpd->FORM.Enum.SupportedValue = malloc(N*sizeof(void *));		switch (dpd->DataType) {			case PTP_DTC_INT8:			MCTVA(int8_t,dtoh8a,dpd->FORM.Enum.SupportedValue,N);			break;			case PTP_DTC_UINT8:			MCTVA(uint8_t,dtoh8a,dpd->FORM.Enum.SupportedValue,N);			break;			case PTP_DTC_INT16:			MCTVA(int16_t,dtoh16a,dpd->FORM.Enum.SupportedValue,N);			break;			case PTP_DTC_UINT16:			MCTVA(uint16_t,dtoh16a,dpd->FORM.Enum.SupportedValue,N);			break;			case PTP_DTC_INT32:			MCTVA(int32_t,dtoh16a,dpd->FORM.Enum.SupportedValue,N);			break;			case PTP_DTC_UINT32:			MCTVA(uint32_t,dtoh16a,dpd->FORM.Enum.SupportedValue,N);			break;			case PTP_DTC_STR:			{			int i;			for(i=0;i<N;i++)			{				(char *)dpd->FORM.Enum.SupportedValue[i]=					ptp_unpack_string					(params,data,PTP_dpd_FactoryDefaultValue					+totallen,&len);				totallen+=len*2+1;			}			}			break;		}	}}static inline uint32_tptp_pack_DPV (PTPParams *params, void* value, char** dpvptr, uint16_t datatype){	char* dpv=NULL;	uint32_t size=0;	switch (datatype) {		case PTP_DTC_INT8:			size=sizeof(int8_t);			dpv=malloc(size);			htod8a(dpv,*(int8_t*)value);			break;		case PTP_DTC_UINT8:			size=sizeof(uint8_t);			dpv=malloc(size);			htod8a(dpv,*(uint8_t*)value);			break;		case PTP_DTC_INT16:			size=sizeof(int16_t);			dpv=malloc(size);			htod16a(dpv,*(int16_t*)value);			break;		case PTP_DTC_UINT16:			size=sizeof(uint16_t);			dpv=malloc(size);			htod16a(dpv,*(uint16_t*)value);			break;		case PTP_DTC_INT32:			size=sizeof(int32_t);			dpv=malloc(size);			htod32a(dpv,*(int32_t*)value);			break;		case PTP_DTC_UINT32:			size=sizeof(uint32_t);			dpv=malloc(size);			htod32a(dpv,*(uint32_t*)value);			break;		/* XXX: other int types are unimplemented */		/* XXX: int arrays are unimplemented also */		case PTP_DTC_STR:		{		uint8_t len;			size=strlen((char*)value)*2+3;			dpv=malloc(size);			memset(dpv,0,size);			ptp_pack_string(params, (char *)value, dpv, 0, &len);		}		break;	}	*dpvptr=dpv;	return size;}/*    PTP USB Event container unpack    Copyright (c) 2003 Nikolai Kopanygin*/#define PTP_ec_Length		0#define PTP_ec_Type		4#define PTP_ec_Code		6#define PTP_ec_TransId		8#define PTP_ec_Param1		12#define PTP_ec_Param2		16#define PTP_ec_Param3		20static inline voidptp_unpack_EC (PTPParams *params, char* data, PTPUSBEventContainer *ec){	if (data==NULL)		return;	ec->length=dtoh32a(&data[PTP_ec_Length]);	ec->type=dtoh16a(&data[PTP_ec_Type]);	ec->code=dtoh16a(&data[PTP_ec_Code]);	ec->trans_id=dtoh32a(&data[PTP_ec_TransId]);	if (ec->length>=(PTP_ec_Param1+4))		ec->param1=dtoh32a(&data[PTP_ec_Param1]);	else		ec->param1=0;	if (ec->length>=(PTP_ec_Param2+4))		ec->param2=dtoh32a(&data[PTP_ec_Param2]);	else		ec->param2=0;	if (ec->length>=(PTP_ec_Param3+4))		ec->param3=dtoh32a(&data[PTP_ec_Param3]);	else		ec->param3=0;}/*    PTP Canon Folder Entry unpack    Copyright (c) 2003 Nikolai Kopanygin*/#define PTP_cfe_ObjectHandle		0#define PTP_cfe_ObjectFormatCode	4#define PTP_cfe_Flags			6#define PTP_cfe_ObjectSize		7#define PTP_cfe_Time			11#define PTP_cfe_Filename		15static inline voidptp_unpack_Canon_FE (PTPParams *params, char* data, PTPCANONFolderEntry *fe){	int i;	if (data==NULL)		return;	fe->ObjectHandle=dtoh32a(&data[PTP_cfe_ObjectHandle]);	fe->ObjectFormatCode=dtoh16a(&data[PTP_cfe_ObjectFormatCode]);	fe->Flags=dtoh8a(&data[PTP_cfe_Flags]);	fe->ObjectSize=dtoh32a(&data[PTP_cfe_ObjectSize]);	fe->Time=(time_t)dtoh32a(&data[PTP_cfe_Time]);	for (i=0; i<PTP_CANON_FilenameBufferLen; i++)	fe->Filename[i]=(char)dtoh8a(&data[PTP_cfe_Filename+i]);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本韩国一区二区三区视频 | 亚洲青青青在线视频| 亚洲免费观看在线视频| 蜜桃av一区二区| 在线观看一区二区精品视频| 久久伊99综合婷婷久久伊| 亚洲一区中文日韩| 成人蜜臀av电影| www亚洲一区| 麻豆久久久久久久| 欧美片在线播放| 亚洲色图在线看| 成人精品免费看| 久久久久国色av免费看影院| 五月综合激情日本mⅴ| 色综合色综合色综合| 中文字幕免费一区| 国产一区欧美二区| 日韩亚洲国产中文字幕欧美| 一片黄亚洲嫩模| 色美美综合视频| 亚洲美女在线一区| 91丨porny丨国产| 国产精品国产精品国产专区不蜜| 国产综合色视频| 欧美一二三在线| 免费成人在线网站| 91精品国产综合久久小美女| 亚洲一区二区三区四区五区黄 | 国产精品视频在线看| 国产乱码精品一品二品| 久久夜色精品国产欧美乱极品| 精品亚洲国内自在自线福利| 日韩一区二区三区四区五区六区| 青青草97国产精品免费观看无弹窗版| 欧美综合天天夜夜久久| 亚洲一级片在线观看| 欧美日韩在线免费视频| 天堂精品中文字幕在线| 91麻豆精品国产91久久久久| 丝袜a∨在线一区二区三区不卡| 欧美日本国产一区| 麻豆精品一区二区| 精品久久国产字幕高潮| 国产黄色精品网站| 亚洲欧美日韩在线不卡| 在线观看亚洲精品视频| 免费在线观看一区二区三区| 国产亚洲成年网址在线观看| 97成人超碰视| 丝袜美腿亚洲色图| 久久久蜜臀国产一区二区| 国产999精品久久久久久绿帽| 国产精品女同一区二区三区| 在线影视一区二区三区| 美女诱惑一区二区| 国产精品久久久久影院老司| 在线日韩av片| 久久99国产精品免费| 中文字幕精品综合| 欧美日韩高清影院| 成人美女视频在线看| 偷窥国产亚洲免费视频| 久久精品人人做| 欧美综合一区二区三区| 国产毛片精品视频| 亚洲高清视频在线| 久久噜噜亚洲综合| 欧美性欧美巨大黑白大战| 激情亚洲综合在线| 亚洲午夜久久久久| 国产欧美日韩麻豆91| 91.com在线观看| 99re亚洲国产精品| 激情综合亚洲精品| 亚洲综合区在线| 国产日韩在线不卡| 91精品中文字幕一区二区三区| 成人av在线播放网站| 美国十次综合导航| 亚洲午夜视频在线| 国产精品国产三级国产| 日韩免费观看高清完整版在线观看 | 成人h精品动漫一区二区三区| 午夜精品福利久久久| 国产精品第一页第二页第三页| 欧美一级欧美三级在线观看| 一本到一区二区三区| 国产一区二区在线影院| 视频一区免费在线观看| 亚洲女人的天堂| 国产精品美女久久久久久久久久久| 5858s免费视频成人| 在线免费精品视频| 91在线国产观看| 成人涩涩免费视频| 国产麻豆午夜三级精品| 精品一区二区久久| 日韩电影免费一区| 亚洲高清视频在线| 亚洲影视资源网| 一区二区三区在线免费视频| 中文字幕在线不卡一区 | 综合色中文字幕| 中文字幕国产一区二区| 久久久久久免费| 国产亚洲精品久| 久久久久国产精品人| 久久久久久99久久久精品网站| 精品久久久久久无| 久久奇米777| 久久久久久久久久久黄色| 久久午夜色播影院免费高清| 久久久精品中文字幕麻豆发布| 精品sm捆绑视频| 国产亚洲一二三区| 欧美激情一区二区三区不卡| 国产精品毛片久久久久久| 中文字幕一区二区在线播放| 国产精品欧美一区二区三区| 国产精品视频九色porn| 国产精品护士白丝一区av| 亚洲另类春色国产| 亚洲资源中文字幕| 日本成人在线网站| 国产精品自拍三区| 成人av在线影院| 欧美色电影在线| 日韩欧美亚洲国产另类| 久久精品夜色噜噜亚洲aⅴ| 国产精品麻豆久久久| 亚洲精品免费播放| 午夜国产不卡在线观看视频| 精彩视频一区二区| 成人免费精品视频| 欧美亚洲国产一区二区三区| 5858s免费视频成人| 久久久久88色偷偷免费| 亚洲女人小视频在线观看| 日韩成人一级大片| 国产成人午夜99999| 91老师国产黑色丝袜在线| 欧美日韩一区精品| 久久久久国产精品厨房| 一区二区三区不卡视频| 久久精品国产免费看久久精品| 国产精品一区二区你懂的| 色系网站成人免费| 欧美不卡激情三级在线观看| 国产精品久久久久久久久免费丝袜| 亚洲一区二区三区四区五区中文 | 久久久99久久| 亚洲一区二区中文在线| 狠狠色伊人亚洲综合成人| 成人午夜免费视频| 欧美一区二区成人| 亚洲欧洲一区二区在线播放| 欧美aaaaa成人免费观看视频| 国产·精品毛片| 91精选在线观看| 樱桃视频在线观看一区| 国产综合色产在线精品| 欧美视频完全免费看| 国产精品欧美久久久久无广告| 日韩激情中文字幕| 91视频.com| 国产色产综合产在线视频| 奇米在线7777在线精品| av毛片久久久久**hd| 精品国产露脸精彩对白 | 成年人午夜久久久| 欧美va在线播放| 日韩专区在线视频| 色呦呦网站一区| 国产精品黄色在线观看| 国产成人自拍网| 精品国免费一区二区三区| 五月天久久比比资源色| 日本韩国精品在线| 国产精品久久久久久福利一牛影视| 久久精品99国产国产精| 欧美二区三区的天堂| 亚洲影院免费观看| 91成人国产精品| 一区二区在线看| 色一情一伦一子一伦一区| 综合欧美亚洲日本| 91年精品国产| 一区二区三区在线观看视频| 成人avav影音| 国产精品国产自产拍高清av王其| 懂色av噜噜一区二区三区av| 国产午夜一区二区三区| 精品一区二区免费视频| www国产成人免费观看视频 深夜成人网 | 国产高清久久久| 国产亚洲va综合人人澡精品| 国产一区二区三区综合| 久久亚洲精华国产精华液 | 美女一区二区三区在线观看|