Exemplo n.º 1
0
        int _count;                                           // Counter for serial comm

        /// <summary>
        /// Constructor
        /// </summary>
        public SerialComm(string portName, SerialCallback callBack)
        {
            const uint bitRate = 115200;

            _portDef  = PortDefinition.CreateInstanceForSerial(portName, portName, bitRate);
            _callBack = callBack;
        }
Exemplo n.º 2
0
                public void InitPresenceCheck(PortDefinition port)
                {
                    switch (port.id)
                    {
                    case 1:
                    {
                        resetPin      = new InputPort(IO.Port1.Pin6, false, Port.ResistorMode.PullDown);
                        GPIO          = new InputPort(IO.Port1.Pin3, false, Port.ResistorMode.PullDown);
                        modulePresent = resetPin.Read();
                        break;
                    }

                    case 4:
                    {
                        resetPin      = new InputPort(IO.Port4.Pin6, false, Port.ResistorMode.PullDown);
                        GPIO          = new InputPort(IO.Port4.Pin3, false, Port.ResistorMode.PullDown);
                        modulePresent = resetPin.Read();
                        break;
                    }

                    case 6:
                    {
                        resetPin      = new InputPort(IO.Port6.Pin6, false, Port.ResistorMode.PullDown);
                        GPIO          = new InputPort(IO.Port6.Pin3, false, Port.ResistorMode.PullDown);
                        modulePresent = resetPin.Read();
                        break;
                    }

                    default: break;
                    }
                }
 private static void updateTargetsList(object state)
 {
     lock (locker)
     {
         var  devices       = PortDefinition.Enumerate(PortFilter.Usb);
         var  targetsToKeep = new List <MicroFrameworkExecutionTarget>();
         bool changed       = false;
         foreach (var device in devices)
         {
             bool targetExist = false;
             foreach (var target in targets)
             {
                 if (target.PortDefinition.Port == (device as PortDefinition).Port)
                 {
                     targetsToKeep.Add(target);
                     targetExist = true;
                     break;
                 }
             }
             if (!targetExist)
             {
                 changed = true;
                 var newTarget = new MicroFrameworkExecutionTarget(device as PortDefinition);
                 targets.Add(newTarget);
                 targetsToKeep.Add(newTarget);
             }
         }
         changed |= targets.RemoveAll((target) => !targetsToKeep.Contains(target)) > 0;
         if (changed && deviceListChanged != null)
         {
             deviceListChanged(null);
         }
     }
 }
Exemplo n.º 4
0
                /** ctor */
                public DisplayModule(PortDefinition port, OrientationType orientation)
                {
                    if (CTRE.Util.Contains(port.types, kModulePortType))
                    {
                        status = StatusCodes.OK;
                        _port  = port;

                        Port8Definition portDef = (Port8Definition)port;

                        if (portDef.Pin3 != Cpu.Pin.GPIO_NONE)
                        {
                            _outReset = new OutputPort(portDef.Pin3, false);
                        }

                        if (portDef.Pin4 != Cpu.Pin.GPIO_NONE)
                        {
                            _outBackLght = new OutputPort(portDef.Pin4, true);
                        }

                        _outRs = new OutputPort(portDef.Pin5, false);

                        /* alloc the working arrays */
                        _cache_1B     = new byte[1];
                        _cache_2W     = new ushort[2];
                        _cache_manyBs = new byte[1024];
                        _cache_manyWs = new ushort[1024];

                        SPI.Configuration spiConfiguration = new SPI.Configuration(portDef.Pin6, false, 0, 0, false, true, 12000, SPI.SPI_module.SPI4);
                        _spi = new Microsoft.SPOT.Hardware.SPI(spiConfiguration);

                        /* reset pulse if pin is available */
                        if (_outReset != null)
                        {
                            _outReset.Write(false);
                            Thread.Sleep(150);
                            _outReset.Write(true);
                        }
                        /* setup registers */
                        ConfigureDisplay();

                        /* fixup orientation */
                        _orientation = orientation;
                        ApplytOrientation();

                        /* empty screen */
                        ClearScreen();

                        /* start rendering thread */
                        var th = new Thread(RenderThread);
                        th.Priority = ThreadPriority.Lowest;
                        th.Start();
                    }
                    else
                    {
                        status = StatusCodes.PORT_MODULE_TYPE_MISMATCH;
                        Reporting.SetError(status);
                    }
                }
