Comments (4)
I'm not sure I understand what would be the advantages of having this. Would you mind providing an Api proposal that would have more details and samples into how this would be used? Here is an example of a good Api Proposal: https://github.com/dotnet/corefx/issues/271
from iot.
@grahamehorner for layering reasons, we're currently not planning to take a dependency on the higher level Microsoft.Extensions.DependencyInjection assembly from this low level hardware abstraction. However, with the current API you can specify a custom device driver by inheriting from the GpioDriver abstract class and passing it as a parameter to the GpioController ctor.
Does this satisfy the needs of your scenario?
https://github.com/dotnet/iot/blob/master/src/System.Device.Gpio/System/Device/Gpio/GpioDriver.cs
https://github.com/dotnet/iot/blob/master/src/System.Device.Gpio/System/Device/Gpio/GpioController.cs#L39
using (GpioController controller = new GpioController(myNumberingScheme, myCustomGpioDriver))
{
controller.OpenPin(pin, PinMode.Output);
from iot.
@joshfree while I understand not wishing to take a dependency on a higher level assembly; I do believe the that driver abstraction/implementations should be held in some kind of registry and/or a simple DI system; this would allow greater flexibility/testability for developers with minimal code change; swapping drivers by way of change the registration/configuration and not code.
eg. the registration of an the implementation of VirtualGpioDriver, the options type associated with the driver options and an optional action to perform additional configure of the driver at runtime construction/instantiation.
System.Device.DriverRegistry.Register<TDriver,TDriverOptions>(string driverName, Action<TDriverOptions> options)
using(var driver = System.Device.DriverRegistry.Resolve<GpioDriver>("driverName",(options)=>
{
options.someConfiguration = 12;
}))
{
driver.doSomeWork();
}
from iot.
[Triage] This seems to bit a bit out of scope of this project. It adds too much overhead for most common scenarios. If we want to have something like that it should be an additional package.
from iot.
Related Issues (20)
- System.Device.* HOT 2
- Won't open
- Iot.Device.Media VideoDevice Capture creates corrupt images with Raspberry PI Camera module 3 HOT 17
- I2S Missing HOT 3
- Does the library support TRF7970A? HOT 3
- FT232H Cannot register for pin value change events HOT 2
- Update Raspberry Pi samples suggesting modifying config.txt settings HOT 5
- Unable to set pin mode on pi5 HOT 4
- Breaking change: Y2038 support for .NET Arm32 HOT 1
- arix.local HOT 1
- Misleading XML summary for ButtonBase.IsPressed HOT 1
- TM16xx is very unstable - shows strange characters most of the time HOT 7
- GPIO input gives segmentation fault on BeagleBone Black in v3.1.0 HOT 20
- Implement Raspberry5Driver and board HOT 1
- Add support for SPI devices that use separate GPIO outputs for Data/Command and Reset HOT 4
- If using gpio on an arm Linux system. How do I make things displayed on the interface? HOT 2
- Unable to get consistent manual exposures HOT 6
- PinNumberingScheme.Board is broken HOT 2
- SPI communication on RPI5 is possibly broken
- ButtonBase.IsPressed not properly initialized HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iot.