Merge pull request #2538 from forslund/bugfix/enclosure-shutdown

Fix enclosure shutdown
pull/2542/head
Åke 2020-04-18 08:00:07 +02:00 committed by GitHub
commit caa77b33f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 37 additions and 14 deletions

View File

@ -12,44 +12,67 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
import sys
"""Entrypoint for enclosure service.
This provides any "enclosure" specific functionality, for example GUI or
control over the Mark-1 Faceplate.
"""
from mycroft.configuration import LocalConf, SYSTEM_CONFIG
from mycroft.util.log import LOG
from mycroft.messagebus.client import MessageBusClient
from mycroft.configuration import Configuration, LocalConf, SYSTEM_CONFIG
from mycroft.util import (create_daemon, wait_for_exit_signal,
reset_sigint_handler)
def main():
# Read the system configuration
system_config = LocalConf(SYSTEM_CONFIG)
platform = system_config.get("enclosure", {}).get("platform")
def create_enclosure(platform):
"""Create an enclosure based on the provided platform string.
Arguments:
platform (str): platform name string
Returns:
Enclosure object
"""
if platform == "mycroft_mark_1":
LOG.debug("Creating Mark I Enclosure")
LOG.info("Creating Mark I Enclosure")
from mycroft.client.enclosure.mark1 import EnclosureMark1
enclosure = EnclosureMark1()
elif platform == "mycroft_mark_2":
LOG.debug("Creating Mark II Enclosure")
LOG.info("Creating Mark II Enclosure")
from mycroft.client.enclosure.mark2 import EnclosureMark2
enclosure = EnclosureMark2()
else:
LOG.debug("Creating generic enclosure, platform='{}'".format(platform))
LOG.info("Creating generic enclosure, platform='{}'".format(platform))
# TODO: Mechanism to load from elsewhere. E.g. read a script path from
# the mycroft.conf, then load/launch that script.
from mycroft.client.enclosure.generic import EnclosureGeneric
enclosure = EnclosureGeneric()
return enclosure
def main():
"""Launch one of the available enclosure implementations.
This depends on the configured platform and can currently either be
mycroft_mark_1 or mycroft_mark_2, if unconfigured a generic enclosure with
only the GUI bus will be started.
"""
# Read the system configuration
system_config = LocalConf(SYSTEM_CONFIG)
platform = system_config.get("enclosure", {}).get("platform")
enclosure = create_enclosure(platform)
if enclosure:
try:
LOG.debug("Enclosure started!")
enclosure.run()
reset_sigint_handler()
create_daemon(enclosure.run)
wait_for_exit_signal()
except Exception as e:
print(e)
finally:
sys.exit()
else:
LOG.debug("No enclosure available for this hardware, running headless")
LOG.info("No enclosure available for this hardware, running headless")
if __name__ == "__main__":