Example #1
0
 public ThreadMgr(DeviceForm deviceForm)
 {
     rspDataIn = new RspDataInThread(deviceForm);
     txDataOut = new TxDataOutThread();
     rxDataIn  = new RxDataInThread(deviceForm);
     rxTxMgr   = new RxTxMgrThread();
 }
Example #2
0
        public void ShouldCreateAGateway()
        {
            var form = new DeviceForm
            {
                Type            = DeviceType.GATEWAY,
                ID              = "42",
                SerialNumber    = "42",
                FirmwareVersion = "1.2",
                State           = "Online",
                IP              = "5.6.7.8",
                Port            = 666
            };

            var actual = deviceFactoryUT.CreateDevice(form);

            Assert.That(actual, Is.InstanceOf <Gateway>());

            var actualDevice = actual as Gateway;

            Assert.That(actualDevice.ID, Is.EqualTo(form.ID));
            Assert.That(actualDevice.SerialNumber, Is.EqualTo(form.SerialNumber));
            Assert.That(actualDevice.FirmwareVersion, Is.EqualTo(form.FirmwareVersion));
            Assert.That(actualDevice.State, Is.EqualTo(form.State));
            Assert.That(actualDevice.IP, Is.EqualTo(form.IP));
            Assert.That(actualDevice.Port, Is.EqualTo(form.Port));
        }
Example #3
0
 public AttReadByGrpTypeRsp(DeviceForm deviceForm)
 {
     devForm       = deviceForm;
     attrUuidUtils = new AttrUuidUtils();
     attrDataUtils = new AttrDataUtils(deviceForm);
     sendCmds      = new SendCmds(deviceForm);
 }
Example #4
0
        public bool DisconnectDevice(DeviceForm devForm)
        {
            bool        flag        = false;
            ConnectInfo connectInfo = devForm.disconnectInfo;

            if (devForm != null)
            {
                foreach (TreeNode treeNode in tvPorts.Nodes)
                {
                    if (((DeviceInfo)treeNode.Tag).ComPortInfo.ComPort == devForm.devInfo.ComPortInfo.ComPort)
                    {
                        string target = string.Format("Handle: 0x{0:X4}", connectInfo.Handle);
                        SharedObjects.Log.Write(Logging.MsgType.Debug, ComPortTreeForm.moduleName, "Disconnecting Device " + target);
                        if (flag = treeViewUtils.TreeNodeTextSearchAndDestroy(treeNode, target))
                        {
                            break;
                        }
                    }
                    if (flag)
                    {
                        break;
                    }
                }
            }
            else
            {
                flag = false;
            }
            return(flag);
        }
Example #5
0
 public AttFindInfoRsp(DeviceForm deviceForm)
 {
     m_deviceForm    = deviceForm;
     m_sendCmds      = new SendCmds(deviceForm);
     m_attrUuidUtils = new AttrUuidUtils();
     m_attrDataUtils = new AttrDataUtils(deviceForm);
 }
Example #6
0
 public ActionResult Create(DeviceForm form)
 {
     try {
         if (form.Type == DeviceType.GATEWAY &&
             string.IsNullOrWhiteSpace(form.IP))
         {
             ModelState.AddModelError("IP", Resources.IPRequired);
         }
         else if (ModelState.IsValid)
         {
             if (dbAccess.SaveDevice(deviceFactory.CreateDevice(form)))
             {
                 return(RedirectToAction("Index"));
             }
             ModelState.AddModelError("ID", Resources.IDAndSNPresent);
             return(View(form));
         }
         return(View(form));
     }
     catch
     {
         ViewData["ErrorMessage"] = Resources.ErrorWhileSavingDevice;
         return(View());
     }
 }
