// Attempt to get the state of all GPIO pins and place
        // results into the list

        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            this.Clear( );

            // We do each pin ( though could be done by group ) just so we
            // can tell if individual pin op fails ~ slower but safer...

            foreach
            (
                rfid.Constants.GpioPin nativePin in
                Enum.GetValues(typeof(rfid.Constants.GpioPin))
            )
            {
                Source_GPIO gpio = new Source_GPIO(nativePin, Source_GPIO.OpAccess.GET);

                // Errs set in individual gpio objs if they occur
                gpio.load(transport, readerHandle);

                this.Add(gpio);
            }

            // For now always consider success... user can look thru list
            // to check what pin failures may have occurred...

            return(rfid.Constants.Result.OK);
        }
Example #2
0
        //public rfid.Constants.Result load
        //(
        //    rfid.Linkage transport,
        //    UInt32       readerHandle
        //)
        //{
        //    UInt32[ ] buffer = new UInt32[ OEMCFG_AREA_MAP_SIZE_WORDS ];

        //    uint length = (uint)buffer.Length;

        //    rfid.Constants.Result Result = transport.MacReadOemData
        //        (
        //            ( int ) readerHandle,
        //            0,
        //            ref length,
        //            buffer
        //        );

        //    if ( rfid.Constants.Result.OK == Result )
        //    {
        //        buffer.CopyTo( oemDataBuffer, 0 );
        //    }

        //    return Result;
        //}


        //clark 2011.3.23
        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            UInt32[] tmpBuf = new UInt32[OEMCFG_AREA_MAP_SIZE_WORDS];
            rfid.Constants.Result Result = rfid.Constants.Result.OK;

            Array.Clear(tmpBuf, 0, tmpBuf.Length);

            //MacReadOemData only store one ome at one time. Store all ome to buf.
            for (ushort index = 0; index < OEMCFG_AREA_MAP_SIZE_WORDS; index++)
            {
                Result = transport.API_MacWriteOemData(index,
                                                       oemDataBuffer[index]);

                if (rfid.Constants.Result.OK != Result)
                {
                    return(Result);
                }
            }


            return(Result);
        }
Example #3
0
        // Attempt to load info for all known antennas

        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            this.Clear( );

            for (UInt32 band = 0; band < RFID.RFIDInterface.Properties.Settings.Default.MaxFrequencyBands; band++)
            {
                Source_FrequencyBand freqBand = new Source_FrequencyBand(band);

                rfid.Constants.Result Result = freqBand.load(transport, readerHandle);

                if (rfid.Constants.Result.OK == Result)
                {
                    this.Add(freqBand);
                }
                else if (rfid.Constants.Result.INVALID_PARAMETER == Result)
                {
                    break; // in case max bands gets lowered in future e.g. european version
                }
                else
                {
                    return(Result); // this rcv all other errors
                }
            }

            return(rfid.Constants.Result.OK);
        }
        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            rfid.Constants.Result Result = transport.API_AntennaPortGetConfiguration
                                           (
                port,
                ref this.antennaPortConfig
                                           );

            if (Result != rfid.Constants.Result.OK)
            {
                Console.WriteLine("Error while retrieving global antenna sense threshold");
                return(Result);
            }


            Result = transport.API_AntennaPortGetSenseThreshold
                     (
                ref this.antennaPortConfig.antennaSenseThreshold
                     );

            return(Result);
        }
        // Attempt to load info for all known antennas

        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32       readerHandle
        )
        {
            this.Clear( );

            for (byte port = 0; port < RFID.RFIDInterface.Properties.Settings.Default.MaxVirtualAntennas; port++)
            {
                Source_Antenna antenna = new Source_Antenna( port );

                rfid.Constants.Result Result = antenna.load( transport, readerHandle );

                if ( rfid.Constants.Result.OK == Result )
                {
                    this.Add( antenna );
                }
                else if ( rfid.Constants.Result.INVALID_PARAMETER == Result )
                {
                    break; // this rcv when portIndex > logical antenna count on radio
                }
                else
                {
                    Console.WriteLine( "Error while reading antenna information" );

                    return Result; // this rcv all other errors
                }
            }

            return rfid.Constants.Result.OK;
        }
        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            rfid.Constants.Result Result = transport.API_AntennaPortSetSenseThreshold
                                           (
                this.antennaPortConfig.antennaSenseThreshold
                                           );

            if (rfid.Constants.Result.OK != Result)
            {
                Console.WriteLine("Error while storing global antenna sense threshold");
            }

            Result = transport.API_AntennaPortSetConfiguration
                     (
                port,
                this.antennaPortConfig
                     );


            if (rfid.Constants.Result.OK != Result)
            {
                //Console.WriteLine( "Error while storing AntennaPortConfig" );  //clark 2011.2.16 Copied from R1000 Tracer
                Console.WriteLine("Error while storing AntennaPortConfig port:" + port);
            }

            return(Result);
        }
 public rfid.Constants.Result load
 (
     rfid.Linkage transport,
     UInt32 readerHandle
 )
 {
     return(transport.API_MacGetRegion(ref this.macRegion, ref this.macRegionSupport));
 }
 public rfid.Constants.Result store
 (
     rfid.Linkage transport,
     UInt32 readerHandle
 )
 {
     return(transport.API_MacSetRegion(this.macRegion));
 }
