// Overrides the ConvertFrom method of TypeConverter.
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (value is string)
            {
                uint16 result = ushort.Parse((string)value);
                return(result);
            }

            return(base.ConvertFrom(context, culture, value));
        }
        /// <summary>
        /// Updates the Properties used in CommonData.
        /// </summary>
        /// <param name="data">The SYMO823M data.</param>
        public void Refresh(SYMO823MData data)
        {
            if (data != null)
            {
                // Common Model (C001)
                SunSpecID     = data.SunSpecID;
                C001ID        = data.C001ID;
                C001Length    = data.C001Length;
                Manufacturer  = data.Manufacturer;
                Model         = data.Model;
                Options       = data.Options;
                Version       = data.Version;
                SerialNumber  = data.SerialNumber;
                DeviceAddress = data.DeviceAddress;
            }

            Status = data?.Status ?? Uncertain;
        }
Example #3
0
        ErrorCode queue_scrypt_kernel(clState _clState, dev_blk_ctx blk)
        {
            //Scantime


            blk.work.midstate0 = new uint4(0);

            blk.work.midstate16 = new uint4(1);



            // unsigned char *midstate = blk->work->midstate;
            int    num = 0;
            uint16 le_target;

            le_target          = new uint16(Convert.ToUInt16(blk.work.device_target + 28));
            _clState.cldata    = blk.work.data;
            _clState.CLBuffer0 = new uint4(0);

            _clState.outputBuffer = new Mem();

            _clState.padbuffer8 = new uint4(0);


            OpenCL.Net.Event       clevent;
            OpenCL.Net.ImageFormat clImageFormat = new OpenCL.Net.ImageFormat(ChannelOrder.RGBA, ChannelType.Unsigned_Int8);
            ErrorCode err1;

            byte[] inputByteArray = new byte[1024];


            //buffer0 = (OpenCL.Net.Mem)OpenCL.Net.Cl.CreateImage2D(_clState.cl_context,                 OpenCL.Net.MemFlags.CopyHostPtr | OpenCL.Net.MemFlags.ReadOnly, clImageFormat,                                              (IntPtr)1024, (IntPtr)1,                                                  (IntPtr)0, inputByteArray, out err1);
            // buffer0 = (OpenCL.Net.Mem)inputByteArray;
            // byte[] byteSrcImage2DData = new byte[srcIMGBytesSize];
            Mem buffer0 = (Mem)OpenCL.Net.Cl.CreateBuffer(_clState.cl_context, MemFlags.ReadWrite, 1024, out err1);


            ErrorCode status = Cl.EnqueueWriteBuffer(_clState.cl_command_queue, buffer0, OpenCL.Net.Bool.True, (IntPtr)0, (IntPtr)1024, _clState.cldata, 0, null, out clevent);

            //
//      status = OpenCL.Net.Cl.SetKernelArg(_clState.Kernel,  num++, sizeof(var), (void *)&var)

            // CL_SET_VARG(args, var) status |= clSetKernelArg(*kernel, num++, args * sizeof(uint), (void *)var)



            int intPtrSize = 0;

            intPtrSize = Marshal.SizeOf(typeof(IntPtr));



            OpenCL.Net.Cl.SetKernelArg(_clState.cl_kernel, 0, (IntPtr)intPtrSize, _clState.CLBuffer0);


            OpenCL.Net.Cl.SetKernelArg(_clState.cl_kernel, 1, _clState.outputBuffer);
            OpenCL.Net.Cl.SetKernelArg(_clState.cl_kernel, 2, _clState.padbuffer8);
            OpenCL.Net.Cl.SetKernelArg(_clState.cl_kernel, 3, blk.work.midstate0);
            OpenCL.Net.Cl.SetKernelArg(_clState.cl_kernel, 4, blk.work.midstate16);
            //   CL_SET_VARG(4, &midstate[0]);
            //	CL_SET_VARG(4, &midstate[16]);
            OpenCL.Net.Cl.SetKernelArg(_clState.cl_kernel, 5, le_target);
            //error = Cl.SetKernelArg(kernel, 0, (IntPtr)intPtrSize, inputImage2DBuffer);
            CheckErr(status, "Cl.SetKernelArg");
            return(status);
        }
