def _process_scan_event(self, response):
        payload = response.payload
        length = len(payload) - 10
        if length < 0:
            return
        rssi, packet_type, sender, _addr_type, _bond, data = unpack("<bB6sBB%ds" % length, payload)
        string_address = ':'.join([format(x, "02X") for x in bytearray(sender[::-1])])
        if len(data) > 0:
            data = bytearray(data[1:])
        else:
            data = bytearray([])
        self._scan_event_count += 1
        if packet_type in (0, 2, 6):
            if len(data) != 31:
                return
            if data[22] == 0xFF and data[23] == 0xC0 and data[24] == 0x3:
                self._v1_scan_count += 1
                self._parse_v1_advertisement(rssi, string_address, data)
            elif data[3] == 27 and data[4] == 0x16 and data[5] == 0xdd and data[6] == 0xfd:
                self._v2_scan_count += 1
                self._parse_v2_advertisement(rssi, string_address, data)
            else:
                pass
        elif packet_type == 4:
            self._v1_scan_response_count += 1
            self._parse_v1_scan_response(string_address, data)