Example #9
0
        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            rfid.Constants.Result Result = transport.API_ConfigSetOperationMode(this.radioOperationMode);

            return(Result);
        }
Example #10
0
        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            rfid.Constants.Result Result = transport.API_AntennaPortGetState(this.port,
                                                                             ref this.antennaPortStatus);

            return(Result);
        }
Example #11
0
        // Primary constructor, provide a transport & handle and load
        // the list from current link profile information

        public Source_LinkProfileList(rfid.Linkage transport, UInt32 readerHandle)
            :
            base( )
        {
            this.transport    = transport;
            this.readerHandle = readerHandle;

            // Ignore error at this time ~ rely on console debug msg

            this.load( );
        }
Example #12
0
        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            // TODO : validate that when doin store the given pin has
            //        access flag in SET mode (?)

            // Configure pin to set mode

            rfid.Constants.Result result = rfid.Constants.Result.OK;

            result = transport.API_GpioSetPinsConfiguration((byte)this.nativePin,
                                                            (byte)this.nativePin);

            if (rfid.Constants.Result.OK != result)
            {
                this.status = OpResult.FAILURE;

                return(result);
            }


            //2011.12.30 check state
            if (this.state != OpState.HI && this.state != OpState.LO)
            {
                this.status = OpResult.FAILURE;

                return(rfid.Constants.Result.INVALID_ANTENNA);
            }

            //Set state
            result = transport.API_GpioWritePins
                         ((byte)this.nativePin,
                         (byte)(OpState.LO == this.state ? 0 : this.nativePin));


            if (rfid.Constants.Result.OK != result)
            {
                this.status = OpResult.FAILURE;
            }
            else
            {
                this.status = OpResult.SUCCESS;
            }

            return(result);
        }
Example #13
0
        // Provided just to allow easy copying of existing
        // link profile list source(s)

        public Source_LinkProfileList(IEnumerable <Source_LinkProfile> enumerable)
            :
            base(enumerable)
        {
            this.transport    = null;
            this.readerHandle = 0;    // 0 == invalid radio handle

            for (activeProfileIndex = 0; activeProfileIndex < this.Count; ++activeProfileIndex)
            {
                if (this[activeProfileIndex].Enabled)
                {
                    break;
                }
            }
        }
Example #14
0
        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            // Err msgs emitted thru antennaResult & antennaConfig store( )

            rfid.Constants.Result Result = this.antennaResult.store(transport, readerHandle);

            if (rfid.Constants.Result.OK != Result)
            {
                return(Result);
            }

            return(this.antennaConfig.store(transport, readerHandle));
        }
        // Attempt to save all link profiles currently on the radio
        // and mark the active one.

        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32                             readerHandle
        )
        {
            foreach( Source_Antenna antenna in this )
            {
                rfid.Constants.Result Result = antenna.store( transport, readerHandle );

                if ( rfid.Constants.Result.OK != Result )
                {
                    return Result;
                }
            }

            return rfid.Constants.Result.OK;
        }