Example #4
0
        /// <summary>
        /// Updates the Properties used in InternalData.
        /// </summary>
        /// <param name="data">The BControl data.</param>
        public void Refresh(BControlData data)
        {
            if (data != null)
            {
                C_SunSpec_ID      = data.C_SunSpec_ID;
                C_SunSpec_DID1    = data.C_SunSpec_DID1;
                C_SunSpec_Length1 = data.C_SunSpec_Length1;
                C_Manufacturer    = data.C_Manufacturer;
                C_Model           = data.C_Model;
                C_Options         = data.C_Options;
                C_Version         = data.C_Version;
                C_SerialNumber    = data.C_SerialNumber;
                C_DeviceAddress   = data.C_DeviceAddress;
                C_SunSpec_DID2    = data.C_SunSpec_DID2;
                C_SunSpec_Length2 = data.C_SunSpec_Length2;
                M_AC_Current      = data.M_AC_Current;
                M_AC_Current_A    = data.M_AC_Current_A;
                M_AC_Current_B    = data.M_AC_Current_B;
                M_AC_Current_C    = data.M_AC_Current_C;
                M_AC_Current_SF   = data.M_AC_Current_SF;
                M_AC_Voltage_LN   = data.M_AC_Voltage_LN;
                M_AC_Voltage_AN   = data.M_AC_Voltage_AN;
                M_AC_Voltage_BN   = data.M_AC_Voltage_BN;
                M_AC_Voltage_CN   = data.M_AC_Voltage_CN;
                M_AC_Voltage_LL   = data.M_AC_Voltage_LL;
                M_AC_Voltage_AB   = data.M_AC_Voltage_AB;
                M_AC_Voltage_BC   = data.M_AC_Voltage_BC;
                M_AC_Voltage_CA   = data.M_AC_Voltage_CA;
                M_AC_Voltage_SF   = data.M_AC_Voltage_SF;
                M_AC_Freq         = data.M_AC_Freq;
                M_AC_Freq_SF      = data.M_AC_Freq_SF;
                M_AC_Power        = data.M_AC_Power;
                M_AC_Power_A      = data.M_AC_Power_A;
                M_AC_Power_B      = data.M_AC_Power_B;
                M_AC_Power_C      = data.M_AC_Power_C;
                M_AC_Power_SF     = data.M_AC_Power_SF;
                M_AC_VA           = data.M_AC_VA;
                M_AC_VA_A         = data.M_AC_VA_A;
                M_AC_VA_B         = data.M_AC_VA_B;
                M_AC_VA_C         = data.M_AC_VA_C;
                M_AC_VA_SF        = data.M_AC_VA_SF;
                M_AC_VAR          = data.M_AC_VAR;
                M_AC_VAR_A        = data.M_AC_VAR_A;
                M_AC_VAR_B        = data.M_AC_VAR_B;
                M_AC_VAR_C        = data.M_AC_VAR_C;
                M_AC_VAR_SF       = data.M_AC_VAR_SF;
                M_AC_PF           = data.M_AC_PF;
                M_AC_PF_A         = data.M_AC_PF_A;
                M_AC_PF_B         = data.M_AC_PF_B;
                M_AC_PF_C         = data.M_AC_PF_C;
                M_AC_PF_SF        = data.M_AC_PF_SF;
                M_Exported        = data.M_Exported;
                M_Exported_A      = data.M_Exported_A;
                M_Exported_B      = data.M_Exported_B;
                M_Exported_C      = data.M_Exported_C;
                M_Imported        = data.M_Imported;
                M_Imported_A      = data.M_Imported_A;
                M_Imported_B      = data.M_Imported_B;
                M_Imported_C      = data.M_Imported_C;
                M_Energy_W_SF     = data.M_Energy_W_SF;
                M_Exported_VA     = data.M_Exported_VA;
                M_Exported_VA_A   = data.M_Exported_VA_A;
                M_Exported_VA_B   = data.M_Exported_VA_B;
                M_Exported_VA_C   = data.M_Exported_VA_C;
                M_Imported_VA     = data.M_Imported_VA;
                M_Imported_VA_A   = data.M_Imported_VA_A;
                M_Imported_VA_B   = data.M_Imported_VA_B;
                M_Imported_VA_C   = data.M_Imported_VA_C;
                M_Energy_VA_SF    = data.M_Energy_VA_SF;
                M_Import_VARh_Q1  = data.M_Import_VARh_Q1;
                M_Import_VARh_Q1A = data.M_Import_VARh_Q1A;
                M_Import_VARh_Q1B = data.M_Import_VARh_Q1B;
                M_Import_VARh_Q1C = data.M_Import_VARh_Q1C;
                M_Import_VARh_Q2  = data.M_Import_VARh_Q2;
                M_Import_VARh_Q2A = data.M_Import_VARh_Q2A;
                M_Import_VARh_Q2B = data.M_Import_VARh_Q2B;
                M_Import_VARh_Q2C = data.M_Import_VARh_Q2C;
                M_Import_VARh_Q3  = data.M_Import_VARh_Q3;
                M_Import_VARh_Q3A = data.M_Import_VARh_Q3A;
                M_Import_VARh_Q3B = data.M_Import_VARh_Q3B;
                M_Import_VARh_Q3C = data.M_Import_VARh_Q3C;
                M_Import_VARh_Q4  = data.M_Import_VARh_Q4;
                M_Import_VARh_Q4A = data.M_Import_VARh_Q4A;
                M_Import_VARh_Q4B = data.M_Import_VARh_Q4B;
                M_Import_VARh_Q4C = data.M_Import_VARh_Q4C;
                M_Energy_VAR_SF   = data.M_Energy_VAR_SF;
                M_Events          = data.M_Events;
                C_SunSpec_DID3    = data.C_SunSpec_DID3;
                C_SunSpec_Length3 = data.C_SunSpec_Length3;
            }

            Status = data?.Status ?? Uncertain;
        }
	inline void packI(uint16 r, uint16 g, uint16 b, uint16 a, PixelFormat pf,  void* dest)
	{
		PixelUtil::packColour((float)r/65535.0f, (float)g/65535.0f, 
			(float)b/65535.0f, (float)a/65535.0f, pf, dest);
	}
