// 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)); }
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); } }
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()); }