Skip to content
This repository has been archived by the owner on Sep 8, 2024. It is now read-only.

Commit

Permalink
Merge pull request #2538 from forslund/bugfix/enclosure-shutdown
Browse files Browse the repository at this point in the history
Fix enclosure shutdown
  • Loading branch information
forslund authored Apr 18, 2020
2 parents 5cbb3d2 + 6d13872 commit caa77b3
Showing 1 changed file with 37 additions and 14 deletions.
51 changes: 37 additions & 14 deletions mycroft/client/enclosure/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__":
Expand Down

0 comments on commit caa77b3

Please sign in to comment.