Example #7
0
        private DeviceForm GetActiveDeviceForm()
        {
            DeviceForm deviceForm = null;

            if (InvokeRequired)
            {
                try
                {
                    Invoke((Delegate) new GetActiveDeviceFormDelegate(GetActiveDeviceForm));
                }
                catch { }
            }
            else
            {
                m_mutex.WaitOne();
                foreach (Control control in plDevice.Controls)
                {
                    if (control.GetType().BaseType == typeof(Form))
                    {
                        Form form = control as Form;
                        if (form != null && form.Visible)
                        {
                            deviceForm = (DeviceForm)form;
                            break;
                        }
                    }
                }
                m_mutex.ReleaseMutex();
            }
            return(deviceForm);
        }
Example #8
0
        private void SendGattDiscoverCmds(TreeNode treeNode, TxDataOut.CmdTypes cmdType)
        {
            DeviceForm deviceForm = GetActiveDeviceFormCallback();

            if (deviceForm == null || treeNode == null || !(treeNode.Name == "HostHandle") && !(treeNode.Name == "SlaveHandle"))
            {
                return;
            }
            string str = treeNode.Text.Replace("Handle: ", "");

            if (str != null)
            {
                try
                {
                    ushort handle = Convert.ToUInt16(str, 16);
                    deviceForm.sendCmds.SendGATT(new HCICmds.GATTCmds.GATT_DiscAllPrimaryServices()
                    {
                        connHandle = handle
                    }, cmdType);
                    deviceForm.sendCmds.SendGATT(new HCICmds.GATTCmds.GATT_DiscAllCharDescs()
                    {
                        connHandle = handle
                    }, cmdType);
                }
                catch { }
            }
        }
        public virtual async Task <IActionResult> UserCode(DeviceForm form)
        {
            if (form == null)
            {
                throw new ArgumentNullException(nameof(form));
            }

            return(await this.Index(form.UserCode));
        }
Example #10
0
        private void AddDeviceForm()
        {
            if (InvokeRequired)
            {
                try
                {
                    Invoke((Delegate) new AddDeviceFormDelegate(AddDeviceForm));
                }
                catch { }
            }
            else
            {
                m_mutex.WaitOne();
                DeviceForm deviceForm = new DeviceForm();
                if (deviceForm == null)
                {
                    return;
                }
                deviceForm.BDAddressNotify     += new EventHandler(DeviceBDAddressNotify);
                deviceForm.ConnectionNotify    += new EventHandler(DeviceConnectionNotify);
                deviceForm.DisconnectionNotify += new EventHandler(DeviceDisconnectionNotify);
                deviceForm.ChangeActiveRoot    += new EventHandler(DeviceChangeActiveRoot);
                deviceForm.CloseActiveDevice   += new EventHandler(DeviceCloseActiveDevice);

                if (deviceForm.DeviceFormInit())
                {
                    deviceForm.TopLevel = false;
                    deviceForm.Parent   = plDevice;
                    deviceForm.Dock     = DockStyle.Fill;
                    foreach (Control control in plDevice.Controls)
                    {
                        if (control.GetType().BaseType == typeof(Form))
                        {
                            Form form = (Form)control;
                            if (form.Visible)
                            {
                                form.Hide();
                                break;
                            }
                        }
                    }
                    deviceForm.Show();
                    AddToTreeDeviceInfo(deviceForm.devInfo, deviceForm);
                    comPortTreeForm.ClearSelectedNode();
                    deviceForm.SendGAPDeviceInit();
                }
                else
                {
                    deviceForm.DeviceFormClose(false);
                }

                m_mutex.ReleaseMutex();
            }
        }
Example #11
0
 public RxDataInThread(DeviceForm deviceForm)
 {
     rxDataInRspData = new RxDataInRspData(deviceForm);
     taskThread      = new Thread(new ParameterizedThreadStart(TaskThread));
     taskThread.Name = "RxDataInThread";
     taskThread.Start(threadData);
     Thread.Sleep(0);
     while (!taskThread.IsAlive)
     {
     }
 }
