Commit Graph

54 Commits (5b5d0de02f37db0f91becb4bd496fb1df1e29236)

Author SHA1 Message Date
Marc-Antoine Ruel 5b5d0de02f Explicitly ignore error at many call sites for clarity
Used the following:
  go get github.com/kisielk/errcheck
  errcheck -ignore 'Close|rintf' ./...

While some are irrelevant, there were some genuine issues so this is worth
enforcing, hence a few innocuous places were 'fixed' so that the list could go
down to zero.

Do not enforce this in travis yet, but should be done soon.
8 years ago
Eugene 206686751e MPU9250 experimental driver, largely inspired by https://github.com/kriswiner/MPU9250/ (#265)
Provides some basic functionality for initialization, self-test,
calibrarion and reading the gyroscope and accelerometer data.

Uses SPI interface, I2C is yet to be implemented via the separate
transport.

Signed-off-by: Eugene Dzhurinsky <jdevelop@gmail.com>
8 years ago
Jorge D. Ortiz Fuentes afdedaf59d UnicornHD driver implementation (#250)
- Unicorn HD (https://shop.pimoroni.com/products/unicorn-hat-hd) driver.
- Implements display.Drawer.
- Test for partial update as required in the interface.
8 years ago
Marc-Antoine Ruel 0e0bb7e7dc bitbang: fix SPI with the new v3.0.0 spi interfaces
I had forgot to update it in time, resulting in a completely broken
implementation.

It's still broken, but it was even more broken.
8 years ago
Marc-Antoine Ruel cbaeada391 cap1xxx: move out of experimental 8 years ago
Marc-Antoine Ruel f7ddfe8f13 cap1xxx: generalize cap1188 to support more devices
cap1166 can be found in Display-O-Tron HAT by Pimoroni.
8 years ago
Marc-Antoine Ruel e634bc9fab Fix a ton of golint messages.
The remainder is ALL_CAPS, underscores and golint confusion when multiple
exported variables are defined on a single line.

No functional change except one error string tweaked.
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 f7d0d4e3d5 travis: run on 1.5.4
- Move go1.8+ test code using t.Run() into separate file conditionally compiled
  on go1.8+. It's not a big deal to partially lose test coverage on <1.8 as long
  as the main code runs fine.
- Run coverage before race checker to help get results faster.
- Fix typo.
- No need to run travis on recent versions, they are handed by gohci workers and
  they are faster. :)
8 years ago
Marc-Antoine Ruel 6f8bd69f03 Consistently cache display device Bounds()
Improve Draw() performance.
8 years ago
Marc-Antoine Ruel 0a22d3193e nrzled: change to Opts pattern
This makes it coherent with other drivers.
8 years ago
Marc-Antoine Ruel dfd55c438e Tweak package doc for many executables 8 years ago
M-A 10ef55d6b0 cap1188: tweaks in the device driver (#244)
- Change DefaultOpts to be a struct instead of a function. This makes the godoc
  much more descriptive.
- Change InputStatus() to accept a slice, so that the driver will be able to
  eventually support the flavors cap1155 and cap1166.
8 years ago
Marc-Antoine Ruel e1decce7e5 gpiostream: replace Resolution with Frequency
It's easier for people to think in term of frequency when working with bitstream
than with the clock cycle duration in µs.
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 46ea7926cc gpiostream: Add BitStream.LSBF
Remove Bits.

Fixes #189
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 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 89531ab87e Reduce references to devices.Device
This interface will be removed in v3.
8 years ago
Eugene 4251b6f3e3 Fixed MFRC522 trailing sector overflow (#224)
If the passed key is longer than 6 bytes, it will corrupt the access
bits for the trailing sector.

Fixed the bit calculation, updates tests.

Changed signatures to accept 6-byte long arrays instead of slices.

Minor typo for HD44780

Signed-off-by: Eugene Dzhurinsky <jdevelop@gmail.com>
8 years ago
Eugene 1bd781af86 Hitachi HD44780U Dot Matrix Liquid Crystal Display (#223)
Signed-off-by: Eugene Dzhurinsky <jdevelop@gmail.com>
8 years ago
Eugene 46011cfcbf MFRC522: Code review follow-up (#221)
Catch errors
Update formatting

Signed-off-by: Eugene Dzhurinsky <jdevelop@gmail.com>
8 years ago
Eugene ddf7ca2519 Initial support for the Mifare MFRC522 RFID Reader (#220)
Signed-off-by: Eugene Dzhurinsky <jdevelop@gmail.com>
8 years ago
M-A 2f8171ed6c cap1188: refactor a bit. (#203)
- Make errors consistents.
- Standardize comments.
- Make unit test much faster by not sleeping.
- Reduce the number of properties of Dev.
  - Do not export Opts.
- Commented out I/O for unused data.
- Slightly reduce memory usage.
- Comment out NewSPI() since it is not implemented.
- Remove verbosity by default.
8 years ago
Marc-Antoine Ruel 089b8dccab Reduce number of errcheck lint messages from 117 to 2.
- Ran github.com/kisielk/errcheck on the code base, and either trapped errors or
  marked them as ignored explicitly. The stats was calculated via:
    errcheck ./... | grep -v defer | wc -l
- Stop registering gpio.INVALID, it can't be registered.
- Fix a go vet issue in cap1188.
9 years ago
Matt Aimonetti 68f531c751 cap1188 experimental device (#192)
This driver was tested against a adafruit version of the cap1188
https://learn.adafruit.com/adafruit-cap1188-breakout/overview and the
pimoroni drumhat:
https://shop.pimoroni.com/collections/raspberry-pi/products/drum-hat
(which has its LED reversed and uses a different i2c address).
9 years ago
M-A 11522179a3 gpiostream: Implement LSB and MSB variations. (#188)
Make the encoding clear via examples.

Comment that the non-marked version is deprecated and will be removed in the
next major version.
9 years ago
M-A 0b05c62a9e nrzled: add support for ws281x and clones (#165)
- Includes driver and CLI. Completely untested.
9 years ago
M-A 70fd9082bb bmp180: promote to stable; fix bug in bme280 (#152)
- bme280: fix hang in Halt() if SenseContinuous() listener is hung.
- bmp180: Add unit tests; increase test coverage to 96%.
- bmp180: Remove Reset(). There's no known use case.
- bmp180: Implement SenseContinuous().
- Consistently wrap errors in both packages.
- Various typos.
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
Alexander Neumann 61c1b2c139 Add driver for Bosch BMP180 temp/pressure sensor (#132) 9 years ago
Marc-Antoine Ruel b61c90429c spi: Add first version of TxPackets + NoCS, HalfDuplex, LSBFirst.
- This enables more complex use case like write-then-read, 3-wire SPI and when
  the number of bits per word changes accross packets.
- Remove the transparent Tx() buffer cutting, the Raspberry Pi 3 spi_bcm2835
  driver asserts the CS line even if csChange = 0 on the last packet. This broke
  some use case (like FLIR Lepton).

spi-io: improve with more use cases. Used for adhoc testing of the SPI bus and
looking at the results over an oscilloscope.
9 years ago
Marc-Antoine Ruel aff3ae8a77 i2c and spi: clarify with SetSpeed vs LimitSpeed.
Otherwise when reading code is it very unclear if it may be slower or not.

Yet another breaking change.
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 c15fd0bfa5 Add conn.Conn.Duplex() (#118)
Now each connection can report if the underlying communication channel is
half-duplex or full-duplex.

This information is leveraged by some clients, like memory mapped registers
helper struct, to change their behavior or deny use on certain kind of
communication channel.
9 years ago
M-A 56aad834ae Promote onewire, ds18b20 and ds248x to stable. (#117)
It works and it is tested.
9 years ago
Marc-Antoine Ruel 39aa0b9373 Update links without /doc/
See cdf3755696
9 years ago
Marc-Antoine Ruel c9298db3b0 Fix issues found by misspell, gofmt -s -w, golint and go vet; add badges
- There were several typos
- Simplified a few simplified statements
- Added doc for a few exported symbols
- Fix incorrect printf usage
9 years ago
M-A aa4d58cb95 Fix paths and rename all markdown files to README.md (#112)
This simplify the parsing by hugo.

Replace all '*' by '-' because my editor hates stars as list and it's a bad
idea after all.
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
Thorsten von Eicken a76f663ae2 Add onewire smoke test (#104)
* set SPI speed and mode in spi smoketest
* add one-wire smoke test
10 years ago
M-A 2d5524c4cb gpio: Rename Edge constants. (#103)
This is to make the value more readable at the call site.
10 years ago
M-A 3368c35ef7 gpio: Rename Up and Down to PullUp and PullDown. (#93)
This should make it more approachable for first time users.
10 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
M-A 5cddc1641d host: migrate functions to subpackage cpu. (#63)
Otherwise this would cause some drivers to import host, which would import
drivers that the user may not desire.

This commit fixes this import loop.
10 years ago
Thorsten von Eicken 3bb6afb0ac Add support for DS248x i2c to onewire interface chip, and DS18B20 temp sensors (#59) 10 years ago
M-A 508e7b6b50 Improve error messages. (#46) 10 years ago
M-A 8bca85318d conn: Simplify Conn, rename i2c.Conn to i2c.Bus. (#40)
- Remove fmt.Stringer and io.Writer from conn.Conn. This makes it compatible
  with exp/io.
- Rename i2c.Conn to i2c.Bus since this was confusion. This clarifies the
  distinction between a point-to-point connection and a bus.
- Add these to bus specific interfaces, i2c.Bus, spi.Conn, uart.Conn.

Fixes #15.
10 years ago