Example #16
0
        // Attempt to save all link profiles currently on the radio
        // and mark the active one.

        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            foreach (Source_FrequencyBand freqBand in this)
            {
                rfid.Constants.Result Result = freqBand.store(transport, readerHandle);

                if (rfid.Constants.Result.OK != Result)
                {
                    return(Result);
                }
            }

            return(rfid.Constants.Result.OK);
        }
Example #17
0
        // Turn all known gpio pins into set mode and attempt to set them
        // to their given ( according to property ) state

        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            foreach (Source_GPIO gpio in this)
            {
                gpio.Access = Source_GPIO.OpAccess.SET;

                gpio.store(transport, readerHandle);
            }

            // For now always consider success... user can look thru list
            // to check what pin failures may have occurred...

            return(rfid.Constants.Result.OK);
        }
Example #18
0
        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            Result result;

            result = transport.API_l8K6CSetQueryTagGroup(this.nativeTagGroup);

            if (Result.OK != result)
            {
                return(result);
            }

            SingulationAlgorithm algorithm;

            Type algoType = this.nativeSingulationParms.GetType();

            if (algoType == typeof(FixedQParms))
            {
                algorithm = SingulationAlgorithm.FIXEDQ;
            }
            else if (algoType == typeof(DynamicQParms))
            {
                algorithm = SingulationAlgorithm.DYNAMICQ;
            }
            else
            {
                return(Result.INVALID_PARAMETER);
            }

            result = transport.API_l8K6CSetCurrentSingulationAlgorithm(algorithm);

            if (Result.OK != result)
            {
                return(result);
            }

            result = transport.API_l8K6CSetSingulationAlgorithmParameters(algorithm,
                                                                          this.nativeSingulationParms);

            return(result);
        }
Example #19
0
        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            // There is no save for the antennaPortStatus in lower library but
            // there is a set state so use that here!

            rfid.Constants.Result Result = transport.API_AntennaPortSetState(this.port,
                                                                             this.antennaPortStatus.state);

            if (rfid.Constants.Result.OK != Result)
            {
                Console.WriteLine("Error while saving antennaPortStatus.state");
            }

            return(Result);
        }
        public rfid.Constants.Result store
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            UInt32 config  = ( UInt32 )state;
            UInt32 multdiv = ( UInt32 )(this.divider << 16) | ( UInt32 )this.multiplier;
            UInt32 pllcc   = ( UInt32 )(this.guardBand << 24) |
                             ( UInt32 )(this.maxDACBand << 16) |
                             ( UInt32 )(this.affinityBand << 8) |
                             ( UInt32 )(this.minDACBand);

            rfid.Constants.Result result = transport.API_ConfigWriteRegister
                                           (
                SELECTOR_ADDRESS,
                this.band
                                           );

            if (rfid.Constants.Result.OK != result)
            {
                return(result);
            }

            result = transport.API_ConfigWriteRegister
                     (
                CONFIG_ADDRESS,
                config
                     );

            if (rfid.Constants.Result.OK != result)
            {
                return(result);
            }

            result = transport.API_ConfigReadRegister
                     (
                CONFIG_ADDRESS,
                ref config
                     );

            if (rfid.Constants.Result.OK != result)
            {
                return(result);
            }


            if (BandState.ENABLED == ( BandState )config)
            {
                result = transport.API_ConfigWriteRegister
                         (
                    MULTDIV_ADDRESS,
                    multdiv
                         );

                if (rfid.Constants.Result.OK != result)
                {
                    return(result);
                }

                result = transport.API_ConfigReadRegister
                         (
                    MULTDIV_ADDRESS,
                    ref multdiv
                         );

                if (rfid.Constants.Result.OK != result)
                {
                    return(result);
                }

                result = transport.API_ConfigWriteRegister
                         (
                    PLLCC_ADDRESS,
                    pllcc
                         );

                if (rfid.Constants.Result.OK != result)
                {
                    return(result);
                }

                result = transport.API_ConfigReadRegister
                         (
                    PLLCC_ADDRESS,
                    ref pllcc
                         );

                if (rfid.Constants.Result.OK != result)
                {
                    return(result);
                }
            }

            this.multiplier = ( UInt16 )((multdiv >> 0) & 0xffff);
            this.divider    = ( UInt16 )((multdiv >> 16) & 0xff);

            this.minDACBand   = ( UInt16 )((pllcc >> 0) & 0xff);
            this.affinityBand = ( UInt16 )((pllcc >> 8) & 0xff);
            this.maxDACBand   = ( UInt16 )((pllcc >> 16) & 0xff);
            this.guardBand    = ( UInt16 )((pllcc >> 24) & 0xff);

            return(rfid.Constants.Result.OK);
        }
