mtp.h
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:28k
源码类别:

压缩解压

开发平台:

C++ Builder

  1. /***********************************************************************************
  2. *
  3. *   Copyright (C) 2005 ALi Corporation. All Rights Reserved.
  4. *
  5. *   File:     mtp.h
  6. *
  7. *   Contents:
  8. *
  9. *   History:
  10. *       Date              By         Reason
  11. *       ===========       ===========       ===========
  12. *       2005/1/17         Jeremy Jiang development
  13. *
  14. ************************************************************************************/
  15. #define _MTP_COMMON_ 0
  16. #define _MTP_KERNEL_ 0
  17. #define _MTP_SPECIAL_CMD_ 0 //051010
  18. #if(_PM_MTP_|_PM_MTP_INIT_)
  19. #undef _MTP_COMMON_
  20. #define _MTP_COMMON_ 1
  21. #if(!_PM_MTP_INIT_)
  22. #undef _MTP_KERNEL_
  23. #define _MTP_KERNEL_ 1
  24. #undef _MTP_SPECIAL_CMD_
  25. #define _MTP_SPECIAL_CMD_ 1
  26. #endif
  27. #endif
  28. //#ifndef _MTP_H
  29. //#define _MTP_H
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33. #ifndef uint8_t
  34. #define int8_t volatile char
  35. #define uint8_t volatile unsigned char
  36. #define uint16_t volatile unsigned int
  37. #define uint32_t volatile unsigned long
  38. #define addr_t volatile unsigned char xdata *
  39. #endif
  40. //Reverse WORD
  41. #define _htons(addr) ((((uint16_t)(addr) & 0x000000FF) << 8) | 
  42. (((uint16_t)(addr) & 0x0000FF00) >> 8))
  43. //Reverse DWORD
  44. #define _htonl(addr) ((((uint32_t)(addr) & 0x000000FF) << 24) | 
  45. (((uint32_t)(addr) & 0x0000FF00) << 8) | 
  46. (((uint32_t)(addr) & 0x00FF0000) >> 8) | 
  47. (((uint32_t)(addr) & 0xFF000000) >> 24))
  48. #define OFFSET_DATA(m, o) (*((uint8_t *)&(m) + o))
  49. //#define UsbInb(n) (n) = obUSBDEVEPBFIFO
  50. #define UsbInb(n) {
  51. while((obUSBDEVEPBFCTR & EP_STS_EMPTY)) { };
  52. (n) = obUSBDEVEPBFIFO;
  53. }
  54. #define UsbOutb(n) { WaitEPANotFull(); obUSBDEVEPAFIFO = (n); }
  55. #define UsbOutEPCb(n) { WaitEPCNotFull(); obUSBDEVEPCFIFO = (n); } //Chris 061222#1    //Chris070521#1
  56. /* Defines the type of USB containe */
  57. #define MTP_TP_COMMANDBLOCK _htons(0x0001)
  58. #define MTP_TP_DATABLOCK _htons(0x0002)
  59. #define MTP_TP_RESPONSEBLOCK _htons(0x0003)
  60. #define MTP_TP_EVENTBLOCK _htons(0x0004)
  61. #define PTP_CMD_NULL _htons(0x0000)
  62. /* Standard PTP operation codes */
  63. #define PTP_OPCODE_UNDEFINED _htons(0x1000)
  64. #define PTP_OPCODE_GETDEVICEINFO _htons(0x1001)
  65. #define PTP_OPCODE_OPENSESSION _htons(0x1002)
  66. #define PTP_OPCODE_CLOSESESSION _htons(0x1003)
  67. #define PTP_OPCODE_GETSTORAGEIDS _htons(0x1004)
  68. #define PTP_OPCODE_GETSTORAGEINFO _htons(0x1005)
  69. #define PTP_OPCODE_GETNUMOBJECTS _htons(0x1006)
  70. #define PTP_OPCODE_GETOBJECTHANDLES _htons(0x1007)
  71. #define PTP_OPCODE_GETOBJECTINFO _htons(0x1008)
  72. #define PTP_OPCODE_GETOBJECT _htons(0x1009)
  73. #define PTP_OPCODE_GETTHUMB _htons(0x100A)
  74. #define PTP_OPCODE_DELETEOBJECT _htons(0x100B)
  75. #define PTP_OPCODE_SENDOBJECTINFO _htons(0x100C)
  76. #define PTP_OPCODE_SENDOBJECT _htons(0x100D)
  77. #define PTP_OPCODE_INITIATECAPTURE _htons(0x100E)
  78. #define PTP_OPCODE_FORMATSTORE _htons(0x100F)
  79. #define PTP_OPCODE_RESETDEVICE _htons(0x1010)
  80. #define PTP_OPCODE_SELFTEST _htons(0x1011)
  81. #define PTP_OPCODE_SETOBJECTPROTECTION _htons(0x1012)
  82. #define PTP_OPCODE_POWERDOWN _htons(0x1013)
  83. #define PTP_OPCODE_GETDEVICEPROPDESC _htons(0x1014)
  84. #define PTP_OPCODE_GETDEVICEPROPVALUE _htons(0x1015)
  85. #define PTP_OPCODE_SETDEVICEPROPVALUE _htons(0x1016)
  86. #define PTP_OPCODE_RESETDEVICEPROPVALUE _htons(0x1017)
  87. #define PTP_OPCODE_TERMINATECAPTURE _htons(0x1018)
  88. #define PTP_OPCODE_MOVEOBJECT _htons(0x1019)
  89. #define PTP_OPCODE_COPYOBJECT _htons(0x101A)
  90. #define PTP_OPCODE_GETPARTIALOBJECT _htons(0x101B)
  91. #define PTP_OPCODE_INITIATEOPENCAPTURE _htons(0x101C)
  92. #define PTP_OPCODE_VENDOREXTENDEDBASE _htons(0x9000)
  93. /* ALi Special Command */
  94. #define ALI_OPCODE_SPECIAL_CMD _htons(0x9700)
  95. /* MTP extended operations */
  96. #define MTP_OPCODE_UNDEFINED _htons(0x9800)
  97. #define MTP_OPCODE_GETOBJECTPROPSUPPORTED _htons(0x9801)
  98. #define MTP_OPCODE_GETOBJECTPROPDESC _htons(0x9802)
  99. #define MTP_OPCODE_GETOBJECTPROPVALUE _htons(0x9803)
  100. #define MTP_OPCODE_SETOBJECTPROPVALUE _htons(0x9804)
  101. #define MTP_OPCODE_GETOBJECTPROPLIST _htons(0x9805)
  102. #define MTP_OPCODE_SETOBJECTPROPLIST _htons(0x9806)
  103. #define MTP_OPCODE_GETINTERDEPPROPDESC _htons(0x9807)
  104. #define MTP_OPCODE_SENDOBJECTPROPLIST _htons(0x9808)
  105. #define MTP_OPCODE_GETOBJECTREFERENCES _htons(0x9810)
  106. #define MTP_OPCODE_SETOBJECTREFERENCES _htons(0x9811)
  107. #define PTP_CODE_VENDOR_OP1 (PTP_OPCODE_VENDOREXTENDEDBASE + 1)  
  108. #define PTP_CODE_VENDOR_MIN PTP_CODE_VENDOR_OP1
  109. #define PTP_CODE_VENDOR_OP2 (PTP_OPCODE_VENDOREXTENDEDBASE + 2)  
  110. #define PTP_CODE_VENDOR_MAX PTP_CODE_VENDOR_OP2
  111. #define DRM_OPCODE_GETSECURETIMECHALLENGE _htons(0x9101)
  112. #define DRM_OPCODE_SETSECURETIMERESPONSE _htons(0x9102)
  113. #define DRM_OPCODE_SETLICENSERESPONSE _htons(0x9103)
  114. #define DRM_OPCODE_GETSYNCLIST _htons(0x9104)
  115. #define DRM_OPCODE_SENDMETERCHALLENGE _htons(0x9105)
  116. #define DRM_OPCODE_GETMETERCHALLENGE _htons(0x9106)
  117. #define DRM_OPCODE_SETMETERRESPONSE _htons(0x9107)
  118. #define DRM_OPCODE_CLEANDATASTORE _htons(0x9108)
  119. #define DRM_OPCODE_GETLICENSESTATE _htons(0x9109)
  120. #define DRM_OPCODE_SENDWMDRMPDCOMMAND _htons(0x910A)
  121. #define DRM_OPCODE_SENDWMDRMPDREQUEST _htons(0x910B)
  122. #define DRM_OPCODE_METADATAROUNDTRIP _htons(0x9201) //Chris 060719 #3
  123. /* Standard event codes */
  124. #define PTP_EVENTCODE_UNDEFINED _htons(0x4000)
  125. #define PTP_EVENTCODE_CANCELTRANSACTION _htons(0x4001)
  126. #define PTP_EVENTCODE_OBJECTADDED _htons(0x4002)
  127. #define PTP_EVENTCODE_OBJECTREMOVED _htons(0x4003)
  128. #define PTP_EVENTCODE_STOREADDED _htons(0x4004)
  129. #define PTP_EVENTCODE_STOREREMOVED _htons(0x4005)
  130. #define PTP_EVENTCODE_DEVICEPROPCHANGED _htons(0x4006)
  131. #define PTP_EVENTCODE_OBJECTINFOCHANGED _htons(0x4007)
  132. #define PTP_EVENTCODE_DEVICEINFOCHANGED _htons(0x4008)
  133. #define PTP_EVENTCODE_REQUESTOBJECTTRANSFER _htons(0x4009)
  134. #define PTP_EVENTCODE_STOREFULL _htons(0x400A)
  135. #define PTP_EVENTCODE_DEVICERESET _htons(0x400B)
  136. #define PTP_EVENTCODE_STORAGEINFOCHANGED _htons(0x400C)
  137. #define PTP_EVENTCODE_CAPTURECOMPLETE _htons(0x400D)
  138. #define PTP_EVENTCODE_UNREPORTEDSTATUS _htons(0x400E)
  139. #define PTP_EVENTCODE_VENDOREXTENTION1 _htons(0xC001)
  140. #define PTP_EVENTCODE_VENDOREXTENTION2 _htons(0xC002)
  141. #define PTP_FORMATCODE_UNDEFINED _htons(0x3000)
  142. #define PTP_FORMATCODE_ASSOCIATION _htons(0x3001)
  143. #define PTP_FORMATCODE_SCRIPT _htons(0x3002)
  144. #define PTP_FORMATCODE_EXECUTABLE _htons(0x3003)
  145. #define PTP_FORMATCODE_TEXT _htons(0x3004)
  146. #define PTP_FORMATCODE_HTML _htons(0x3005)
  147. #define PTP_FORMATCODE_DPOF _htons(0x3006)
  148. #define PTP_FORMATCODE_AIFF _htons(0x3007)
  149. #define PTP_FORMATCODE_WAVE _htons(0x3008)
  150. #define PTP_FORMATCODE_MP3 _htons(0x3009)
  151. #define PTP_FORMATCODE_AVI _htons(0x300A)
  152. #define PTP_FORMATCODE_MPEG _htons(0x300B)
  153. #define PTP_FORMATCODE_ASF _htons(0x300C)
  154. #define PTP_FORMATCODE_IMAGE_UNDEFINED _htons(0x3800)
  155. #define PTP_FORMATCODE_IMAGE_EXIF _htons(0x3801)
  156. #define PTP_FORMATCODE_IMAGE_TIFFEP _htons(0x3802)
  157. #define PTP_FORMATCODE_IMAGE_FLASHPIX _htons(0x3803)
  158. #define PTP_FORMATCODE_IMAGE_BMP _htons(0x3804)
  159. #define PTP_FORMATCODE_IMAGE_CIFF _htons(0x3805)
  160. #define PTP_FORMATCODE_IMAGE_GIF _htons(0x3807)
  161. #define PTP_FORMATCODE_IMAGE_JFIF _htons(0x3808)
  162. #define PTP_FORMATCODE_IMAGE_PCD _htons(0x3809)
  163. #define PTP_FORMATCODE_IMAGE_PICT _htons(0x380A)
  164. #define PTP_FORMATCODE_IMAGE_PNG _htons(0x380B)
  165. #define PTP_FORMATCODE_IMAGE_TIFF _htons(0x380D)
  166. #define PTP_FORMATCODE_IMAGE_TIFFIT _htons(0x380E)
  167. #define PTP_FORMATCODE_IMAGE_JP2 _htons(0x380F)
  168. #define PTP_FORMATCODE_IMAGE_JPX _htons(0x3810)
  169. /* MTP-defined Object Formats */
  170. #define MTP_FORMATCODE_UNDEFINED_FIRMWARE _htons(0xB802)
  171. #define MTP_FORMATCODE_WINDOWS_IMAGE_FORMAT _htons(0xB881)
  172. #define MTP_FORMATCODE_UNDEFINED_AUDIO _htons(0xB900)
  173. #define MTP_FORMATCODE_WMA _htons(0xB901)
  174. #define MTP_FORMATCODE_UNDEFINED_VIDEO _htons(0xB980)
  175. #define MTP_FORMATCODE_WMV _htons(0xB981)
  176. #define MTP_FORMATCODE_UNDEFINED_COLLECTION _htons(0xBA00)
  177. #define MTP_FORMATCODE_ABSTRACT_MULTIMEDIA_ALBUM _htons(0xBA01)
  178. #define MTP_FORMATCODE_ABSTRACT_IMAGE_ALBUM _htons(0xBA02)
  179. #define MTP_FORMATCODE_ABSTRACT_AUDIO_ALBUM _htons(0xBA03)
  180. #define MTP_FORMATCODE_ABSTRACT_VIDEO_ALBUM _htons(0xBA04)
  181. #define MTP_FORMATCODE_ABSTRACT_AV_PLAYLIST _htons(0xBA05)
  182. #define MTP_FORMATCODE_ABSTRACT_CONTACT_GROUP _htons(0xBA06)
  183. #define MTP_FORMATCODE_ABSTRACT_MESSAGE_FOLDER _htons(0xBA07)
  184. #define MTP_FORMATCODE_ABSTRACT_CHAPTERED_PRODUCTION _htons(0xBA08)
  185. #define MTP_FORMATCODE_WPL_PLAYLIST _htons(0xBA10)
  186. #define MTP_FORMATCODE_M3U_PLAYLIST _htons(0xBA11)
  187. #define MTP_FORMATCODE_MPL_PLAYLIST _htons(0xBA12)
  188. #define MTP_FORMATCODE_ASX_PLAYLIST _htons(0xBA13)
  189. #define MTP_FORMATCODE_PLS_PLAYLIST _htons(0xBA14)
  190. #define MTP_FORMATCODE_UNDEFINED_DOCUMENT _htons(0xBA80)
  191. #define MTP_FORMATCODE_ABSTRACT_DOCUMENT _htons(0xBA81)
  192. #define MTP_FORMATCODE_UNDEFINED_MESSAGE _htons(0xBB00)
  193. #define MTP_FORMATCODE_ABSTRACT_MESSAGE _htons(0xBB01)
  194. #define MTP_FORMATCODE_UNDEFINED_CONTACT _htons(0xBB80)
  195. #define MTP_FORMATCODE_ABSTRACT_CONTACT _htons(0xBB81)
  196. #define MTP_FORMATCODE_VCARD2 _htons(0xBB82)
  197. #define MTP_FORMATCODE_VCARD3 _htons(0xBB83)
  198. #define MTP_FORMATCODE_UNDEFINED_CALENDAR_ITEM _htons(0xBE00)
  199. #define MTP_FORMATCODE_ABSTRACT_CALENDAR_ITEM _htons(0xBE01)
  200. #define MTP_FORMATCODE_VCALENDAR1 _htons(0xBE02)
  201. #define MTP_FORMATCODE_UNDEFINED_WINDOWS_EXECUTABLE _htons(0xBE80)
  202. /* Standard property codes */
  203. #define PTP_PROPERTYCODE_UNDEFINED _htons(0x5000)
  204. #define PTP_PROPERTYCODE_BATTERYLEVEL _htons(0x5001)
  205. #define PTP_PROPERTYCODE_FUNCTIONMODE _htons(0x5002)
  206. #define PTP_PROPERTYCODE_IMAGESIZE _htons(0x5003)
  207. #define PTP_PROPERTYCODE_COMPRESSIONSETTING _htons(0x5004)
  208. #define PTP_PROPERTYCODE_WHITEBALANCE _htons(0x5005)
  209. #define PTP_PROPERTYCODE_RGBGAIN _htons(0x5006)
  210. #define PTP_PROPERTYCODE_FNUMBER _htons(0x5007)
  211. #define PTP_PROPERTYCODE_FOCALLENGTH _htons(0x5008)
  212. #define PTP_PROPERTYCODE_FOCUSDISTANCE _htons(0x5009)
  213. #define PTP_PROPERTYCODE_FOCUSMODE _htons(0x500A)
  214. #define PTP_PROPERTYCODE_EXPOSUREMETERINGMODE _htons(0x500B)
  215. #define PTP_PROPERTYCODE_FLASHMODE _htons(0x500C)
  216. #define PTP_PROPERTYCODE_EXPOSURETIME _htons(0x500D)
  217. #define PTP_PROPERTYCODE_EXPOSUREPROGRAMMODE _htons(0x500E)
  218. #define PTP_PROPERTYCODE_EXPOSUREINDEX _htons(0x500F)
  219. #define PTP_PROPERTYCODE_EXPOSURECOMPENSATION _htons(0x5010)
  220. #define PTP_PROPERTYCODE_DATETIME _htons(0x5011)
  221. #define PTP_PROPERTYCODE_CAPTUREDELAY _htons(0x5012)
  222. #define PTP_PROPERTYCODE_STILLCAPTUREMODE _htons(0x5013)
  223. #define PTP_PROPERTYCODE_CONTRAST _htons(0x5014)
  224. #define PTP_PROPERTYCODE_SHARPNESS _htons(0x5015)
  225. #define PTP_PROPERTYCODE_DIGITALZOOM _htons(0x5016)
  226. #define PTP_PROPERTYCODE_EFFECTMODE _htons(0x5017)
  227. #define PTP_PROPERTYCODE_BURSTNUMBER _htons(0x5018)
  228. #define PTP_PROPERTYCODE_BURSTINTERVAL _htons(0x5019)
  229. #define PTP_PROPERTYCODE_TIMELAPSENUMBER _htons(0x501A)
  230. #define PTP_PROPERTYCODE_TIMELAPSEINTERVAL _htons(0x501B)
  231. #define PTP_PROPERTYCODE_FOCUSMETERINGMODE _htons(0x501C)
  232. #define PTP_PROPERTYCODE_UPLOADURL _htons(0x501D)
  233. #define PTP_PROPERTYCODE_ARTIST _htons(0x501E)
  234. #define PTP_PROPERTYCODE_COPYRIGHT _htons(0x501F)
  235. #define PTP_PROPERTYCODE_VENDOREXTENTION1 _htons(0xD001)
  236. #define PTP_PROPERTYCODE_VENDOREXTENTION2 _htons(0xD002)
  237. /* MTP defined Device properties */
  238. #define MTP_PROPERTYCODE_UNDEFINED _htons(0xD400)
  239. #define MTP_PROPERTYCODE_SYNCHRONIZATIONPARTNER _htons(0xD401)
  240. #define MTP_PROPERTYCODE_DEVICEFRIENDLYNAME _htons(0xD402)
  241. /* Device properties for Janus MTP extension */
  242. #define MTP_PROPERTYCODE_SECURETIME _htons(0xD101)
  243. #define MTP_PROPERTYCODE_DEVICECERTIFICATE _htons(0xD102)
  244. //
  245. // MTP extended object property codes: 
  246. //
  247. #define MTP_OBJ_PROPERTYCODE_STORAGEID _htons(0xDC01)
  248. #define MTP_OBJ_PROPERTYCODE_OBJECTFORMAT _htons(0xDC02)
  249. #define MTP_OBJ_PROPERTYCODE_PROTECTIONSTATUS _htons(0xDC03)
  250. #define MTP_OBJ_PROPERTYCODE_OBJECTSIZE _htons(0xDC04)
  251. #define MTP_OBJ_PROPERTYCODE_ASSOCIATIONTYPE _htons(0xDC05)
  252. #define MTP_OBJ_PROPERTYCODE_ASSOCIATIONDESC _htons(0xDC06)
  253. #define MTP_OBJ_PROPERTYCODE_OBJECTFILENAME _htons(0xDC07)
  254. #define MTP_OBJ_PROPERTYCODE_DATECREATED _htons(0xDC08)
  255. #define MTP_OBJ_PROPERTYCODE_DATEMODIFIED _htons(0xDC09)
  256. #define MTP_OBJ_PROPERTYCODE_KEYWORDS _htons(0xDC0A)
  257. #define MTP_OBJ_PROPERTYCODE_PARENT _htons(0xDC0B)
  258. #define MTP_OBJ_PROPERTYCODE_PERSISTENTGUID _htons(0xDC41)
  259. #define MTP_OBJ_PROPERTYCODE_SYNCID _htons(0xDC42)
  260. #define MTP_OBJ_PROPERTYCODE_PROPERTYBAG _htons(0xDC43)
  261. #define MTP_OBJ_PROPERTYCODE_NAME _htons(0xDC44)
  262. #define MTP_OBJ_PROPERTYCODE_CREATEDBY _htons(0xDC45)
  263. #define MTP_OBJ_PROPERTYCODE_ARTIST _htons(0xDC46)
  264. #define MTP_OBJ_PROPERTYCODE_DATEAUTHORED _htons(0xDC47)
  265. #define MTP_OBJ_PROPERTYCODE_DESCRIPTION _htons(0xDC48)
  266. #define MTP_OBJ_PROPERTYCODE_URLREFERENCE _htons(0xDC49)
  267. #define MTP_OBJ_PROPERTYCODE_LANGUAGELOCALE _htons(0xDC4A)
  268. #define MTP_OBJ_PROPERTYCODE_COPYRIGHTINFO _htons(0xDC4B)
  269. #define MTP_OBJ_PROPERTYCODE_SOURCE _htons(0xDC4C)
  270. #define MTP_OBJ_PROPERTYCODE_ORIGINLOCATION _htons(0xDC4D)
  271. #define MTP_OBJ_PROPERTYCODE_DATEADDED _htons(0xDC4E)
  272. #define MTP_OBJ_PROPERTYCODE_NONCONSUMABLE _htons(0xDC4F)
  273. #define MTP_OBJ_PROPERTYCODE_CORRUPTUNPLAYABLE _htons(0xDC50)
  274. #define MTP_OBJ_PROPERTYCODE_SAMPLEFORMAT _htons(0xDC81)
  275. #define MTP_OBJ_PROPERTYCODE_SAMPLESIZE _htons(0xDC82)
  276. #define MTP_OBJ_PROPERTYCODE_SAMPLEHEIGHT _htons(0xDC83)
  277. #define MTP_OBJ_PROPERTYCODE_SAMPLEWIDTH _htons(0xDC84)
  278. #define MTP_OBJ_PROPERTYCODE_SAMPLEDURATION _htons(0xDC85)
  279. #define MTP_OBJ_PROPERTYCODE_SAMPLEDATA _htons(0xDC86)
  280. #define MTP_OBJ_PROPERTYCODE_WIDTH _htons(0xDC87)
  281. #define MTP_OBJ_PROPERTYCODE_HEIGHT _htons(0xDC88)
  282. #define MTP_OBJ_PROPERTYCODE_DURATION _htons(0xDC89)
  283. #define MTP_OBJ_PROPERTYCODE_USERRATING _htons(0xDC8A)
  284. #define MTP_OBJ_PROPERTYCODE_TRACK _htons(0xDC8B)
  285. #define MTP_OBJ_PROPERTYCODE_GENRE _htons(0xDC8C)
  286. #define MTP_OBJ_PROPERTYCODE_CREDITS _htons(0xDC8D)
  287. #define MTP_OBJ_PROPERTYCODE_LYRICS _htons(0xDC8E)
  288. #define MTP_OBJ_PROPERTYCODE_SUBSCRIPCONTENTID _htons(0xDC8F)
  289. #define MTP_OBJ_PROPERTYCODE_PRODUCEDBY _htons(0xDC90)
  290. #define MTP_OBJ_PROPERTYCODE_USECOUNT _htons(0xDC91)
  291. #define MTP_OBJ_PROPERTYCODE_SKIPCOUNT _htons(0xDC92)
  292. #define MTP_OBJ_PROPERTYCODE_LASTACCESSED _htons(0xDC93)
  293. #define MTP_OBJ_PROPERTYCODE_PARENTALRATING _htons(0xDC94)
  294. #define MTP_OBJ_PROPERTYCODE_METAGENRE _htons(0xDC95)
  295. #define MTP_OBJ_PROPERTYCODE_COMPOSER _htons(0xDC96)
  296. #define MTP_OBJ_PROPERTYCODE_EFFECTIVERATING _htons(0xDC97)
  297. #define MTP_OBJ_PROPERTYCODE_SUBTITLE _htons(0xDC98)
  298. #define MTP_OBJ_PROPERTYCODE_ORIGINALRELEASEDATE _htons(0xDC99)
  299. #define MTP_OBJ_PROPERTYCODE_ALBUMNAME _htons(0xDC9A)
  300. #define MTP_OBJ_PROPERTYCODE_ALBUMARTIST _htons(0xDC9B)
  301. #define MTP_OBJ_PROPERTYCODE_MOOD _htons(0xDC9C)
  302. #define MTP_OBJ_PROPERTYCODE_DRMSTATUS _htons(0xDC9D)
  303. #define MTP_OBJ_PROPERTYCODE_SUBDESCRIPTION _htons(0xDC9E)
  304. #define MTP_OBJ_PROPERTYCODE_ISCROPPED _htons(0xDCD1)
  305. #define MTP_OBJ_PROPERTYCODE_ISCOLORCORRECTED _htons(0xDCD2)
  306. #define MTP_OBJ_PROPERTYCODE_TOTALBITRATE _htons(0xDE91)
  307. #define MTP_OBJ_PROPERTYCODE_BITRATETYPE _htons(0xDE92)
  308. #define MTP_OBJ_PROPERTYCODE_SAMPLERATE _htons(0xDE93)
  309. #define MTP_OBJ_PROPERTYCODE_NUMBEROFCHANNELS _htons(0xDE94)
  310. #define MTP_OBJ_PROPERTYCODE_AUDIOBITDEPTH _htons(0xDE95)
  311. #define MTP_OBJ_PROPERTYCODE_SCANTYPE _htons(0xDE97)
  312. #define MTP_OBJ_PROPERTYCODE_AUDIOWAVECODEC _htons(0xDE99)
  313. #define MTP_OBJ_PROPERTYCODE_AUDIOBITRATE _htons(0xDE9A)
  314. #define MTP_OBJ_PROPERTYCODE_VIDEOFOURCCCODEC _htons(0xDE9B)
  315. #define MTP_OBJ_PROPERTYCODE_VIDEOBITRATE _htons(0xDE9C)
  316. #define MTP_OBJ_PROPERTYCODE_FRAMESPER1KSECONDS _htons(0xDE9D)
  317. #define MTP_OBJ_PROPERTYCODE_KEYFRAMEDISTANCE _htons(0xDE9E)
  318. #define MTP_OBJ_PROPERTYCODE_BUFFERSIZE _htons(0xDE9F)
  319. #define MTP_OBJ_PROPERTYCODE_ENCODINGQUALITY _htons(0xDEA0)
  320. #define DRM_OBJ_PROPERTYCODE_PURCHASEALBUM _htons(0xD901)
  321. /* PTP Data type codes. */
  322. #define PTP_DATATYPE_UNDEFINED _htons(0x0000)
  323. #define PTP_DATATYPE_INT8 _htons(0x0001)
  324. #define PTP_DATATYPE_UINT8 _htons(0x0002)
  325. #define PTP_DATATYPE_INT16 _htons(0x0003)
  326. #define PTP_DATATYPE_UINT16 _htons(0x0004)
  327. #define PTP_DATATYPE_INT32 _htons(0x0005)
  328. #define PTP_DATATYPE_UINT32 _htons(0x0006)
  329. #define PTP_DATATYPE_INT64 _htons(0x0007)
  330. #define PTP_DATATYPE_UINT64 _htons(0x0008)
  331. #define PTP_DATATYPE_INT128 _htons(0x0009)
  332. #define PTP_DATATYPE_UINT128 _htons(0x000A)
  333. #define PTP_DATATYPE_AINT8 _htons(0x4001)
  334. #define PTP_DATATYPE_AUINT8 _htons(0x4002)
  335. #define PTP_DATATYPE_AINT16 _htons(0x4003)
  336. #define PTP_DATATYPE_AUINT16 _htons(0x4004)
  337. #define PTP_DATATYPE_AINT32 _htons(0x4005)
  338. #define PTP_DATATYPE_AUINT32 _htons(0x4006)
  339. #define PTP_DATATYPE_AINT64 _htons(0x4007)
  340. #define PTP_DATATYPE_AUINT64 _htons(0x4008)
  341. #define PTP_DATATYPE_AINT128 _htons(0x4009)
  342. #define PTP_DATATYPE_AUINT128 _htons(0x400A)
  343. #define PTP_DATATYPE_STRING _htons(0xFFFF)
  344. #define PTP_DATATYPE_ARRAYMASK _htons(0x4FF0)
  345. #define PTP_DATATYPE_ARRAY _htons(0x4000)
  346. #define PTP_DATATYPE_VALUEMASK _htons(0xFFF0)
  347. #define PTP_DATATYPE_VALUE _htons(0x0000)
  348. #define PTP_PROPGETSET_GETONLY 0x00
  349. #define PTP_PROPGETSET_GETSET 0x01
  350. typedef enum PropFormFlag
  351. {
  352. NoneForm = 0x00, //Allen060419#1
  353. RangeForm = 0x01,
  354. EnumForm = 0x02,
  355. DateTimeForm = 0x03,
  356. ItemListForm = 0x04,
  357. RegularExpressionForm = 0x05,
  358. ByteArray = 0x06,
  359. LongStringForm = 0xFF
  360. } ePropFormFlag;
  361. #define GroupCodeNone _htonl(0x00000000)
  362. #define GroupCodeSyncProps _htonl(0x00000001)
  363. #define GroupCodeUIProps _htonl(0x00000002)
  364. #define GroupCodeObjInfo _htonl(0x00000004)
  365. #define GroupCodeOftenUsed _htonl(0x00000008)
  366. #define GroupCodeSupplemental _htonl(0x00000100)
  367. #define GroupCodeUnknownProp _htonl(0x00010000)
  368. #define GroupCodeSlow _htonl(0x00FF0000)
  369. #define GroupCodeAll _htonl(0xFFFFFFFF)
  370. #define MTP_RC_OK _htons(0x2001)
  371. #define MTP_RC_Operation_Not_Supported _htons(0x2005)
  372. #define PTP_RCODE_NULL _htons(0x0000)
  373. #define PTP_RCODE_WAITDATA _htons(0x0001)
  374. #define PTP_RCODE_UNDEFINED _htons(0x2000)
  375. #define PTP_RCODE_OK _htons(0x2001)
  376. #define PTP_RCODE_GENERALERROR _htons(0x2002)
  377. #define PTP_RCODE_SESSIONNOTOPEN _htons(0x2003)
  378. #define PTP_RCODE_INVALIDTRANSACTIONID _htons(0x2004)
  379. #define PTP_RCODE_OPERATIONNOTSUPPORTED _htons(0x2005)
  380. #define PTP_RCODE_PARAMETERNOTSUPPORTED _htons(0x2006)
  381. #define PTP_RCODE_INCOMPLETETRANSFER _htons(0x2007)
  382. #define PTP_RCODE_INVALIDSTORAGEID _htons(0x2008)
  383. #define PTP_RCODE_INVALIDOBJECTHANDLE _htons(0x2009)
  384. #define PTP_RCODE_PROPERTYNOTSUPPORTED _htons(0x200A)
  385. #define PTP_RCODE_INVALIDOBJECTFORMATCODE _htons(0x200B)
  386. #define PTP_RCODE_STOREFULL _htons(0x200C)
  387. #define PTP_RCODE_OBJECTWRITEPROTECTED _htons(0x200D)
  388. #define PTP_RCODE_STOREWRITEPROTECTED _htons(0x200E)
  389. #define PTP_RCODE_ACCESSDENIED _htons(0x200F)
  390. #define PTP_RCODE_NOTHUMBNAILPRESENT _htons(0x2010)
  391. #define PTP_RCODE_SELFTESTFAILED _htons(0x2011)
  392. #define PTP_RCODE_PARTIALDELETION _htons(0x2012)
  393. #define PTP_RCODE_STORENOTAVAILABLE _htons(0x2013)
  394. #define PTP_RCODE_NOSPECIFICATIONBYFORMAT _htons(0x2014)
  395. #define PTP_RCODE_NOVALIDOBJECTINFO _htons(0x2015)
  396. #define PTP_RCODE_INVALIDCODEFORMAT _htons(0x2016)
  397. #define PTP_RCODE_UNKNOWNVENDORCODE _htons(0x2017)
  398. #define PTP_RCODE_CAPTUREALREADYTERMINATED _htons(0x2018)
  399. #define PTP_RCODE_DEVICEBUSY _htons(0x2019)
  400. #define PTP_RCODE_INVALIDPARENT _htons(0x201A)
  401. #define PTP_RCODE_INVALIDPROPFORMAT _htons(0x201B)
  402. #define PTP_RCODE_INVALIDPROPVALUE _htons(0x201C)
  403. #define PTP_RCODE_INVALIDPARAMETER _htons(0x201D)
  404. #define PTP_RCODE_SESSIONALREADYOPENED _htons(0x201E)
  405. #define PTP_RCODE_TRANSACTIONCANCELLED _htons(0x201F)
  406. #define MTP_RCODE_OBJECTTOOLARGE _htons(0xA809) //050510
  407. #define MTP_RCODE_WMDRMPD_FAIL _htons(0xA101) //050824
  408. #define MAX_MTP_PARAMS 5
  409. //050827: DRM_LICENSE_STATE_CATEGORY
  410. #define WM_DRM_LICENSE_STATE_NORIGHT  _htonl(0)
  411. #define WM_DRM_LICENSE_STATE_UNLIM  _htonl(1)
  412. #define WM_DRM_LICENSE_STATE_COUNT  _htonl(2)
  413. #define WM_DRM_LICENSE_STATE_FROM  _htonl(3)
  414. #define WM_DRM_LICENSE_STATE_UNTIL  _htonl(4)
  415. #define WM_DRM_LICENSE_STATE_FROM_UNTIL  _htonl(5)
  416. #define WM_DRM_LICENSE_STATE_COUNT_FROM  _htonl(6)
  417. #define WM_DRM_LICENSE_STATE_COUNT_UNTIL  _htonl(7)
  418. #define WM_DRM_LICENSE_STATE_COUNT_FROM_UNTIL  _htonl(8)
  419. #define WM_DRM_LICENSE_STATE_EXPIRATION_AFTER_FIRSTUSE  _htonl(9)
  420. #define WM_DRM_LICENSE_STATE_FORCE_SYNC  _htonl(10)
  421. //MTPObjectProp.h start
  422. ///////////////////////////Object Information Dataset Order////////////////////////
  423. #define ORDER_INFO_STORAGE_ID 0
  424. #define ORDER_INFO_OBJECT_FORMAT 4
  425. #define ORDER_INFO_PROTECTION_STATUS 6
  426. #define ORDER_INFO_OBJECT_COMPRESSED_SIZE 8
  427. #define ORDER_INFO_THUMB_FORMAT 12
  428. #define ORDER_INFO_THUMB_COMPRESSED_SIZE 14
  429. #define ORDER_INFO_THUMB_PIX_WIDTH 18
  430. #define ORDER_INFO_THUMB_PIX_HEIGHT 22
  431. #define ORDER_INFO_IMAGE_PIX_WIDTH 26
  432. #define ORDER_INFO_IMAGE_PIX_HEIGHT 30
  433. #define ORDER_INFO_IMAGE_BIT_DEPTH 34
  434. #define ORDER_INFO_PARENT_OBJECT 38
  435. #define ORDER_INFO_ASSOCIATION_TYPE 42
  436. #define ORDER_INFO_ASSOCIATION_DESC 44
  437. #define ORDER_INFO_SEQUENCE_NUMBER 48
  438. #define ORDER_INFO_FILENAME 52
  439. #define ORDER_INFO_DATE_CREATED 16
  440. #define ORDER_INFO_DATE_MODIFIED 17
  441. #define ORDER_INFO_KEYWORDS 18
  442. ///////////////////////////Object Property Dataset Order(Custom)///////////////////
  443. #define ORDER_PROP_STORAGE_ID 0
  444. #define ORDER_PROP_OBJECT_FORMAT 1
  445. #define ORDER_PROP_PROTECTION_STATUS 2
  446. #define ORDER_PROP_OBJECT_SIZE 3
  447. #define ORDER_PROP_ASSOCIATION_TYPE 4
  448. #define ORDER_PROP_ASSOCIATION_DESC 5
  449. #define ORDER_PROP_OBJECT_FILENAME 6
  450. #define ORDER_PROP_DATE_CREATED 7
  451. #define ORDER_PROP_DATE_MODIFIED 8
  452. ///////////////////////////////////////////////////////////////////////////////////
  453. #define LENGTH_OBJECT_HANDLES 4
  454. #define LENGTH_PROPERTY_CODE 2
  455. #define PROP_SUCCESS 0x00
  456. #define PROP_FAILED 0x01
  457. #define PROP_NOT_END 0x03
  458. #define PROP_OPEN_FILE_ERROR  0x04
  459. #define PROP_HANDLE_NOT_FOUND 0x05
  460. #define PROP_PROPERTY_NOT_SUPPORTED  0x06
  461. #define PROP_NO_SPACE 0x07
  462. #define PROP_BUFF_OVERFLOW 0x08
  463. #define PROP_FILE_CONTINUOUS 0x09 //Allen060713
  464. // gxbMtpState
  465. #define MTP_SESSIONOPEN 0x80
  466. #define MTP_WAIT_DATAOUT 0x40
  467. #define MTP_CLASS_ERROR 0x04 //allen050610#0: switch to MSC
  468. #define MTP_PHASE_ERROR 0x02
  469. #define MTP_PIO_OVF 0x01
  470. #define HEADER_ONLY 0x0000 //For SendMtpDataBlock allen 050418
  471. #define PROP_NAME_MAX_LEN 255 //127 Unicode word = 254 bytes change by chris from 127->255 for longfilename
  472. #define PROP_NAME_MAX_LEN1 63 //127 Unicode word = 254 bytes
  473. //MTPObjectProp.h end
  474. #define BYTE_ADDR(m) ((uint8_t *)(&m))
  475. #if MTP_SUPPORT_METERING
  476. #ifdef MTP_DEBUG_METERING
  477. // Chris Test 060605 wOffset+wLen <= 512
  478. #define DEBUG_WRITE_PRIV(bSec,wOffset, wLen,xData,i) 
  479. {
  480. NandPrivateEn();
  481. FsRead(bSec,1,FS_DATA_0_0);
  482. for(i=0;i<wLen;i++)
  483. gxbFsData[wOffset+gxwOffsetDataSec+i]=xData[i];
  484. FsWrite(bSec,1,FS_DATA_0_0);
  485. NandPrivateDis();
  486. }
  487. #endif
  488. #endif
  489. void MtpSendMSOSExtConfDesc(uint8_t) large;
  490. void MtpSendExtPropDesc(uint8_t) large;
  491. void UsbDmaReadWrite(bit, uint16_t, uint16_t) large;
  492. bit UsbPioRead(PBYTE, WORD) large; //050421c
  493. void UsbPioWrite(PBYTE, WORD) large;
  494. void DMAWriteSingleByte(bit , XWORD, XWORD) large; //Chris Add 060511
  495. //modify by tne 2005/04/14
  496. //#define UsbDmaRead(offset, size) UsbDmaReadWrite(USB_DMA_READ, (WORD)(gUsbDataBuf + offset), size) 050526 del
  497. //#define UsbDmaWrite(offset, size) UsbDmaReadWrite(USB_DMA_WRITE, (WORD)(gUsbDataBuf + offset), size) 050526 del
  498. //#define UsbDmaRead(offset, size) UsbDmaReadWrite(1, offset, size)
  499. //#define UsbDmaWrite(offset, size) UsbDmaReadWrite(0, offset, size)
  500. /*
  501. #else
  502. //#define UsbPioRead(offset, size, check) UsbPioRead(offset, size, check)
  503. //#define UsbPioWrite(offset, size) UsbPioWrite(offset, size)
  504. #ifdef __cplusplus
  505. }
  506. #endif
  507. #endif*/
  508. typedef struct{
  509. DWORD dwObjectHandle;
  510. WORD wPropCode;
  511. WORD wDatatype;
  512. }MTP_OBJECT_PROP_LIST; //050504
  513. typedef struct{
  514. DWORD Length; //reverse
  515. WORD Type;
  516. WORD Code;
  517. DWORD TransactionID;
  518. }MTP_CONTAINER_HEADER;
  519. typedef struct{
  520. XBYTE* xbpBuf;
  521. WORD wBufferSize;
  522. }MTP_CONTAINER_DATA;
  523. typedef struct{
  524. MTP_CONTAINER_HEADER Header;
  525. union
  526. {
  527. DWORD dw[MAX_MTP_PARAMS];
  528. WORD w[MAX_MTP_PARAMS * 2];
  529. BYTE b[MAX_MTP_PARAMS * 4];
  530. } Operation;
  531. union
  532. {
  533. DWORD dw[MAX_MTP_PARAMS];
  534. WORD w[MAX_MTP_PARAMS * 2];
  535. BYTE b[MAX_MTP_PARAMS * 4];
  536. } Response;
  537. MTP_CONTAINER_DATA Data;
  538. WORD wResponseLen;
  539. WORD wRemainLen;
  540. }MTP_CONTAINER; //60B
  541. #define PROPERTY_NUM 25/*24*/ //050507 //060503 Chris modify +2 //060728 #4 Chris
  542. typedef struct{
  543. DWORD StorageID; //0
  544. WORD ObjectFormat;
  545. WORD ProtectionStatus;
  546. DWORD ObjectCompressedSize;
  547. WORD ThumbFormat;
  548. DWORD ThumbCompressedSize;
  549. DWORD ThumbPixWidth;
  550. DWORD ThumbPixHeight;
  551. DWORD ImagePixWidth;
  552. DWORD ImagePixHeight;
  553. DWORD ImageBitDepth;
  554. DWORD ParentObject;
  555. WORD AssociationType;
  556. DWORD AssociationDesc;
  557. DWORD SequenceNumber;
  558. }MTP_OBJECT_INFO_DATASET;
  559. //Chris for Metering 060816 #1
  560. typedef struct {
  561. BYTE bEnMID[24];
  562. BYTE bEnTID[24];
  563. BYTE bEnPublickey[56];
  564. //WORD wRecordsLen; //Chris remove 061024 #16
  565. BYTE bURLLen;
  566. BYTE bURL[255];
  567. }MTP_METERING_DATA;
  568. //050530
  569. /* //Walace060630#1 start
  570. #define STORAGE_NOT_AVAILABLE 0x00
  571. #define STORAGE_FSINIT_DONE 0x01
  572. #define STORAGE_DBINIT_DONE 0x02
  573. #define STORAGE_AVAILABLE 0x03
  574. */
  575. #define STORAGE_NOT_EXIST 0x00
  576. #define STORAGE_EXIST            0x01
  577. #define STORAGE_FSINIT_DONE 0x02
  578. #define STORAGE_DBINIT_DONE 0x04
  579. #define STORAGE_EXIST_FS_DONE (STORAGE_EXIST|STORAGE_FSINIT_DONE)    
  580. #define STORAGE_READY (STORAGE_EXIST|STORAGE_FSINIT_DONE|STORAGE_DBINIT_DONE)    
  581. //Walace060630#1 end
  582. #ifdef _MTP_H_
  583. #define EXTERN
  584. #define _AT_(addr) _at_ addr
  585. #else
  586. #define EXTERN extern
  587. #define _AT_(addr)
  588. #endif
  589. #define gpMtpContainer ((MTP_CONTAINER*)gUsbDataBuf)
  590. EXTERN void SendMtpDataBlock(PBYTE pBuf, DWORD dwLen) large;
  591. EXTERN void SendMtpResponseBlock(WORD wCode, WORD wLen) large;
  592. EXTERN void MtpProcess(void) large;
  593. EXTERN API void MtpDeviceInit(); //050425
  594. EXTERN void API CardDetect(BOOL fSendEvent); //050530 //Chris 061222#1 //Chris070521#1
  595. EXTERN void MTPLicScan(void) large; //Chris 060918 #1 for MaxLic scan
  596. //Allen060419#1 start
  597. #if 0 //Walace070205#1
  598. #define MTP_CLK_INIT 0
  599. #define MTP_CLK_FAST 1
  600. #define MTP_CLK_NORAML 2
  601. #endif
  602. //Chris 060807 #2 for GetPropList
  603. #define GetObjNumbers 0
  604. #define GetObjHandles 1
  605. #define GetObjPropList 2
  606. #define GetObjInfo 3
  607. #define GET_DATA 0
  608. #define GET_LEN 1
  609. #define BYPASS_DATA 2
  610. #define SEND_METER_CHALLENGE 0
  611. #define SET_METER_RESPONSE 1
  612. #if 0 //Walace070205#1
  613. EXTERN API void MtpSetSysSpeed(BYTE bClk) large; //060127
  614. #endif
  615. EXTERN void SendEvent(DWORD dwLen, WORD wCode, DWORD dwParameter);// large; //Chris 061222#1  //Chris070521#1
  616. #if(_MTP_SPECIAL_CMD_) //Allen060118
  617. EXTERN API bit CheckValidObjectHandle0(DWORD dwObjectHandle, BYTE bStatusMask) large;
  618. EXTERN API bit ChangeStorage(BYTE bStorLun) large;
  619. #endif
  620. //Allen060419#1 end
  621. //add by tne 2005/04/21
  622. //set here 1 to watch gipoa to know if transfor data
  623. //It's a debug option, please set 0 normally
  624. #if 0 //Chris change from #if(0) ->#if 0 for Source Insight view
  625. #define MTP_TRANS_LIGHT_START() obGPIOADIR |= 0x01;
  626. #define DISP_MTP_TRANS_LIGHT() obGPIOADAT ^= 0x01;
  627. #define MTP_TRANS_LIGHT_END() obGPIOADAT =  0x00;
  628. obGPIOADIR &= 0xEF;
  629. #else
  630. #define MTP_TRANS_LIGHT_START()
  631. #define DISP_MTP_TRANS_LIGHT()
  632. #define MTP_TRANS_LIGHT_END()
  633. #endif
  634. //////////////////////////////////////////////////////////////////////
  635. //050423a allen
  636. #define NULL 0
  637. //050424b allen
  638. #undef EXTERN
  639. #undef _AT_