RFID.RFIDInterface.Source_Antenna_TypeConverter.ConvertFrom C# (CSharp) Method

ConvertFrom() public method

public ConvertFrom ( System context, System culture, Object value ) : object
context System
culture System
value Object
return object
        public override object ConvertFrom(
            System.ComponentModel.ITypeDescriptorContext context,
            System.Globalization.CultureInfo             culture,
            Object                                       value
        )
        {
            if ( String.IsNullOrEmpty( value as string ) )
            {
                return null; // TODO : supply err msg
            }

            String[ ] antennaData = ( value as String ).Split( new Char[ ] { ',' } );

            if ( null == antennaData )
            {
                return null; // TODO : supply err msg ~ improper arg
            }

            if ( 7 != antennaData.Length ) // 8 with threshold value
            {
                return null; // TODO : supply err msg ~ improper arg count
            }

            try
            {
                // TODO : split out parsing ? to better define which parms bad...

                Source_Antenna antenna = new Source_Antenna( byte.Parse( antennaData[ 0 ] ) );

                rfid.Constants.AntennaPortState state =
                    ( rfid.Constants.AntennaPortState ) Enum.Parse
                    (
                        typeof( rfid.Constants.AntennaPortState ),
                        antennaData[ 1 ].ToUpper( )
                    );

                antenna.State                 = state;
                antenna.PowerLevel            = UInt16.Parse(antennaData[2]);
                antenna.DwellTime             = UInt16.Parse( antennaData[ 3 ] );
                antenna.NumberInventoryCycles = UInt16.Parse( antennaData[ 4 ] );
                antenna.PhysicalPort          = byte.Parse( antennaData[ 5 ] );

                // Currently Rx is explicitly tied to Tx so cannot be set - ignore val
                // antenna.PhysicalRxPort        = UInt32.Parse( antennaData[ 6 ] );

                // now using global threshold not per antenna...
                // antenna.AntennaSenseThreshold = UInt32.Parse( antennaData[ 7 ] );
                antenna.AntennaSenseThreshold = 0; // if using Source_Antenna to store, uses glob var

                return antenna;
            }
            catch ( Exception )
            {
                // TODO : supply err msg ~ bad arg

                return null;
            }
        }
Source_Antenna_TypeConverter