예제 #1
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);
        }