Exemplo n.º 5
0
 public DriverModule(PortDefinition port)
 {
     if (CTRE.Util.Contains(port.types, kModulePortType))
     {
         status    = StatusCodes.OK;
         this.port = port;
         InitializePort((IPortGpio7)this.port);
     }
     else
     {
         status = StatusCodes.PORT_MODULE_TYPE_MISMATCH;
         Reporting.SetError(status);
     }
 }
 public DriverModule(PortDefinition port)
 {
     if (CTRE.Phoenix.Util.Contains(port.types, kModulePortType))
     {
         _lastError.SetLastError(ErrorCode.OK);
         this.port = port;
         InitializePort((IPortGpio7)this.port);
     }
     else
     {
         _lastError.SetLastError(ErrorCode.PORT_MODULE_TYPE_MISMATCH);
         CTRE.Phoenix.Reporting.SetError(_lastError.GetLastError());
     }
 }
Exemplo n.º 7
0
 public DriverModule(PortDefinition port)
 {
    if (Contains(port.types, kModulePortType))
     {
         status = StatusCodes.OK;
         this.port = port;
         InitializePort((IPortGpio7)this.port);
     }
    else
     {
         status = StatusCodes.PORT_MODULE_TYPE_MISMATCH;
         Reporting.SetError(status);
     }
 }
Exemplo n.º 8
0
        public DriverStation(PortDefinition wifiPort)
        {
            if (wifiPort is IPortUart)
            {
                IPortUart p = (IPortUart)wifiPort;
                _uart    = new System.IO.Ports.SerialPort(p.UART, 115200, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
                _restart = new Microsoft.SPOT.Hardware.OutputPort(p.Pin6, true);
                if (wifiPort is Port1Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port1Definition)wifiPort).Pin3, true);
                }
                if (wifiPort is Port4Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port4Definition)wifiPort).Pin3, true);
                }
                if (wifiPort is Port6Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port6Definition)wifiPort).Pin3, true);
                }
            }
            else
            {
                throw new ArgumentException("Port is not UART compatible");
            }


            _uart.Open();
            _uart.Flush();


            _enabled   = false;
            _connected = false;
            CTRE.Controller.GameControllerValues _g = new Controller.GameControllerValues();
            CTRE.Controller.GameControllerValues _h = new Controller.GameControllerValues();
            CTRE.Controller.GameControllerValues _j = new Controller.GameControllerValues();
            CTRE.Controller.GameControllerValues _k = new Controller.GameControllerValues();
            CTRE.Controller.GameControllerValues _l = new Controller.GameControllerValues();
            CTRE.Controller.GameControllerValues _m = new Controller.GameControllerValues();
            _joysticks = new CTRE.Controller.GameControllerValues[6] {
                _g, _h, _j, _k, _l, _m
            };
            _controllers = new CTRE.Controller.GameController[6];
            _data        = new byte[255];
            _timeout.Start();
            _sendingMessage = new byte[1] {
                0x00
            };
            _enableTimeout.Start();
            _initialization.Start();
        }
        public DriverStation(PortDefinition wifiPort)
        {
            if (wifiPort is IPortUart)
            {
                IPortUart p = (IPortUart)wifiPort;
                _uart    = new System.IO.Ports.SerialPort(p.UART, 115200, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
                _restart = new Microsoft.SPOT.Hardware.OutputPort(p.Pin6, true);
                if (wifiPort is Port1Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port1Definition)wifiPort).Pin3, true);
                }
                if (wifiPort is Port4Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port4Definition)wifiPort).Pin3, true);
                }
                if (wifiPort is Port6Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port6Definition)wifiPort).Pin3, true);
                }
            }
            else
            {
                status = ErrorCode.PORT_MODULE_TYPE_MISMATCH;
                Reporting.SetError(status);
            }


            _uart.Open();
            _uart.Flush();


            _enabled   = false;
            _connected = false;
            CTRE.Phoenix.Controller.GameControllerValues _g = new Controller.GameControllerValues();
            CTRE.Phoenix.Controller.GameControllerValues _h = new Controller.GameControllerValues();
            CTRE.Phoenix.Controller.GameControllerValues _j = new Controller.GameControllerValues();
            CTRE.Phoenix.Controller.GameControllerValues _k = new Controller.GameControllerValues();
            CTRE.Phoenix.Controller.GameControllerValues _l = new Controller.GameControllerValues();
            CTRE.Phoenix.Controller.GameControllerValues _m = new Controller.GameControllerValues();
            _joysticks = new CTRE.Phoenix.Controller.GameControllerValues[6] {
                _g, _h, _j, _k, _l, _m
            };
            _controllers    = new CTRE.Phoenix.Controller.GameController[6];
            _data           = new byte[255];
            _sendingMessage = new byte[1] {
                0x00
            };
            buffer = new Containers.ByteRingBuffer(255);
        }
