Home | History | Annotate | Download | only in api
      1 /*
      2  * Copyright (C) 2006 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 /** \file
     18   This file consists of implementation of class AdbEndpointObject that
     19   encapsulates a handle opened to an endpoint on our device.
     20 */
     21 
     22 #include "stdafx.h"
     23 #include "adb_endpoint_object.h"
     24 
     25 AdbEndpointObject::AdbEndpointObject(AdbInterfaceObject* parent_interf,
     26                                      UCHAR endpoint_id,
     27                                      UCHAR endpoint_index)
     28     : AdbObjectHandle(AdbObjectTypeEndpoint),
     29       parent_interface_(parent_interf),
     30       endpoint_id_(endpoint_id),
     31       endpoint_index_(endpoint_index) {
     32   if (NULL != parent_interface_)
     33     parent_interface_->AddRef();
     34 }
     35 
     36 AdbEndpointObject::~AdbEndpointObject() {
     37   if (NULL != parent_interface_)
     38     parent_interface_->Release();
     39 }
     40 
     41 bool AdbEndpointObject::GetEndpointInformation(AdbEndpointInformation* info) {
     42   if (!IsOpened()) {
     43     SetLastError(ERROR_INVALID_HANDLE);
     44     return false;
     45   }
     46 
     47   return parent_interface()->GetEndpointInformation(endpoint_index(), info);
     48 }
     49 
     50 ADBAPIHANDLE AdbEndpointObject::AsyncRead(void* buffer,
     51                                     ULONG bytes_to_read,
     52                                     ULONG* bytes_read,
     53                                     HANDLE event_handle,
     54                                     ULONG time_out) {
     55   return CommonAsyncReadWrite(true,
     56                               buffer,
     57                               bytes_to_read,
     58                               bytes_read,
     59                               event_handle,
     60                               time_out);
     61 }
     62 
     63 ADBAPIHANDLE AdbEndpointObject::AsyncWrite(void* buffer,
     64                                      ULONG bytes_to_write,
     65                                      ULONG* bytes_written,
     66                                      HANDLE event_handle,
     67                                      ULONG time_out) {
     68   return CommonAsyncReadWrite(false,
     69                               buffer,
     70                               bytes_to_write,
     71                               bytes_written,
     72                               event_handle,
     73                               time_out);
     74 }
     75 
     76 bool AdbEndpointObject::SyncRead(void* buffer,
     77                            ULONG bytes_to_read,
     78                            ULONG* bytes_read,
     79                            ULONG time_out) {
     80   return CommonSyncReadWrite(true,
     81                              buffer,
     82                              bytes_to_read,
     83                              bytes_read,
     84                              time_out);
     85 }
     86 
     87 bool AdbEndpointObject::SyncWrite(void* buffer,
     88                             ULONG bytes_to_write,
     89                             ULONG* bytes_written,
     90                             ULONG time_out) {
     91   return CommonSyncReadWrite(false,
     92                              buffer,
     93                              bytes_to_write,
     94                              bytes_written,
     95                              time_out);
     96 }
     97