Example #12
0
        public bool AddConnectionInfo(DeviceForm devForm)
        {
            bool        flag        = true;
            ConnectInfo connectInfo = devForm.GetConnectInfo();

            if (devForm != null)
            {
                foreach (TreeNode treeNode in tvPorts.Nodes)
                {
                    DeviceInfo deviceInfo = (DeviceInfo)treeNode.Tag;
                    if (deviceInfo.ComPortInfo.ComPort == devForm.devInfo.ComPortInfo.ComPort)
                    {
                        TreeNode node1 = new TreeNode();
                        node1.Name        = ComPortTreeForm.NodeNames.ConnectionInfo.ToString();
                        node1.Text        = string.Format("Connection Info:");
                        node1.NodeFont    = underlineFont;
                        node1.Tag         = treeNode.Tag;
                        node1.ToolTipText = string.Format("Device Connection Information (Over the Air Connection)");

                        TreeNode node2 = new TreeNode();
                        node2.Name = ComPortTreeForm.NodeNames.SlaveHandle.ToString();
                        node2.Text = string.Format("Handle: 0x{0:X4}", connectInfo.Handle);
                        deviceInfo.ConnectInfo.Handle = connectInfo.Handle;
                        node2.Tag         = treeNode.Tag;
                        node2.ToolTipText = string.Format("Connection Handle\nSelect Handle Then Right Click To See Options.");

                        TreeNode node3 = new TreeNode();
                        node3.Name        = ComPortTreeForm.NodeNames.SlaveAddrType.ToString();
                        node3.Text        = string.Format("Addr Type: 0x{0:X2} ({1:S})", connectInfo.AddrType, devUtils.GetGapAddrTypeStr(connectInfo.AddrType));
                        node3.Tag         = treeNode.Tag;
                        node3.ToolTipText = string.Format("Address Type");

                        TreeNode node4 = new TreeNode();
                        node4.Name        = ComPortTreeForm.NodeNames.SlaveBda.ToString();
                        node4.Text        = string.Format("Slave BDA: {0:S}", connectInfo.BDA);
                        node4.Tag         = treeNode.Tag;
                        node4.ToolTipText = string.Format("Slave Bluetooth Device Address\nSelect Address Then Right Click To See Options.");

                        treeNode.Nodes.Add(node1);
                        node1.Nodes.Add(node2);
                        node1.Nodes.Add(node3);
                        node1.Nodes.Add(node4);
                        node1.Expand();
                    }
                }
            }
            else
            {
                flag = false;
            }
            return(flag);
        }
Example #13
0
        public void ShouldNotCreateAnythingIfTheFormIsNull()
        {
            DeviceForm form = null;

            var result = (ViewResult)controllerUT.Create(form);

            dbAccessMock.Verify(
                dbm => dbm.SaveDevice(It.IsAny <IDevice>()),
                Times.Never());

            Assert.That(controllerUT.ViewData["ErrorMessage"], Is.Not.Null);
            Assert.That(result.Model, Is.Null);
        }
Example #14
0
        private void tsmiCloseDevice_Click(object sender, EventArgs e)
        {
            m_mutex.WaitOne();
            DeviceForm activeDeviceForm = GetActiveDeviceForm();

            if (activeDeviceForm != null)
            {
                activeDeviceForm.DeviceFormClose(true);
                activeDeviceForm.Close();
                comPortTreeForm.RemovePort(activeDeviceForm.devInfo.ComPortInfo.ComPort);
            }
            comPortTreeForm.FindNodeToOpen();
            m_mutex.ReleaseMutex();
        }
Example #15
0
        public bool FindNodeToOpen()
        {
            bool flag = true;

            foreach (TreeNode treeNode in tvPorts.Nodes)
            {
                DeviceForm deviceForm = ((DeviceInfo)treeNode.Tag).DevForm;
                if (deviceForm != null)
                {
                    deviceForm.Show();
                    treeNode.NodeFont = underlineFont;
                }
            }
            return(flag);
        }