Exemplo n.º 10
0
                public ESP12F(PortDefinition port)
                {
                    if (Contains(port.types, kModulePortType))
                    {
                        status    = StatusCodes.OK;
                        this.port = port;

                        processState  = READY;
                        headerState   = STAGE1;
                        linkIDState   = STAGE1;
                        processedSize = 0;
                        dataCount     = 0;
                        InitUart((IPortUart)(this.port));
                        InitPresenceCheck(this.port);
                    }
                    else
                    {
                        status = StatusCodes.PORT_MODULE_TYPE_MISMATCH;
                        //Reporting.SetError(status);
                    }
                }
Exemplo n.º 11
0
        public ESPModule(PortDefinition wifiPort)
        {
            if (wifiPort is IPortUart)
            {
                IPortUart p = (IPortUart)wifiPort;
                _uart    = new System.IO.Ports.SerialPort(p.UART, 115200, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
                _restart = new Microsoft.SPOT.Hardware.OutputPort(p.Pin6, true);
                //Need to define the flash pin to ensure it's held true
                if (wifiPort is Port1Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port1Definition)wifiPort).Pin3, true);
                }
                if (wifiPort is Port4Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port4Definition)wifiPort).Pin3, true);
                }
                if (wifiPort is Port6Definition)
                {
                    _flashPin = new Microsoft.SPOT.Hardware.OutputPort(((Port6Definition)wifiPort).Pin3, true);
                }
            }
            else
            {
                throw new ArgumentException("Port is not UART compatible");
            }


            _uart.Open();
            _uart.Flush();


            _connected = false;
            _data      = new byte[255];
            _timeout.Start();
            _sendingMessage = new byte[1] {
                0x00
            };
            _enableTimeout.Start();
            _initialization.Start();
        }
Exemplo n.º 12
0
 private void button2_Click(object sender, EventArgs e)
 {
     if (m_connected)
     {
         button2.Text = "Connect";
         m_readTh.Abort();
         m_readTh.Join();
         m_readTh = null;
         m_gas.Close();
         m_gas.Dispose();
         m_gas = null;
     }
     else
     {
         PortDefinition pd = comboBox1.SelectedItem as PortDefinition;
         m_gas    = pd.Open();
         m_readTh = new Thread(new ThreadStart(ReadThread));
         m_readTh.Start();
         button2.Text = "Disconnect";
     }
     m_connected = !m_connected;
 }
