#! /usr/bin/env python
__author__ = "Ben Raanan"
__copyright__ = "Copyright 2021, MBARI"
__credits__ = ["MBARI"]
__license__ = "GPL-3.0"
__maintainer__ = "Ben Raanan"
__email__ = "byraanan at mbari.org"
__doc__ = '''

Defines the LCM callback functions for processes incoming LRAUV data.

@author: __author__
@license: __license__
'''
import logging

from LCM.HandlerBase import LcmHandlerBase
from LCM.Publisher import LcmPublisher

logger = logging.getLogger("backseat")


class BackseatProcess(LcmHandlerBase):

    def __init__(self, lcm_instance, cfg, notify=None):
        """
        Initialize AppProcess.

        :param lcm_instance: initialized LCM object lcm.LCM()
        :param cfg: pointer to backseat configuration obj
        """
        logger.info("Initializing backseat process.")

        self.publisher = LcmPublisher(lcm_instance)
        self.cfg = cfg

    def handle_msg(self, channel, data):
        """
        TODO: UPDATE WITH YOUR HANDLER CODE!

        :param channel: LCM channel name string
        :param data: coded LCM packet
        :return: void
        """
        logger.debug("Handling LCM msg on channel {0}.".format(channel))
        msg = self.decode(data)

        # TODO: DO SOMETHING WITH MSG

    def publish_data_to_slate(self, channel_name='tethys_slate'):
        """
        TODO: UPDATE WITH YOUR PUBLISHER CODE!

        :param channel_name: LCM channel name (string)
        :return: publishes LCM message
        """

        # publish LCM message
        self.publisher.publish(channel_name)
