packages feed

myo-0.1.0.0: examples/WS.hs

{-# LANGUAGE ScopedTypeVariables #-}
module Main where

import qualified Data.Aeson as JSON
import Network.WebSockets
import Myo.WebSockets
import Control.Monad
import Lens.Family2

main :: IO ()
main = runClient "localhost" 10138 "/myo/3?appid=com.example.appid" myoWS

myoWS :: Connection -> IO ()
myoWS conn = forever $ do
  newData <- receiveData conn
  let (msg :: Either String MyoFrame) = JSON.eitherDecode' newData
  case msg of
    Left e   -> do
      putStrLn e
      putStrLn (show newData)
    Right (Event my) -> case my ^. mye_type of
      EVT_Paired -> putStrLn "MYO PAIRED!"
      EVT_Connected -> putStrLn "MYO CONNECTED!"
      EVT_Pose -> case my ^. mye_pose of
        Nothing -> putStrLn "GOT A POSE!"
        Just  p -> putStrLn $ "GOT POSE: " ++ show p
      EVT_Arm_Synced -> putStrLn "MYO ARM SYNCED"
      EVT_Arm_Unsynced -> putStrLn "MYO ARM UNSYNCED"
      _ -> return ()