def turn_off(self): err = berry_api.set_device_multi_values(self.addr, self.REG_NOTE, [0], 1) if err != 0: berry_api.eprint("Error %d in turn_off. %s" % (err, self.to_string())) self._note = "OFF"
def orient_threshold(self, threshold): err = berry_api.set_device_multi_values(self.addr, self.REG_ORIENT_THRESHOLD_L, pack("<h", threshold), 2) if err != 0: berry_api.eprint("Error %d in set_orient_threshold for %s" % (err, self.to_string()))
def set_threshold(self, threshold): err = berry_api.set_device_multi_values(self.addr, self.REG_INTR_THRESHOLD, [threshold], 1) if err != 0: berry_api.eprint("Error %d in set_threshold for %s" % (err, self.to_string()))
def get_value(self): err, val = berry_api.get_device_multi_values(self.addr, self.REG_VAL8, 1) if err != 0: berry_api.eprint("Error %d in get_value for %s" % (err, self.to_string())) self.value = None return None self.value = val[0] return val[0]
def is_running(self): err, val = berry_api.get_device_multi_values(self.addr, self.REG_ON_OFF, 1) if err != 0: berry_api.eprint("Error %d in is_on. %s" % (err, self.to_string())) return False else: return val[0]
def get_pressure_level(self): err, val = berry_api.get_device_multi_values(self.addr, self.REG_LEVEL, 1) if err != 0: berry_api.eprint("Error %d in get_value for %s" % (err, self.to_string())) self.level = None return None self.level = val[0] return val[0]
def get_interrupt_delay(self): err, vals = berry_api.get_device_multi_values(self.addr, self.REG_INTR_DELAY, 1) if err != 0: berry_api.eprint("Error %d in get_threshold for %s" % (err, self.to_string())) return None return vals[0]
def orient_div(self): err, buf = berry_api.get_device_multi_values(self.addr, self.REG_ORIENT_DIV, 1) if err == 0: return buf[0] else: berry_api.eprint("Error %d in orient_div for %s" % (err, self.to_string())) return 0
def int_cooldown(self): err, buf = berry_api.get_device_multi_values(self.addr, self.INT_COOLDOWN, 1) if err == 0: return buf[0] else: berry_api.eprint("Error %d in int_cooldown for %s" % (err, self.to_string())) return 0
def set_color(self, vals): err = berry_api.set_device_multi_values(self.addr, self.REG_RED, vals, 3) if err != 0: berry_api.eprint("Error ", err, "in write_rgb_colors, rgb = ") self.print_info() self._color = [None, None, None] else: self._color = deepcopy(vals)
def orient_threshold(self): err, buf = berry_api.get_device_multi_values( self.addr, self.REG_ORIENT_THRESHOLD_L, 2) if err == 0: return unpack("<h", bytearray(buf))[0] else: berry_api.eprint("Error %d in orient_threshold for %s" % (err, self.to_string())) return 0
def set_value(self, value): if value < 0xC0: err = berry_api.set_device_multi_values(self.addr, self.REG_NOTE, [value], 1) if err != 0: berry_api.eprint("Error %d in turn_off. %s" % (err, self.to_string())) else: berry_api.eprint("Error in set_value: invalid value of 0x%x. %s" % (value, self.to_string()))
def get_value_and_level(self): err, vals = berry_api.get_device_multi_values(self.addr, self.REG_VAL8, 2) if err != 0: berry_api.eprint("Error %d in get_value for %s" % (err, self.to_string())) self.value = None self.level = None return None self.value = vals[0] self.level = vals[1] return (vals[0], vals[1])
def get_value(self): err, val = berry_api.get_device_multi_values(self.addr, self.REG_SWITCH, 1) if err != 0: berry_api.eprint("Error %d in get_value. %s" % (err, self.to_string())) self._value = None else: self._value = val[0] return val[0]
def get_position(self): err, vals = berry_api.get_device_multi_values(self.addr, self.REG_POSITION, 1) if err != 0: berry_api.eprint("Error %d in get_position for %s" % (err, self.to_string())) return None else: self._position = vals[0] return vals[0]
def read_colors(self): err, vals = berry_api.get_device_multi_values(self.addr, self.REG_RED, 3) if err != 0: berry_api.eprint("Error ", err, " in read_rgb_colors, rgb = ") self.print_info() self._color = [None, None, None] return [None, None, None] else: self._color = deepcopy(vals) return self._color
def get_threshold(self): err, buf = berry_api.get_device_multi_values(self.addr, self.REG_INTR_THRESHOLD, 1) if err == 0: self._threshold = buf[0] return buf[0] else: berry_api.eprint("Error %d in get_threshold for %s " % (err, self.to_string())) return 0
def set_intensity(self, intensity): if intensity < 0 or intensity > 100: berry_api.eprint("Error, intensity out of range for berr %s" % self.to_string()) else: intensity = round(intensity * 2.55) err = berry_api.set_device_multi_values(self.addr, self.REG_INTENSITY, [intensity], 1) if err != 0: berry_api.eprint("Error %d in set_intensity. %s" % (err, self.to_string()))
def set_position(self, position): if position < 0 or position > 255: berry_api.eprint( "Error in set_position; invalid position of %d. %s" % (position, self.to_string())) return err = berry_api.set_device_multi_values(self.addr, self.REG_POSITION, [position], 1) if err != 0: berry_api.eprint("Error %d in set_position. %s" % (err, self.to_string())) return self._position = position
def play_note(self, note): if not note in self.notes: berry_api.eprint("Error in set_note: note", note, "is not a valid note. %s" % self.to_string()) else: value = self.notes[note] err = berry_api.set_device_multi_values(self.addr, self.REG_NOTE, [value], 1) if err != 0: berry_api.eprint("Error %d in set_note for %s" % (err, self.to_string())) self._note = None else: self._note = note
def acceleration(self): # Don't poll if recently measured time = perf_counter() if self._acceleration is None or time - self.last_acc_time > self.MIN_POLL_WAIT: # Get the data from the berry err, buf = berry_api.get_device_multi_values( self.addr, self.REG_ACCEL_X_L, 6) # Store the result if err == 0: self._acceleration = self.Acceleration( *[x / 2048 for x in unpack("<hhh", bytearray(buf))]) else: # Report errors berry_api.eprint("Error %d in get_value for %s" % (err, self.to_string())) self._acceleration = None # Save access time self.last_acc_time = time # Return the new or stored value return self._acceleration
def rotational_v(self): # Don't poll if recently measured time = perf_counter() if self._rotational_v is None or time - self.last_gyro_time > MIN_POLL_WAIT: # Get the data from the berry err, buf = berry_api.get_device_multi_values( self.addr, self.REG_GYRO_X_L, 6) # Store the result if err == 0: self._rotational_v = Rotational_v( * [2000 * x / 32768 for x in unpack("<hhh", bytearray(buf))]) else: berry_api.eprint("Error %d in get_value for %s" % (err, self.to_string())) self._rotational_v = None # Save access time self.last_gyro_time = time # Return the new or stored value return self._rotational_v
def set_interrupt_delay(self, delay): err = berry_api.set_device_multi_values(self.addr, self.REG_INTR_DELAY, [delay], 1) if err != 0: berry_api.eprint("Error %d in set_interrupt_delay for %s" % (err, self.to_string()))
def orient_div(self, div): err = berry_api.set_device_multi_values(self.addr, self.REG_ORIENT_DIV, [div], 1) if err != 0: berry_api.eprint("Error %d in set_orient_div for %s" % (err, self.to_string()))
def int_cooldown(self, div): err = berry_api.set_device_multi_values(self.addr, self.INT_COOLDOWN, [div], 1) if err != 0: berry_api.eprint("Error %d in set_int_cooldown for %s" % (err, self.to_string()))
def stop(self): err = berry_api.set_device_multi_values(self.addr, self.REG_ON_OFF, [0], 1) if err != 0: berry_api.eprint("Error %d in stop. %s" % (err, self.to_string()))