Exemplo n.º 13
0
        public IOPorts(IARMHost ihost)
        {
            mIhost = ihost;
            //request to be notified when our area of the memory map is written or read
            mIhost.RequestMemoryBlock(mLowerAddress, 0xffffff80, onMemoryAccessRead, onMemoryAccessWrite);

            mPortDefinitions[0] = new PortDefinition(PortNumbers.PCONA, 10);
            mPortDefinitions[1] = new PortDefinition(PortNumbers.PDATA, 10);
            mPortDefinitions[2] = new PortDefinition(PortNumbers.PCONB, 11);
            mPortDefinitions[3] = new PortDefinition(PortNumbers.PDATB, 11);

            mPortDefinitions[4] = new PortDefinition(PortNumbers.PCONC, 32);
            mPortDefinitions[5] = new PortDefinition(PortNumbers.PDATC, 16);
            mPortDefinitions[6] = new PortDefinition(PortNumbers.PUPC, 16);

            mPortDefinitions[7] = new PortDefinition(PortNumbers.PCOND, 16);
            mPortDefinitions[8] = new PortDefinition(PortNumbers.PDATD, 8);
            mPortDefinitions[9] = new PortDefinition(PortNumbers.PUPD, 8);

            mPortDefinitions[10] = new PortDefinition(PortNumbers.PCONE, 18);
            mPortDefinitions[11] = new PortDefinition(PortNumbers.PDATE, 9);
            mPortDefinitions[12] = new PortDefinition(PortNumbers.PUPE, 8);

            mPortDefinitions[13] = new PortDefinition(PortNumbers.PCONF, 22);
            mPortDefinitions[14] = new PortDefinition(PortNumbers.PDATF, 9);
            mPortDefinitions[15] = new PortDefinition(PortNumbers.PUPF, 9);

            mPortDefinitions[16] = new PortDefinition(PortNumbers.PCONG, 16);
            mPortDefinitions[17] = new PortDefinition(PortNumbers.PDATG, 8);
            mPortDefinitions[18] = new PortDefinition(PortNumbers.PUPG, 8);

            mPortDefinitions[19] = new PortDefinition(PortNumbers.SPUCR, 3);
            mPortDefinitions[20] = new PortDefinition(PortNumbers.EXTINT, 31);
            mPortDefinitions[21] = new PortDefinition(PortNumbers.EXTPND, 4, true);

            this.Restart();
        }//ctor
Exemplo n.º 14
0
        internal void StartProfiler(string device, string logFile, string transport,
                                    string exePath, string buildPath, ArrayList referenceList, bool isDevEnvironment, string assemblyName)
        {
            try
            {
                PortDefinition port = Utils.GetPort(device, transport, exePath);

                m_engine  = new Engine(port);
                m_session = new ProfilerSession(m_engine);

#if DEBUG
                m_exporter = new Exporter_OffProf(m_session, logFile);
#endif

                lock (m_engine)
                {
                    m_engine.StopDebuggerOnConnect = true;
                    m_engine.Start();

                    bool connected = false;

                    connected = m_engine.TryToConnect(20, 500, true, ConnectionSource.TinyCLR);

                    if (connected)
                    {
                        if (m_engine.Capabilities.Profiling == false)
                        {
                            throw new ApplicationException("This device is not running a version of TinyCLR that supports profiling.");
                        }

                        // Deploy the test files to the device.
                        Utils.DeployToDevice(buildPath, referenceList, m_engine, transport, isDevEnvironment, assemblyName);

                        // Move IsDeviceInInitializeState(), IsDeviceInExitedState(),
                        // GetDeviceState(),EnsureProcessIsInInitializedState() to Debugger.dll?

                        m_engine.RebootDevice(Engine.RebootOption.RebootClrWaitForDebugger);

                        if (!m_engine.TryToConnect(100, 500))
                        {
                            throw new ApplicationException("Connection Failed");
                        }

                        m_engine.ThrowOnCommunicationFailure = true;
                        m_session.EnableProfiling();

                        m_session.SetProfilingOptions(true, false);
                        m_engine.OnCommand += new CommandEventHandler(OnWPCommand);
                        m_engine.ResumeExecution();
                    }
                    else
                    {
                        throw new ApplicationException("Connection failed");
                    }
                }
            }
            catch (Exception ex)
            {
                SoftDisconnectDone(null, null);
                throw ex;
            }
        }
