+ self.id = pin_id
+ self._mode = None
+ self._pull = None
+ self.previous_value = False
+ self.current_value = None
+ self._wave_idx = 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
+ 7: self.return_random_int, # Ax_INPUT_RAND_INT
+ 8: self.return_fixed_int_pi, # Ax_INPUT_FIXED_INT_PI
+ 9: self.return_sine_wave, # Ax_INPUT_WAVE_SINE
+ 10: self.return_sawtooth_wave, # Ax_INPUT_WAVE_SAW
+ 11: self.return_toggle, # Dx_INPUT_TOGGLE
+ }