Esempio n. 1
0
        //================================================================================================//
        //
        // process assign statement
        //
        //================================================================================================//

        public void SH_processAssignStatement(SignalHead thisHead, SignalScripts.SCRScripts.SCRStatement thisStat,
                                              int[] localFloats, SIGSCRfile sigscr)
        {
            // get term value

            int tempvalue = 0;

            tempvalue = SH_processSubTerm(thisHead, thisStat.StatementTerms, 0, localFloats, sigscr);

            // assign value

            switch (thisStat.AssignType)
            {
            // assign value to external float
            // Possible floats :
            //                        STATE
            //                        DRAW_STATE
            //                        ENABLED     (not allowed for write)
            //                        BLOCK_STATE (not allowed for write)

            case (SignalScripts.SCRTermType.ExternalFloat):
                SignalScripts.SCRExternalFloats FloatType = (SignalScripts.SCRExternalFloats)thisStat.AssignParameter;

                switch (FloatType)
                {
                case SignalScripts.SCRExternalFloats.STATE:
                    thisHead.state = (MstsSignalAspect)tempvalue;
                    break;

                case SignalScripts.SCRExternalFloats.DRAW_STATE:
                    thisHead.draw_state = tempvalue;
                    break;

                default:
                    break;
                }
                break;

            // Local float

            case (SignalScripts.SCRTermType.LocalFloat):
                localFloats[thisStat.AssignParameter] = tempvalue;
                break;

            default:
                break;
            }
        }
Esempio n. 2
0
        //================================================================================================//
        // process assign statement
        //================================================================================================//
        private static void ProcessAssignStatement(SignalHead head, SignalScripts.SCRScripts.SCRStatement statement, int[] localFloats)
        {
            // get term value
            int tempvalue = ProcessSubTerm(head, statement.StatementTerms, 0, localFloats);

            // assign value
            switch (statement.AssignType)
            {
            // assign value to external float
            // Possible floats :
            //                        STATE
            //                        DRAW_STATE
            //                        ENABLED     (not allowed for write)
            //                        BLOCK_STATE (not allowed for write)
            case (SignalScripts.SCRTermType.ExternalFloat):
                SignalScripts.SCRExternalFloats floatType = (SignalScripts.SCRExternalFloats)statement.AssignParameter;

                switch (floatType)
                {
                case SignalScripts.SCRExternalFloats.STATE:
                    head.SignalIndicationState = (SignalAspectState)tempvalue;
                    break;

                case SignalScripts.SCRExternalFloats.DRAW_STATE:
                    head.DrawState = tempvalue;
                    break;

                default:
                    break;
                }
                break;

            // Local float
            case (SignalScripts.SCRTermType.LocalFloat):
                localFloats[statement.AssignParameter] = tempvalue;
                break;

            default:
                break;
            }
        }
Esempio n. 3
0
        //================================================================================================//
        //
        // get parameter term value
        //
        //================================================================================================//

        public static int SH_termvalue(SignalHead thisHead, SignalScripts.SCRScripts.SCRParameterType thisParameter,
                                       int[] localFloats, SIGSCRfile sigscr)
        {
            int return_value = 0;

            // for non-function terms only first entry is valid

            switch (thisParameter.PartType)
            {
            // assign value to external float
            // Possible floats :
            //                        STATE
            //                        DRAW_STATE
            //                        ENABLED
            //                        BLOCK_STATE

            case (SignalScripts.SCRTermType.ExternalFloat):
                SignalScripts.SCRExternalFloats FloatType = (SignalScripts.SCRExternalFloats)thisParameter.PartParameter;

                switch (FloatType)
                {
                case SignalScripts.SCRExternalFloats.STATE:
                    return_value = (int)thisHead.state;
                    break;

                case SignalScripts.SCRExternalFloats.DRAW_STATE:
                    return_value = thisHead.draw_state;
                    break;

                case SignalScripts.SCRExternalFloats.ENABLED:
                    return_value = Convert.ToInt32(thisHead.mainSignal.enabled);
                    break;

                case SignalScripts.SCRExternalFloats.BLOCK_STATE:
                    return_value = (int)thisHead.mainSignal.block_state();
                    break;

                case SignalScripts.SCRExternalFloats.APPROACH_CONTROL_REQ_POSITION:
                    return_value = thisHead.ApproachControlLimitPositionM.HasValue ? Convert.ToInt32(thisHead.ApproachControlLimitPositionM.Value) : -1;
                    break;

                case SignalScripts.SCRExternalFloats.APPROACH_CONTROL_REQ_SPEED:
                    return_value = thisHead.ApproachControlLimitSpeedMpS.HasValue ? Convert.ToInt32(thisHead.ApproachControlLimitSpeedMpS.Value) : -1;
                    break;

                default:
                    break;
                }
                break;

            // Local float

            case (SignalScripts.SCRTermType.LocalFloat):
                return_value = localFloats[thisParameter.PartParameter];
                break;

            // all others : constants

            default:
                return_value = thisParameter.PartParameter;
                break;
            }

            return(return_value);
        }
Esempio n. 4
0
        //================================================================================================//
        // get parameter term value
        //================================================================================================//
        private static int TermValue(SignalHead head, SignalScripts.SCRScripts.SCRParameterType parameter, int[] localFloats)
        {
            int result = 0;

            // for non-function terms only first entry is valid
            switch (parameter.PartType)
            {
            // assign value to external float
            // Possible floats :
            //                        STATE
            //                        DRAW_STATE
            //                        ENABLED
            //                        BLOCK_STATE

            case (SignalScripts.SCRTermType.ExternalFloat):
                SignalScripts.SCRExternalFloats floatType = (SignalScripts.SCRExternalFloats)parameter.PartParameter;

                switch (floatType)
                {
                case SignalScripts.SCRExternalFloats.STATE:
                    result = (int)head.SignalIndicationState;
                    break;

                case SignalScripts.SCRExternalFloats.DRAW_STATE:
                    result = head.DrawState;
                    break;

                case SignalScripts.SCRExternalFloats.ENABLED:
                    result = Convert.ToInt32(head.MainSignal.Enabled);
                    break;

                case SignalScripts.SCRExternalFloats.BLOCK_STATE:
                    result = (int)head.MainSignal.BlockState();
                    break;

                case SignalScripts.SCRExternalFloats.APPROACH_CONTROL_REQ_POSITION:
                    result = head.ApproachControlLimitPositionM.HasValue ? Convert.ToInt32(head.ApproachControlLimitPositionM.Value) : -1;
                    break;

                case SignalScripts.SCRExternalFloats.APPROACH_CONTROL_REQ_SPEED:
                    result = head.ApproachControlLimitSpeedMpS.HasValue ? Convert.ToInt32(head.ApproachControlLimitSpeedMpS.Value) : -1;
                    break;

                default:
                    break;
                }
                break;

            // Local float
            case (SignalScripts.SCRTermType.LocalFloat):
                result = localFloats[parameter.PartParameter];
                break;

            // all others : constants
            default:
                result = parameter.PartParameter;
                break;
            }

            return(result);
        }