Example #21
0
        // TODO : Move to locator & communicator class

        static LakeChabotReader( )
        {
            try
            {
                LakeChabotReader.MANAGED_ACCESS = new rfid.Linkage( );
            }
            catch ( Exception e )
            {
                throw e;  // TODO: more resolution of error e.g. missing dll
            }

            if (rfid.Constants.Result.OK != LakeChabotReader.MANAGED_ACCESS.API_Startup(LakeChabotReader.LIBRARY_VERSION, LakeChabotReader.LIBRARY_MODE))
            {
                throw new rfidException( rfidErrorCode.LibraryFailedToInitialize );
            }

            LakeChabotReader.LIBRARY_Result = rfid.Constants.Result.OK;

            // Track keyed by cookie ~ allow ( later ) to open and close radios
            // dynamically during application execution - currently ALL OPEN

            rfid.Structures.RadioEnumeration radioEnum = new rfid.Structures.RadioEnumeration( );


            //clark 2011.05.20 Show Tracer no matter the device is disconneced.
            //                 Let user to set comport.  
            LakeChabotReader.MANAGED_ACCESS.API_RetrieveAttachedRadiosList(radioEnum, 0);
            //if
            //(
            //    rfid.Constants.Result.OK !=
            //    LakeChabotReader.MANAGED_ACCESS.API_RetrieveAttachedRadiosList(radioEnum, 0)
            //)
            //{
            //    throw new rfidException( rfidErrorCode.LibraryFailedToInitialize );
            //}

            LakeChabotReader.LOCATED_READERS =
                new Dictionary<UInt32, rfid.Structures.RadioInformation>( );

            foreach ( rfid.Structures.RadioInformation radioInfo in radioEnum.radioInfo )
            {
                //clark 2011.3.23 not sure
                uint uiUniqueId = BitConverter.ToUInt32( radioInfo.uniqueId, 0);
                LakeChabotReader.LOCATED_READERS.Add(uiUniqueId, radioInfo);
                //LakeChabotReader.LOCATED_READERS.Add(radioInfo.cookie, radioInfo);
            }

            LakeChabotReader.OPENED_READERS =
                new Dictionary<UInt32, rfid.Structures.RadioInformation>( );

            try
            {
                new PerformanceCounter( "Processor", "% Processor Time", "_Total", "." );
            }
            catch ( Exception ) { }
        }
Example #22
0
            /// <summary>
            /// Constructor for Inventory
            /// </summary>
            /// <param name="ManagedAccess"></param>
            /// <param name="Handle"></param>
            /// <param name="WantSinglePackets"></param>
            /// <param name="runCount"></param>
            public ReaderInterfaceThreadClass(rfid.Linkage ManagedAccess, int Handle, bool WantSinglePackets, RadioOperationMode r_OpMode, TagAccessFlag r_strcTagFlag)
            {
                if (r_OpMode == RadioOperationMode.UNKNOWN)
                {
                    throw new ArgumentOutOfRangeException("OpMode", "OpMode must be CONTINUE or NON_CONTINUE");
                }

                _strcTagFlag = r_strcTagFlag;
                _OpMode = r_OpMode;
                _access = ManagedAccess;
                _handle = Handle;
                _singlePackets = WantSinglePackets;
                _stopRequest = false;
            }
