Example #1
0
 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"
Example #2
0
 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()))
Example #3
0
 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()))
Example #4
0
 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]
Example #5
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]
Example #6
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]
Example #7
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]
Example #8
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
Example #9
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
Example #10
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)
Example #11
0
 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
Example #12
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()))
Example #13
0
 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])
Example #14
0
 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]
Example #15
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]
Example #16
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
Example #17
0
 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
Example #18
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()))
Example #19
0
 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
Example #20
0
 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
Example #21
0
    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
Example #22
0
    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
Example #23
0
 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()))
Example #24
0
 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()))
Example #25
0
 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()))
Example #26
0
 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()))