packages feed

haal-models-0.1.3.0: src/Haal/Models/MQTT/EmqttInvalid.hs

-- Generated by haal-gen. Do not edit manually.
module Haal.Models.MQTT.EmqttInvalid
    ( EmqttInvalidInput (..)
    , EmqttInvalidOutput (..)
    , emqttInvalid
    ) where

import Haal.Automaton.MealyAutomaton (MealyAutomaton, mkMealyAutomatonTable)

data EmqttInvalidInput
    = In_Connect
    | In_ConnectNonClean
    | In_PublishQoS0Dup
    | In_PublishQoSMinus1
    | In_PublishWildCard
    | In_SubscribeWildMatch
    | In_UnSubscribeWildMatch
    | In_Subscribe
    | In_SubscribeMinus1
    | In_UnSubScribe
    | In_Disconnect
    deriving (Show, Eq, Ord, Enum, Bounded)

data EmqttInvalidOutput
    = Out_ConnAckPacket_false_0
    | Out_ConnectionClosed
    | Out_Empty
    | Out_SubAck
    | Out_UnSubAck
    | Out_Pub_my_topic_messageQos0
    deriving (Show, Eq, Ord, Enum, Bounded)

{- Transitions (state  input -> next state / output):
    0     In_Connect               -> 1 / Out_ConnAckPacket_false_0
          In_ConnectNonClean       -> 1 / Out_ConnAckPacket_false_0
          In_PublishQoS0Dup        -> 0 / Out_ConnectionClosed
          In_PublishQoSMinus1      -> 0 / Out_ConnectionClosed
          In_PublishWildCard       -> 0 / Out_ConnectionClosed
          In_SubscribeWildMatch    -> 0 / Out_ConnectionClosed
          In_UnSubscribeWildMatch  -> 0 / Out_ConnectionClosed
          In_Subscribe             -> 0 / Out_ConnectionClosed
          In_SubscribeMinus1       -> 0 / Out_ConnectionClosed
          In_UnSubScribe           -> 0 / Out_ConnectionClosed
          In_Disconnect            -> 0 / Out_ConnectionClosed
    1     In_Connect               -> 0 / Out_ConnectionClosed
          In_ConnectNonClean       -> 0 / Out_ConnectionClosed
          In_PublishQoS0Dup        -> 1 / Out_Empty
          In_PublishQoSMinus1      -> 0 / Out_ConnectionClosed
          In_PublishWildCard       -> 0 / Out_ConnectionClosed
          In_SubscribeWildMatch    -> 1 / Out_SubAck
          In_UnSubscribeWildMatch  -> 1 / Out_UnSubAck
          In_Subscribe             -> 2 / Out_SubAck
          In_SubscribeMinus1       -> 0 / Out_ConnectionClosed
          In_UnSubScribe           -> 1 / Out_UnSubAck
          In_Disconnect            -> 0 / Out_ConnectionClosed
    2     In_Connect               -> 0 / Out_ConnectionClosed
          In_ConnectNonClean       -> 0 / Out_ConnectionClosed
          In_PublishQoS0Dup        -> 2 / Out_Pub_my_topic_messageQos0
          In_PublishQoSMinus1      -> 0 / Out_ConnectionClosed
          In_PublishWildCard       -> 0 / Out_ConnectionClosed
          In_SubscribeWildMatch    -> 2 / Out_SubAck
          In_UnSubscribeWildMatch  -> 2 / Out_UnSubAck
          In_Subscribe             -> 2 / Out_SubAck
          In_SubscribeMinus1       -> 0 / Out_ConnectionClosed
          In_UnSubScribe           -> 1 / Out_UnSubAck
          In_Disconnect            -> 0 / Out_ConnectionClosed
-}
emqttInvalid :: MealyAutomaton Int EmqttInvalidInput EmqttInvalidOutput
emqttInvalid =
    case mkMealyAutomatonTable 3 0 deltaTable lambdaTable of
        Right m -> m
        Left err -> error ("haal-gen: invalid transition table: " ++ err)
  where
    deltaTable =
        "\1\1\0\0\0\0\0\0\0\0\0\
        \\0\0\1\0\0\1\1\2\0\1\0\
        \\0\0\2\0\0\2\2\2\0\1\0"
    lambdaTable =
        "\0\0\1\1\1\1\1\1\1\1\1\
        \\1\1\2\1\1\3\4\3\1\4\1\
        \\1\1\5\1\1\3\4\3\1\4\1"