public Task<SetupGpIoResponse> GpIoSetup(PinName pin, GpioDirection direction)
        {
            RestRequest restRequest = GetRestRequest(ApiPaths.SetupGpIo, Method.GET);
            restRequest.AddUrlSegment("pin", pin.ToString());
            restRequest.AddUrlSegment("direction", direction.ToString());
            return ProcessDefaultRequest<SetupGpIoResponse>(restRequest);
        }
Пример #2
0
        public void SetDirection(string hostId, int gpioId, GpioDirection direction)
        {
            if (hostId == null)
            {
                throw new ArgumentNullException(nameof(hostId));
            }

            GetAdapter(hostId).SetDirection(gpioId, direction);
        }
Пример #3
0
    public void SetDirection(GpioDirection direction)
    {
        // Edge is only required if the state is read via blocked thread.
        //File.WriteAllText("/sys/class/gpio/gpio" + gpioId + "/edge", edge.ToString().ToLowerInvariant());

        var fileContent = direction == GpioDirection.Output ? "out" : "in";

        File.WriteAllText(_directionPath, fileContent, Encoding.ASCII);
    }
Пример #4
0
        public void SetDirection(int gpioId, GpioDirection direction)
        {
            lock (_syncRoot)
            {
                Export(gpioId);

                var fileContent = direction == GpioDirection.Output ? "out" : "in";
                File.WriteAllText("/sys/class/gpio/gpio" + gpioId + "/direction", fileContent, Encoding.ASCII);
            }
        }
Пример #5
0
 /// <summary>
 /// Creates a pin if it has not already been created (exported), creates a GPIOMem if possible, otherwise falls back to GPIOFile.
 /// </summary>
 /// <param name="pin">The pin to create or export</param>
 /// <param name="dir">The direction the pin is to have</param>
 /// <returns>The GPIO instance representing the pin</returns>
 public static GpioFile CreatePinFile(GpioPins pin, GpioDirection dir)
 {
     try {
         return(new GpioFile(pin, dir, false));
     }
     catch (Exception e) {
         System.Diagnostics.Debug.WriteLine("Unable to create pin " + (uint)pin + " as GPIOFile because: " + e.ToString());
     }
     return(null);
 }
Пример #6
0
 /// <summary>
 /// 指定したgpioピンにデータ設定方向を設定します。
 /// </summary>
 /// <param name="gpio"></param>
 /// <param name="direction"></param>
 public static void SetDirection(int gpio, GpioDirection direction)
 {
     if (direction == GpioDirection.In)
     {
         File.WriteAllText($"/sys/class/gpio/gpio{gpio}/direction", "in");
     }
     else
     {
         File.WriteAllText($"/sys/class/gpio/gpio{gpio}/direction", "out");
     }
 }
Пример #7
0
        private void SetDirection(GpioDirection gpioDirection)
        {
            ExportPinIfRequired();

            if (_direction == gpioDirection)
            {
                return;
            }

            _fileIo.WriteAllText(_directionPinPath, gpioDirection.ToString().ToLowerInvariant());
            _direction = gpioDirection;
        }
Пример #8
0
        public void SetDirection(int gpioId, GpioDirection direction)
        {
            lock (_syncRoot)
            {
                ExportGpio(gpioId);

                var fileContent = direction == GpioDirection.Output ? "out" : "in";
                WriteGpioDirection(gpioId, fileContent);

                _logger.Log(LogLevel.Information, $"Exported GPIO {gpioId}.");
            }
        }
Пример #9
0
        public async Task SetDirection(string pin, GpioDirection direction)
        {
            string direct;

            switch (direction)
            {
            case GpioDirection.In:
                direct = "in";
                break;

            case GpioDirection.Out:
                direct = "out";
                break;

            case GpioDirection.Low:
                direct = "low";
                break;

            case GpioDirection.High:
                direct = "high";
                break;

            default:
                throw new ArgumentException("Requires a direction");
            }

            try
            {
                using (var writer = new StreamWriter(GpioPath.DirectionPath(pin), false))
                {
                    await writer.WriteAsync(direct);

                    return;
                }
            }
            catch (UnauthorizedAccessException)
            {
                // User is not root and the permissions have not been set yet. Need to wait.
                Thread.Sleep(TimeSpan.FromSeconds(0.5));
            }
            using (var writer = new StreamWriter(GpioPath.DirectionPath(pin), false))
            {
                await writer.WriteAsync(direct);
            }
        }
Пример #10
0
        public DummyGpioPin(
            string name,
            GpioDirection?direction,
            bool?activeLow,
            bool?initialValue,
            TimeSpan?assertionTime,
            TimeSpan?deassertionTime,
            TimeSpan?debounceTime)
        {
            this.Name            = name;
            this.direction       = direction ?? GpioDirection.Input;
            this.value           = initialValue ?? false;
            this.AssertionTime   = assertionTime ?? defaultAssertionTime;
            this.DeassertionTime = deassertionTime ?? defaultDeassertionTime;
            this.DebounceTime    = debounceTime ?? defaultDebounceTime;

            this.pinChangeEvent = new AsyncAutoResetEvent();
            this.isDisposed     = false;
        }
Пример #11
0
        public GpioFile(GpioPins pin, GpioDirection direction, bool initialValue)
        {
            if (pin == GpioPins.GpioNone)
            {
                throw new ArgumentException("Invalid pin");
            }

            gpio_open();

            _pin = pin;
            try {
                PinDirection = direction;
                Write(initialValue);
            }
            catch {
                Dispose();
                throw;
            }
        }
Пример #12
0
        public static string ToDirectionString(this GpioDirection direction, bool?initialLevel = null)
        {
            switch (direction)
            {
            case GpioDirection.Input:
                return("in");

            case GpioDirection.Output:
                if (initialLevel.HasValue)
                {
                    return(initialLevel.Value ? "high" : "low");
                }
                else
                {
                    return("out");
                }

            default:
                throw new InvalidOperationException("Invalid direction value");
            }
        }
Пример #13
0
        public async Task SetDirection(string pin, GpioDirection direction)
        {
            string direct;
            switch (direction)
            {
                case GpioDirection.In:
                    direct = "in";
                    break;
                case GpioDirection.Out:
                    direct = "out";
                    break;
                case GpioDirection.Low:
                    direct = "low";
                    break;
                case GpioDirection.High:
                    direct = "high";
                    break;
                default:
                    throw new ArgumentException("Requires a direction");
            }

            try
            {
                using (var writer = new StreamWriter(GpioPath.DirectionPath(pin), false))
                {
                    await writer.WriteAsync(direct);
                    return;
                }
            }
            catch (UnauthorizedAccessException)
            {
                // User is not root and the permissions have not been set yet. Need to wait.
                Thread.Sleep(TimeSpan.FromSeconds(0.5));
            }
            using (var writer = new StreamWriter(GpioPath.DirectionPath(pin), false))
            {
                await writer.WriteAsync(direct);
            }
        }
Пример #14
0
 private async Task SetDirection(GpioDirection direction)
 {
     await _driver.SetDirection(_pin, direction);
 }
Пример #15
0
 public void SetDirection(int gpio, GpioDirection direction)
 {
     //_logger.Log(LogLevel.Information, $"FAKE SetDirection: GPIO = {gpio}; Direction = {direction}");
 }