Exemplo n.º 15
0
        private void ConnectToDevice(string buildPath, string exePath, ArrayList referenceList)
        {
            TestSystem.IncludesDeviceTest = true;
            PortDefinition port = Utils.GetPort(m_device, m_transport, exePath);

            try
            {
                for (int retry = 0; retry < 3; retry++)
                {
                    m_engine = new Microsoft.SPOT.Debugger.Engine(port);
                    m_engine.StopDebuggerOnConnect = true;
                    m_engine.Start();

                    bool connected = false;

                    connected = m_engine.TryToConnect(200, 500, true, ConnectionSource.TinyCLR);

                    if (connected)
                    {
                        m_engine.PauseExecution();

                        if (!string.Equals(m_transport.ToLower(), "emulator"))
                        {
                            // Deploy the test files to the device.
                            Utils.DeployToDevice(buildPath, referenceList, m_engine, m_transport, m_isDevEnvironment, m_assemblyName);

                            // Connect to the device and execute the deployed test.
                            m_engine.RebootDevice(Microsoft.SPOT.Debugger.Engine.RebootOption.RebootClrWaitForDebugger);

                            // give the device some time to restart (especially for tcp/ip)
                            Thread.Sleep(500);

                            if (m_engine.PortDefinition is PortDefinition_Tcp)
                            {
                                Thread.Sleep(1000);
                            }

                            connected = false;

                            connected = m_engine.TryToConnect(200, 500, true, ConnectionSource.TinyCLR);
                        }


                        if (!connected)
                        {
                            DetachFromEngine();
                            throw new ApplicationException("Reboot Failed");
                        }

                        AttachToProcess();

                        m_engine.ThrowOnCommunicationFailure = true;
                        m_engine.OnMessage += new MessageEventHandler(OnMessage);
                        m_engine.OnCommand += new CommandEventHandler(OnCommand);
                        m_engine.OnNoise   += new NoiseEventHandler(OnNoise);

                        Console.WriteLine("\tExecuting the device test..");
                        m_initialTime = DateTime.Now;
                        m_engine.ResumeExecution();

                        m_deviceDone.WaitOne();
                        break;
                    }
                    else
                    {
                        DetachFromEngine();
                        //throw new ApplicationException("Connection failed");
                    }
                }
            }
            catch (Exception ex)
            {
                DetachFromEngine();
                throw new ApplicationException("Connection failed: " + ex.ToString());
            }
        }
Exemplo n.º 16
0
 private void Form1_Load(object sender, EventArgs e)
 {
     comboBox1.DataSource  = PortDefinition.Enumerate(PortFilter.Serial);
     comboBox1.ValueMember = "DisplayName";
 }
