)]}'
{
  "log": [
    {
      "commit": "df4b507474b2bccb70bb06dd6552c42e0a2dad9f",
      "tree": "4b9421971b1e943c1a444964979c10df38dab9a3",
      "parents": [
        "d8afe483117a3704037d6767f11859ea035e16d6"
      ],
      "author": {
        "name": "robinz1x",
        "email": "robinx.zhang@intel.com",
        "time": "Mon Jul 09 10:37:56 2018 +0800"
      },
      "committer": {
        "name": "Guobin Zhang",
        "email": "guobin.zhang@intel.com",
        "time": "Mon Nov 19 17:19:21 2018 +0800"
      },
      "message": "Use uint32_t instead of int to support 2~4G file\n\nMtpDevice::sendObject is using int to define object size,\nif the object size is bigger than 2GB, the size will be type-cast to\na negative number. And it will cause a endless loop in MtpDataPacket::write\nuntil DUT auto reboot.\n\nAnd JNI api android_mtp_MtpDevice_send_object requires that object\nsize must be uint32_t , so MtpDevice::sendObject works well after its\nsize parameter is changed from int to uint32_t.\n\nAlso change the return type of below API from int to int64_5\nint64_t MtpDataPacket::write(struct usb_request *request, UrbPacketDivisionMode divisionMode,\n        int fd, size_t size)\nso that it can return the right size in the case of writing 2~4G file.\n\nTest: manual - connect Android device to Android Automotive\nTest: manual - select MTP/File Transfer in android device\nTest: manual - copy a file which is bigger than 2GB from automotive to the android device.\n\nbug: 115451170\n\nChange-Id: I65b89f195ef0527a802bccefc90721e536683b87\nSigned-off-by: robinz1x \u003crobinx.zhang@intel.com\u003e\nSigned-off-by: Guobin Zhang \u003cguobin.zhang@intel.com\u003e\n"
    },
    {
      "commit": "df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2",
      "tree": "15e227b89c1c6a9877b7e37269cdb63b1ffaac90",
      "parents": [
        "0fdeb09e898c39d9e353311577b72f1a53bc11f3"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed May 03 17:17:49 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Aug 22 20:47:04 2017 +0000"
      },
      "message": "Switch MtpFfsHandle to aio, add control functions.\n\nMtpFfsHandle now uses kaio to handle usb data.\nThis achieves better performance without using\nthe endpoint alloc ioctl.\n\nThis also allows ep0 events to be handled without\nrace conditions. Events will also include control\nrequests, which will allow both host and device\ninitiated cancellation.\n\nBug: 37916658\nBug: 36802721\nTest: Transfer various size files, run MtpFfsHandleTest\nTest: Cancel transfer on Windows\nTest: Allow device to cancel transfer on Windows\nChange-Id: Ib3ce996f00782ce7f68f29b2510dbc17f09fdf14\n"
    },
    {
      "commit": "dee8e1e48982a48b31c2db73a4e6630d70e2bfac",
      "tree": "cab56f72c9f980bdf8f49f3a8b407a64be7bc043",
      "parents": [
        "4278ba02628d915b52d59dcf5477880cf99f39cd",
        "28569ba92e5b635e4288d271f33539bd85a380c9"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Dec 13 01:01:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 13 01:01:21 2016 +0000"
      },
      "message": "Refactored Mtp driver interface into multiple classes. am: 487be61fb0 am: c17a76108b am: 1475041870\nam: 28569ba92e\n\nChange-Id: I18b7674cd0c2e05534849c52f78cbcb0e4ad9144\n"
    },
    {
      "commit": "487be61fb0a38873aec1d12da92437fba5e728f2",
      "tree": "29bfa5273c091b25b31ac5353580f67229a8b07c",
      "parents": [
        "b985e3c6bab78c60ef53164f157dd5bccf3045f9"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 24 12:10:41 2016 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Dec 12 14:36:06 2016 -0800"
      },
      "message": "Refactored Mtp driver interface into multiple classes.\n\nAdded new interface for FunctionFS. This allows most of\nthe driver code to exist in userspace. The driver will\nautomatically use FunctionFS if it is enabled for that\ndevice, otherwise it will default to the kernel driver.\n\nThe intention is to eventually deprecate the kernel driver.\n\nBug: 30976142\nChange-Id: I36b8d16ca254fddd995b3ea1bd3d37b0ff4a28f7\nTest: New automated tests for MtpFfsHandle, AsyncIO.\nManual testing on each device.\n"
    },
    {
      "commit": "d4b4296b401162a7a42f757c96e3652b82255b13",
      "tree": "0c9433e61873d31b683753906c5ed4b0f21a81b2",
      "parents": [
        "d45003594f2ae928869f14579095687c4f090d06"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:34:43 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Oct 07 10:04:30 2016 +0900"
      },
      "message": "Don\u0027t send short URB packet when sending MtpDataPacket.\n\nWhen sending a MtpDataPacket to a MTP device, the kernel driver splits\nit into multiple URB packets so that the URB packet size does not exceed\nthe buffer size at the MTP device.\n\nPreviously MtpDataPacket sends its header first, then sends the\npayload. It means the first URB packet only contains the header of\nMtpDataPacket and the URB packet size is smaller than the maximum URB\npacket size (short packet). Some MTP devices regard the short packet as\nthe end of the sequencail URB packets, thus the devices do not accept\nthe following URB packets that contain the payload.\n\nThe MTP spec says if the responder (MTP device) sends the data in a way\nwhere the first pacekt contains only the header, the initiator (MTP\nhost) must send data in the same way. Otherwise the initiator must not\nsend a short packet in the sequencial URB packets.\n\nThe CL fixes the MTP host implementation so that it remembers how the\nMTP device sends data, and uses the same way when sending data\nfrom the host.\n\nBug: 31165557\nTest: Manually invokes MtpDevice#sendObject\nChange-Id: Ic76eb4241ed74957414aef2990be08cd77a9f5a9\n"
    },
    {
      "commit": "4fd9a8b9865addfedbcd84d5c9efea0f647086a0",
      "tree": "fcab096d691d3463873eba0c7c7a561416cee36b",
      "parents": [
        "6d5a0de5177bccc17d0eb1b69a8ed88d620884a5"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Aug 20 15:13:40 2015 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Aug 24 17:53:28 2015 +0900"
      },
      "message": "Use common implementation for getObject and importFile.\n\nPreviously the two functions have separate but similar implementation. ag/750097\nfixed a bug in importFile, but we have a same bug in getObject. Instead fixing\nthe bug separately, the CL adds a common function that can be used from both\ngetObject and importFile.\n\nBUG\u003d23264575\n\nChange-Id: I0bdc876ee9b11301ba4c445cc16556e9c951a8b4\n"
    },
    {
      "commit": "ab063847e6e893740749029a04cce1f6b7345ed5",
      "tree": "8b840e9152cfa638aa354a0379962a89914e0006",
      "parents": [
        "745602d87607521f4fe84c4f3a6388fbdb6a867c"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Nov 12 14:20:06 2014 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Nov 12 16:08:37 2014 -0800"
      },
      "message": "MTP: add strict bounds checking for all incoming packets\n\nPreviously we did not sanity check incoming MTP packets,\nwhich could result in crashes due to reading off the edge of a packet.\nNow all MTP packet getter functions return a boolean result\n(true for OK, false for reading off the edge of the packet)\nand we now return errors for malformed packets.\n\nBug: 18113092\nChange-Id: Ic7623ee96f00652bdfb4f66acb16a93db5a1c105\n"
    },
    {
      "commit": "ef441d965504dbf31c5db690e5b34fcdcecd92ff",
      "tree": "4c4bd3804dffe1e472c94e1d2d42a3ece615cde6",
      "parents": [
        "e0b5bb23f0a26d248275d203885b820659da7320"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 14 21:00:02 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Jul 17 15:53:53 2011 -0400"
      },
      "message": "MTP: Use a single packet for the data phase\n\ninstead of sending 12 byte header in a separate packet.\nPTP on the Mac is much happier with this approach.\n\nChange-Id: I7d1ca498f6346afd88876d24332187b466fc469c\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "64000788211f4c7e78c80a4a155390d1316e1176",
      "tree": "5cd67cc35f9df8ffcef27438430c6a087adfa69c",
      "parents": [
        "c0502468a29aa2f2b3457e0e08c4a5650a70488d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Apr 24 18:40:17 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Apr 25 17:40:33 2011 -0700"
      },
      "message": "MTP: Implement GetThumb command\n\nThis allows the PC to access thumbnails in JPEG files over MTP/PTP\n\nBug: 3219495\n\nChange-Id: I4964f8b4826dffb7f0f77464ec91bd2e97a2f007\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "42d0b79a787814d42e4c6f9dfe14f13cc0f6a758",
      "tree": "9cb2c20fb8bf7d6b53c093c8e3dceb5dc0374523",
      "parents": [
        "d1108d74e13a74dc72e49513e0393e924f3d112c"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 04 14:48:57 2011 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jan 06 11:46:55 2011 -0500"
      },
      "message": "MTP: changes to use new usb_request support in libusbhost\n\nChange-Id: Ic091eab166a66efcde0395dcebbbc513f2322fca\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "b9ff444a7eaf7ffd43970c0477110c6808bd4a7c",
      "tree": "6fcfa2ec5805ead1a62757b7875a20eee5b4a151",
      "parents": [
        "317ca79a49746dbd1b6bb83712e93e2dc5f6e4f0"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Nov 19 11:20:19 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Nov 19 11:30:10 2010 -0500"
      },
      "message": "PTP: Improve performance and reliability of file importing\n\nNow the file copy is done completely within the media process\nrather than pushing data to the client via ContProvider.openFile().\n\nFile system writes are now interleaved with USB reads, which allows us\nto copy the data faster and prevents the camera from timing out during transfer.\n\nFile is automatically inserted in the media provider after a successful import\nand a Uri is returned to the client.\n\nBUG: 2994234\n\nChange-Id: Ie75c63da76f623343d3d966c6a707aa1ae871972\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "8277cec96ffa55082962591bca1c55abbeec8c26",
      "tree": "660b89fc58bc6971d848b80be47fc9fa374d1aec",
      "parents": [
        "17c53d433cd83d6b7d77e80635d6d58e2f6f5b2e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 10 15:20:35 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Aug 25 18:42:22 2010 -0400"
      },
      "message": "MTP: work in progress on expanded property support\n\nGetObjectPropValue and SetObjectPropValue are disabled until I figure out\nwhy Windows doesn\u0027t like what I have done.\n\nChange-Id: I74e945ef3ea031f6d46f4ebaa8df815da0a5c3ed\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "de1e37aad04640ef76f3c017b65adca087c7be0f",
      "tree": "a6d2f4b1a88bb9571d5ca0f452fdfbad9c931f7a",
      "parents": [
        "f211e5ab69b8f554b5e268699988640c2ec22255"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Aug 18 12:31:09 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Aug 18 13:31:46 2010 -0400"
      },
      "message": "MTP: Compatibility fixes for transferring strings\n\nChange-Id: Ic06d754ee68b0389439cdc34f73adff0f2b33afa\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "782aef17c9921a3bf401a0432878df5031f2328b",
      "tree": "16990996aabf410d011704657f11bf3ec5cedd54",
      "parents": [
        "d7943b4cd2fa597581d1e29325adccc62dbf2939"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 10 07:37:50 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 10 09:00:30 2010 -0400"
      },
      "message": "MTP: Push queries for supported formats and properties up to Java.\n\nChange-Id: I4f117090340e3916afda3d194521a6092a672ddc\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "0cf89f2e622aa53f31fa5762ca4bc805bb509ed3",
      "tree": "e0983afa92472593e764f81d8e42b5d118a3a697",
      "parents": [
        "2b6c4a26499693ae3638e3df6d4255b13e34ee29"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 26 20:40:45 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 26 20:40:45 2010 -0400"
      },
      "message": "MTP host: Add support for reading files from an MTP device via ParcelFileDescriptor\n\nAlso added some support for sending files to the device that hasn\u0027t been debugged yet.\nAdd locking to MtpDevice to prevent it from attempting multiple transactions simultaneously.\n\nChange-Id: I2b995ba0af086cc6920bd6b8c869f540ad78560a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "5cdceca217319bf6a22caf1acadc38c8dc259316",
      "tree": "dc891ff75101f8aae91d7b4b8e96ccb253f68e07",
      "parents": [
        "be9a95ce176e94c54f08454dc19e500546578154"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jul 20 09:47:41 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jul 20 09:49:50 2010 -0400"
      },
      "message": "MTP: Fix problems reading and writing arrays in property values.\n\nChange-Id: Idd53b63fd32698a3ffc90f174d16ae597b4feb36\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "1865a5ddcfe7b0e8dc211419aea1094b1491a5fd",
      "tree": "7d5cf198bb5802a4e6faf0f58bccf1ddecd62ce7",
      "parents": [
        "dda7e2b7378755637f188cca7c5ae854427a28f7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sat Jul 03 00:44:05 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 08 16:21:09 2010 -0400"
      },
      "message": "MTP: Use media provider database to implement MTP device support.\n\nUses a new \"MTP objects\" table in the media provider to support basic\nenumeration of the external storage file system.\nSupport for accessing audio, video and image metadata in the existing\nmedia provider tables will be added in a later commit.\n\nThe C++ MtpDatabase class is now abstract, to support a proxy subclass that\ncalls through JNI to the Java MtpDatabase class in the media provider.\n\nChange-Id: I90f0db5f3acc5d35ae78c27a8507edff16d14305\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "3e072b354d1e1e3ee62d58492f0739139df8aff1",
      "tree": "5c1d39a97b326b210d148dfefb70832ea87e1dab",
      "parents": [
        "fee87d7b4e60d7541aa2cb0d31f5bdf4ca9e6475"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jun 10 16:34:20 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jun 10 16:58:03 2010 -0400"
      },
      "message": "MTP: Add support for retrieving thumbnails to MTP content provider.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "a6c490b8b2d96ebaab632286029463f932ae3b6b",
      "tree": "05f47b431aa13127a4f62d9676d21f45169a7d9f",
      "parents": [
        "7dfffd78637f99ce396e7ce2008b05b2d5aec131"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sat Jun 05 22:45:01 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jun 07 09:34:41 2010 -0400"
      },
      "message": "MTP: host support for retrieving device property descriptors\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "335dd2be955607f2632eabc25045857f2cc8b674",
      "tree": "59ad1930089fecf0bd70a8a9dc03db151b5d0028",
      "parents": [
        "fceef46513db3507b413f604cea89e3c7f352663"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "mike@spruce.(none)",
        "time": "Wed May 19 10:33:39 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed May 19 12:38:03 2010 -0400"
      },
      "message": "More work on PTP host support.\n\nChange-Id: Ifbd5bd5efa3cdb750ae1a2aae38181457554d34d\nSigned-off-by: Mike Lockwood \u003cmike@spruce.(none)\u003e\n"
    },
    {
      "commit": "7850ef999740f214a1990a9c090d3f3865d435aa",
      "tree": "2320628e762e31b799c21f3a2d8177c271e47656",
      "parents": [
        "3c6d0f4c956494241c0c243b079f42049d832d7d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 14 10:10:36 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 14 10:10:36 2010 -0400"
      },
      "message": "Move MTP code to the android namespace\n\nChange-Id: I5da48038fd5e4cdeefaeba42cdc74eb588b3448d\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "16864bae0f51c32c456da2c43adf7a057c0c4882",
      "tree": "87eb11d62168084c9e63cdd2bf5fd5d35a573df7",
      "parents": [
        "328523627293790cbf485fa6095b38a5fdb2118e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue May 11 17:16:59 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 13 15:36:47 2010 -0400"
      },
      "message": "Checkpoint work on MTP and PTP investigation.\n\nThis change includes work in progress on a C++ library for both host and device\nMTP and PTP support.\nCurrently the makefile builds two test programs:\n\nmtptest - a command line test program that implements a small subset of device side MTP.\nRequires a kernel driver that has not been checked in yet.\n\nptptest - a host tool to test USB host support for detecting and communicating with\ndigital cameras over PTP.  Runs on Linux host.\n\nLater this will be reformulated as a native library that will be used in the media process.\n\nChange-Id: I81aab279975b600b59d99013ab97f9adf0b58da7\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    }
  ]
}
