/// <summary>
        /// Allows an application to specify whether or not a radio module's
        /// logical antenna port is enabled for subsequent tag operations.  The
        /// antenna-port state cannot be set while a radio module is executing
        /// a tag-protocol operation.
        /// </summary>
        /// <param name="portState">The new state of the logical antenna port. </param>
        /// <returns></returns>
        public Result SetAntennaPortState(AntennaPortState portState)
        {
            if (portState == AntennaPortState.UNKNOWN)
            {
                return(Result.INVALID_PARAMETER);
            }

            return(m_Result = AntennaPortSetState(0, portState));
        }
        /// <summary>
        /// Converts the given object to the type of this converter, using the specified
        ///     context and culture information.
        /// </summary>
        /// <param name="context">An System.ComponentModel.ITypeDescriptorContext that provides a format context.</param>
        /// <param name="culture">The System.Globalization.CultureInfo to use as the current culture.</param>
        /// <param name="value">The System.Object to convert.</param>
        /// <returns>An System.Object that represents the converted value.</returns>
        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 (8 != antennaData.Length)
            {
                return(null); // TODO : supply err msg ~ improper arg count
            }

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

                Antenna antenna = new Antenna(UInt32.Parse(antennaData[0]));

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

                antenna.State                 = state;
                antenna.PowerLevel            = UInt32.Parse(antennaData[2]);
                antenna.DwellTime             = UInt32.Parse(antennaData[3]);
                antenna.NumberInventoryCycles = UInt32.Parse(antennaData[4]);
                antenna.PhysicalTxPort        = UInt32.Parse(antennaData[5]);

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

                antenna.AntennaSenseThreshold = UInt32.Parse(antennaData[7]);

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

                return(null);
            }
        }
        /// <summary>
        /// Allows an application to specify whether or not a radio module's
        /// logical antenna port is enabled for subsequent tag operations.  The
        /// antenna-port state cannot be set while a radio module is executing
        /// a tag-protocol operation.
        /// </summary>
        /// <param name="port">antenna port</param>
        /// <param name="portState">The new state of the logical antenna port.</param>
        /// <returns></returns>
        public Result SetAntennaPortState(uint port, AntennaPortState portState)
        {
            if (portState == AntennaPortState.UNKNOWN)
            {
                return(Result.INVALID_PARAMETER);
            }

            m_AntennaList[(int)port].State = portState;

            return(m_Result = AntennaPortSetState(port, portState));
        }
        public Result AntennaPortSetState(UInt32 antennaPort, AntennaPortState state)
        {
            uint registerValue = 0;

            // First, tell the MAC which antenna descriptors we'll be reading and
            // verify that it was a valid selector
            MacWriteRegister(MACREGISTER.HST_ANT_DESC_SEL, antennaPort);

            /*
             * MacReadRegister(MACREGISTER.MAC_ERROR, ref registerValue);
             *
             * if (registerValue == HOSTIF_ERR_SELECTORBNDS)
             * {
             *  MacClearError();
             *  return Result.INVALID_PARAMETER;
             * }
             */

            // Read the current value of the anteann port configuration
            MacReadRegister(MACREGISTER.HST_ANT_DESC_CFG, ref registerValue);

            // Now set the enabled bit appropriately
            switch (state)
            {
            case AntennaPortState.DISABLED:
            {
                registerValue &= ~((uint)1);
                break;
            }         // case RFID_ANTENNA_PORT_STATE_DISABLED

            case AntennaPortState.ENABLED:
            {
                registerValue |= 1;
                break;
            }         // case RFID_ANTENNA_PORT_STATE_ENABLED

            default:
                return(Result.INVALID_PARAMETER);
            } // switch (state)

            // Write back the configuration register
            MacWriteRegister(MACREGISTER.HST_ANT_DESC_CFG, registerValue);

            return(Result.OK);
        } // Radio::SetAntennaPortState
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="port"></param>
        /// <param name="state"></param>
        /// <param name="powerLevel"></param>
        /// <param name="dwellTime"></param>
        /// <param name="numberInventoryCycles"></param>
        /// <param name="antennaSenseThreshold"></param>
        public Antenna
        (
            UInt32 port,
            AntennaPortState state,
            UInt32 powerLevel,
            UInt32 dwellTime,
            UInt32 numberInventoryCycles,

            Boolean easAlarm,
            Boolean enableLocalInv,
            SingulationAlgorithm invAlgo,
            UInt32 startQ,
            Boolean enableLocalProfile,
            UInt32 linkProfile,
            Boolean enableLocalFreq,
            UInt32 freqChannel,

            UInt32 antennaSenseThreshold
        )
            :
            base()
        {
            this.port          = port;
            this.antennaStatus = new AntennaPortStatus();
            this.antennaConfig = new AntennaPortConfig();

            this.State                 = state;
            this.EnableLocalFreq       = enableLocalFreq;
            this.EASAlarm              = easAlarm;
            this.EnableLocalInv        = enableLocalInv;
            this.EnableLocalProfile    = enableLocalProfile;
            this.InventoryAlgorithm    = invAlgo;
            this.StartQ                = startQ;
            this.LinkProfile           = linkProfile;
            this.FreqChannel           = freqChannel;
            this.PowerLevel            = powerLevel;
            this.DwellTime             = dwellTime;
            this.NumberInventoryCycles = numberInventoryCycles;
            this.AntennaSenseThreshold = antennaSenseThreshold;
        }
