C# Gpio API

To work with Deepsy Gpio Manager service it is necessary to use GpioManager located in GMV.ITS.HAL.DEEPSY.Gpio.Facade for getting the initial GpioManager object. More...

Collaboration diagram for C# Gpio API:

Modules

 DTO
 List of Objects that contains information relative to GPIOs and its configuration / information.
 
 Enumerations
 List of enumerations available for configuration or Gpio Events.
 
 Events related with Gpio Service
 Events for Gpio.
 

Classes

class  GpioManager
 Implementation of IGpioManager. Start point for interacting with Deepsy Gpio service More...
 
interface  IGpio
 Intarface for Gpio Service More...
 
interface  IGpioManager
 Interaface for managing device Gpios More...
 

Detailed Description


GpioManager has an optional parameter indicating the ip address of remote service. For instance:

GpioManager GpioManager = new GpioManager("172.22.198.103");


GpioManager implements IDisposable. It can hold resources (such as socket handles) until it is disposed. The Dispose method is automatically called when existing a using or try / catch block, for which the object has been declared. This construction ensures prompt release, avoiding resource exhaustion exceptions and errors that may otherwise occur.

Examples

  • Get Gpios
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace GMV.ITS.HAL.DEEPSY.Examples.Gpio
    {
    public class GetGpios
    {
    static void Main(string[] args)
    {
    string deepsyServerIp = args.Length == 0 ? "192.168.0.144" : args[0];
    using (GpioManager gpioManager = new GpioManager(deepsyServerIp))
    {
    List<IGpio> gpios = gpioManager.GetGpios().ToList();
    Console.WriteLine($"There are {gpios.Count()} GPIOS");
    foreach (IGpio gpio in gpios)
    {
    Console.WriteLine($"Gpio id : {gpio.Id}");
    Console.WriteLine($"{"Alias",20} : {gpio.Configuration.Alias}");
    Console.WriteLine($"{"Type",20} : {gpio.Information.Type}");
    Console.WriteLine($"{"Address",20} : {gpio.Information.Address}");
    Console.WriteLine($"{"Direction ",20} : {gpio.Information.Direction}");
    Console.WriteLine($"{"Default Value",20} : {gpio.Configuration.DefaultValue}");
    Console.WriteLine($"{"Active Low",20} : {gpio.Configuration.ActiveLow}");
    Console.WriteLine($"{"Edge type",20} : {gpio.Configuration.EdgeType}");
    Console.WriteLine($"{"Publish",20} : {gpio.Configuration.Publish}");
    Console.WriteLine($"{"Bouncing Time",20} : {gpio.Configuration.BouncingTime}");
    }
    }
    }
    }
    }

  • Get Gpio Value
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace GMV.ITS.HAL.DEEPSY.Examples.Gpio
    {
    class GetGpiosValue
    {
    static void Main(string[] args)
    {
    string deepsyServerIp = args.Length == 0 ? "192.168.0.144" : args[0];
    using (GpioManager gpioManager = new GpioManager(deepsyServerIp))
    {
    List<IGpio> gpios = gpioManager.GetGpios().ToList();
    Console.WriteLine($"There are {gpios.Count()} GPIOS");
    foreach (IGpio gpio in gpios)
    {
    if(gpio.Information.Direction == DEEPSY.Gpio.Interface.Enum.GpioDirection.Direction.INPUT)
    {
    Console.WriteLine($"Gpio id : {gpio.Id}");
    IGpioStatus status = gpio.GetStatus();
    Console.WriteLine($"{"Value",20} : {status.Value}");
    Console.WriteLine($"{"Counter",20} : {status.Counter}");
    }
    }
    }
    }
    }
    }

  • Subscrive to Gpio events
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace GMV.ITS.HAL.DEEPSY.Examples.Gpio
    {
    class SubscribeGpioEvents
    {
    static void Main(string[] args)
    {
    string deepsyServerIp = args.Length == 0 ? "192.168.0.144" : args[0];
    using (GpioManager gpioManager = new GpioManager(deepsyServerIp))
    {
    List<IGpio> gpios = gpioManager.GetGpios().ToList();
    Console.WriteLine($"There are {gpios.Count()} GPIOS");
    foreach (IGpio gpio in gpios)
    {
    gpio.ConfigurationEvent += Gpio_ConfigurationEvent;
    gpio.StatusEvent += Gpio_StatusEvent;
    }
    Console.WriteLine("Press any key for exit");
    Console.ReadKey();
    }
    }
    private static void Gpio_StatusEvent(object sender, IGpioStatusEvent e)
    {
    Console.WriteLine($"Status Event. Gpio {e.Id}. Value {e.Status.Value} Conter {e.Status.Counter}");
    }
    private static void Gpio_ConfigurationEvent(object sender, IGpioConfigurationEvent e)
    {
    Console.WriteLine($"Configuration Event. Gpio {e.Id}.");
    Console.WriteLine($"{"New Alias",20} : {e.Configuration.Alias}");
    Console.WriteLine($"{"New Default Value",20} : {e.Configuration.DefaultValue}");
    Console.WriteLine($"{"New Active Low",20} : {e.Configuration.ActiveLow}");
    Console.WriteLine($"{"New Edge type",20} : {e.Configuration.EdgeType}");
    Console.WriteLine($"{"New Publish",20} : {e.Configuration.Publish}");
    Console.WriteLine($"{"New Bouncing Time",20} : {e.Configuration.BouncingTime}");
    }
    }
    }

  • Set Gpio Configuration

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace GMV.ITS.HAL.DEEPSY.Examples.Gpio
    {
    class SetGpioConfiguration
    {
    static void Main(string[] args)
    {
    string deepsyServerIp = args.Length == 0 ? "192.168.0.144" : args[0];
    using (GpioManager gpioManager = new GpioManager(deepsyServerIp))
    {
    List<IGpio> gpios = gpioManager.GetGpios().ToList();
    Console.WriteLine($"There are {gpios.Count()} GPIOS");
    IGpio gpio = gpios.FirstOrDefault(g => g.Information.Direction == DEEPSY.Gpio.Interface.Enum.GpioDirection.Direction.OUTPUT);
    if (gpio != null)
    {
    IGpioConfiguration currentConfiguration = gpio.Configuration;
    Console.WriteLine($"{"Alias",20} : {gpio.Configuration.Alias}");
    Console.WriteLine($"{"Default Value",20} : {gpio.Configuration.DefaultValue}");
    Console.WriteLine($"{"Bouncing Time",20} : {gpio.Configuration.BouncingTime}");
    IGpioConfiguration configuration = gpio.Configuration;
    configuration.Alias = "New alias";
    configuration.DefaultValue = 1;
    configuration.BouncingTime = 10;
    gpio.SetConfiguration(configuration);
    IGpio gpio2 = gpioManager.GetGpios().ToList().FirstOrDefault(g => g.Id == gpio.Id);
    Console.WriteLine($"{"Alias",20} : {gpio2.Configuration.Alias}");
    Console.WriteLine($"{"Default Value",20} : {gpio2.Configuration.DefaultValue}");
    Console.WriteLine($"{"Bouncing Time",20} : {gpio2.Configuration.BouncingTime}");
    //Set configuration as it was
    gpio.SetConfiguration(currentConfiguration);
    }
    }
    }
    }
    }


Definition: IGpioConfiguration.cs:3
Definition: McuDeepsyTest.cs:17
Definition: Configuration/AudioConfiguration.cs:6
Definition: Configuration/AudioConfiguration.cs:6
Definition: Gpio.cs:14
MifareUltralightCard type.
Definition: McuDeepsyTest.cs:17
Definition: Configuration/GpioConfiguration.cs:6
Allows to interact with a ServiceName service.
Definition: gpioApi.h:59
Definition: IGpioConfiguration.cs:3