コード例 #1
0
        // Actions implemented
        public override void TestVariable(int nOp, MHUnion parm, MHEngine engine)
        {
            parm.CheckType(MHUnion.U_String);
            int  nRes = m_Value.Compare(parm.String);
            bool fRes = false;

            switch (nOp)
            {
            case TC_Equal: fRes = (nRes == 0); break;

            case TC_NotEqual: fRes = (nRes != 0); break;

/*              case TC_Less: fRes = (m_nValue < parm.Int); break;
 *              case TC_LessOrEqual: fRes = (m_nValue <= parm.Int); break;
 *              case TC_Greater: fRes = (m_nValue > parm.Int); break;
 *              case TC_GreaterOrEqual: fRes = (m_nValue >= parm.Int); break;*/
            default: throw new MHEGException("Invalid comparison for string");     // Shouldn't ever happen
            }
            MHOctetString sample1 = new MHOctetString(m_Value, 0, 10);
            MHOctetString sample2 = new MHOctetString(parm.String, 0, 10);

            Logging.Log(Logging.MHLogDetail, "Comparison " + TestToString(nOp) + " between " + sample1.Printable()
                        + " and " + sample2.Printable() + " => " + (fRes ? "true" : "false"));
            engine.EventTriggered(this, EventTestEvent, new MHUnion(fRes));
        }
コード例 #2
0
 public virtual void SI_GetServiceIndex(MHObjectRef success, MHSequence <MHParameter> args, MHEngine engine)
 {
     // Returns an index indicating the service
     if (args.Size == 2)
     {
         MHOctetString str = new MHOctetString();
         GetString(args.GetAt(0), str, engine);
         MHParameter pResInt = args.GetAt(1);
         // The format of the service is dvb://netID.[transPortID].serviceID
         // where the IDs are in hex.
         // or rec://svc/lcn/N where N is the "logical channel number" i.e. the Freeview channel.
         int nResult = engine.GetContext().GetChannelIndex(str.ToString());
         engine.FindObject(pResInt.GetReference()).SetVariableValue(new MHUnion(nResult));
         Logging.Log(Logging.MHLogDetail, "Get service index for " + str.Printable() + " - result " + nResult);
         SetSuccessFlag(success, true, engine);
     }
     else
     {
         SetSuccessFlag(success, false, engine);
     }
 }
コード例 #3
0
        public override void SetVariableValue(MHUnion value)
        {
            if (value.Type == MHUnion.U_Int)
            {
                // Implicit conversion of int to string.
                m_Value.Copy(Convert.ToString(value.Int));
            }
            else
            {
                value.CheckType(MHUnion.U_String);
                m_Value.Copy(value.String);
            }
            MHOctetString sample = new MHOctetString(m_Value, 0, 10);

            Logging.Log(Logging.MHLogDetail, "Update " + m_ObjectIdentifier.Printable() + " := " + sample.Printable());
        }