Ejemplo n.º 6
0
 public static extern Result RFID_AntennaPortSetState
 (
     [In] Int32 handle,
     [In] UInt32 port,
     [In] AntennaPortState state
 );
Ejemplo n.º 7
0
        private void SetAntennaPortStatus(int radioHandle, AntennaPortState portState)
        {
            Result result = link.AntennaPortSetState(radioHandle, 0, portState);

            logger.Information("link.AntennaPortSetStatus ( {PortState} ) => {Result}", portState, result);
        }
Ejemplo n.º 8
0
        private bool SetConfig()
        {
            if (m_reader == null || m_mainForm == null)
            {
                return(false);
            }


            //Set Frequency Configuration
            m_btChannelFlag = (rdoBtnMultiChannel.Checked == true) ? (byte)0 : (byte)1;

            //Get value from cmbBoxFreq
            try
            {
                m_uiExactFrequecny = (uint)(Convert.ToDouble(cmbBoxFreq.Text) * 1000);
            }
            catch (Exception exception)
            {
                ShowErrMsg("Please enter valid value!");
                return(false);
            }
            //m_uiExactFrequecny = (uint)(Convert.ToDouble(cmbBoxFreq.Text) * 1000);
            if (Result.OK != m_reader.API_TestSetFrequencyConfiguration(m_btChannelFlag, m_uiExactFrequecny))
            {
                ShowErrMsg("Set channel and frequecny unsuccessfully!");
                return(false);
            }



            //Set Logic-Antenna Port and Test-Antenna Port
            {
                AntennaPortConfig config = new AntennaPortConfig();
                AntennaPortState  State  = AntennaPortState.DISABLED;

                for (byte Port = 0; Port <= Source_Antenna.LOGICAL_MAXIMUM; Port++)
                {
                    if (Result.OK != m_reader.API_AntennaPortGetConfiguration(Port, ref config))
                    {
                        ShowErrMsg("Get logic antenna port State unsuccessfully!");
                        return(false);
                    }
                }

                /*
                 * //Close Logic antenna port 1~15. Only use Logic antenna port 0
                 * for (byte Port = 1; Port <= Source_Antenna.LOGICAL_MAXIMUM; Port++)
                 * {
                 *  if (Result.OK != m_reader.API_AntennaPortSetState(Port, State))
                 *  {
                 *      ShowErrMsg("Set logic antenna port State unsuccessfully!");
                 *       return false;
                 *  }
                 * }
                 */


                //Set Test Antenna Port
                m_usPowerLevel   = (UInt16)numPowerLevel.Value;
                m_btPhysicalPort = (byte)cmbAntPort.SelectedItem;
                if (Result.OK != m_reader.API_TestSetAntennaPortConfiguration(m_btPhysicalPort, m_usPowerLevel))
                {
                    return(false);
                }

                //Get Logic Port 0
                if (m_reader.API_AntennaPortGetConfiguration(0, ref config) != Result.OK)
                {
                    ShowErrMsg("Get antenna port0 unsuccessfully!");
                    return(false);
                }

                config.powerLevel   = m_usPowerLevel;
                config.physicalPort = m_btPhysicalPort;

                //Set Logic Port 0
                if (m_reader.API_AntennaPortSetConfiguration(0, config) != Result.OK)
                {
                    ShowErrMsg("Set antenna port0 unsuccessfully!");
                    return(false);
                }
            }


            //Set Pulse Time
            m_uiPulseOnTime  = (UInt16)(numPulseOnTime.Value * 1000);     //ms to us
            m_uiPulseOffTime = (UInt16)(numPulseOffTime.Value * 1000);
            if (Result.OK != m_reader.API_TestSetRandomDataPulseTime(m_uiPulseOnTime, m_uiPulseOffTime))
            {
                ShowErrMsg("Set pulse time unsuccessfully!");
                return(false);
            }

            return(true);
        }
Ejemplo n.º 9
0
 //Antenna
 public Result API_AntennaPortSetState
 (
      byte             r_Port,
      AntennaPortState r_State
 )
 {
    return LakeChabotReader.MANAGED_ACCESS.API_AntennaPortSetState(r_Port, r_State);
 }