Example #23
0
 private TagAccessReads _tagAccessReadSet;//??把计??//Add LargeRead command
 /// <summary>
 /// 
 /// </summary>
 /// <param name="ManagedAccess"></param>
 /// <param name="Handle"></param>
 /// <param name="MemoryBank"></param>
 /// <param name="?"></param>
 public ReaderInterfaceThreadClass(rfid.Linkage ManagedAccess, int Handle, TagAccessData tagAccessData, TagAccessReads tagAccessDataRead)//??把计??//Add LargeRead command
 {
     _access = ManagedAccess;
     _handle = Handle;
     _tagAccessData = tagAccessData;
     _tagAccessReadSet = tagAccessDataRead;//把计??
 }
Example #24
0
        // This load for basic grab current fields on board

        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            Result result;

            result = transport.API_l8K6CGetQueryTagGroup(ref this.nativeTagGroup);

            if (Result.OK != result)
            {
                return(result);
            }

            SingulationAlgorithm algorithm = SingulationAlgorithm.UNKNOWN;

            result = transport.API_l8K6CGetCurrentSingulationAlgorithm(ref algorithm);

            if (Result.OK != result)
            {
                return(result);
            }

            switch (algorithm)
            {
            case SingulationAlgorithm.FIXEDQ:
            {
                this.nativeSingulationParms = new FixedQParms();
            }
            break;

            case SingulationAlgorithm.DYNAMICQ:
            {
                this.nativeSingulationParms = new DynamicQParms();
            }
            break;
            //case SingulationAlgorithm.DYNAMICQ_ADJUST:
            //    {

            //    }
            //    break;
            //case SingulationAlgorithm.DYNAMICQ_THRESHOLD:
            //    {

            //    }
            //    break;

            default:
            {
                return(Result.DRIVER_MISMATCH);
            }
            }

            result = transport.API_l8K6CGetSingulationAlgorithmParameters
                     (
                algorithm,
                ref this.nativeSingulationParms
                     );

            if (Result.OK == result)
            {
                Type algoType = this.nativeSingulationParms.GetType();

                if (algoType == typeof(rfid.Structures.FixedQParms))
                {
                    this.sourceParameters = new Source_SingulationParametersFixedQ
                                            (
                        (rfid.Structures.FixedQParms) this.nativeSingulationParms
                                            );
                }
                else if (algoType == typeof(rfid.Structures.DynamicQParms))
                {
                    this.sourceParameters = new Source_SingulationParametersDynamicQ
                                            (
                        (rfid.Structures.DynamicQParms) this.nativeSingulationParms
                                            );
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("ERR : Algorithm.Copy( Source_QueryParms from )");
                    Console.WriteLine("ERR : Algorithm.Copy( Source_QueryParms from )");
                }
            }

            return(result);
        }
Example #25
0
        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            // TODO : validate that when doin store the given pin has
            //        access flag in GET mode (?)

            // Configure pin to set mode

            rfid.Constants.Result result    = rfid.Constants.Result.OK;
            rfid.Constants.Result resultErr = rfid.Constants.Result.OK;
            uint uiCurError  = 0;
            uint uiLastError = 0;
            byte getValue    = 0;


            //Set access to "Get"
            result = transport.API_GpioSetPinsConfiguration((byte)this.nativePin,
                                                            0);
            if (rfid.Constants.Result.OK != result)
            {
                //Get error
                resultErr = transport.API_MacGetError(ref uiCurError, ref uiLastError);

                //Can't get error
                if (resultErr != rfid.Constants.Result.OK)
                {
                    this.status = OpResult.FAILURE;
                    return(resultErr);
                }


                //If error = 0x2B, it means doesn't support this pin
                if (uiCurError == 0x2B)
                {
                    this.status = OpResult.UNSUPPORTED;
                    return(result);
                }
                else
                {
                    this.status = OpResult.FAILURE;
                    return(result);
                }
            }


            //Get GPIO Status
            result = transport.API_GpioReadPins((byte)this.nativePin,
                                                ref getValue);

            if (rfid.Constants.Result.OK == result)
            {
                this.state  = (( UInt32 )this.nativePin & getValue) == 0 ? OpState.LO : OpState.HI;
                this.status = OpResult.SUCCESS;
            }
            else
            {
                this.state  = OpState.FAILURE;
                this.status = OpResult.FAILURE;
            }

            return(result);
        }