Example #6
0
        public static void compressDXT1(ColorBlock rgba, BlockDXT1 dxtBlock)
        {
            if (rgba.isSingleColor())
            {
                OptimalCompress.compressDXT1(rgba.color[0], dxtBlock);
            }
            else
            {
                // read block
                Vector3[] block = new Vector3[16];
                extractColorBlockRGB(rgba, block);
#if true
                // find min and max colors
                Vector3 maxColor = Vector3.zero, minColor = Vector3.zero;
                findMinMaxColorsBox(block, 16, ref maxColor, ref minColor);

                selectDiagonal(block, 16, ref maxColor, ref minColor);

                insetBBox(ref maxColor, ref minColor);
#else
                float[] weights = new float[16] {
                    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
                };
                Vector3[] cluster = new Vector3[4];
                int       count   = Fitting.Compute4Means(16, block, weights, Vector3.one, cluster);

                Vector3 maxColor, minColor;
                float   bestError = FLT_MAX;

                for (int i = 1; i < 4; i++)
                {
                    for (int j = 0; j < i; j++)
                    {
                        uint16 color0 = roundAndExpand(&cluster[i]);
                        uint16 color1 = roundAndExpand(&cluster[j]);

                        float error = evaluatePaletteError4(block, cluster[i], cluster[j]);
                        if (error < bestError)
                        {
                            bestError = error;
                            maxColor  = cluster[i];
                            minColor  = cluster[j];
                        }
                    }
                }
#endif

                ushort color0 = roundAndExpand(ref maxColor);
                ushort color1 = roundAndExpand(ref minColor);

                if (color0 < color1)
                {
                    swap(ref maxColor, ref minColor);
                    swap(ref color0, ref color1);
                }

                dxtBlock.col0    = new Color16(color0);
                dxtBlock.col1    = new Color16(color1);
                dxtBlock.indices = computeIndices4(block, maxColor, minColor);

                optimizeEndPoints4(block, dxtBlock);
            }
        }
Example #7
0
 inline void packI(uint16 r, uint16 g, uint16 b, uint16 a, PixelFormat pf, void *dest)
 {
     PixelUtil::packColour((float)r / 65535.0f, (float)g / 65535.0f,
                           (float)b / 65535.0f, (float)a / 65535.0f, pf, dest);
 }