text: /*
  DMEnums.h : All Enums exposed in Spokes 3G SDK. 
  TODO: Rename file to SpokesEnums.h later
  */
  
  #pragma once
  #ifndef DMENUMS
  #define DMENUMS
  
  
  enum DMResult
  {
      DM_RESULT_SUCCESS = 0,
      DM_RESULT_FAIL = 1,
      DM_RESULT_BUFFER_TOO_SMALL = 2,
      DM_RESULT_ILLEGAL_ARGUMENT = 3,
      DM_RESULT_NOT_FOUND = 4,
      DM_RESULT_NOT_SUPPORTED = 5,
      DM_RESULT_DATA_NOT_AVAILABLE = 6,
      DM_RESULT_BUSY = 7,
  	DM_RESULT_USAGE_NOT_FOUND = 8,
  	DM_RESULT_NOT_IMPLEMENTED = 9,
  	DMRESULT_INVALID_PRODUCT_SERIAL_NO = 10,
  	DMRESULT_INVALID_PRODUCT_BUILD_NO = 11
  };
  
  
  typedef enum DMOption
  {
      DM_OPT_UNKNOWN = 0
  
  } eDMOption;
  
  typedef enum
  {
      VID_UNKNOWN = 0,
      VID_PLANTRONICS = 0x047F,
      VID_RTX_TELECOM = 0x0d9a,
      VID_PHILLIPS = 0x04cc
  } eVendorID;
  
  typedef enum
  {
      PID_UNKNOWN = 0,
      PID_SAVIOFFICE = 0x411,
      PID_DA45 = 0xDA45,
      PID_Hendrix = 0x611,
      PID_BlueMax2 = 0x4254,
      PID_BlueMax5 = 0x0715,
      PID_BlueMax5OC = 0x0716,
      PID_Bellringer = 0x0410,
      PID_Neo = 0x620,
      PID_Hydra = 0x411,
      PID_HydraOC = 0x412,
      PID_Pac40C620 = 0xAA00,
      PID_Pac40C620M = 0xAA01,
      PID_Pac40C610 = 0xAA02,
      PID_Pac40C610M = 0xAA03,
      PID_Pac40DA45 = 0xAA05,
      PID_Pac40DA45M = 0xAA06,
      PID_Pac40DA45S = 0xAA07,
      PID_Pac40DA45SM = 0xAA08,
      PID_Pac40DA40 = 0xAA09,
      PID_Pac40Sicily = 0xAA10,
      PID_Pac40SicilyM = 0xAA11,
      PID_CanaryUC = 0xAA12,
      PID_CanaryOC = 0xAA13,
      PID_Pac40SicilyV2 = 0xAA14,
      PID_Pac40SicilyV2M = 0xAA15,
      PID_Yeti = 0xAB01,
      PID_YetiOC = 0xAB11,
      PID_Yeti2 = 0xAB02,
      PID_Yeti2OC = 0xAB12,
      PID_Poseidon = 0xAC01,
      PID_PoseidonOC = 0xAC11,
      PID_CapriAna = 0xCA01,
      PID_CapriAnaOC = 0xCA00,
      PID_Delphi1 = 0x717,
      PID_Delphi1OC = 0x718,
      PID_Delphi2 = 0x413,
      PID_Delphi2OC = 0x414,
      PID_Delphi2A = 0x415,
      PID_Delphi2AOC = 0x416,
      PID_CheetahHS = 0x6,
      PID_Athena2HS = 0x7,
      PID_VoyagerProV2HS = 0x8,
      PID_Latte = 0xAE11,
      PID_LatteOC = 0xAE01,
      PID_BlackMagicC310 = 0xC00E,
      PID_BlackMagicC320 = 0xC00F,
      PID_BlackMagicC310M = 0xC01E,
      PID_BlackMagicC320M = 0xC01F,
      PID_RTXR3 = 0xCA03,
      PID_RTXR3UC = 0x417,
      PID_RTXR3OC = 0x418,
      PID_BluePacificC720 = 0x10A,
      PID_BluePacificC720M = 0x10B,
      PID_BluePacificC710 = 0x10C,
      PID_BluePacificC710M = 0x10D,
      PID_BluePacificC720_1 = 0x124,
      PID_BluePacificC720M_1 = 0x125,
  	PID_BluePacificC720_2 = 0x129,
  	PID_BluePacificC720M_2 = 0x12A,
  	PID_VoyagerLegend1 = 0x113,
  	PID_VoyagerLegend2 = 0x114,
  	PID_VoyagerLegend3 = 0x115,
  	PID_VoyagerLegend4 = 0x122,
  	PID_VoyagerLegend5 = 0x123,
  	PID_SavorM1100_1 = 0x100,
  	PID_SavorM1100_2 = 0x101,
  	PID_SavorM1100_3 = 0x104,
  	PID_SavorM1100_4 = 0x10E,
  	PID_VoyagerPro1 = 0x107,
  	PID_VoyagerPro2 = 0x106,
  	PID_VoyagerPro3 = 0x108,
  	PID_VoyagerPro4 = 0x109,
      PID_Virtual = 0xFFFF,
      PID_EMERALD_117 = 0x0117,
      PID_EMERALD_118 = 0x0118,
      PID_EMERALD_119 = 0x0119,
      PID_EMERALD_11e = 0x011e,
      PID_EMERALD_11f = 0x011f,
      PID_EMERALD_120 = 0x0120,
      PID_EMERALD_121 = 0x0121,
      PID_EMERALD_12E = 0x012E,
      PID_NIRVANA_11A = 0x011A,
      PID_NIRVANA_11C = 0x011C,
      PID_NIRVANA_137 = 0x0137,
      PID_NIRVANA_138 = 0x0138,
  	PID_CYDOMOUS2SPK = 0x2fa,
      PID_CYDOMOUS2 = 0x02fb,
  	PID_CYDOMOUS2_1 = 0x02fc,
  	PID_CYDOMOUS2_1HS = 0x02f7,
  	PID_CYDOMOUS2_1SPK = 0x02f6,
      PID_SSL = 0xc02f,
      PID_PRIUS = 0xc034,
  	PID_MADONE = 0x0127,
      PID_SUBLIME_11B = 0x011B,
  	PID_SUBLIME_11D = 0x011d,
      PID_POLYCOM = 0xc03C,
  	PID_DA70 = 0xAF00,
  	PID_DA80 = 0xAF01,
  	PID_DA90 = 0xAF02,
  	PID_APU75 = 0xAF08,
  	PID_SIERENES= 0xAC20,
  	PID_SIERENES_MONO = 0xAC21,
  	PID_SIERENES_MONO_LEGACYTOP = 0xAC22,
      PID_BLACKWIRE_315_1 = 0xc037,
      PID_BLACKWIRE_325_1 = 0xc03a,
      PID_BLACKWIRE_310 = 0xc038,
      PID_BLACKWIRE_320 = 0xc039,
      PID_BLACKWIRE_310_2 = 0xc03e,
      PID_BLACKWIRE_320_2 = 0xc03f,
      PID_BLACKWIRE_315 = 0xc04a,
      PID_BLACKWIRE_325 = 0xc04b,
  	PID_CRYSTAL_130 = 0x0130,
  	PID_CRYSTAL_132 = 0x0132,
  	PID_CRYSTAL_133 = 0x0133,
  	PID_CRYSTAL_134 = 0x0134,
  	PID_CRYSTAL_135 = 0x0135,
  
  
  } eProductID;
  
  enum eDeviceState
  {
      DEV_STATE_UNKNOWN,
      DEV_STATE_ADDED,
      DEV_STATE_REMOVED
  };
  
  typedef enum DeviceOption
  {
      DEVICE_OPT_UNKNOWN = 0
  } eDeviceOption;
  
  typedef enum CommandOption
  {
  	COMMAND_OPT_UNKNOWN = 0,
  	COMMAND_OPT_GET_ALL_CONNECTED_DEVICES = 1,
  	COMMAND_OPT_REMOVE_ALL_CONNECTED_DEVICES = 2,
  	COMMAND_OPT_DEVICE_IN_USE = 3
  } eCommandOption;
  
  
  typedef enum AudioState
  {
      AUDIO_STATE_UNKNOWN= 0,
      AUDIO_STATE_MONOON = 1,       
      AUDIO_STATE_MONOOFF = 2,
      AUDIO_STATE_STEREOON = 3,
      AUDIO_STATE_STEREOOFF = 4,
      AUDIO_STATE_MONOONWAIT = 5,
      AUDIO_STATE_STEREOONWAIT = 6
  
  } eAudioState;
  
  typedef enum RegistrationType
  {
  	REGISTRATION_NONE = 0,
      REGISTRATION_SIGNON = 1,
      REGISTRATION_SIGNOFF = 2,
      REGISTRATION_EXCLUSIVE = 4,
      REGISTRATION_CALLMANAGER = 8,
      REGISTRATION_ATTACH = 0x10,
      REGISTRATION_DETACH = 0x20,
      REGISTRATION_DETACH_SIGNOFF = 0x40,
      REGISTRATION_EXSIGN = REGISTRATION_EXCLUSIVE | REGISTRATION_SIGNON,
      REGISTRATION_EXSIGNCM = REGISTRATION_EXCLUSIVE | REGISTRATION_SIGNON | REGISTRATION_CALLMANAGER
  
  }eRegistrationType;
  
  typedef enum VersionType
  {
      VERSION_TYPE_USB = 1,
      VERSION_TYPE_BASE = 2,
      VERSION_TYPE_REMOTE = 3,
      VERSION_TYPE_BLUETOOTH = 4,
      VERSION_TYPE_TUNING = 5,
  	VERSION_TYPE_PIC = 6
  
  }eVersionType;
  
  typedef enum MOCState
  {
      MOC_STATE_IDLE = 0x00000000,
      MOC_STATE_MUTE = 0x00000001,
      MOC_STATE_HOOK = 0x00000002,
      MOC_STATE_RING = 0x00000004,
      MOC_STATE_SPEAKER = 0x00000008,
      MOC_STATE_ONLINE = 0x00000010,
      MOC_STATE_HOLD = 0x00000020,
      MOC_STATE_WINDOWSSPEAKER = 0x00000040,
      MOC_STATE_WINDOWSMICROPHONE = 0x00000080,
      MOC_STATE_DIALTONEHOOK = 0x000000100,
  	MOC_STATE_DTMFACK = 0x00001000
  } eMOCState;
  
  typedef enum AudioSenseState
  {
      AUDIO_SENSE_STATE_IDLE = 0x00000000,
      AUDIO_SENSE_STATE_WINDOWSSPEAKER = 0x00000001,
      AUDIO_SENSE_STATE_WINDOWSMICROPHONE = 0x000000002
  } eAudioSenseState;
  
  typedef enum LineType
  {
      LINE_TYPE_PSTN = 0,
      LINE_TYPE_VOIP = 1,
      LINE_TYPE_MOBILE = 2,
      LINE_TYPE_UNKNOWN = 3
  
  }eLineType;
  
  typedef enum FeatureType
  {
      FEATURE_TYPE_ANTI_STARTLE = 1,
      FEATURE_TYPE_G616  = 2,
      FEATURE_TYPE_AUDIO_LIMITING = 3,
      FEATURE_TYPE_DFU = 4,       
      FEATURE_TYPE_AUTO_ANSWER= 5,
      FEATURE_TYPE_CORDED = 6,
      FEATURE_TYPE_BATTERY_LEVEL = 7,
      FEATURE_TYPE_HEADSET_CONFERENCE_MODE= 8,
      FEATURE_TYPE_DONGLE = 9,
      FEATURE_TYPE_MAKE_CALL = 10,
      FEATURE_TYPE_WEARABLE = 11,
      FEATURE_TYPE_TWA_PERIOD = 12,
      FEATURE_TYPE_MULTIPLE_INTERFACE_SUPPORT =13,
      FEATURE_TYPE_BT_DFU =14,
      FEATURE_TYPE_BT_HEADSET = 15,
      FEATURE_TYPE_PERIPHERAL_DEVICE = 16,
      FEATURE_TYPE_OC_MUTE_LOCAL = 17,
      FEATURE_TYPE_DISPLAY_DEVICE = 18,
  	FEATURE_TYPE_HID2_DEVICE = 19
  
  }eFeatureType;
  
  typedef enum FeatureLock
  {
      FEATURE_LOCK_NONE = 0x00000000,
      FEATURE_LOCK_INTELLISTAND = 0x00000001,
      FEATURE_LOCK_DEFAULTLINE = 0x00000002,
      FEATURE_LOCK_OTA = 0x00000004,
      FEATURE_LOCK_POWERLEVEL = 0x00000008,
      FEATURE_LOCK_PSTN_BANDWIDTH = 0x00000010,
      FEATURE_LOCK_VOIP_BANDWIDTH = 0x00000020,
      FEATURE_LOCK_PSTN_RING_TYPE = 0x00000040,
      FEATURE_LOCK_VOIP_RING_TYPE = 0x00000080,
      FEATURE_LOCK_PSTN_RING_TONE = 0x00000100,
      FEATURE_LOCK_VOIP_RING_TONE = 0x00000200,
      FEATURE_LOCK_SYSTEM_TONE = 0x00000400,
      FEATURE_LOCK_MUTE_TONE = 0x00000800,
      FEATURE_LOCK_PSTN_TONE_CONTROL = 0x00001000,
      FEATURE_LOCK_VOIP_TONE_CONTROL = 0x00002000,
      FEATURE_LOCK_RINGIN_CALL = 0x00004000,
      FEATURE_LOCK_ALWAYS_ON = 0x00008000,
      FEATURE_LOCK_ANTISTARTLE = 0x00010000,
      FEATURE_LOCK_AUDIO_LIMIT = 0x00020000,
      FEATURE_LOCK_G616 = 0x00040000,
      FEATURE_LOCK_TWA_PERIOD = 0x00080000,
      FEATURE_LOCK_MOBILE_BANDWIDTH = 0x00100000,
      FEATURE_LOCK_BT_ENABLE = 0x00200000,
      FEATURE_LOCK_BT_AUTOCONNECT = 0x00400000,
      FEATURE_LOCK_BT_ACLPOLLING = 0x00800000,
      FEATURE_LOCK_BT_VOICECOMMAND = 0x01000000,
      FEATURE_LOCK_BT_A2DP = 0x02000000,
      FEATURE_LOCK_ALL = 0x03FFFFFF
  } eFeatureLock;
  
  typedef enum HeadsetButton
  {
      HEADSET_BUTTON_UNKNOWN = 0,
      HEADSET_BUTTON_VOLUME_UP = 1,
      HEADSET_BUTTON_VOLUME_DOWN = 2,
      HEADSET_BUTTON_VOLUME_UP_HELD = 3,
      HEADSET_BUTTON_VOLUME_DOWN_HELD = 4,
      HEADSET_BUTTON_MUTE = 5,
      HEADSET_BUTTON_MUTE_HELD = 6,
      HEADSET_BUTTON_TALK = 7,
      HEADSET_BUTTON_AUDIO = 8,
      HEADSET_BUTTON_PLAY = 9,
      HEADSET_BUTTON_PAUSE = 10,
      HEADSET_BUTTON_NEXT = 11,
      HEADSET_BUTTON_PREVIOUS = 12,
      HEADSET_BUTTON_FAST_FORWARD = 13,
      HEADSET_BUTTON_REWIND = 14,
      HEADSET_BUTTON_STOP = 15,
      HEADSET_BUTTON_FLASH = 16,
      HEADSET_BUTTON_SMART = 17,
  
      //Handset buttons
      HEADSET_BUTTON_OFF_HOOK = 18,
      HEADSET_BUTTON_ON_HOOK = 19,
      HEADSET_BUTTON_KEY_0 = 20,
      HEADSET_BUTTON_KEY_1 = 21,
      HEADSET_BUTTON_KEY_2 = 22,
      HEADSET_BUTTON_KEY_3 = 23,
      HEADSET_BUTTON_KEY_4 = 24,
      HEADSET_BUTTON_KEY_5 = 25,
      HEADSET_BUTTON_KEY_6 = 26,
      HEADSET_BUTTON_KEY_7 = 27,
      HEADSET_BUTTON_KEY_8 = 28,
      HEADSET_BUTTON_KEY_9 = 29,
      HEADSET_BUTTON_KEY_STAR = 30,
      HEADSET_BUTTON_KEY_POUND = 31,
      HEADSET_BUTTON_SPEAKER = 32,
      HEADSET_BUTTON_REJECT = 33,
  	HEADSET_BUTTON_REDIAL = 34
  } eHeadsetButton;
  
  
  typedef enum DeviceEventType
  {
      DEVICE_EVENT_TYPE_UNKNOWN = 0,
      DEVICE_EVENT_TYPE_HEADSET_BUTTON_PRESSED = 1,
      DEVICE_EVENT_TYPE_HEADSET_STATE_CHANGED = 2,
      DEVICE_EVENT_TYPE_BASE_BUTTON_PRESSED = 3,
      DEVICE_EVENT_TYPE_BASE_STATE_CHANGED = 4,
      DEVICE_EVENT_TYPE_ATD_BUTTON_PRESSED = 5,
      DEVICE_EVENT_TYPE_ATD_STATE_CHANGED = 6
  } eDeviceEventType; 
  
  typedef enum BaseEventType
  {
      BASE_EVENT_TYPE_UNKNOWN = 0,
      BASE_EVENT_TYPE_FEATURE_MASK = 1,
      BASE_EVENT_TYPE_PASSWORD = 2,
      BASE_EVENT_TYPE_RFPOWER_MODE = 3,
      BASE_EVENT_TYPE_RFLINK_TYPE = 4,
      BASE_EVENT_TYPE_VOIP_TALK = 5,
      BASE_EVENT_TYPE_PSTN_TALK = 6,
      BASE_EVENT_TYPE_MOBILE_TALK = 7,
      BASE_EVENT_TYPE_VOIP_TALK_HELD = 8,
      BASE_EVENT_TYPE_PSTN_TALK_HELD = 9,
      BASE_EVENT_TYPE_MOBILE_TALK_HELD = 10,
      BASE_EVENT_TYPE_PSTN_LINK_ESTABLISHED = 11,
      BASE_EVENT_TYPE_PSTN_LINK_DOWN = 12,
      BASE_EVENT_TYPE_VOIP_LINK_ESTABLISHED = 13,
      BASE_EVENT_TYPE_VOIP_LINK_DOWN = 14,
      BASE_EVENT_TYPE_MOBILE_LINK_ESTABLISHED = 15,
      BASE_EVENT_TYPE_MOBILE_LINK_DOWN = 16,
      BASE_EVENT_TYPE_PSTN_INCOMING_CALL_RING_ON = 17,
      BASE_EVENT_TYPE_PSTN_INCOMING_CALL_RING_OFF = 18,
      BASE_EVENT_TYPE_INTERFACE_STATE_CHANGE = 19,
      BASE_EVENT_TYPE_PSTN_TALK_AND_VOIP_TALK_HELD = 20,
      BASE_EVENT_TYPE_PSTN_TALK_AND_MOBILE_TALK_HELD = 21,
      BASE_EVENT_TYPE_VOIP_TALK_AND_MOBILE_TALK_HELD = 22,
      BASE_EVENT_TYPE_PSTN_TALK_AND_SUBSCRIBE_HELD = 23,
      BASE_EVENT_TYPE_SUBSCRIBE = 24,
      BASE_EVENT_TYPE_SUBSCRIBE_HELD = 25,
      BASE_EVENT_TYPE_DIALPAD = 26,
      BASE_EVENT_TYPE_BT_AUDIO_LOCATION = 27,       
      BASE_EVENT_TYPE_VOIP_TALK_AND_SUBSCRIBE_HELD = 28,
      BASE_EVENT_TYPE_MOBILE_TALK_AND_SUBSCRIBE_HELD = 29,
      BASE_EVENT_TYPE_SERIAL_NUMBER= 30,
      BASE_EVENT_TYPE_DESKPHONE_HEADSET = 31,
  	BASE_EVENT_TYPE_MOBILE_CONNECTED = 32,
  	BASE_EVENT_TYPE_MOBILE_DISCONNECTED = 33
  } eBaseEventType;
  
  typedef enum MobileCallState
  {
      MOBILE_CALL_STATE_IDLE = 0,
      MOBILE_CALL_STATE_INCOMING = 1,
      MOBILE_CALL_STATE_OUTGOING = 2,
      MOBILE_CALL_STATE_ONCALL = 3,
      MOBILE_CALL_STATE_CALLER_ID = 4
  } eMobileCallState;
  
  typedef enum HeadsetStateChange
  {
  	HS_STATE_CHANGE_UNKNOWN = 0,
  	HS_STATE_CHANGE_MONO_ON = 1,
  	HS_STATE_CHANGE_MONO_OFF = 2,
  	HS_STATE_CHANGE_STEREO_ON = 3,
  	HS_STATE_CHANGE_STEREO_OFF = 4,
  	HS_STATE_CHANGE_MUTE_ON = 5,
  	HS_STATE_CHANGE_MUTE_OFF = 6,
  	HS_STATE_CHANGE_BATTERY_LEVEL = 7,
  	HS_STATE_CHANGE_IN_RANGE = 8,
  	HS_STATE_CHANGE_OUT_OF_RANGE = 9,
  	HS_STATE_CHANGE_DOCKED = 10,
  	HS_STATE_CHANGE_UNDOCKED = 11,
  	HS_STATE_CHANGE_IN_CONFERENCE = 12,
  	HS_STATE_CHANGE_DON = 13,
  	HS_STATE_CHANGE_DOFF = 14,
  	HS_STATE_CHANGE_SERIAL_NUMBER = 15,
  	HS_STATE_CHANGE_NEAR = 16,
  	HS_STATE_CHANGE_FAR = 17,
  	HS_STATE_CHANGE_DOCKED_CHARGING = 18,
  	HS_STATE_CHANGE_PROXIMITY_UNKNOWN = 19,
  	HS_STATE_CHANGE_PROXIMITY_ENABLED = 20,
  	HS_STATE_CHANGE_PROXIMITY_DISABLED = 21,
  	HS_STATE_CHANGE_PRODUCT_NAME = 22,
  	HS_STATE_CHANGE_AAL_INCIDENT_REPORT = 23,
  	HS_STATE_CHANGE_AAL_TWA_REPORT = 24,
  	HS_STATE_CHANGE_CONVERSATION_DYNAMICS = 25,
  	HS_STATE_CHANGE_PRODUCTION_NUMBER = 26,
  	HS_STATE_CHANGE_PRODUCTION_BUILD = 27,
  	HS_STATE_CHANGE_PRODUCTION_PART_NUMBER = 28,
  	HS_STATE_CHANGE_CONNECTED = 29,
  	HS_STATE_CHANGE_DISCONNECTED = 30,
  	HS_STATE_CHANGE_QD_CONNECTED = 31,
  	HS_STATE_CHANGE_QD_DISCONNECTED = 32
  	
  } eHeadsetStateChange;
  
  typedef enum BaseButton
  {
      BASE_BUTTON_UNKNOWN = 0,
      BASE_BUTTON_PSTN_TALK = 1,
      BASE_BUTTON_VOIP_TALK = 2,
      BASE_BUTTON_SUBSCRIBE = 3,
      BASE_BUTTON_PSTN_TALK_HELD = 4,
      BASE_BUTTON_VOIP_TALK_HELD = 5,
      BASE_BUTTON_SUBSCRIBE_HELD = 6,
      BASE_BUTTON_PSTN_TALK_AND_SUBSCRIBE_HELD = 7,
      BASE_BUTTON_PSTN_TALK_AND_VOIP_TALK_HELD = 8,
      BASE_BUTTON_MAKE_CALL = 9,
      BASE_BUTTON_MOBILE_TALK = 10,
      BASE_BUTTON_MOBILE_TALK_HELD = 11,
      BASE_BUTTON_PSTN_TALK_AND_MOBILE_TALK_HELD = 12,
      BASE_BUTTON_VOIP_TALK_AND_MOBILE_TALK_HELD = 13,
      BASE_BUTTON_DIAL_PAD = 14,
      BASE_BUTTON_MAKE_CALL_FROM_CALL_LOG = 15
  } eBaseButton;
  
  typedef enum BaseStateChange
  {
      BASE_STATE_CHANGE_UNKNOWN = 0,
      BASE_STATE_CHANGE_PSTN_LINK_ESTABLISHED = 1,
      BASE_STATE_CHANGE_PSTN_LINK_DOWN = 2,
      BASE_STATE_CHANGE_VOIP_LINK_ESTABLISHED = 3,        
      BASE_STATE_CHANGE_VOIP_LINK_DOWN = 4,
      BASE_STATE_CHANGE_AUDIO_MIXER = 5,
      BASE_STATE_CHANGE_RF_LINK_WIDE_BAND = 6,
      BASE_STATE_CHANGE_RF_LINK_NARROW_BAND = 7,
      BASE_STATE_CHANGE_MOBILE_LINK_ESTABLISHED = 8,
      BASE_STATE_CHANGE_MOBILE_LINK_DOWN = 9,
      BASE_STATE_CHANGE_INTERFACE_STATE_CHANGED = 10,
      BASE_STATE_CHANGE_AUDIO_LOCATION_CHANGED = 11,
      BASE_STATE_CHANGE_SERIAL_NUMBER = 12,
  	BASE_STATE_CHANGE_PRODUCTION_NUMBER = 13,
  	BASE_STATE_CHANGE_PRODUCTION_BUILD = 14,
  	BASE_STATE_CHANGE_PRODUCTION_PART_NUMBER = 15,
  	BASE_STATE_CHANGE_MOBILE_CONNECTED = 16,
  	BASE_STATE_CHANGE_MOBILE_DISCONNECTED = 17
  	
  } eBaseStateChange;
  
  typedef enum ATDStateChange
  {
      ATD_STATE_CHANGE_UNKNOWN = -1,
      ATD_STATE_CHANGE_MOBILE_CALL_ENDED = 0,
      ATD_STATE_CHANGE_MOBILE_INCOMING = 1,
      ATD_STATE_CHANGE_MOBILE_OUTGOING = 2,
      ATD_STATE_CHANGE_MOBILE_ON_CALL = 3,
      ATD_STATE_CHANGE_PSTN_INCOMING_CALL_RING_ON = 4,
      ATD_STATE_CHANGE_PSTN_INCOMING_CALL_RING_OFF = 5,        
      ATD_STATE_CHANGE_DESKPHONE_HEADSET = 6,
      ATD_STATE_CHANGE_MOBILE_CALLER_ID = 7
  } eATDStateChange;
  
  typedef enum MuteState
  {
      MUTE_STATE_NONE = 0,
      MUTE_STATE_HEADSET_TO_PC = 1,
      MUTE_STATE_PC_TO_HEADSET = 2,
      MUTE_STATE_HEADSET_TO_PSTN = 4,
      MUTE_STATE_PSTN_TO_HEADSET = 8,
      MUTE_STATE_PC_TO_PSTN = 16,
      MUTE_STATE_PSTN_TO_PC = 32,
      MUTE_STATE_All = 0x3F
  } eMuteState;
  
  typedef enum AudioLinkState
  {
      AUDIO_LINK_STATE_IDLE = 0,
      AUDIO_LINK_STATE_PENDING = 1,
      AUDIO_LINK_STATE_ESTABLISHED = 2,
      AUDIO_LINK_STATE_FAILED = 3,
      AUDIO_LINK_STATE_RELEASE_PENDING=4,
      AUDIO_LINK_STATE_LOST = 5
  } eAudioLinkState;
  
  typedef enum AudioLocation
  {
      AUDIO_LOCATION_HEADSET = 0,
      AUDIO_LOCATION_HANDSET = 1,
      AUDIO_LOCATION_UNKNOWN = 2
  } eAudioLocation;
  
  typedef enum SerNumDevType
  {
      DEVICE_TYPE_BASE = 1,
      DEVICE_TYPE_HEADSET = 2
  } eDevice_Type; // Don't use name eDeviceType since it's already defined for Mac OSX
  
  typedef enum BatteryLevel
  {
      BATTERY_LEVEL_EMPTY = 0,
      BATTERY_LEVEL_LOW = 1,
      BATTERY_LEVEL_MEDIUM = 2,
      BATTERY_LEVEL_HIGH = 3,
      BATTERY_LEVEL_FULL = 4
  } eBatteryLevel;
  
  typedef enum HeadsetType
  {
  	HEADSET_TYPE_INVALID = 0xFF,
      HEADSET_TYPE_UNKNOWN = 0,
      HEADSET_TYPE_THEO_428 = 1,
      HEADSET_TYPE_EROS_428 = 2,
      HEADSET_TYPE_HELIOS_480_MONOAURAL = 3,
      HEADSET_TYPE_HELIOS_480_BINAURAL = 4,
      HEADSET_TYPE_THEO_480 = 5,
      HEADSET_TYPE_EROS_480 = 6,
      HEADSET_TYPE_UNKNOWN_480 = 7,
      HEADSET_TYPE_HERMIT_480 = 8,
      HEADSET_TYPE_HERMIT_LITE = 9,
      HEADSET_TYPE_HERMIT_4804MM = 10,
      HEADSET_TYPE_HERMIT_LITE_4MM = 11,
      HEADSET_TYPE_UNKNOWN_428ROM = 0x80,     // unknown 428 top ROM
      HEADSET_TYPE_THEO_428ROM,               // 428 Theo ROM
      HEADSET_TYPE_EROS_428ROM,               // 428 Eros ROM
      HEADSET_TYPE_HELIOS_MONOAURAL_480ROM,   // Helios mono (can only be 480) ROM
      HEADSET_TYPE_HELIOS_BINAURAL_480ROM,    // Helios binaural (can only be 480) ROM
      HEADSET_TYPE_THEO_480ROM,               // 480 Theo ROM
      HEADSET_TYPE_EROS_480ROM,               // 480 Eros ROM
      HEADSET_TYPE_UNKNOWN_480ROM,            // unknown 480 top ROM
      HEADSET_TYPE_HERMIT_480ROM,             // Hermit (can only be 480) ROM
      HEADSET_TYPE_HERMIT_LITE_480ROM,        // Hermit Lite (can only be 480) ROM
      HEADSET_TYPE_HERMIT_4MM480ROM,          // Hermit with 4mm mic (can only be 480) ROM
      HEADSET_TYPE_HERMIT_LITE_4MM480ROM,     // Hermit Lite with 4mm mic (can only be 480) ROM	
  } eHeadsetType;
  
  typedef enum HeadsetState
  {
      HEADSET_STATE_UNKNOWN = 0,
      HEADSET_STATE_IN_RANGE = 1,
      HEADSET_STATE_OUT_OF_RANGE = 2,
      HEADSET_STATE_DOCKED = 3,
      HEADSET_STATE_UNDOCKED = 4,
      HEADSET_STATE_IN_CONFERENCE = 5,
      HEADSET_STATE_DON = 6,
      HEADSET_STATE_DOFF = 7,
      HEADSET_STATE_BTRF_POWER_MODE = 8,
      HEADSET_STATE_DOCKED_CHARGING = 9,
      HEADSET_STATE_PRODUCT_NAME = 10,
      HEADSET_STATE_BATTERY_INFO = 11,
      HEADSET_STATE_SERIAL_NUMBER = 12,
      HEADSET_STATE_PROXIMITY = 13,
      HEADSET_STATE_CONNECTED = 14,
      HEADSET_STATE_DISCONNECTED = 15,
      HEADSET_STATE_VOICE_DETECTED = 16,
      HEADSET_STATE_SILENCE_DETECTED = 17,
      HEADSET_STATE_VISIBLE_MUTE_ALERT_ON = 18,
      HEADSET_STATE_VISIBLE_MUTE_ALERT_OFF = 19,
  	HEADSET_STATE_QD_CONNECTED = 20,
  	HEADSET_STATE_QD_DISCONNECTED = 21
  
  } eHeadsetState;
  
  typedef enum Proximity
  {
      PROXIMITY_UNKNOWN = 0,
      PROXIMITY_NEAR = 1,
      PROXIMITY_FAR = 2,
      PROXIMITY_DISABLED = 3,
      PROXIMITY_ENABLED = 4
  } eProximity;
  
  typedef enum AudioBandwidth
  {
      AUDIO_BANDWIDTH_UNKNOWN = 0,
      AUDIO_BANDWIDTH_NARROW_BAND = 1,
      AUDIO_BANDWIDTH_WIDE_BAND = 2
  } eAudioBandwidth;
  
  typedef enum VolumeLevel
  {
      VOLUME_LEVEL_OFF = 0,
      VOLUME_LEVEL_LOW = 1,
      VOLUME_LEVEL_STANDARD = 2
  } eVolumeLevel;
  
  typedef enum ToneLevel
  {
      TONE_LEVEL_MAX_BASS = 0,
      TONE_LEVEL_MID_BASS = 1,
      TONE_LEVEL_MIN_BASS = 2,
      TONE_LEVEL_NO_BOOST = 3,
      TONE_LEVEL_MIN_TREBLE = 4,
      TONE_LEVEL_MID_TREBLE = 5,
      TONE_LEVEL_MAX_TREBLE = 6
  } eToneLevel;
  
  typedef enum ActiveCallRing
  {
      ACTIVE_CALL_RING_IGNORE = 0,
      ACTIVE_CALL_RING_RING_ONCE = 1,
      ACTIVE_CALL_RING_RING_CONTINUOUS = 2
  } eActiveCallRing;
  
  typedef enum AudioLimit
  {
      AUDIO_LIMIT_OFF = 0,
      AUDIO_LIMIT_EIGHTY_FIVE = 1,
      AUDIO_LIMIT_EIGHTY = 2
  } eAudioLimit;
  
  typedef enum PowerLevel
  {
      POWER_LEVEL_FIXED_LOW = 0,
      POWER_LEVEL_ADAPTIVE_MEDIUM = 1,
      POWER_LEVEL_ADAPTIVE_HIGH = 2
  } ePowerLevel;
  
  typedef enum BTPowerLevel
  {
      BP_POWER_LEVEL_UNKNOWN,
      BP_POWER_LEVEL_CLASS1,
      BP_POWER_LEVEL_CLASS2,
      BP_POWER_LEVEL_CLASS3
  } eBTPowerLevel;
  
  typedef enum CustomData
  {
      CUSTOM_DATA_PASSWORD = 1,
      CUSTOM_DATA_FEATURE_LOCK = 2,
      CUSTOM_DATA_RAW = 3,
      CUSTOM_DATA_RAW_INPUT = 4,
      CUSTOM_DATA_RAW_OUTPUT = 5,
      CUSTOM_DATA_COMMUNICATION_TEST = 6,
      CUSTOM_DATA_HEADSET_SERIAL_NUMBER = 7,
      CUSTOM_DATA_BASE_SERIAL_NUMBER = 8,
      CUSTOM_DATA_RAW_HID_PIPE_DATA = 9,
      CUSTOM_DATA_BR_INPUT_DATA = 10,
      CUSTOM_DATA_BR_OUTPUT_DATA = 11,
      CUSTOM_DATA_HEADSET_PRODUCTION_SERIAL_NUMBER = 12,
      CUSTOM_DATA_BASE_PRODUCTION_SERIAL_NUMBER = 13,
      CUSTOM_DATA_HEADSET_PRODUCTION_BUILD_NUMBER = 14,
      CUSTOM_DATA_BASE_PRODUCTION_BUILD_NUMBER = 15,
      CUSTOM_DATA_HEADSET_PRODUCTION_PART_NUMBER = 16,
      CUSTOM_DATA_BASE_PRODUCTION_PART_NUMBER = 17
  } eCustomData;
  
  typedef enum TWAPeriod
  {
      TWA_PERIOD_UNKNOWN = 0,
      TWA_PERIOD_TWO_HOURS = 1,
      TWA_PERIOD_FOUR_HOURS = 2,
      TWA_PERIOD_SIX_HOURS = 3,
      TWA_PERIOD_EIGHT_HOURS = 4
  } eTWAPeriod;
  
  typedef enum SensorControl
  {
      SENSOR_CONTROL_HEADSET_NOT_CONNECTED = 0,
      SENSOR_CONTROL_UNDEFINED = 1,
      SENSOR_CONTROL_DISABLED = 2,
      SENSOR_CONTROL_ENABLED = 3
  } eSensorControl;
  
  typedef enum DSPFeature
  {
      DSP_FEATURE_ANTI_STARTLE = 0x1,
      DSP_FEATURE_G616 = 0x02,
      DSP_FEATURE_AUDIO_LIMITING = 0x04,
      DSP_FEATURE_TWA_PERIOD = 0x08
  } eDSPFeature;
  
  typedef enum BTBatteryStatus
  {       
      BT_BATTERY_STATUS_UNKNOWN = 0,
      BT_BATTERY_STATUS_CRITICAL = 1,
      BT_BATTERY_STATUS_LOW = 2,
      BT_BATTERY_STATUS_MEDIUM = 3,
      BT_BATTERY_STATUS_HIGH = 4,
      BT_BATTERY_STATUS_FULL = 5,
      BT_BATTERY_STATUS_NOT_BATTERY_POWERED = 6
  } eBTBatteryStatus;
  
  typedef enum BTChargingStatus
  {
      BT_CHARGING_STATUS_UNKNOWN = 0,
      BT_CHARGING_STATUS_NOT_CONNECTED = 1,
      BT_CHARGING_STATUS_CONNECTED_NOT_CHARGING = 2,
      BT_CHARGING_STATUS_CONNECTED_AND_TRICKLE_CHARGING = 3,
      BT_CHARGING_STATUS_CONNECTED_AND_FAST_CHARGING = 4,
      BT_CHARGING_STATUS_CONNECTED_AND_CHARGE_ERROR = 5,
      BT_CHARGING_STATUS_NOT_BATTERY_POWERED = 6
  } eBTChargingStatus;
  
  enum eDeviceRingTone
  {
      DEVICE_RING_TONE_TYPE_1 = 0,
      DEVICE_RING_TONE_TYPE_2 = 1,
      DEVICE_RING_TONE_TYPE_3 = 2,
      DEVICE_RING_TONE_OFF = 3
  };
  
  enum eRingtoneType
  {
  	RINGTONE_TYPE_UNKNOWN = 0,
  	RINGTONE_TYPE_VOIP = 1,
  	RINGTONE_TYPE_PSTN = 2,
  	RINGTONE_TYPE_MOBILE = 3
  };
  
  typedef enum HIDPipeMode
  {
      HID_PIPE_MODE_UNKNOWN = 0,
      HID_PIPE_MODE_RAW = 1,
      HID_PIPE_MODE_DATA_PACKET = 2,
      HID_PIPE_MODE_READ_INDEXED_STRING = 3,
      HID_PIPE_MODE_WRITE_INDEXED_STRING = 4,
      HID_PIPE_MODE_BLUETOOTH = 5        
  } eHIDPipeMode;
  
  typedef enum DDSoftphoneID
  {
      DD_SOFTPHONE_ID_UNKNOWN = 0,
      DD_SOFTPHONE_ID_MS_OFFICE_COMMUNICATOR = 1,
      DD_SOFTPHONE_ID_AVAYA_ONE_X_COMMUNICATOR = 2,
      DD_SOFTPHONE_ID_AVAYA_ONE_X_AGENT = 3,
      DD_SOFTPHONE_ID_AVAYA_IP_SOFTPHONE = 4,
      DD_SOFTPHONE_ID_AVAYA_IP_AGENT = 5,
      DD_SOFTPHONE_ID_SKYPE = 6,
      DD_SOFTPHONE_ID_SHORE_TEL_COMMUNICATOR = 8,
      DD_SOFTPHONE_ID_CISCO_IP_COMMUNICATOR = 9,
      DD_SOFTPHONE_ID_CSF = 10,
      DD_SOFTPHONE_ID_NECSP350 = 11,
      DD_SOFTPHONE_ID_MS_LYNC_2013 = 12,
  	DD_SOFTPHONE_ID_CISCO_WEBEX = 13,
  	DD_SOFTPHONE_ID_CISCO_JABBER = 14,
      DD_SOFTPHONE_ID_SWYX = 15,
  	DD_SOFTPHONE_ID_BROADSOFT = 16
  } eDDSoftphoneID;
  
  typedef enum DDPresence
  {
      DD_PRESENCE_UNKNOWN = 0,
      DD_PRESENCE_AVAILABLE = 1,
      DD_PRESENCE_AWAY = 2,
      DD_PRESENCE_BUSY = 3,
      DD_PRESENCE_DND = 4,
      DD_PRESENCE_IN_CALL = 5,
      DD_PRESENCE_CLOSED = 6
  } eDDPresence;
  
  typedef enum DDCallState
  {
      DD_CALL_STATE_UNKNOWN = 0,
      DD_CALL_STATE_ENDED = 1,
      DD_CALL_STATE_INCOMING = 2,
      DD_CALL_STATE_OUTGOING = 3,
      DD_CALL_STATE_ACTIVE = 4,
      DD_CALL_STATE_HELD = 5
  } eDDCallState;
  
  typedef enum VolumeControlOrientation
  {
  	VOLUME_CONTROL_ORIENTATION_UNKNOWN = 0,
      VOLUME_CONTROL_ORIENTATION_RIGHT = 1,
      VOLUME_CONTROL_ORIENTATION_LEFT = 2
  } eVolumeControlOrientation;
  
  typedef enum SignalStrengthType
  {
  	SS_FAR = 0,
  	SS_NEAR,
  	SS_UNKNOWN
  }eSignalStrengthType;
  
  typedef enum HeadsetWearingState
  {
  	HEADSET_WEARING_STATE_DON = 0,
  	HEADSET_WEARING_STATE_DOFF = 1
  }eHeadsetWearingState;
  
  typedef enum BatteryStatusMonitor
  {
  	BATTERY_STATUS_MONITOR_TALK_TIME_MAX = 0,
  	BATTERY_STATUS_MONITOR_ANNOUNCE_CURRENT_TALK_TIME = 1,
  	BATTERY_STATUS_MONITOR_SET_TALK_TIME_MINUTES = 2
  }eBatteryStatusMonitor;
  
  typedef enum VoiceRecognition
  {
  	VOICE_RECOGNITION_STATE_TESTING_MAINMENU = 0,
  	VOICE_RECOGNITION_STATE_TESTING_ANSWERIGNORE = 1
  }eVoiceRecognition;
  
  typedef enum Charger
  {
  	CHARGER_UNPLUGGED = 0,
  	CHARGER_CONNECTED = 1
  }eCharger;
  
  typedef enum AcousticsReportType
  {
  	ACOUSTICS_REPORT_UNKONWN = 0,
  	ACOUSTICS_REPORT_AAL_TWA = 1,
  	ACOUSTICS_REPORT_AAL_INCIDENT = 2,
  	ACOUSTICS_REPORT_CONVERSATION_DYNAMICS = 3
  } eAcousticsReportType;
  
  typedef enum AALAcousticIncidentType
  {
      AAL_ACOUSTIC_INCIDENT_TYPE_G616 = 0,
      AAL_ACOUSTIC_INCIDENT_TYPE_ANTISTARTLELEVEL,
      AAL_ACOUSTIC_INCIDENT_TYPE_ANTISTARTLEDURATION,
      AAL_ACOUSTIC_INCIDENT_TYPE_ANTISTARTLEDELTA
  } eAALAcousticIncidentType;
  
  typedef enum HTopSelectorType
  {
      HTOP_SELECTOR_TYPE_NEW = 0,
      HTOP_SELECTOR_TYPE_LEGACY
  } eHTopSelectorType;
  
  typedef enum MuteAlertMode
  {
      MUTE_ALERT_MODE_DISABLED = 0,
      MUTE_ALERT_MODE_TIME_INTERVAL_REMINDER = 1,
      MUTE_ALERT_MODE_VOICE_DETECT_REMINDER = 2
  } eMuteAlertMode;
  
  typedef enum MuteAlertParameter
  {
      MUTE_ALERT_PARAMETER_VISIBLE_AND_AUDIBLE_MUTE_ALERT = 0,
      MUTE_ALERT_PARAMETER_VISIBLE_ONLY_MUTE_ALERT = 1,
      MUTE_ALERT_PARAMETER_AUDIBLE_ONLY_MUTE_ALERT = 2
  } eMuteAlertParameter;
  
  typedef enum MuteAlertValues
  {
      MUTE_ALERT_VALUE_DISABLED = 0,
      MUTE_ALERT_VALUE_TIME_INTERVAL_REMINDER = 1,
      MUTE_ALERT_VALUE_VISIBLE_REMINDER = 2,
      MUTE_ALERT_VALUE_AUDIBLE_REMINDER = 3,
      MUTE_ALERT_VALUE_VISIBLE_AND_AUDIBLE_REMINDER = 4
  } eMuteAlertValues;
  
  typedef enum VoiceSilenceDetectionMode
  {
      VOICE_SILENCE_DETECTION_MODE_DISABLED = 0,
      VOICE_SILENCE_DETECTION_MODE_VOICE = 1,
      VOICE_SILENCE_DETECTION_MODE_SILENCE = 2
  } eVoiceSilenceDetectionMode;
  
  typedef enum MuteTone
  {
  	MUTE_TONE_UNKNOWN = 0,
  	MUTE_TONE_VOICE = 0,
      MUTE_TONE_DOUBLE = 1,
  	MUTE_TONE_SINGLE = 2
  } eMuteTone;
  
  typedef enum VolumeTone
  {
  	VOLUME_TONE_UNKNOWN = 0,
  	VOLUME_TONE_ALL = 1,
  	VOLUME_TONE_MINMAX = 2
  
  } eVolumeTone;
  
  //NOTE: The following enums are purposely redefined for HID 1.0 instead of using eMuteAlertMode,eMuteAlertParameter. (T.Ramesh)
  
  typedef enum MuteReminder
  {
  	MUTE_REMINDER_OFF = 0,
  	MUTE_REMINDER_VOICE = 1,
  	MUTE_REMINDER_TIMEINTERVAL = 2
  
  } eMuteReminder;
  
  typedef enum VoiceMuteReminder
  {
  	VOICE_MUTE_REMINDER_UNKNOWN = 0,
  	VOICE_MUTE_REMINDER_VISIBLE = 1,
  	VOICE_MUTE_REMINDER_AUDIBLE = 2,
  	VOICE_MUTE_REMINDER_VISIBLE_AND_AUDIBLE = 3,
  	
  } eVoiceMuteReminder;
  
  #endif
  