UmberHubManager/api/lib/BrainStem2/PortMapping.h

92 lines
4.1 KiB
C

//
// PortMapping.h
//
/////////////////////////////////////////////////////////////////////
// //
// Copyright 1994-2015. Acroname Inc. //
// //
// This software is the property of Acroname Inc. Any //
// distribution, sale, transmission, or re-use of this code is //
// strictly forbidden except with permission from Acroname Inc. //
// //
// To the full extent allowed by law, Acroname Inc. also excludes //
// for itself and its suppliers any liability, whether based in //
// contract or tort (including negligence), for direct, //
// incidental, consequential, indirect, special, or punitive //
// damages of any kind, or for loss of revenue or profits, loss of //
// business, loss of information or data, or other financial loss //
// arising out of or in connection with this software, even if //
// Acroname Inc. has been advised of the possibility of such //
// damages. //
// //
// Acroname Inc. //
// www.acroname.com //
// 720-564-0373 //
// //
/////////////////////////////////////////////////////////////////////
#ifndef _PortMapping_h_
#define _PortMapping_h_
#include "BrainStem-C.h"
#include <stdint.h>
/////////////////////////////////////////////////////////////////////
/// BrainStem Port Mapping Interface
/** \defgroup PortMapping Port Mapping Interface
* \ref PortMapping "PortMapping.h" provides an interface for usb descriptor
* information of devices downstream of Acroname hub products.
*/
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
/** Port speed enumeration */
typedef enum PORT_SPEED {
kPORT_SPEED_UNKNOWN = 0, /**< kPORT_SPEED_UNKNOWN (0)*/
kPORT_SPEED_LOW, /**< kPORT_SPEED_LOW (1)*/
kPORT_SPEED_FULL, /**< kPORT_SPEED_FULL (2)*/
kPORT_SPEED_HIGH, /**< kPORT_SPEED_HIGH (3)*/
kPORT_SPEED_SUPER, /**< kPORT_SPEED_SUPER (4)*/
kPORT_SPEED_SUPER_PLUS, /**< kPORT_SPEED_SUPER_PLUS (5)*/
} PORT_SPEED_t;
/** Device Node Structure - Contains information linking the downstream
* device to the Acroname Hub. */
typedef struct DeviceNode {
//Acroname Device Information
uint32_t hubSerialNumber; /**< Serial number of the Acroname hub where the device was found.*/
uint8_t hubPort;/**< Port of the Acroname hub where the device was found.*/
//Downstream device information.
uint16_t idVendor;/**< Manufactures Vendor ID of the downstream device.*/
uint16_t idProduct;/**< Manufactures Product ID of the downstream device.*/
PORT_SPEED_t speed;/**< The devices downstream device speed.*/
char productName[255];/**< USB string descriptor*/
char serialNumber[255];/**< USB string descriptor*/
char manufacturer[255];/**< USB string descriptor*/
} DeviceNode_t;
/// Gets downstream device USB information for all Acroname hubs.
/// \param buffer Pointer to the start of a list/array to be used by the function.
/// \param bufferLength Size of the list/array in DeviceNode_t's, not bytes.)
/// \param devicesFound The number of DeviceNode_t's that were populated.
/// \retval aErrNone on success
/// \retval aErrParam Passed in values are not valid. (NULL, size etc).
/// \retval aErrMemory No more room in the list
/// \retval aErrNotFound No Acroname devices were found.
aLIBEXPORT aErr getDownstreamDevices(
DeviceNode_t* buffer,
uint32_t bufferLength,
uint32_t* devicesFound);
#ifdef __cplusplus
}
#endif // __cplusplus
#endif