Example #26
0
        // Grabs the values on board for the specified algorithm but leaves
        // board in original state - warning - MANY POINTS OF FAILURE - you
        // have been warned.

        public rfid.Constants.Result loadForAlgorithm
        (
            rfid.Linkage transport,
            UInt32 readerHandle,
            rfid.Constants.SingulationAlgorithm algorithm
        )
        {
            // Need to do lower level register manipulation for this one...

            UInt32 reg_0x0901 = 0;

            Result result = Result.OK;

            try
            {
                // Set the algo on the board ~ maintaining all other fields

                result = transport.API_ConfigReadRegister
                         (
                    ( UInt16 )0x0901, ref reg_0x0901
                         );

                if (rfid.Constants.Result.OK != result)
                {
                    throw new Exception(result.ToString( ));
                }

                result = transport.API_ConfigWriteRegister
                         (
                    ( UInt16 )0x0901, (reg_0x0901 & 0xFFFFFFC0) | ( UInt32 )algorithm
                         );

                if (rfid.Constants.Result.OK != result)
                {
                    throw new Exception(result.ToString( ));
                }

                // Set for the algo register bank on the board

                result = transport.API_ConfigWriteRegister
                         (
                    ( UInt16 )0x0902, ( UInt32 )algorithm
                         );

                if (rfid.Constants.Result.OK != result)
                {
                    throw new Exception(result.ToString( ));
                }

                result = this.load(transport, readerHandle);

                if (rfid.Constants.Result.OK != result)
                {
                    throw new Exception(result.ToString( ));
                }

                // Restore algo bank reg to original value

                result = transport.API_ConfigWriteRegister
                         (
                    ( UInt16 )0x0901, reg_0x0901
                         );

                if (rfid.Constants.Result.OK != result)
                {
                    throw new Exception(result.ToString( ));
                }
            }
            catch (Exception)
            {
                // NOP - let fall thru to result check & msg display
            }

            // If we did ok, our source for the underlying singulation
            // parameters must also now be changed here AND grabbed at
            // the gui level ...

            if (Result.OK == result)
            {
                switch (algorithm)
                {
                case SingulationAlgorithm.FIXEDQ:
                {
                    sourceParameters = new Source_SingulationParametersFixedQ
                                       (
                        (rfid.Structures.FixedQParms) this.nativeSingulationParms
                                       );
                }
                break;

                case SingulationAlgorithm.DYNAMICQ:
                {
                    sourceParameters = new Source_SingulationParametersDynamicQ
                                       (
                        (rfid.Structures.DynamicQParms) this.nativeSingulationParms
                                       );
                }
                break;

                default:
                    Console.WriteLine("ERR : Algorithm.Copy( Source_QueryParms from )");

                    break;
                }
                ;
            }

            return(result);
        }
