public override void Start(UPnPDevice device)
        {
            UPnPTestStates Master = UPnPTestStates.Pass;
            TestDevice = device;
            UPnPDevice d = device;

            UPnPService[] services = d.GetServices(CpConnectionManager.SERVICE_NAME);

            if (services == null || services.Length == 0)
            {
                enabled = false;
                return;
            }

            CM = new CpConnectionManager(services[0]);

            string SOURCE="";
            string SINK="";
            DText parser = new DText();

            StartCountDown(0,90);
            try
            {
                CM.Sync_GetProtocolInfo(out SOURCE,out SINK);
            }
            catch(UPnPInvokeException)
            {
                Results.Add("Connection Handler Test was aborted because GetProtocolInfo FAILED");
                SetState("Connection Handling",UPnPTestStates.Failed);
                Master = UPnPTestStates.Failed;
            }
            AbortCountDown();

            parser.ATTRMARK = ",";
            parser.MULTMARK = ":";

            bool OK = true;

            if(ConnectionManagerEventsTest()==false)
            {
                Results.Add("Connection Handler Test was aborted because of invalid/missing events");
                SetState("Connection Handling",UPnPTestStates.Failed);
                Master = UPnPTestStates.Failed;
            }

            if(SINK!="")
            {
                parser[0] = SINK;
                TotalTime = parser.DCOUNT()*120;
                CurrentTime = 0;
                for(int i=1;i<=parser.DCOUNT();++i)
                {
                    if(parser.DCOUNT(i)!=4)
                    {
                        // Invalid Format
                        OK = false;
                        AddEvent(LogImportance.Critical,"Connection Handling","   Protocol Info String [" + parser[i] + "] is not in a valid format");
                    }
                }
                if(OK)
                {
                    AddEvent(LogImportance.Remark,"Connection Handling","   Protocol Info Strings are in the correct format");
                }
                else
                {
                    Results.Add("Connection Handler Test was aborted because of invalid Protocol Info Strings");
                    SetState("Connection Handling",UPnPTestStates.Failed);
                    Master = UPnPTestStates.Failed;
                }

                if(CM.HasAction_PrepareForConnection)
                {
                    for(int i=1;i<=parser.DCOUNT();++i)
                    {
                        if(PrepareForConnectionTest_SINK(parser[i])==false)
                        {
                            OK = false;
                        }
                    }
                }
            }

            if(OK)
            {
                Results.Add("Connection Handler Test PASSED");
                SetState("Connection Handling",UPnPTestStates.Pass);
            }
            else
            {
                Results.Add("Connection Handler Test FAILED");
                SetState("Connection Handling",UPnPTestStates.Failed);
                Master = UPnPTestStates.Failed;
            }

            OK = true;
            UPnPService[] _AVT = d.GetServices(CpAVTransport.SERVICE_NAME);
            if(_AVT.Length!=0)
            {
                // AVT Tests
                AVT = new CpAVTransport(_AVT[0]);
                if(!Test_AVTransport_LastChange()) OK = false;
            }
            if(OK)
            {
                Results.Add("Event Formatting PASSED");
                SetState("Event Formatting",UPnPTestStates.Pass);
            }
            else
            {
                Results.Add("Event Formatting FAILED");
                SetState("Event Formatting",UPnPTestStates.Failed);
                Master = UPnPTestStates.Failed;
            }

            OK = true;
            _AVT = d.GetServices(CpAVTransport.SERVICE_NAME);
            if(_AVT.Length!=0)
            {
                // AVT Tests
                AVT = new CpAVTransport(_AVT[0]);
                if(!Test_AVTransport_StateVariables()) OK = false;
            }
            if (OK)
            {
                Results.Add("StateVariable Values NOT TESTED (Not implemented)");
                SetState("StateVariable Values",UPnPTestStates.Pass);
            }
            else
            {
                Results.Add("StateVariable Values FAILED");
                SetState("StateVariable Values",UPnPTestStates.Failed);
                Master = UPnPTestStates.Failed;
            }

            //			this.HTTP_ScenarioTest();

            state = Master;
        }