Example #16
0
        private void tsmiClearTransmitQ_Click(object sender, EventArgs e)
        {
            DeviceForm deviceForm = GetActiveDeviceFormCallback();

            if (deviceForm == null)
            {
                return;
            }
            int qlength = deviceForm.threadMgr.txDataOut.dataQ.GetQLength();

            deviceForm.threadMgr.txDataOut.dataQ.ClearQ();
            string msg = "Pending Transmit Messages Cleared\n" + qlength.ToString() + " Messages Were Discarded\n";

            deviceForm.DisplayMsg(SharedAppObjs.MsgType.Info, msg);
            msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Info, msg);
        }
Example #17
0
        public void ShouldAddAModelStateErrorIfADeviceWithSameIDAndSerialNumberIsPresent()
        {
            var form = new DeviceForm
            {
                Type            = DeviceType.WATER_METER,
                ID              = "AlreadyExists",
                SerialNumber    = "AlreadyExists",
                FirmwareVersion = "1.5",
                State           = "Offline"
            };

            var result = (ViewResult)controllerUT.Create(form);

            Assert.That(result.Model, Is.EqualTo(form));
            Assert.False(controllerUT.ModelState.IsValid);
        }
Example #18
0
        public bool ChangeActiveRoot(DeviceForm devForm)
        {
            bool flag = false;

            if (devForm != null)
            {
                foreach (TreeNode treeNode in tvPorts.Nodes)
                {
                    treeNode.NodeFont = !(((DeviceInfo)treeNode.Tag).DevName == devForm.devInfo.DevName) ? regularFont : underlineFont;
                }
            }
            else
            {
                flag = false;
            }
            return(flag);
        }
Example #19
0
        public bool AddDeviceInfo(DeviceForm devForm)
        {
            bool   flag = true;
            string str  = devForm.BDAddressStr;

            if (devForm != null)
            {
                foreach (TreeNode treeNode in tvPorts.Nodes)
                {
                    DeviceInfo deviceInfo = (DeviceInfo)treeNode.Tag;
                    if (deviceInfo.ComPortInfo.ComPort == devForm.devInfo.ComPortInfo.ComPort)
                    {
                        TreeNode node1 = new TreeNode();
                        node1.Name        = ComPortTreeForm.NodeNames.DeviceInfo.ToString();
                        node1.Text        = string.Format("Device Info:");
                        node1.NodeFont    = underlineFont;
                        node1.Tag         = treeNode.Tag;
                        node1.ToolTipText = string.Format("Information About The Direct Connect Device.");
                        TreeNode node2 = new TreeNode();
                        node2.Name        = ComPortTreeForm.NodeNames.HostHandle.ToString();
                        node2.Text        = string.Format("Handle: 0x{0:X4}", 65534);
                        deviceInfo.Handle = 65534;
                        node2.Tag         = treeNode.Tag;
                        node2.ToolTipText = string.Format("Device Handle\nSelect Handle Then Right Click To See Options.");
                        TreeNode node3 = new TreeNode();
                        node3.Name        = ComPortTreeForm.NodeNames.HostBda.ToString();
                        node3.Text        = string.Format("BDAddr: {0:S}", str);
                        node3.Tag         = treeNode.Tag;
                        node3.ToolTipText = string.Format("Bluetooth Device Address\nSelect Address Then Right Click To See Options.");
                        if (treeNode.FirstNode.NextNode == null)
                        {
                            treeNode.Nodes.Add(node1);
                            node1.Nodes.Add(node2);
                            node1.Nodes.Add(node3);
                            node1.Expand();
                        }
                    }
                }
            }
            else
            {
                flag = false;
            }
            return(flag);
        }
Example #20
0
        public void ShouldCreateANewElectricityMeter()
        {
            var form = new DeviceForm
            {
                Type            = DeviceType.ELECTRICITY_METER,
                ID              = "42",
                SerialNumber    = "42",
                FirmwareVersion = "1.1",
                State           = "Disconnected"
            };

            var result = (RedirectToRouteResult)controllerUT.Create(form);

            dbAccessMock.Verify(
                dbm => dbm.SaveDevice(It.Is <IDevice>(d => d is ElectricityMeter)),
                Times.Once());

            Assert.That(result.RouteValues["action"], Is.EqualTo("Index"));
        }