Example #27
0
        // Attempt to get the state of all GPIO pins and place
        // results into the list

        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            //Mod by FJ for change caption of "Antenna Ports" and "GPIO" GUI for HP SiP, 2015-01-22
            this.Clear( );
            string[] Str  = { "PIN_1", "PIN_2", "PIN_3", "PIN_4" };
            int      temp = 0;
            // We do each pin ( though could be done by group ) just so we
            // can tell if individual pin op fails ~ slower but safer...
            //Mod by FJ for fix model name judgement bug, 2015-02-02
            //rfid.Constants.Result m_result = rfid.Constants.Result.OK;
            LakeChabotReader reader = new LakeChabotReader();

            if (rfid.Constants.Result.OK != reader.result_major)
            {
                throw new Exception(reader.result_major.ToString());
                //throw new Exception(result.ToString());
                //End by FJ for fix model name judgement bug, 2015-02-02
            }
            if (reader.uiModelNameMAJOR != 0x4D303358)//0x4D303358==M03X
            {
                foreach
                (
                    rfid.Constants.GpioPin nativePin in
                    Enum.GetValues(typeof(rfid.Constants.GpioPin))
                )
                {
                    Source_GPIO gpio = new Source_GPIO(nativePin, Source_GPIO.OpAccess.GET);
                    gpio.Pin = nativePin.ToString();

                    // Errs set in individual gpio objs if they occur
                    gpio.load(transport, readerHandle);

                    this.Add(gpio);
                }
            }
            else
            {
                foreach
                (
                    rfid.Constants.GpioPin nativePin in
                    Enum.GetValues(typeof(rfid.Constants.GpioPin))
                )
                {
                    Source_GPIO gpio = new Source_GPIO(nativePin, Source_GPIO.OpAccess.GET);
                    gpio.Pin = Str[temp];

                    // Errs set in individual gpio objs if they occur
                    gpio.load(transport, readerHandle);

                    this.Add(gpio);
                    temp++;
                }
            }

            // For now always consider success... user can look thru list
            // to check what pin failures may have occurred...

            return(rfid.Constants.Result.OK);

            /*
             * this.Clear();
             *
             * // We do each pin ( though could be done by group ) just so we
             * // can tell if individual pin op fails ~ slower but safer...
             * foreach
             * (
             *  rfid.Constants.GpioPin nativePin in
             *  Enum.GetValues(typeof(rfid.Constants.GpioPin))
             * )
             * {
             *
             *  Source_GPIO gpio = new Source_GPIO(nativePin, Source_GPIO.OpAccess.GET);
             *  // Errs set in individual gpio objs if they occur
             *  gpio.load(transport, readerHandle);
             *
             *  this.Add(gpio);
             *  temp++;
             * }
             *
             * // For now always consider success... user can look thru list
             * // to check what pin failures may have occurred...
             *
             * return rfid.Constants.Result.OK;
             */
            //End by FJ for change caption of "Antenna Ports" and "GPIO" GUI for HP SiP, 2015-01-22
        }
