fuyu-gpio 0.1.0.0 → 0.1.1.0
raw patch · 5 files changed
+50/−39 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Fuyu.GPIO.EdgeEvent: copyEvent :: RawEvent -> IO RawEvent
- Fuyu.GPIO.EdgeEvent: eventType :: RawEvent -> IO EventType
- Fuyu.GPIO.EdgeEvent: globalSeqNo :: RawEvent -> IO Word64
- Fuyu.GPIO.EdgeEvent: lineOffset :: RawEvent -> IO Offset
- Fuyu.GPIO.EdgeEvent: lineSeqNo :: RawEvent -> IO Offset
- Fuyu.GPIO.EdgeEvent: pattern Falling :: EdgeEventType
- Fuyu.GPIO.EdgeEvent: pattern Rising :: EdgeEventType
- Fuyu.GPIO.EdgeEvent: timestampNs :: RawEvent -> IO Timestamp
+ Fuyu.GPIO.EdgeEvent: [eventLineOffset] :: EdgeEvent -> !Offset
+ Fuyu.GPIO.EdgeEvent: [eventTimestamp] :: EdgeEvent -> !Timestamp
+ Fuyu.GPIO.EdgeEvent: [eventType] :: EdgeEvent -> !EdgeEventType
+ Fuyu.GPIO.EdgeEvent: copyRawEvent :: RawEvent -> IO RawEvent
+ Fuyu.GPIO.EdgeEvent: pattern EventFalling :: EdgeEventType
+ Fuyu.GPIO.EdgeEvent: pattern EventRising :: EdgeEventType
+ Fuyu.GPIO.EdgeEvent: rawEventType :: RawEvent -> IO EventType
+ Fuyu.GPIO.EdgeEvent: rawGlobalSeqNo :: RawEvent -> IO Word64
+ Fuyu.GPIO.EdgeEvent: rawLineOffset :: RawEvent -> IO Offset
+ Fuyu.GPIO.EdgeEvent: rawLineSeqNo :: RawEvent -> IO Offset
+ Fuyu.GPIO.EdgeEvent: rawTimestampNs :: RawEvent -> IO Timestamp
Files
- CHANGELOG.md +9/−0
- examples/05-request-config.hs +5/−5
- fuyu-gpio.cabal +1/−1
- src/Fuyu/GPIO/EdgeEvent.hs +27/−27
- src/Fuyu/GPIO/Types.hs +8/−6
CHANGELOG.md view
@@ -1,5 +1,14 @@ # Revision history for fuyu-gpio +## 0.1.1.0 -- 2026-09-12++* **API Disambiguation & Pattern Synonyms**:+ * Renamed edge event patterns from `Rising` and `Falling` to `EventRising` and `EventFalling` to avoid naming ambiguity with line configuration patterns (`EdgeRising`, `EdgeFalling`).+ * Added `{-# COMPLETE EventRising, EventFalling #-}` pattern match completion pragma for `EdgeEventType`.+ * Prefixed `RawEvent` metadata accessors with `raw*` (`rawEventType`, `rawTimestampNs`, `rawLineOffset`, `rawGlobalSeqNo`, `rawLineSeqNo`, `copyRawEvent`) to prevent naming conflicts with high-level functions.+* **Examples**:+ * Updated `examples/05-request-config.hs` to use the new `EventRising` and `EventFalling` pattern synonyms.+ ## 0.1.0.0 -- 2026-09-06 * **API Simplification & Architectural Consolidation**:
examples/05-request-config.hs view
@@ -126,11 +126,11 @@ -- - DT == 0 (LOW) -> Counter-Clockwise rotation (-1) updateEncoderState :: Edge.Event -> EncoderState -> EncoderState updateEncoderState (Edge.EdgeEvent offset evType _) st = case (offset, evType) of- (Offset 256, Edge.Falling) ->+ (Offset 256, Edge.EventFalling) -> let delta = if dtPin st == 1 then 1 else (-1) in st { clkPin = 0, position = position st + delta } - (Offset 256, Edge.Rising) -> st { clkPin = 1 }- (Offset 271, Edge.Falling) -> st { dtPin = 0 }- (Offset 271, Edge.Rising) -> st { dtPin = 1 }- _ -> st+ (Offset 256, Edge.EventRising) -> st { clkPin = 1 }+ (Offset 271, Edge.EventFalling) -> st { dtPin = 0 }+ (Offset 271, Edge.EventRising) -> st { dtPin = 1 }+ _ -> st
fuyu-gpio.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: fuyu-gpio-version: 0.1.0.0+version: 0.1.1.0 synopsis: High-level, type-safe interface for Linux GPIO (libgpiod v2). description: High-level, type-safe, and resource-managed Haskell interface for Linux GPIO character devices using libgpiod v2. Built on top of fuyu-gpio-direct, fuyu-gpio provides automatic memory management (bracket / with* style), typed exception handling, metadata snapshots, and zero-copy vector operations for high-performance GPIO I/O. license: LGPL-2.1-or-later
src/Fuyu/GPIO/EdgeEvent.hs view
@@ -36,8 +36,8 @@ , pattern Infinite , Timestamp , EdgeEventType- , pattern Rising- , pattern Falling+ , pattern EventRising+ , pattern EventFalling -- * Event Data Type & Parser , NonEmpty(..)@@ -56,13 +56,13 @@ , forRawEvents , forRawEvents_ - -- * RawEdgeEvent Metadata Accessors- , eventType- , timestampNs- , lineOffset- , globalSeqNo- , lineSeqNo- , copyEvent+ -- * RawEvent Metadata Accessors+ , rawEventType+ , rawTimestampNs+ , rawLineOffset+ , rawGlobalSeqNo+ , rawLineSeqNo+ , copyRawEvent ) where import Control.Exception (bracket, throwIO)@@ -74,7 +74,7 @@ import qualified Fuyu.GPIO.Direct as D import Fuyu.GPIO.Unsafe (newEventBuffer, freeEventBuffer, readEventsRaw) import Fuyu.GPIO.Exception-import Fuyu.GPIO.Types hiding (eventType)+import Fuyu.GPIO.Types -------------------------------------------------------------------------------- -- Domain Type Aliases@@ -154,26 +154,26 @@ -- RawEvent Metadata Accessors -------------------------------------------------------------------------------- --- | Get the type of event ('Rising' or 'Falling').-eventType :: RawEvent -> IO EventType-eventType = D.rawEdgeEventType+-- | Get the type of event ('EventRising' or 'EventFalling') from a raw event.+rawEventType :: RawEvent -> IO EventType+rawEventType = D.rawEdgeEventType --- | Get the event timestamp in nanoseconds.-timestampNs :: RawEvent -> IO Timestamp-timestampNs = D.rawEdgeEventTimestampNs+-- | Get the event timestamp in nanoseconds from a raw event.+rawTimestampNs :: RawEvent -> IO Timestamp+rawTimestampNs = D.rawEdgeEventTimestampNs --- | Get the offset of the line that triggered the event.-lineOffset :: RawEvent -> IO Offset-lineOffset = D.rawEdgeEventLineOffset+-- | Get the offset of the line that triggered the event from a raw event.+rawLineOffset :: RawEvent -> IO Offset+rawLineOffset = D.rawEdgeEventLineOffset --- | Get the global sequence number of the event.-globalSeqNo :: RawEvent -> IO Word64-globalSeqNo = D.rawEdgeEventGlobalSeqNo+-- | Get the global sequence number of the raw event.+rawGlobalSeqNo :: RawEvent -> IO Word64+rawGlobalSeqNo = D.rawEdgeEventGlobalSeqNo --- | Get the line-specific sequence number of the event.-lineSeqNo :: RawEvent -> IO Offset-lineSeqNo = D.rawEdgeEventLineSeqNo+-- | Get the line-specific sequence number of the raw event.+rawLineSeqNo :: RawEvent -> IO Offset+rawLineSeqNo = D.rawEdgeEventLineSeqNo -- | Make a copy of a raw edge event object.-copyEvent :: RawEvent -> IO RawEvent-copyEvent ev = unwrapOrThrow RawEdgeEventCopyFailed (D.rawEdgeEventCopy ev)+copyRawEvent :: RawEvent -> IO RawEvent+copyRawEvent ev = unwrapOrThrow RawEdgeEventCopyFailed (D.rawEdgeEventCopy ev)
src/Fuyu/GPIO/Types.hs view
@@ -71,8 +71,8 @@ -- * Edge Event Types & Patterns , EdgeEventType- , pattern Rising- , pattern Falling+ , pattern EventRising+ , pattern EventFalling -- * Line Info Event Types & Patterns , InfoEvent@@ -279,12 +279,14 @@ pattern Hardware = D.Hardware -- | Rising edge event type.-pattern Rising :: EdgeEventType-pattern Rising = D.Rising+pattern EventRising :: EdgeEventType+pattern EventRising = D.Rising -- | Falling edge event type.-pattern Falling :: EdgeEventType-pattern Falling = D.Falling+pattern EventFalling :: EdgeEventType+pattern EventFalling = D.Falling++{-# COMPLETE EventRising, EventFalling :: EdgeEventType #-} -- | Line requested info event type. pattern Requested :: InfoEventType