16 from threading
import Timer
18 from mycroft
import dialog
25 connected, wait_while_speaking, reset_sigint_handler,
26 create_echo_function, create_daemon, wait_for_exit_signal
31 from .skill_manager
import SkillManager, MsmException
32 from .core
import FallbackSkill
33 from .event_scheduler
import EventScheduler
34 from .intent_service
import IntentService
35 from .padatious_service
import PadatiousService
38 event_scheduler =
None 42 start_ticks = time.monotonic()
43 start_clock = time.time()
56 - SkillManager to load/reloading of skills when needed 57 - a timer to check for internet connection 58 - adapt intent service 59 - padatious intent service 61 global bus, skill_manager, event_scheduler
63 bus.on(
'intent_failure', FallbackSkill.make_intent_failure_handler(bus))
67 service = IntentService(bus)
69 PadatiousService(bus, service)
70 except Exception
as e:
71 LOG.exception(
'Failed to create padatious handlers ' 72 '({})'.format(repr(e)))
73 event_scheduler = EventScheduler(bus)
77 skill_manager = SkillManager(bus)
81 LOG.info(
'Msm is uninitialized and requires network connection',
82 'to fetch skill information\n' 83 'Waiting for network connection...')
86 skill_manager = SkillManager(bus)
88 skill_manager.daemon =
True 91 skill_manager.load_priority()
97 bus.emit(
Message(
'system.update'))
98 msg =
Message(
'system.update', {
102 resp = bus.wait_for_response(msg,
'system.update.processing')
104 if resp
and (resp.data
or {}).
get(
'processing',
True):
105 bus.wait_for_response(
Message(
'system.update.waiting'),
106 'system.update.complete', 1000)
111 Check for network connection. If not paired trigger pairing. 112 Runs as a Timer every second until connection is detected. 120 enclosure.mouth_text(dialog.get(
"message_synching.clock"))
123 config = Configuration.get()
124 platform = config[
'enclosure'].
get(
"platform",
"unknown")
125 if platform
in [
'mycroft_mark_1',
'picroft']:
126 bus.wait_for_response(
Message(
'system.ntp.sync'),
127 'system.ntp.sync.complete', 15)
133 skew = abs((time.monotonic() - start_ticks) -
134 (time.time() - start_clock))
139 data = {
'utterance': dialog.get(
"time.changed.reboot")}
140 bus.emit(
Message(
"speak", data))
144 enclosure.mouth_text(dialog.get(
"message_rebooting"))
145 enclosure.eyes_color(70, 65, 69)
146 enclosure.eyes_spin()
152 bus.emit(
Message(
"system.reboot"))
155 bus.emit(
Message(
"enclosure.mouth.reset"))
158 enclosure.eyes_color(189, 183, 107)
159 enclosure.mouth_text(dialog.get(
"message_loading.skills"))
161 bus.emit(
Message(
'mycroft.internet.connected'))
166 'utterances': [
"pair my device"],
169 bus.emit(
Message(
"recognizer_loop:utterance", payload))
175 data = {
'utterance': dialog.get(
"backend.down")}
176 bus.emit(
Message(
"speak", data))
177 bus.emit(
Message(
"backend.down"))
180 thread = Timer(1, check_connection)
192 Configuration.init(bus)
193 config = Configuration.get()
199 bus.once(
'open', _starting_up)
208 event_scheduler.shutdown()
216 if __name__ ==
"__main__":
def create_daemon(target, args=(), kwargs=None)
def wait_for_exit_signal()
def wait_while_speaking()
def is_paired(ignore_errors=True)
def set_active_lang(lang_code)
def try_update_system(platform)
def create_echo_function(name, whitelist=None)
def reset_sigint_handler()
def get(phrase, lang=None, context=None)