original_docstring:  MsgType=A6 - Zone Types I think 
docstring: MsgType=A6 - Zone Types I think
docstring_tokens: MsgType = A6 - Zone Types I think
code: def handle_msgtypeA6(self, data):
          """ MsgType=A6 - Zone Types I think """
          log.info("[handle_MsgTypeA6] Packet = {0}".format(self.toString(data)))
          # Commented Out
          #   I assumed that the 5 A6 messages were similar to the 5 A3 messages, giving the type and chime info (as per the EPROM download)
          #      It doesn't look like it so it's commented out until I can figure out what they are
          #     Example data streams from my alarm, 5 data packets (header, mgstype, checksum and footer removed)
          #              04 01 2a 2a 2a 25 25 25 25 25 43     # This is supposed to tell us the total message count i.e. 4
          #              04 01 2a 2a 2a 25 25 25 25 25 43     # Then this is message 1 of 4  (zones 1 to 8)
          #              04 02 25 25 24 24 25 25 24 25 43     # Then this is message 2 of 4  (zones 9 to 16)
          #              04 03 25 25 25 29 29 1f 1f 27 43     # Then this is message 3 of 4  (zones 17 to 24)
          #              04 04 27 28 28 1e 22 28 00 00 43     # Then this is message 4 of 4  (zones 25 to 32)
          #        e.g. If we decoded the same as the EPROM zone type for zone 1, 2 and 3 (showing 2a in my examples above):
          #                   2a & 0x0F would give  0x0A for the type "24 Hours Audible" which is wrong, mine should be "Interior" as they are PIRs
          if not self.pmPowerlinkMode:
              msgCnt = int(data[0])
              offset = 8 * (int(data[1]) - 1)
              for i in range (0, 8):
                  zoneInfo = int(data[2+i]) - 0x1E        #  in other code data[2+i] - 0x1E;
                  zoneType = (zoneInfo & 0x0F) + 1        #  in other code add one
                  zoneChime = ((zoneInfo >> 4) & 0x03)
                  log.debug("Zone type for {0} is {1}   chime {2}".format( offset+i+1, pmZoneType_t[self.pmLang][zoneType], pmZoneChime_t[self.pmLang][zoneChime]))
          #        if offset+i in self.pmSensorDev_t:
          #            self.pmSensorDev_t[offset+i].ztype = zoneType
          #            self.pmSensorDev_t[offset+i].ztypeName = pmZoneType_t[self.pmLang][zoneType]
          #            self.pmSensorDev_t[offset+i].zchime = pmZoneChime_t[self.pmLang][zoneChime]
          #            self.pmSensorDev_t[offset+i].pushChange()
code_tokens: def handle_msgtypeA6 ( self , data ) : log . info ( "[handle_MsgTypeA6] Packet = {0}" . format ( self . toString ( data ) ) ) if not self . pmPowerlinkMode : msgCnt = int ( data [ 0 ] ) offset = 8 * ( int ( data [ 1 ] ) - 1 ) for i in range ( 0 , 8 ) : zoneInfo = int ( data [ 2 + i ] ) - 0x1E zoneType = ( zoneInfo & 0x0F ) + 1 zoneChime = ( ( zoneInfo >> 4 ) & 0x03 ) log . debug ( "Zone type for {0} is {1}   chime {2}" . format ( offset + i + 1 , pmZoneType_t [ self . pmLang ] [ zoneType ] , pmZoneChime_t [ self . pmLang ] [ zoneChime ] ) )
short_docstring: MsgType=A6 - Zone Types I think
short_docstring_tokens: MsgType = A6 - Zone Types I think
comment: """ MsgType=A6 - Zone Types I think """$SEP$# Commented Out$SEP$#   I assumed that the 5 A6 messages were similar to the 5 A3 messages, giving the type and chime info (as per the EPROM download)$SEP$#      It doesn't look like it so it's commented out until I can figure out what they are$SEP$#     Example data streams from my alarm, 5 data packets (header, mgstype, checksum and footer removed)$SEP$#              04 01 2a 2a 2a 25 25 25 25 25 43     # This is supposed to tell us the total message count i.e. 4$SEP$#              04 01 2a 2a 2a 25 25 25 25 25 43     # Then this is message 1 of 4  (zones 1 to 8)$SEP$#              04 02 25 25 24 24 25 25 24 25 43     # Then this is message 2 of 4  (zones 9 to 16)$SEP$#              04 03 25 25 25 29 29 1f 1f 27 43     # Then this is message 3 of 4  (zones 17 to 24)$SEP$#              04 04 27 28 28 1e 22 28 00 00 43     # Then this is message 4 of 4  (zones 25 to 32)$SEP$#        e.g. If we decoded the same as the EPROM zone type for zone 1, 2 and 3 (showing 2a in my examples above):$SEP$#                   2a & 0x0F would give  0x0A for the type "24 Hours Audible" which is wrong, mine should be "Interior" as they are PIRs$SEP$#  in other code data[2+i] - 0x1E;$SEP$#  in other code add one$SEP$#        if offset+i in self.pmSensorDev_t:$SEP$#            self.pmSensorDev_t[offset+i].ztype = zoneType$SEP$#            self.pmSensorDev_t[offset+i].ztypeName = pmZoneType_t[self.pmLang][zoneType]$SEP$#            self.pmSensorDev_t[offset+i].zchime = pmZoneChime_t[self.pmLang][zoneChime]$SEP$#            self.pmSensorDev_t[offset+i].pushChange()