Commit Graph

38 Commits (bbc377d76aad7d7cfb27aed5d740c0424c9198bf)

Author SHA1 Message Date
Ben Lazarus bbc377d76a apa102: Add RawColors option (#260)
This adds a new option to bypass the perceptual remapping code and
directly write the RGB values to the APA102.
8 years ago
Ben Lazarus 70adef3f63 apa102: refactor raster functions (#254)
- rasterImg() now calls raster() instead of duplicating it
- Add a fast path for RGBA
- Add tests for Draw()s called with src and dst offsets supplied
8 years ago
Ben Lazarus e2aca639ef apa102: add new benchmarks for raster refactor (#259) 8 years ago
Ben Lazarus 82d2ba2f9b apa102: simplify Draw() benchmark (#253) 8 years ago
Ben Lazarus a90b2edbb3 apa102: refactor benchmarks (#252) 8 years ago
Ben Lazarus a948b6ab2e apa102: Refactor tests (#251)
- Convert existing tests to table-driven
- Make reading []byte diffs easier by aligning lines
- Should be a no-op in terms of what's being tested and with what data
8 years ago
Marc-Antoine Ruel 98e2118731 devices: overhaul documentation
- Standardize package documentation into doc.go
- Link back to the web site in a standardized way
- Update datasheet links for lepton
8 years ago
Marc-Antoine Ruel 501558c627 conn/display: simplify Drawer
display: move devices.Display as display.Drawer

This removes the last interface from devices, which was misplaced due to
historical accident. The new package display will also be the location for an
interface for text output only devices.

Remove io.Writer from this interface. While it's a good performance optimization
for some drivers, it shouldn't be required.

Change Draw():
- Return an error, so that communication erorr can be surfaced correctly,
  instead of an adhoc driver specific Err() method.
8 years ago
Marc-Antoine Ruel 6f8bd69f03 Consistently cache display device Bounds()
Improve Draw() performance.
8 years ago
Marc-Antoine Ruel 8fa8a276a6 apa102: fix typo, use DefaultOpts in cmd
Reduce the number of constants by having cmd/apa102 uses the values from
apa102.DefaultOpts. This increases the default intensity from 127 to 255.
8 years ago
Marc-Antoine Ruel 332037c25e Update use of frequency to use physic.Frequency
This is borderline pedantic but enables 30*physic.MegaHertz which I think is
more readable than 30000000, reducing the risk of typos.

Do not change Stream.Resolution() gpiostream yet, but I'll likely change it too
to match in a follow up.
8 years ago
Marc-Antoine Ruel caf4bf4327 apa102: switch to an Opts pattern
While it may not look necessary to some drivers, it is useful to have a
consistent pattern. The Opts never specify connectivity, only other parameters.

Issue #194
8 years ago
Marc-Antoine Ruel f15a60524d Benchmark related changes
- .gohci.yml: Run with both -cover and -bench on odroid and win10 and make the
  benchtime 1000ms instead of 10ms to increase precision, as this was lacking.
- apa102: add benchmark for toRGBFast()
- bmxx80: add benchmark for conversion functions.
- gpiotest: silence test (was leaking output during benchmarks)
- physic: add benchmark for the current int64 String() implementation compared
  to an hypothetical (simpler) float64 based implementation.
8 years ago
Marc-Antoine Ruel 84ee99bd88 Fix remaining misuses of °K and one KPa 8 years ago
Marc-Antoine Ruel 989d5f693d Benchmarks: call ReportAllocs() explicitly everywhere
This removes the need to specify the flag -benchmem.
8 years ago
Marc-Antoine Ruel c9255b11f7 apa102: remove allocation in Halt
Document where Draw() cause a memory allocation in the case of an image format
other than NRGBA.
8 years ago
Marc-Antoine Ruel 5b5083e8fb Move code around to make drivers follow a common pattern
The idea is to enable navigating across the code more easily by using similar
layout amongs the drivers.

Similar to gofmt, it's not about making a stylistic choice, but having a single
style.

Use the following layout for drivers:
- exported support types
- Opts struct
- New func
- Dev struct and methods
- Private support code

No functional change.

A lot of code moved around, so it will likely break any pending PR or fork. :/
8 years ago
Marc-Antoine Ruel 124fa6f98b I was so happy with recent Example refactors, did it for all packages
This creates an example_test.go for each package with at least one
Example, and move all examples in it. Make the example_test.go file live
into a separate package 'foo_test' so it can call host.Init() and thus
can be copied as-is.
8 years ago
M-A 7dc1026c65 conn: Add Resource, superseds devices.Device (#162)
In practice I want to be able for gpioreg.Register() to eventually enforce that
Halt() is implemented on gpio.Pin, so that three's a consistent way to stop
gpiostream operations or PWM() output. This requires the interface to live in
conn, not in devices.

Do not use go1.9 type alias to not break compatibility with older Go version
yet.
9 years ago
M-A 3d1aec5647 apa102: minor tweaks (#158)
- Disallow writing a buffer longer than the number used. Silently
  dropping data is always annoying to debug. Clear failure is better.
- Rename private variables and document them better.
- Replace 'lights' by 'pixels'. This is more precise.
9 years ago
M-A ea63dac2c6 devices: Add Environmental.SenseContinuous(); implement for bme280 (#150)
- devices: Add SenseContinuous() to Environmental.
- devices: Add Device to Display and Environmental.
- devices: Remove fmt.Stringer from Device.
- devices: Add more type assertions to variaous devices and corresponding unit test.
- bme280: Unexport the Standby parameter.
- bme280: Have SenseContinuous accept time.Duration period instead.
- bme280: Do not enable automatic sensing upon initialization.
- bme280: Use forced mode by default.
- bme280smoketest: improved.
9 years ago
M-A 24ef228ca1 spi: Rename Port.DevParams to Connect (#149)
It better conveys the purpose of the function, which is to create a Conn over a
Port.
9 years ago
M-A e1b4eec42a spi: rename variables 'bus' to 'port' where applicable (#143)
As people like to copy paste code, make sure that the semantic of the variable
names is always relevant w.r.t. the object they refer to. In particular, do not
use 'bus' to refer to an spi.Port or spi.PortCloser, as this is blur the
distinction.

Also rename a few fooName to fooID.
9 years ago
M-A f33f0732fb spi: Refactor Conn and ConnCloser into Conn, Port and PortCloser (#131)
This clarifies the difference on ownership and makes it clear that DevParams()
is essentially a 'connection factory'.

The flow is:
  Bus -> Port -> Conn

Doing this caught inconsistencies in the unit tests. Made the structs in spitest
enforce the fact that DevParams() can only be called once.

In a follow up, I'll rename a lot of 'bus' to 'port' to be more consistent but
punting to not make this change unreviewable.
9 years ago
Marc-Antoine Ruel fbf842d637 devices: Add devices.Device and Halt() for all device drivers
This starts a semblance of coherence for drivers. In particular Halt() marks a
clear difference from Close (connection) and is the term used by gobot.
9 years ago
M-A 7faec2c2d3 spi: Update spi.Conn to separate app and device configuration. (#123)
- Allow both app and device drive set max bus speed.
- Make DevParams callable only exactly once.
- sysfs-spi: make SPI implement io.Reader.
- sysfs-spi: Fix Tx() with write only or read only.
9 years ago
M-A c8b66ce778 Split registries into their own packages. (#122)
conn/gpio -> conn/gpio/gpioreg
conn/i2c -> conn/i2c/i2creg
conn/spi -> conn/spi/spireg
conn/pins -> conn/pin
host/headers -> conn/pin/pinreg
conn/reg -> conn/mmr
9 years ago
Marc-Antoine Ruel cbac673bcf s/OpenByName/Open/g and d/OpenByNumber/
This shortens OpenByName() to Open() and removes OpenByNumber(). The concept of
number is not removed, it's still possible to open a bus by number, but a base10
string representation of the number is now needed. In practice, I haven't found
a real use for OpenByNumber().

This simplify the API surface, less functions leads to simpler to understand
API.

This is a breaking change.
9 years ago
Marc-Antoine Ruel 9fe596f933 apa102: increase coverage to 100%
Make Write() handle when buffer is too long.
9 years ago
M-A 6620acdaca spi: Rewrite similar to how i2c was refactored (#120)
Because of the way the SPI bus is exposed via sysfs, do not use the same pattern
as i2c. This may change as more OSes are supported.

Increase test coverage for spi and spitest to 100%.
9 years ago
Marc-Antoine Ruel 7464232a5f Remove io.Writer from spi.Conn
This was interface creep
9 years ago
M-A bbcd750d5b Replace github.com/google with periph.io/x (#110)
This makes periph.io/x/periph as the repository root so it is not tied to the
Google organisation anymore.
9 years ago
M-A 0075d9e849 Increase polish. (#75)
- Make error more consistent and more helpful. Not all errors are wrapped yet
  but a fair part is now.
- Remove the 'first' pattern in i2c, spi, uart and make it work.
- Add allwinner.Pin.wrap() for coherence with PinPL and bcm283x.Pin.
- headers.All() return a copy.
10 years ago
Marc-Antoine Ruel 8a8a4edc01 apa102: fix unit tests.
Changing the temperature calculation from float64 to lookup tables causes small
(<3 in value) changes in the recorded data.
10 years ago
M-A 8925bb0af7 apa102: remove remaining float64 use and dependency on maruel/temperature. (#67)
temperature.ToRGB() was implemented in floating point. OMG.

Fixes #22
10 years ago
M-A ae8f618573 Rename pio to periph. (#27)
Ran:
    git sed 's/pio/periph/g
    git sed 's/gperiph/gpio/g'
    git sed 's/Gperiph/Gpio/g'
    git sed 's/PIO/Periph/g'
    git sed 's/GPeriph/GPIO/g'
    git mv pio.go periph.go
    git mv pio_test.go periph_test.go
    cd cmd
    git mv pio-info periph-info
    git mv pio-setup periph-setup

where 'git sed' is an alias to run sed over all files in git ls-files.

Fixes #11.
10 years ago
M-A 6c4287b4da Change copyright from Google Inc to The PIO Authors. (#3)
The PIO Authors is a superset of Google Inc. It includes Google and any
additional contributors that are listed in AUTHORS.
10 years ago
Marc-Antoine Ruel eb384b9d0c Initial commit of pio.
This was extracted from github.com/maruel/dlibox/go/pio @ f51102b.
This code was written by Marc-Antoine Ruel.
10 years ago