Index: includes/definitions/mibs.inc.php
===================================================================
--- includes/definitions/mibs.inc.php	(revision 8536)
+++ includes/definitions/mibs.inc.php	(working copy)
@@ -189,6 +189,22 @@
 
 /// All other MIBs
 
+// DPS
+$mib = 'DPS-MIB-V38';
+$config['mibs'][$mib]['enable']       = 1;
+$config['mibs'][$mib]['identity_num'] = '.1.3.6.1.4.1.2682';
+$config['mibs'][$mib]['mib_dir']      = 'dps';
+$config['mibs'][$mib]['descr']        = '';
+$config['mibs'][$mib]['states']['dpsRTUAState'][0] = array('name' => 'Clear', 'event' => 'ok');
+$config['mibs'][$mib]['states']['dpsRTUAState'][1] = array('name' => 'Alarm', 'event' => 'alert');
+$config['mibs'][$mib]['states']['thresholds'][0] = array('name' => 'noAlarms', 'event' => 'ok');
+$config['mibs'][$mib]['states']['thresholds'][1] = array('name' => 'minorUnder', 'event' => 'alert');
+$config['mibs'][$mib]['states']['thresholds'][2] = array('name' => 'minorOver', 'event' => 'alert');
+$config['mibs'][$mib]['states']['thresholds'][3] = array('name' => 'majorUnder', 'event' => 'alert');
+$config['mibs'][$mib]['states']['thresholds'][4] = array('name' => 'majorOver', 'event' => 'alert');
+$config['mibs'][$mib]['states']['thresholds'][5] = array('name' => 'notDetected', 'event' => 'alert');
+
+
 // Accedian Networks
 
 $mib = 'ACD-DESC-MIB';
Index: includes/definitions/os.inc.php
===================================================================
--- includes/definitions/os.inc.php	(revision 8536)
+++ includes/definitions/os.inc.php	(working copy)
@@ -5973,6 +5973,16 @@
 //$config['os'][$os]['graphs'][]              = "device_processor";
 //$config['os'][$os]['graphs'][]              = "device_mempool";
 
+// DPS Telecom
+$os = "dps";
+$config['os'][$os]['text']                  = "DPS Telecom";
+$config['os'][$os]['vendor']                = "DPS Telecom";
+$config['os'][$os]['type']                  = "environment";
+$config['os'][$os]['icon']                  = "dps";
+$config['os'][$os]['sysObjectID'][]         = ".1.3.6.1.4.1.2682";
+$config['os'][$os]['mibs'][]                = "DPS-MIB-V38";
+$config['os'][$os]['snmp']['nobulk']        = 1;
+
 foreach ($config['os'] as $this_os => $blah)
 {
   if (isset($config['os'][$this_os]['group']))
Index: includes/discovery/sensors/dps-mib-v38.inc.php
===================================================================
--- includes/discovery/sensors/dps-mib-v38.inc.php	(revision 0)
+++ includes/discovery/sensors/dps-mib-v38.inc.php	(working copy)
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage discovery
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited
+ *
+ */
+
+$oids = snmpwalk_cache_multi_oid($device, "ChannelEntry", array(), "DPS-MIB-V38");
+
+foreach ($oids as $index => $entry)
+{
+
+  if ($entry['enabled'] == "disabled") { continue; }
+
+  $descr  = $entry['description'];
+  $value  = $entry['value'];
+  $oid    = ".1.3.6.1.4.1.2682.1.2.6.1.4.$index";
+//  $limits = array('limit_high' => $entry['accessSwitchSysTempHighThresh']);
+  discover_sensor($valid['sensor'], 'counter', $device, $oid, $index, 'dps', $descr, 1, $value);
+}
+
+// EOF
Index: includes/discovery/status/dps-mib-v38.inc.php
===================================================================
--- includes/discovery/status/dps-mib-v38.inc.php	(revision 0)
+++ includes/discovery/status/dps-mib-v38.inc.php	(working copy)
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage discovery
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited
+ *
+ */
+
+$alarms = snmpwalk_cache_multi_oid($device, 'dpsRTUAlarmGrid', array(), "DPS-MIB-V38");
+
+foreach($alarms as $index => $entry)
+{
+  // Ignore sensors that aren't configured or named
+  if ($entry['dpsRTUAState'] == "-") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "00") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "Undefined") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "-Undefined") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "MjO:") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "MjU:") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "MnO:") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "MnU:") { continue; }
+  if ($entry['dpsRTUAPntDesc'] == "NotDet:") { continue; }
+
+  $state = $entry['dpsRTUAState'];
+  $oid   = ".1.3.6.1.4.1.2682.1.2.5.1.6.$index";
+  $descr = $entry['dpsRTUAPntDesc'];
+
+ discover_status($device, $oid, "dpsRTUAlarmGrid.$index", 'dpsRTUAState', $descr, $state, array('entPhysicalClass'=>'other'));
+}
+
+$alarms = snmpwalk_cache_multi_oid($device, 'analogChannels', array(), "DPS-MIB-V38");
+
+foreach($alarms as $index => $entry)
+{
+
+  if ($entry['enabled'] == "disabled") { continue; }
+
+  $state = $entry['thresholds'];
+  $oid   = ".1.3.6.1.4.1.2682.1.2.6.1.5.$index";
+  $descr = $entry['description'];
+
+  discover_status($device, $oid, "analogChannel.$index", 'thresholds', $descr, $state, array('entPhysicalClass'=>'other'));
+
+}
+
+// EOF
