Source code for spherov2.toy.bb9e

from collections import OrderedDict
from enum import IntEnum
from functools import partialmethod, lru_cache

from spherov2.commands.animatronic import Animatronic
from spherov2.commands.api_and_shell import ApiAndShell
from spherov2.commands.connection import Connection
from spherov2.commands.drive import Drive
from spherov2.commands.factory_test import FactoryTest
from spherov2.commands.firmware import Firmware
from spherov2.commands.io import IO
from spherov2.commands.power import Power
from spherov2.commands.sensor import Sensor
from spherov2.commands.system_info import SystemInfo
from spherov2.controls.v2 import DriveControl, LedControl, SensorControl, FirmwareUpdateControl, StatsControl
from spherov2.toy import ToyV2, ToySensor, Toy
from spherov2.types import ToyType


[docs]class BB9E(ToyV2): toy_type = ToyType('BB-9E', 'GB-', 'GB', .12) _handshake = [('00020005-574f-4f20-5370-6865726f2121', bytearray(b'usetheforce...band'))]
[docs] class LEDs(IntEnum): BODY_RED = 0 BODY_GREEN = 1 BODY_BLUE = 2 AIMING = 3 HEAD = 4
[docs] class Animations(IntEnum): EMOTE_ALARM = 0 EMOTE_NO = 1 EMOTE_SCAN_SWEEP = 2 EMOTE_SCARED = 3 EMOTE_YES = 4 EMOTE_AFFIRMATIVE = 5 EMOTE_AGITATED = 6 EMOTE_ANGRY = 7 EMOTE_CONTENT = 8 EMOTE_EXCITED = 9 EMOTE_FIERY = 10 EMOTE_GREETINGS = 11 EMOTE_NERVOUS = 12 EMOTE_SLEEP = 14 EMOTE_SURPRISED = 15 EMOTE_UNDERSTOOD = 16 HIT = 17 WWM_ANGRY = 18 WWM_ANXIOUS = 19 WWM_BOW = 20 WWM_CURIOUS = 22 WWM_DOUBLE_TAKE = 23 WWM_EXCITED = 24 WWM_FIERY = 25 WWM_HAPPY = 26 WWM_JITTERY = 27 WWM_LAUGH = 28 WWM_LONG_SHAKE = 29 WWM_NO = 30 WWM_OMINOUS = 31 WWM_RELIEVED = 32 WWM_SAD = 33 WWM_SCARED = 34 WWM_SHAKE = 35 WWM_SURPRISED = 36 WWM_TAUNTING = 37 WWM_WHISPER = 38 WWM_YELLING = 39 WWM_YOOHOO = 40 WWM_FRUSTRATED = 41 IDLE_1 = 42 IDLE_2 = 43 IDLE_3 = 44 EYE_1 = 45 EYE_2 = 46 EYE_3 = 47 EYE_4 = 48
sensors = OrderedDict( quaternion=OrderedDict( x=ToySensor(0x2000000, -1., 1.), y=ToySensor(0x1000000, -1., 1.), z=ToySensor(0x800000, -1., 1.), w=ToySensor(0x400000, -1., 1.) ), attitude=OrderedDict( pitch=ToySensor(0x40000, -179., 180.), roll=ToySensor(0x20000, -179., 180.), yaw=ToySensor(0x10000, -179., 180.) ), accelerometer=OrderedDict( x=ToySensor(0x8000, -8.19, 8.19), y=ToySensor(0x4000, -8.19, 8.19), z=ToySensor(0x2000, -8.19, 8.19) ), accel_one=OrderedDict(accel_one=ToySensor(0x200, 0., 8000.)), locator=OrderedDict( x=ToySensor(0x40, -32768., 32767., lambda x: x * 100.), y=ToySensor(0x20, -32768., 32767., lambda x: x * 100.), ), velocity=OrderedDict( x=ToySensor(0x10, -32768., 32767., lambda x: x * 100.), y=ToySensor(0x8, -32768., 32767., lambda x: x * 100.), ), speed=OrderedDict(speed=ToySensor(0x4, 0., 32767.)), core_time=OrderedDict(core_time=ToySensor(0x2, 0., 0.)) ) extended_sensors = OrderedDict( gyroscope=OrderedDict( x=ToySensor(0x2000000, -20000., 20000.), y=ToySensor(0x1000000, -20000., 20000.), z=ToySensor(0x800000, -20000., 20000.) ) ) # Animatronic play_animation = Animatronic.play_animation stop_animation = Animatronic.stop_animation enable_idle_animations = Animatronic.enable_idle_animations enable_trophy_mode = Animatronic.enable_trophy_mode get_trophy_mode_enabled = Animatronic.get_trophy_mode_enabled # APIAndShell ping = ApiAndShell.ping get_api_protocol_version = ApiAndShell.get_api_protocol_version send_command_to_shell = ApiAndShell.send_command_to_shell add_send_string_to_console_listener = partialmethod(Toy._add_listener, ApiAndShell.send_string_to_console) remove_send_string_to_console_listener = partialmethod(Toy._remove_listener, ApiAndShell.send_string_to_console) # Connection set_bluetooth_name = Connection.set_bluetooth_name get_bluetooth_name = Connection.get_bluetooth_name # Drive set_raw_motors = Drive.set_raw_motors reset_yaw = Drive.reset_yaw drive_with_heading = Drive.drive_with_heading set_stabilization = Drive.set_stabilization # FactoryTest get_factory_mode_challenge = FactoryTest.get_factory_mode_challenge enter_factory_mode = FactoryTest.enter_factory_mode exit_factory_mode = FactoryTest.exit_factory_mode get_chassis_id = FactoryTest.get_chassis_id # Firmware get_pending_update_flags = Firmware.get_pending_update_flags # IO play_audio_file = IO.play_audio_file set_all_leds_with_16_bit_mask = IO.set_all_leds_with_16_bit_mask start_idle_led_animation = IO.start_idle_led_animation # Sensor set_sensor_streaming_mask = Sensor.set_sensor_streaming_mask get_sensor_streaming_mask = Sensor.get_sensor_streaming_mask add_sensor_streaming_data_notify_listener = partialmethod(Toy._add_listener, Sensor.sensor_streaming_data_notify) remove_sensor_streaming_data_notify_listener = partialmethod(Toy._remove_listener, Sensor.sensor_streaming_data_notify) set_extended_sensor_streaming_mask = Sensor.set_extended_sensor_streaming_mask get_extended_sensor_streaming_mask = Sensor.get_extended_sensor_streaming_mask enable_gyro_max_notify = Sensor.enable_gyro_max_notify add_gyro_max_notify_listener = partialmethod(Toy._add_listener, Sensor.gyro_max_notify) remove_gyro_max_notify_listener = partialmethod(Toy._remove_listener, Sensor.gyro_max_notify) configure_collision_detection = Sensor.configure_collision_detection add_collision_detected_notify_listener = partialmethod(Toy._add_listener, Sensor.collision_detected_notify) remove_collision_detected_notify_listener = partialmethod(Toy._remove_listener, Sensor.collision_detected_notify) reset_locator_x_and_y = Sensor.reset_locator_x_and_y set_locator_flags = Sensor.set_locator_flags set_accelerometer_activity_threshold = Sensor.set_accelerometer_activity_threshold enable_accelerometer_activity_notify = Sensor.enable_accelerometer_activity_notify add_accelerometer_activity_notify_listener = partialmethod(Toy._add_listener, Sensor.accelerometer_activity_notify) remove_accelerometer_activity_notify_listener = partialmethod(Toy._remove_listener, Sensor.accelerometer_activity_notify) set_gyro_activity_threshold = Sensor.set_gyro_activity_threshold enable_gyro_activity_notify = Sensor.enable_gyro_activity_notify add_gyro_activity_notify_listener = partialmethod(Toy._add_listener, Sensor.gyro_activity_notify) remove_gyro_activity_notify_listener = partialmethod(Toy._remove_listener, Sensor.gyro_activity_notify) # Power enter_deep_sleep = Power.enter_deep_sleep sleep = Power.sleep get_battery_voltage = Power.get_battery_voltage get_battery_state = Power.get_battery_state enable_battery_state_changed_notify = Power.enable_battery_state_changed_notify add_battery_state_changed_notify_listener = partialmethod(Toy._add_listener, Power.battery_state_changed_notify) remove_battery_state_changed_notify_listener = partialmethod(Toy._remove_listener, Power.battery_state_changed_notify) wake = Power.wake add_will_sleep_notify_listener = partialmethod(Toy._add_listener, Power.will_sleep_notify) remove_will_sleep_notify_listener = partialmethod(Toy._remove_listener, Power.will_sleep_notify) add_did_sleep_notify_listener = partialmethod(Toy._add_listener, Power.did_sleep_notify) remove_did_sleep_notify_listener = partialmethod(Toy._remove_listener, Power.did_sleep_notify) enable_battery_voltage_state_change_notify = Power.enable_battery_voltage_state_change_notify add_battery_voltage_state_change_notify_listener = partialmethod(Toy._add_listener, Power.battery_voltage_state_change_notify) remove_battery_voltage_state_change_notify_listener = partialmethod(Toy._remove_listener, Power.battery_voltage_state_change_notify) # SystemInfo get_main_app_version = SystemInfo.get_main_app_version get_bootloader_version = SystemInfo.get_bootloader_version get_board_revision = SystemInfo.get_board_revision get_mac_address = SystemInfo.get_mac_address get_stats_id = SystemInfo.get_stats_id get_secondary_main_app_version = SystemInfo.get_secondary_main_app_version add_secondary_main_app_version_notify_listener = partialmethod(Toy._add_listener, SystemInfo.secondary_main_app_version_notify) remove_secondary_main_app_version_notify_listener = partialmethod(Toy._remove_listener, SystemInfo.secondary_main_app_version_notify) get_processor_name = SystemInfo.get_processor_name get_secondary_mcu_bootloader_version = SystemInfo.get_secondary_mcu_bootloader_version add_get_secondary_mcu_bootloader_version_notify_listener = partialmethod(Toy._add_listener, SystemInfo.secondary_mcu_bootloader_version_notify) remove_get_secondary_mcu_bootloader_version_notify_listener = partialmethod(Toy._remove_listener, SystemInfo.secondary_mcu_bootloader_version_notify) get_three_character_sku = SystemInfo.get_three_character_sku # Controls @property @lru_cache(None) def drive_control(self): return DriveControl(self) @property @lru_cache(None) def firmware_update_control(self): return FirmwareUpdateControl(self) @property @lru_cache(None) def multi_led_control(self): return LedControl(self) @property @lru_cache(None) def sensor_control(self): return SensorControl(self) @property @lru_cache(None) def stats_control(self): return StatsControl(self)