+ self.id = pin_id
+ self._mode = None
+ self._pull = None
+ self.previous_value = False
+ self.current_value = None
+
+ # mapping of pin definition names to expected behavior
+ self.pin_behavior = {
+ 0: self.return_true, # Dx_INPUT_TRUE
+ 1: self.return_false, # Dx_INPUT_FALSE
+ 2: self.return_true, # Dx_INPUT_TRUE_PULL_UP
+ 3: self.return_true, # Dx_INPUT_TRUE_PULL_DOWN
+ 4: self.return_true, # Dx_OUTPUT_TRUE
+ 5: self.return_false, # Dx_OUTPUT_FALSE
+ 6: self.return_true, # NEOPIXEL
+ 7: self.return_random_int, # Ax_INPUT_RAND_INT
+ 8: self.return_fixed_int_pi, # Ax_INPUT_FIXED_INT_PI
+ 9: self.return_true, # Ax_OUTPUT_WAVE_SINE
+ 10: self.return_true, # Ax_OUTPUT_WAVE_SAWTOOTH
+ 11: self.return_toggle, # Dx_INPUT_TOGGLE
+ # Add other mappings as needed
+ }