
[MODULE_PARAMETERS]
tsp_IOT_LGen_FSMs := {
  {
/**** FSM Editor layout information. ****
@state "idle" (144, 311)
@state "initiated" (739, 313)
@parallellink "idle" -- "initiated" (159, 311) (214, 311) * (712, 313) (657, 313)
@link "idle" -- "initiated"
singleevent "EPTF_CLL_LGenBase" "LGenBase: Start_the_traffic_case!"
@link "initiated" -- "idle"
singleevent "COAP Behavior" "COAP rsp: 205"
@link "initiated" -- "idle"
eventlist "COAP Behavior" "COAP rsp: 200" "COAP rsp: 201" "COAP rsp: 202" "COAP rsp: 203" "COAP rsp: 204" 
@link "initiated" -- "idle"
singleevent "Special behavior for timeout reporting" "watchdog"
*/
    name := "TC_CORE01_GET_FSM",
    fsmParams := {
      {
        stateList := {
          "idle",
          "initiated"
        }
      },
      {
        timerList := {
          {
            name := "watchdog",
            startValue := 10.0
          }
        }
      },
      {
        varList := {
          {
            name := "remoteHost",
            initValue := {
              charstringVal := "127.0.0.1"
            },
            scope := TC
          },//var:remoteHost
          {
            name := "remotePort",
            initValue := {
              intVal := 30000
            },
            scope := TC
          },//var:remotePort
          // var:localHost
          {
            name := "localHost",
            initValue := {
              charstringVal := "127.0.0.1"
            },
            scope := TC
          },
          // var:localPort
          {
            name := "localPort",
            initValue := {
              intVal := 31000
            },
            scope := TC
          }
        }
      },
      {
        statHandlerStatList := { }
      }
    },// fsmParams
    table := {
      extendedTable := {
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "EPTF_CLL_LGenBase",
                  iName := "LGenBase: Start_the_traffic_case!",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "idle"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "COAP Applib: init", 
                      contextArgs := omit
                    },
                    {
                      stepOrFunctionName := "IOT App COAP: setLocalAddress_byVars", 
                      contextArgs := {
                        varNames := {
                          "localHost", 
                          "localPort"
                        }
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: setRemoteAddress_byVars", 
                      contextArgs := {
                        varNames := {
                          "remoteHost", 
                          "remotePort"
                        }
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: loadTemplate_byStringId", 
                      contextArgs := {
                        charstringValue := "t_TC_CORE_01_GET"
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: send", 
                      contextArgs := omit
                    },
                    {
                      stepOrFunctionName := "LGenBase: StepFunction_timerStart", 
                      contextArgs := {
                        timerName := "watchdog"
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "initiated"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "COAP Behavior",
                  iName := "COAP rsp: 205",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "initiated"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "IOT App: tcFinished_withVerdict", 
                      contextArgs := {
                        verdict := {
                          verdict := pass,
                          reason := ""
                        }
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "idle"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                eventList := {
                  bName := "COAP Behavior",
                  iNameList := {
                    "COAP rsp: 200",
                    "COAP rsp: 201",
                    "COAP rsp: 202",
                    "COAP rsp: 203",
                    "COAP rsp: 204"
                  },
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "initiated"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "IOT App: tcFinished_withVerdict", 
                      contextArgs := {
                        verdict := {
                          verdict := fail,
                          reason := ""
                        }
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "idle"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "Special behavior for timeout reporting",
                  iName := "watchdog",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "initiated"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "IOT App: tcFinished_withVerdict", 
                      contextArgs := {
                        verdict := {
                          verdict := fail,
                          reason := ""
                        }
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "idle"
                }
              }
            }
          }
        }
      }
    }
  },
  {
/**** FSM Editor layout information. ****
@state "idle" (100, 527)
@state "initiated" (1019, 527)
@parallellink "idle" -- "initiated" (115, 527) (203, 527) * (992, 527) (904, 527)
@link "idle" -- "initiated"
singleevent "EPTF_CLL_LGenBase" "LGenBase: Start_the_traffic_case!"
@link "initiated" -- "idle"
eventlist "COAP Behavior" "COAP rsp: 200" "COAP rsp: 202" "COAP rsp: 203" "COAP rsp: 205" 
@link "initiated" -- "idle"
singleevent "COAP Behavior" "COAP rsp: 201"
@link "initiated" -- "idle"
singleevent "Special behavior for timeout reporting" "watchdog"
*/
    name := "TC_CORE02_POST_FSM",
    fsmParams := {
      {
        stateList := {
          "idle",
          "initiated"
        }
      },
      {
        timerList := {
          {
            name := "watchdog",
            startValue := 10.0
          }
        }
      },
      {
        varList := {
          {
            name := "remoteHost",
            initValue := {
              charstringVal := "127.0.0.1"
            },
            scope := TC
          },//var:remoteHost
          {
            name := "remotePort",
            initValue := {
              intVal := 30000
            },
            scope := TC
          },//var:remotePort
          // var:localHost
          {
            name := "localHost",
            initValue := {
              charstringVal := "127.0.0.1"
            },
            scope := TC
          },
          // var:localPort
          {
            name := "localPort",
            initValue := {
              intVal := 31000
            },
            scope := TC
          }
        }
      },
      {
        statHandlerStatList := { }
      }
    },// fsmParams
    table := {
      extendedTable := {
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "EPTF_CLL_LGenBase",
                  iName := "LGenBase: Start_the_traffic_case!",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "idle"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "COAP Applib: init", 
                      contextArgs := omit
                    },
                    {
                      stepOrFunctionName := "IOT App COAP: setLocalAddress_byVars", 
                      contextArgs := {
                        varNames := {
                          "localHost", 
                          "localPort"
                        }
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: setRemoteAddress_byVars", 
                      contextArgs := {
                        varNames := {
                          "remoteHost", 
                          "remotePort"
                        }
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: loadTemplate_byStringId", 
                      contextArgs := {
                        charstringValue := "t_TC_CORE_02_POST"
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: send", 
                      contextArgs := omit
                    },
                    {
                      stepOrFunctionName := "LGenBase: StepFunction_timerStart", 
                      contextArgs := {
                        timerName := "watchdog"
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "initiated"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                eventList := {
                  bName := "COAP Behavior",
                  iNameList := {
                    "COAP rsp: 200",
                    "COAP rsp: 202",
                    "COAP rsp: 203",
                    "COAP rsp: 205"
                  },
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "initiated"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "IOT App: tcFinished_withVerdict", 
                      contextArgs := {
                        verdict := {
                          verdict := fail,
                          reason := ""
                        }
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "idle"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "COAP Behavior",
                  iName := "COAP rsp: 201",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "initiated"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "IOT App: tcFinished_withVerdict", 
                      contextArgs := {
                        verdict := {
                          verdict := pass,
                          reason := ""
                        }
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "idle"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "Special behavior for timeout reporting",
                  iName := "watchdog",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "initiated"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "IOT App: tcFinished_withVerdict", 
                      contextArgs := {
                        verdict := {
                          verdict := fail,
                          reason := ""
                        }
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "idle"
                }
              }
            }
          }
        }
      }
    }
  },
  {
/**** FSM Editor layout information. ****
@state "idle" (177, 188)
@state "initializing" (668, 273)
@state "serving" (393, 486)
@selfstate "serving" (850, 668)
@parallellink "idle" -- "initializing" (192, 191) (236, 199) * (633, 267) (589, 259)
@link "idle" -- "initializing"
singleevent "EPTF_CLL_LGenBase" "LGenBase: Start_the_traffic_case!"
@link "initializing" -- "idle"
singleevent "COAP Behavior" "COAP transport: fail rsp"
@parallellink "initializing" -- "serving" (653, 285) (629, 304) * (408, 474) (433, 455)
@link "initializing" -- "serving"
singleevent "COAP Behavior" "COAP transport: succ rsp"
@parallellink "serving" -- "idle" (384, 474) (364, 447) * (186, 200) (206, 227)
@link "serving" -- "idle"
singleevent "EPTF_CLL_LGenBase" "LGenBase: Stop_the_traffic_case!"
@parallellink "serving" -- "serving" (417, 496) (458, 512) * (826, 658) (785, 642)
@link "serving" -- "serving"
singleevent "COAP Behavior" "COAP req: GET"
@link "serving" -- "serving"
singleevent "COAP Behavior" "COAP req: POST"
*/
    name := "TC_CORE_Server_FSM",
    fsmParams := {
      {
        stateList := {
          "idle",
          "initializing",
          "serving"
        }
      },
      {
        varList := {
          // var:localHost
          {
            name := "localHost",
            initValue := {
              charstringVal := "127.0.0.1"
            },
            scope := TC
          },
          // var:localPort
          {
            name := "localPort",
            initValue := {
              intVal := 30000
            },
            scope := TC
          },
          {
            name := "portOffset",
            initValue := {
              intVal := 0
            },
            scope := TC
          }//var:portOffset
        }
      },
      {
        statHandlerStatList := { }
      }
    },// fsmParams
    table := {
      extendedTable := {
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "EPTF_CLL_LGenBase",
                  iName := "LGenBase: Start_the_traffic_case!",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "idle"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "COAP Applib: init", 
                      contextArgs := omit
                    },
                    {
                      stepOrFunctionName := "IOT App COAP: setLocalAddress_byVars", 
                      contextArgs := {
                        varNames := {
                          "localHost", 
                          "localPort", 
                          "portOffset"
                        }
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: startListening", 
                      contextArgs := omit
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "initializing"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "COAP Behavior",
                  iName := "COAP transport: succ rsp",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "initializing"
                },
                cell := {
                  actionList := omit,
                  nextStateCalculation := omit,
                  nextState := "serving"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "COAP Behavior",
                  iName := "COAP transport: fail rsp",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "initializing"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "IOT App: tcFinished_withVerdict", 
                      contextArgs := {
                        verdict := {
                          verdict := fail,
                          reason := ""
                        }
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "idle"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "EPTF_CLL_LGenBase",
                  iName := "LGenBase: Stop_the_traffic_case!",
                  eventType := fsm
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "serving"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "IOT App: tcFinished_withVerdict", 
                      contextArgs := {
                        verdict := {
                          verdict := fail,
                          reason := ""
                        }
                      }
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "idle"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "COAP Behavior",
                  iName := "COAP req: GET",
                  eventType := entity
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "serving"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "COAP Applib: handleRequest", 
                      contextArgs := omit
                    },
                    {
                      stepOrFunctionName := "COAP Applib: loadTemplate_byStringId", 
                      contextArgs := {
                        charstringValue := "t_TC_CORE_Server_Content"
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: sendResponse", 
                      contextArgs := omit
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "serving"
                }
              }
            }
          }
        },
        {
          events2Listen := {
            events := {
              {
                singleEvent := {
                  bName := "COAP Behavior",
                  iName := "COAP req: POST",
                  eventType := entity
                }
              }
            }
          },
          cellRow := {
            statedCellRow := {
              {
                inState := {
                  state := "serving"
                },
                cell := {
                  actionList := {
                    {
                      stepOrFunctionName := "COAP Applib: handleRequest", 
                      contextArgs := omit
                    },
                    {
                      stepOrFunctionName := "COAP Applib: loadTemplate_byStringId", 
                      contextArgs := {
                        charstringValue := "t_TC_CORE_Server_Created"
                      }
                    },
                    {
                      stepOrFunctionName := "COAP Applib: sendResponse", 
                      contextArgs := omit
                    }
                  },
                  nextStateCalculation := omit,
                  nextState := "serving"
                }
              }
            }
          }
        }
      }
    }
  }}

