From 810e0c8c227a6b2ec773c3f22da72b6850ffd7a7 Mon Sep 17 00:00:00 2001
From: Cort Buffington <n0mjs@me.com>
Date: Wed, 11 Dec 2013 19:09:35 -0600
Subject: [PATCH] fixed Master information gathering

---
 dmrlink.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/dmrlink.py b/dmrlink.py
index 0e19000..b318e7d 100755
--- a/dmrlink.py
+++ b/dmrlink.py
@@ -772,7 +772,51 @@ class IPSC(DatagramProtocol):
         
         # When we hear from the master, record it's ID, flag that we're connected, and reset the dead counter.
         elif _packettype == MASTER_REG_REPLY:
+            print('JIMMY')
+            
+            _hex_mode     = (data[10:11])
+            _mode         = int(h(_hex_mode), 16)
+            # mask individual Mode parameters
+            _link_op      = _mode & PEER_OP_MSK
+            _link_mode    = _mode & PEER_MODE_MSK
+            _ts1          = _mode & IPSC_TS1_MSK
+            _ts2          = _mode & IPSC_TS2_MSK
+            
+            
+            # Determine whether or not the peer is operational
+            if   _link_op == 0b01000000:
+                _peer_op = True
+            else:
+                _peer_op = False
+              
+            # Determine the operational mode of the peer
+            if   _link_mode == 0b00000000:
+                _peer_mode = 'NO_RADIO'
+            elif _link_mode == 0b00010000:
+                _peer_mode = 'ANALOG'
+            elif _link_mode == 0b00100000:
+                _peer_mode = 'DIGITAL'
+            else:
+                _peer_mode = 'NO_RADIO'
+            
+            # Determine whether or not timeslot 1 is linked
+            if _ts1 == 0b00001000:
+                 _ts1 = True
+            else:
+                 _ts1 = False
+             
+            # Determine whether or not timeslot 2 is linked
+            if _ts2 == 0b00000010:
+                _ts2 = True
+            else:
+                _ts2 = False
+                
             self._master['RADIO_ID'] = _peerid
+            self._master['MODE'] = _mode
+            self._master['PEER_OPER'] = _peer_op
+            self._master['PEER_MODE'] = _peer_mode
+            self._master['TS1_LINK'] = _ts1
+            self._master['TS2_LINK'] = _ts2
             self._master_stat['CONNECTED'] = True
             self._master_stat['KEEP_ALIVES_OUTSTANDING'] = 0
             return