Example #28
0
        public static bool Mid_API_Serial_Open(uint ComPort)
        {
            //Mod by FJ for fix linking to incorrect Dll API issue, 2016-12-23
            bool result = false;

            //bool result = true;
            rfid.Linkage lk = new rfid.Linkage();

            uint[] DetectBaudRate = new uint[] { (uint)ENUM_BAUD_RATE.CBR_115200, (uint)ENUM_BAUD_RATE.CBR_230400, (uint)ENUM_BAUD_RATE.CBR_460800, (uint)ENUM_BAUD_RATE.CBR_921600 };
            uint   errcount       = 0;

            for (int i = 0; i < DetectBaudRate.Length; i++)
            {
                if (FTDI_API_Serial_Open(DetectBaudRate[i], ref ftHandle) == FTDI.FT_STATUS.FT_OK)
                {
                    Use_FTDI_Dll = true;
                    if (lk.API_MacgGetDebug(ref errcount) != Result.OK)
                    {
                        result = false;
                        continue;
                    }
                    else
                    {
                        result = true;
                        return(result);
                    }
                }
                else
                {
                    result = false;
                }
            }

            if (result == false)
            {
                Use_FTDI_Dll = false;
                rfid.DCB pDcb = new rfid.DCB();
                pDcb.ByteSize = 8;
                pDcb.Parity   = 0;
                pDcb.StopBits = (byte)ENUM_STOP_BIT.ONESTOPBIT;
                pDcb.BaudRate = (uint)ENUM_BAUD_RATE.CBR_115200;
                if (clsPacket.TRANS_API_Serial_Open(ComPort, ref pDcb) != TRANS_RESULT.OK)
                {
                    result = false;
                }
                else
                {
                    result = true;
                }
            }

            ////Open COM port by WDK DLL
            ////Try to open real COM port by baudrate 115200
            //Use_FTDI_Dll = false;
            //rfid.DCB pDcb = new rfid.DCB();
            //pDcb.ByteSize = 8;
            //pDcb.Parity = 0;
            //pDcb.StopBits = (byte)ENUM_STOP_BIT.ONESTOPBIT;
            //pDcb.BaudRate = (uint)ENUM_BAUD_RATE.CBR_115200;
            //if (clsPacket.TRANS_API_Serial_Open(ComPort, ref pDcb) != TRANS_RESULT.OK)
            //{
            //    result = false;
            //}

            ////Open COM port by FTDI DLL
            //if (result == false) //Try to open virtual COM port by high speed baudrate
            //{
            //    uint[] DetectBaudRate = new uint[] { (uint)ENUM_BAUD_RATE.CBR_115200, (uint)ENUM_BAUD_RATE.CBR_230400, (uint)ENUM_BAUD_RATE.CBR_460800, (uint)ENUM_BAUD_RATE.CBR_921600 };
            //    uint errcount = 0;
            //    //Use_FTDI_Dll = true; //Del by FJ for the FWUpdate failure in USB connection, 2016-09-08


            //    for (int i = 0; i < DetectBaudRate.Length; i++)
            //    {
            //        if (FTDI_API_Serial_Open(DetectBaudRate[i], ref ftHandle) == FTDI.FT_STATUS.FT_OK)
            //        {
            //            if (lk.API_MacgGetDebug(ref errcount) != Result.OK)
            //            {
            //                result = false;
            //                continue;
            //            }
            //            else
            //            {
            //                Use_FTDI_Dll = true; //Add by FJ for the FWUpdate failure in USB connection, 2016-09-08
            //                result = true;
            //                break;
            //            }
            //        }
            //        else
            //        {
            //            result = false;
            //        }
            //    }
            //}
            //End by FJ for fix linking to incorrect Dll API issue, 2016-12-23

            return(result);
        }
        // Load frequency info, actually does Nx calls - any
        // of which may fail and cause an error return

        public rfid.Constants.Result load
        (
            rfid.Linkage transport,
            UInt32 readerHandle
        )
        {
            UInt32 config  = 0;
            UInt32 multdiv = 0;
            UInt32 pllcc   = 0;

            rfid.Constants.Result result = transport.API_ConfigWriteRegister
                                           (
                SELECTOR_ADDRESS,
                this.band
                                           );

            if (rfid.Constants.Result.OK != result)
            {
                return(result);
            }

            result = transport.API_ConfigReadRegister
                     (
                CONFIG_ADDRESS,
                ref config
                     );

            if (rfid.Constants.Result.OK != result)
            {
                return(result);
            }

            result = transport.API_ConfigReadRegister
                     (
                MULTDIV_ADDRESS,
                ref multdiv
                     );

            if (rfid.Constants.Result.OK != result)
            {
                return(result);
            }

            result = transport.API_ConfigReadRegister
                     (
                PLLCC_ADDRESS,
                ref pllcc
                     );

            if (rfid.Constants.Result.OK != result)
            {
                return(result);
            }

            try
            {
                this.state = ( BandState )(config == 0 ? 0 : 1);
            }
            catch (Exception)
            {
                this.state = BandState.UNKNOWN;
            }

            this.multiplier = ( UInt16 )((multdiv >> 0) & 0xffff);
            this.divider    = ( UInt16 )((multdiv >> 16) & 0xff);

            this.minDACBand   = ( UInt16 )((pllcc >> 0) & 0xff);
            this.affinityBand = ( UInt16 )((pllcc >> 8) & 0xff);
            this.maxDACBand   = ( UInt16 )((pllcc >> 16) & 0xff);
            this.guardBand    = ( UInt16 )((pllcc >> 24) & 0xff);

            return(rfid.Constants.Result.OK);
        }