Exemplo n.º 17
0
 public void SetPortDefinition(PortDefinition PortDefinition, bool IsInput)
 {
     DisplayNameText.text = PortDefinition.DisplayName;
     DisplayNameText.alignment = IsInput ? TextAnchor.MiddleLeft : TextAnchor.MiddleRight;
     Connector.localPosition = IsInput ? new Vector3(0.5f, 0, 0) : new Vector3(-0.5f, 0, 0);
 }
        public void UpdateList()
        {
            ArrayList list = PortDefinition.Enumerate(m_pf);

            #region Code that should probably be in PortDefinition.Enumerate
            {
                bool enumTcpIpPorts = false;
                foreach (PortFilter pf in m_pf)
                {
                    if (pf == PortFilter.TcpIp)
                    {
                        enumTcpIpPorts = true;
                        break;
                    }
                }
                if (enumTcpIpPorts)
                {
                    list.AddRange(EnumerateTcpIpPorts());
                }
            }
            #endregion

            #region Code that could go in PortDefinition.Enumerate if we add a LauncableEmulator port definition. (Or move PersistableEmulator into a non-VS class?
            {
                bool listLaunchableEmulators = false;
                foreach (PortFilter pf in m_pf)
                {
                    if (pf == PortFilter.Emulator)
                    {
                        listLaunchableEmulators = true;
                        break;
                    }
                }

                if (listLaunchableEmulators == true)
                {
                    PlatformInfo            pi   = new PlatformInfo(null);
                    PlatformInfo.Emulator[] emus = pi.Emulators;

                    foreach (PlatformInfo.Emulator emu in emus)
                    {
                        list.Add(new PortDefinition_Emulator("Launch '" + emu.name + "'", emu.persistableName, 0));
                    }
                }
            }
            #endregion

            object si = SelectedItem;
            base.DataSource = null;
            if (list.Count > 0)
            {
                base.DataSource = list;
                if (list[0] is PortDefinition)
                {
                    base.DisplayMember = "DisplayName";
                }
                if (si != null)
                {
                    SelectedItem = si;
                }
                else
                {
                    base.SelectedIndex = 0;
                }
            }
            else
            {
                base.Text = "<None>";
            }
            base.Update();
        }
Exemplo n.º 19
0
        internal static PortDefinition GetPort(string device, string transport, string exePath)
        {
            PortFilter[] args = { };
            switch (transport.ToLower())
            {
            case "emulator":
                args   = new PortFilter[] { PortFilter.Emulator };
                device = "emulator";
                PortDefinition pd =
                    PortDefinition.CreateInstanceForEmulator("Launch 'Microsoft Emulator'", "Microsoft", 0);

                PlatformInfo          pi  = new PlatformInfo(null);
                PlatformInfo.Emulator emu = pi.FindEmulator(pd.Port);

                if (emu != null)
                {
                    string onboardFlash = Path.Combine(Path.GetDirectoryName(emu.application), "OnBoardFlash.dat");

                    if (File.Exists(onboardFlash))
                    {
                        try
                        {
                            File.Delete(onboardFlash);
                        }
                        catch
                        {
                        }
                    }
                }


                PortDefinition_Emulator emuport = pd as PortDefinition_Emulator;
                Console.WriteLine("\tLaunching Emulator..");
                Process emuProc = EmulatorLauncher.LaunchEmulator(
                    emuport,
                    true, exePath);
                break;

            case "serial":
                args = new PortFilter[] { PortFilter.Serial };
                break;

            case "tcpip":
                args = new PortFilter[] { PortFilter.TcpIp };
                break;

            case "usb":
                args = new PortFilter[] { PortFilter.Usb };
                break;
            }

            ArrayList list     = new ArrayList();
            int       nRetries = 20;

            while (list.Count == 0 && nRetries-- > 0)
            {
                list = PortDefinition.Enumerate(args);

                if (list.Count > 0)
                {
                    break;
                }

                System.Threading.Thread.Sleep(500);
            }

            PortDefinition port = null;

            foreach (object prt in list)
            {
                port = (PortDefinition)prt;
                if (port.DisplayName.ToLower().Contains(device.ToLower()))
                {
                    break;
                }
                else
                {
                    port = null;
                }
            }

            if (null != port)
            {
                return(port);
            }
            else
            {
                throw new ApplicationException(
                          "Could not find the specified device for the harness to connect to.");
            }
        }
 public MicroFrameworkExecutionTarget(PortDefinition portDefinition)
 {
     this.PortDefinition = portDefinition;
 }