packages feed

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 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