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;
}
}