<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def sw_reset(self):
 """Trigger a software reset of the SeeSaw chip"""

        self.write8(_STATUS_BASE, _STATUS_SWRST, 0xFF)
        time.sleep(.500)

        chip_id = self.read8(_STATUS_BASE, _STATUS_HW_ID)

        if chip_id != _HW_ID_CODE:
            raise RuntimeError("Seesaw hardware ID returned (0x{:x}) is not "
                               "correct! Expected 0x{:x}. Please check your wiring."
                               .format(chip_id, _HW_ID_CODE))

        pid = self.get_version() >> 16
        if pid == _CRICKIT_PID:
            from adafruit_seesaw.crickit import Crickit_Pinmap
            self.pin_mapping = Crickit_Pinmap
        elif pid == _ROBOHATMM1_PID:
            from adafruit_seesaw.robohat import MM1_Pinmap
            self.pin_mapping = MM1_Pinmap
        else:
            from adafruit_seesaw.samd09 import SAMD09_Pinmap
            self.pin_mapping = SAMD09_Pinmap