#ifndef _EXTENDED_FSM_SERVICE_IDL_
#define _EXTENDED_FSM_SERVICE_IDL_

#include <RTC.idl>

#pragma prefix "omg.org"

module RTC
{
    struct FsmEventProfile
    {
        string name;
        string data_type;
    };
    #pragma version FsmEventProfile 1.0
    typedef sequence<FsmEventProfile> FsmEventProfileList;

    struct FsmStructure
    {
        string name;
        string structure;
        FsmEventProfileList event_profiles;
        NVList properties;
    };
    #pragma version FsmStructure 1.0

    interface ExtendedFsmService : SDOPackage::SDOService
    {
        string get_current_state();
        ReturnCode_t set_fsm_structure(in FsmStructure fsm_structure);
        ReturnCode_t get_fsm_structure(out FsmStructure fsm_structure);
    };
    #pragma version ExtendedFsmService 1.0
};

#endif // _EXTENDED_FSM_SERVICE_IDL_