Example #21
0
        public void ShouldNotCreateADeviceIfTheSerialNumberIsMissing()
        {
            var form = new DeviceForm
            {
                Type            = DeviceType.WATER_METER,
                ID              = "42",
                SerialNumber    = null,
                FirmwareVersion = "1.4",
                State           = "Connected"
            };

            controllerUT.ModelState.AddModelError("SerialNumber", "Missing serial number");
            var result = (ViewResult)controllerUT.Create(form);

            dbAccessMock.Verify(
                dbm => dbm.SaveDevice(It.Is <IDevice>(d => d is WaterMeter)),
                Times.Never());

            Assert.That(result.Model, Is.EqualTo(form));
        }
Example #22
0
        public void ShouldCreateANewGateway()
        {
            var form = new DeviceForm
            {
                Type            = DeviceType.GATEWAY,
                ID              = "42",
                SerialNumber    = "42",
                FirmwareVersion = "1.2",
                State           = "Online",
                IP              = "5.6.7.8",
                Port            = 666
            };

            var result = (RedirectToRouteResult)controllerUT.Create(form);

            dbAccessMock.Verify(
                dbm => dbm.SaveDevice(It.Is <IDevice>(d => d is Gateway)),
                Times.Once());

            Assert.That(result.RouteValues["action"], Is.EqualTo("Index"));
        }
Example #23
0
        public void ShouldNotCreateAGatewayIfTheIPIsMissing()
        {
            var form = new DeviceForm
            {
                Type            = DeviceType.GATEWAY,
                ID              = "42",
                SerialNumber    = "42",
                FirmwareVersion = "1.6",
                State           = "Connected",
                IP              = null,
                Port            = null
            };

            var result = (ViewResult)controllerUT.Create(form);

            dbAccessMock.Verify(
                dbm => dbm.SaveDevice(It.Is <IDevice>(d => d is WaterMeter)),
                Times.Never());

            Assert.That(result.Model, Is.EqualTo(form));
        }
Example #24
0
 private void DeviceChangeActiveRoot(object sender, EventArgs e)
 {
     if (InvokeRequired)
     {
         try
         {
             Invoke((Delegate) new DeviceChangeActiveRootDelegate(DeviceChangeActiveRoot), sender, e);
         }
         catch { }
     }
     else
     {
         m_mutex.WaitOne();
         DeviceForm devForm = sender as DeviceForm;
         if (devForm != null)
         {
             comPortTreeForm.ChangeActiveRoot(devForm);
         }
         m_mutex.ReleaseMutex();
     }
 }
Example #25
0
 private void DeviceDisconnectionNotify(object sender, EventArgs e)
 {
     if (InvokeRequired)
     {
         try
         {
             Invoke((Delegate) new DeviceDisconnectionNotifyDelegate(DeviceConnectionNotify), sender, e);
         }
         catch { }
     }
     else
     {
         m_mutex.WaitOne();
         DeviceForm devForm = sender as DeviceForm;
         if (devForm != null)
         {
             comPortTreeForm.DisconnectDevice(devForm);
         }
         m_mutex.ReleaseMutex();
     }
 }
Example #26
0
        public void ShouldCreateAWaterMeter()
        {
            var form = new DeviceForm
            {
                Type            = DeviceType.WATER_METER,
                ID              = "42",
                SerialNumber    = "42",
                FirmwareVersion = "1.0",
                State           = "Connected"
            };

            var actual = deviceFactoryUT.CreateDevice(form);

            Assert.That(actual, Is.InstanceOf <WaterMeter>());

            var actualDevice = actual as WaterMeter;

            Assert.That(actualDevice.ID, Is.EqualTo(form.ID));
            Assert.That(actualDevice.SerialNumber, Is.EqualTo(form.SerialNumber));
            Assert.That(actualDevice.FirmwareVersion, Is.EqualTo(form.FirmwareVersion));
            Assert.That(actualDevice.State, Is.EqualTo(form.State));
        }
