void MtpDataPacket::putString(const uint16_t* string) { int count = 0; for (int i = 0; i < 256; i++) { if (string[i]) count++; else break; } putUInt8(count > 0 ? count + 1 : 0); for (int i = 0; i < count; i++) putUInt16(string[i]); // only terminate with zero if string is not empty if (count > 0) putUInt16(0); }
void openlib::Serializer::putString(const std::string& data) { if (Serializer::MAX_STRING_LENGTH < data.length()) { throw std::length_error("string cannot exceed MAX_STRING_LENGTH"); } putUInt16(data.length()); put(reinterpret_cast<const uint8_t*>(data.c_str()), data.length()); }
// write our buffer to the given endpoint (host mode) int MtpRequestPacket::write(struct usb_request *request) { putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize); putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_COMMAND); request->buffer = mBuffer; request->buffer_length = mPacketSize; return transfer(request); }
int MtpEventPacket::write(int fd) { struct mtp_event event; putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize); putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_EVENT); event.data = mBuffer; event.length = mPacketSize; int ret = ::ioctl(fd, MTP_SEND_EVENT, (unsigned long)&event); return (ret < 0 ? ret : 0); }
int MtpEventPacket::write(int fd) { struct mtp_event event; putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize); putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_EVENT); event.data = mBuffer; event.length = mPacketSize; int ret = ::ioctl(fd, MTP_SEND_EVENT, (unsigned long)&event); //Added for USB Develpment debug, more log for more debuging help sxlog_printf(ANDROID_LOG_VERBOSE, "MtpEventPacket", "%s: mBuffer = %p, mPacketSize = 0x%d, &event = %p \n", __func__, mBuffer, mPacketSize, (&event)); //Added for USB Develpment debug, more log for more debuging help return (ret < 0 ? ret : 0); }
void MtpPacket::setContainerCode(uint16_t code) { putUInt16(MTP_CONTAINER_CODE_OFFSET, code); }
int MtpResponsePacket::write(int fd) { putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize); putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_RESPONSE); int ret = ::write(fd, mBuffer, mPacketSize); return (ret < 0 ? ret : 0); }
void MtpDataPacket::putAUInt16(const UInt16List* values) { size_t count = (values ? values->size() : 0); putUInt32(count); for (size_t i = 0; i < count; i++) putUInt16((*values)[i]); }
void MtpDataPacket::putAUInt16(const uint16_t* values, int count) { putUInt32(count); for (int i = 0; i < count; i++) putUInt16(*values++); }