Beispiel #1
0
        /// <summary>
        /// Tests the Purging of a device
        /// </summary>
        /// <param name="ftManager">The ftManager instance.</param>
        /// <param name="deviceID">The device identifier.</param>
        /// <returns>Task{Boolean}.</returns>
        public async Task <Boolean> PurgeTest(FTManager ftManager, String deviceID)
        {
            try
            {
                int errorCode = (int)ERROR_CODES.SUCCESS;

                double start = DateTime.Now.TimeOfDay.TotalSeconds;
                String s     = "\r\n\r\nStarted PurgeLoopbackTest\r\n";
                AppendLogFile(s);
                AppendConsole(s);

                Boolean res = await Task.Run <Boolean>(async() =>
                {
                    for (int i = 0; i < 100; i++)
                    {
                        byte[] dataTx = new byte[10];
                        byte[] dataRx = new byte[10];

                        // Create device list...
                        var devList = ftManager.GetDeviceList();
                        if (devList.Count == 0)
                        {
                            errorCode = (int)ERROR_CODES.NO_DEVICES_FOUND;
                        }

                        // Find device in the list again...
                        IFTDevice dev = ftManager.OpenByDeviceID(deviceID);
                        if (dev == null)
                        {
                            errorCode = (int)ERROR_CODES.FAILED_TO_OPEN;
                        }

                        await SetUARTSettings(dev);

                        // Generate some random data...
                        Random rnd = new Random();
                        for (int j = 0; j < dataTx.Length; j++)
                        {
                            dataTx[j] = (byte)rnd.Next(0, 0xff);
                        }
                        // Write then read back the data...
                        await dev.WriteAsync(dataTx, (uint)dataTx.Length);
                        dev.Purge(true, false);

                        for (int j = 0; j < dataTx.Length; j++)
                        {
                            dataTx[j] = (byte)rnd.Next(0, 0xff);
                        }
                        // Write then read back the data...
                        await dev.WriteAsync(dataTx, (uint)dataTx.Length);

                        uint count = await dev.ReadAsync(dataRx, (uint)dataTx.Length);
                        if (count < dataTx.Length)
                        {
                            errorCode = (int)ERROR_CODES.FAILED_TO_READ_ALL_DATA;
                            dev.Close();
                            return(false);
                        }

                        for (int j = 0; j < dataTx.Length; j++)
                        {
                            if (dataTx[j] != dataRx[j])
                            {
                                errorCode = (int)ERROR_CODES.DATA_INTEGRITY;
                                return(false);
                            }
                        }

                        dev.Close();
                    }

                    return(true);
                }).AsAsyncOperation();

                double finish = DateTime.Now.TimeOfDay.TotalSeconds;
                s = String.Format(
                    @"Finished PurgeLoopbackTest:
                                Result: {0}
                                ErrorCode: {1}
                                Duration: {2}secs",
                    res.ToString().ToLower(),
                    errorCode,
                    Math.Round(finish - start, 2));
                AppendLogFile(s);
                AppendConsole(s);

                return(res);
            }
            catch
            {
                return(false);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Tests the QueueStatus property of an IFTDevice.
        /// </summary>
        /// <param name="ftManager">The ftManager instance.</param>
        /// <param name="deviceID">The device identifier.</param>
        /// <returns>Task{Boolean}.</returns>
        public async Task <Boolean> QueueStatusTest(FTManager ftManager, String deviceID)
        {
            try
            {
                String s           = "";
                double start       = 0;
                int    errorCode   = (int)ERROR_CODES.SUCCESS;
                uint   TOTAL_BYTES = 32769;
                uint   PACKET_SIZE = 1024;
                uint   iterations  = TOTAL_BYTES / PACKET_SIZE;

                Boolean res = await Task.Run <Boolean>(async() =>
                {
                    byte[] dataTx = new byte[TOTAL_BYTES];
                    byte[] dataRx = new byte[TOTAL_BYTES];

                    // Generate some random data...
                    Random rnd = new Random();
                    for (int j = 0; j < dataTx.Length; j++)
                    {
                        dataTx[j] = (byte)rnd.Next(0, 0xff);
                    }

                    // Create device list...
                    var devList = ftManager.GetDeviceList();
                    if (devList.Count == 0)
                    {
                        errorCode = (int)ERROR_CODES.NO_DEVICES_FOUND;
                    }

                    // Find device in the list again...
                    IFTDevice dev = ftManager.OpenByDeviceID(deviceID);
                    if (dev == null)
                    {
                        errorCode = (int)ERROR_CODES.FAILED_TO_OPEN;
                    }

                    await SetUARTSettings(dev);

                    start = DateTime.Now.TimeOfDay.TotalSeconds;
                    s     = "\r\n\r\nStarted QueueStatusTest\r\n";
                    AppendLogFile(s);
                    AppendConsole(s);

                    await dev.WriteAsync(dataTx, 128);
                    dev.Purge(true, false);

                    for (int j = 0; j < TOTAL_BYTES; j++)
                    {
                        dataTx[j] = (byte)j;
                    }

                    await dev.ResetAsync();

                    await dev.WriteAsync(dataTx, 10);

                    while (dev.GetQueueStatus() != 10)
                    {
                        //return false;
                    }

                    if (await dev.ReadAsync(dataRx, 10) != 10)
                    {
                        return(false);
                    }

                    for (int j = 0; j < 10; j++)
                    {
                        if (dataTx[j] != dataRx[j])
                        {
                            errorCode = (int)ERROR_CODES.DATA_INTEGRITY;
                            return(false);
                        }
                    }

                    dev.Close();

                    return(true);
                }).AsAsyncOperation();

                double finish = DateTime.Now.TimeOfDay.TotalSeconds;
                s = String.Format(
                    @"Finished QueueStatusTest:
                                Result: {0}
                                ErrorCode: {1}
                                Duration: {2}secs",
                    res.ToString().ToLower(),
                    errorCode,
                    Math.Round(finish - start, 2));
                AppendLogFile(s);
                AppendConsole(s);

                return(res);
            }
            catch
            {
                return(false);
            }
        }