#ifndef CPHIDGET_CONSTANTS
#define CPHIDGET_CONSTANTS
/** \defgroup phidconst Phidget Constants
* Various constants used throughout the library.
* @{
*/
/** \name Phidget States
* Returned by getStatus() functions
* @{
*/
#define PHIDGET_ATTACHED 0x1 /**< Phidget attached */
#define PHIDGET_NOTATTACHED 0x0 /**< Phidget not attached */
/** @} */
//Adding error codes: Update .NET, COM, Python, Java
/** \name Phidget Error Codes
* Returned by all C API calls
* @{
*/
#define PHIDGET_ERROR_CODE_COUNT 20
#define EPHIDGET_OK 0 /**< Function completed successfully. */
#define EPHIDGET_NOTFOUND 1 /**< Phidget not found. "A Phidget matching the type and or serial number could not be found." */
#define EPHIDGET_NOMEMORY 2 /**< No memory. "Memory could not be allocated." */
#define EPHIDGET_UNEXPECTED 3 /**< Unexpected. "Unexpected Error. Contact Phidgets Inc. for support." */
#define EPHIDGET_INVALIDARG 4 /**< Invalid argument. "Invalid argument passed to function." */
#define EPHIDGET_NOTATTACHED 5 /**< Phidget not attached. "Phidget not physically attached." */
#define EPHIDGET_INTERRUPTED 6 /**< Interrupted. "Read/Write operation was interrupted." This code is not currently used. */
#define EPHIDGET_INVALID 7 /**< Invalid error code. "The Error Code is not defined." */
#define EPHIDGET_NETWORK 8 /**< Network. "Network Error." */
#define EPHIDGET_UNKNOWNVAL 9 /**< Value unknown. "Value is Unknown (State not yet received from device, or not yet set by user)." */
#define EPHIDGET_BADPASSWORD 10 /**< Authorization exception. "No longer used. Replaced by EEPHIDGET_BADPASSWORD" */
#define EPHIDGET_UNSUPPORTED 11 /**< Unsupported. "Not Supported." */
#define EPHIDGET_DUPLICATE 12 /**< Duplicate request. "Duplicated request." */
#define EPHIDGET_TIMEOUT 13 /**< Timeout. "Given timeout has been exceeded." */
#define EPHIDGET_OUTOFBOUNDS 14 /**< Out of bounds. "Index out of Bounds." */
#define EPHIDGET_EVENT 15 /**< Event. "A non-null error code was returned from an event handler." This code is not currently used. */
#define EPHIDGET_NETWORK_NOTCONNECTED 16 /**< Network not connected. "A connection to the server does not exist." */
#define EPHIDGET_WRONGDEVICE 17 /**< Wrong device. "Function is not applicable for this device." */
#define EPHIDGET_CLOSED 18 /**< Phidget Closed. "Phidget handle was closed." */
#define EPHIDGET_BADVERSION 19 /**< Version Mismatch. "No longer used. Replaced by EEPHIDGET_BADVERSION" */
/** @} */
//Adding error codes: Update .NET, COM, Python, Java
/** \name Phidget Error Event Codes
* Returned in the Phidget error event
* @{
*/
#define EEPHIDGET_EVENT_ERROR(code) (0x8000 + code)
//Library errors
#define EEPHIDGET_NETWORK EEPHIDGET_EVENT_ERROR(0x0001) /**< Network Error (asynchronous). */
#define EEPHIDGET_BADPASSWORD EEPHIDGET_EVENT_ERROR(0x0002) /**< Authorization Failed. */
#define EEPHIDGET_BADVERSION EEPHIDGET_EVENT_ERROR(0x0003) /**< Webservice and Client protocol versions don't match. Update to newest release. */
//Errors streamed back from firmware
#define EEPHIDGET_OK EEPHIDGET_EVENT_ERROR(0x1000) /**< An error state has ended - see description for details. */
#define EEPHIDGET_OVERRUN EEPHIDGET_EVENT_ERROR(0x1002) /**< A sampling overrun happend in firmware. */
#define EEPHIDGET_PACKETLOST EEPHIDGET_EVENT_ERROR(0x1003) /**< One or more packets were lost. */
#define EEPHIDGET_WRAP EEPHIDGET_EVENT_ERROR(0x1004) /**< A variable has wrapped around. */
#define EEPHIDGET_OVERTEMP EEPHIDGET_EVENT_ERROR(0x1005) /**< Overtemperature condition detected. */
#define EEPHIDGET_OVERCURRENT EEPHIDGET_EVENT_ERROR(0x1006) /**< Overcurrent condition detected. */
#define EEPHIDGET_OUTOFRANGE EEPHIDGET_EVENT_ERROR(0x1007) /**< Out of range condition detected. */
#define EEPHIDGET_BADPOWER EEPHIDGET_EVENT_ERROR(0x1008) /**< Power supply problem detected. */
/** @} */
/** \name Phidget Unknown Constants
* Data values will be set to these constants when a call fails with \ref EPHIDGET_UNKNOWNVAL.
* @{
*/
#define PUNK_BOOL 0x02 /**< Unknown Boolean (unsigned char) */
#define PUNK_SHRT 0x7FFF /**< Unknown Short (16-bit) */
#define PUNK_INT 0x7FFFFFFF /**< Unknown Integer (32-bit) */
#define PUNK_INT64 0x7FFFFFFFFFFFFFFFLL /**< Unknown Integer (64-bit) */
#define PUNK_DBL 1e300 /**< Unknown Double */
#define PUNK_FLT 1e30 /**< Unknown Float */
/** @} */
#define PFALSE 0x00 /**< False. Used for boolean values. */
#define PTRUE 0x01 /**< True. Used for boolean values. */
/** @} */
#endif