#!/usr/bin/env python3

'''
  @file
  @ingroup <<<GROUP>>>
  @brief   <<<BRIEF>>>

           This code is Autogenerated from '<<<PYIFGENNAME>>>' with the MIT License.
           As such, please only hand-code within 'USER' tags.

  @author  <<<AUTHOR>>>
'''

from enum import Enum, unique, auto
# {{{USER_IMPORTS}}}
# {{{USER_IMPORTS}}}

## @briefEvents
#
#@{
<<<PER_EVENT_BEGIN>>>
class <<<EVENTNAME>>>:
    def __init__(self, <<<SIGNATURE>>>):
        <<<EVENTMEMBERSLITEINSTANTIATE=self>>>
        pass
<<<PER_EVENT_END>>>

class EventStartup:
    pass
#@}

## Controller Interface
#
class <<<STATEMACHINENAME>>>Controller:
    def __init__(self):
        <<<PER_GUARD_BEGIN>>>
        self.<<<guardName>>> = False
        <<<PER_GUARD_END>>>
        pass
    ## @brief Guards
    #
    # @{
    <<<PER_GUARD_BEGIN>>>
    def <<<GUARDNAME>>>(self, event) -> bool:
        print("<<<GUARDNAME>>> returned as ", str(self.<<<guardName>>>))
        return self.<<<guardName>>>
    <<<PER_GUARD_END>>>
    #@}

    ## @brief Actions
    #
    #@{
    <<<PER_ACTION_BEGIN>>>
    def <<<ACTIONNAME>>>(self, event) -> None:
        print("<<<ACTIONNAME>>> on ", str(type(event)).replace("<class '",'').replace("'>",''))
    <<<PER_ACTION_END>>>
    #@}

    ## @brief State Entry/Exit
    #
    #@{
    <<<PER_STATE_BEGIN>>>
    def On<<<STATENAME>>>Entry(self, event) -> None:
        print("On<<<STATENAME>>>Entry on ", str(type(event)).replace("<class '",'').replace("'>",''))
    def On<<<STATENAME>>>Exit(self, event) -> None:
        print("On<<<STATENAME>>>Exit(self, event) on ", str(type(event)).replace("<class '",'').replace("'>",''))
    <<<PER_STATE_END>>>
    #@}

    ## @brief Handler function for non-transition events.
    # @param Event ignored by state machine.
    #
    def NoTransition(self, event) -> None:
        pass