Example #27
0
        public void ShouldCreateAnElectricityMeter()
        {
            var form = new DeviceForm
            {
                Type            = DeviceType.ELECTRICITY_METER,
                ID              = "42",
                SerialNumber    = "42",
                FirmwareVersion = "1.1",
                State           = "Disconnected"
            };

            var actual = deviceFactoryUT.CreateDevice(form);

            Assert.That(actual, Is.InstanceOf <ElectricityMeter>());

            var actualDevice = actual as ElectricityMeter;

            Assert.That(actualDevice.ID, Is.EqualTo(form.ID));
            Assert.That(actualDevice.SerialNumber, Is.EqualTo(form.SerialNumber));
            Assert.That(actualDevice.FirmwareVersion, Is.EqualTo(form.FirmwareVersion));
            Assert.That(actualDevice.State, Is.EqualTo(form.State));
        }
Example #28
0
 public RspDataInThread(DeviceForm deviceForm)
 {
     ExtCmdStatus            = new ExtCmdStatus();
     AttErrorRsp             = new AttErrorRsp();
     m_attFindInfoRsp        = new AttFindInfoRsp(deviceForm);
     m_attFindByTypeValueRsp = new AttFindByTypeValueRsp(deviceForm);
     m_attReadByTypeRsp      = new AttReadByTypeRsp(deviceForm);
     AttReadRsp                 = new AttReadRsp(deviceForm);
     AttReadBlobRsp             = new AttReadBlobRsp(deviceForm);
     m_attReadByGrpTypeRsp      = new AttReadByGrpTypeRsp(deviceForm);
     AttWriteRsp                = new AttWriteRsp();
     AttPrepareWriteRsp         = new AttPrepareWriteRsp();
     AttExecuteWriteRsp         = new AttExecuteWriteRsp();
     AttHandleValueNotification = new AttHandleValueNotification(deviceForm);
     AttHandleValueIndication   = new AttHandleValueIndication(deviceForm);
     m_taskThread               = new Thread(new ParameterizedThreadStart(TaskThread));
     m_taskThread.Name          = moduleName;
     m_taskThread.Start(m_threadData);
     Thread.Sleep(0);
     while (!m_taskThread.IsAlive)
     {
     }
 }
Example #29
0
        public bool RemoveAll()
        {
            bool flag = false;

            if (tvPorts.Nodes != null)
            {
                foreach (TreeNode treeNode in tvPorts.Nodes)
                {
                    if (treeNode != null)
                    {
                        DeviceForm deviceForm = ((DeviceInfo)treeNode.Tag).DevForm;
                        deviceForm.DeviceFormClose(true);
                        deviceForm.Close();
                        treeViewUtils.RemoveTextFromTree((TreeView)tvPorts, deviceForm.devInfo.ComPortInfo.ComPort);
                    }
                }
            }
            else
            {
                flag = false;
            }
            return(flag);
        }
Example #30
0
        /// <summary>
        /// <see cref="IDeviceFactory.CreateDevice(DeviceForm)"/>
        /// </summary>
        public IDevice CreateDevice(DeviceForm form)
        {
            switch (form.Type)
            {
            case DeviceType.WATER_METER:
                return(new WaterMeter
                {
                    ID = form.ID,
                    SerialNumber = form.SerialNumber,
                    FirmwareVersion = form.FirmwareVersion,
                    State = form.State
                });

            case DeviceType.ELECTRICITY_METER:
                return(new ElectricityMeter
                {
                    ID = form.ID,
                    SerialNumber = form.SerialNumber,
                    FirmwareVersion = form.FirmwareVersion,
                    State = form.State
                });

            case DeviceType.GATEWAY:
                return(new Gateway
                {
                    ID = form.ID,
                    SerialNumber = form.SerialNumber,
                    FirmwareVersion = form.FirmwareVersion,
                    State = form.State,
                    IP = form.IP,
                    Port = form.Port
                });

            default:
                throw new ArgumentException("Unknown device type");
            }
        }