Pebble.Platform
Platform glue for Pebble watch applications.
This module wraps Platform.worker so your init function receives a typed LaunchContext decoded from JSON launch metadata.
Native Pebble C API
- App on developer.repebble.com
Launch metadata
LaunchReason
type LaunchReason
= LaunchSystem
| LaunchUser
| LaunchPhone
| LaunchWakeup
| LaunchWorker
| LaunchQuickLaunch
| LaunchTimelineAction
| LaunchSmartstrap
| LaunchUnknownWhy the app or worker launched on the watch.
LaunchScreen
type alias LaunchScreen =
{ width : Int
, height : Int
, shape : DisplayShape
, colorMode : ColorCapability
}Screen details for the currently simulated or connected watch model.
LaunchContext
type alias LaunchContext =
{ reason : LaunchReason
, watchModel : String
, watchProfileId : String
, screen : LaunchScreen
, hasMicrophone : Bool
, hasCompass : Bool
, supportsHealth : Bool
}Full launch metadata delivered to init.
ColorCapability
type ColorCapability
= BlackWhite
| ColorColor capability for the currently simulated or connected watch model.
DisplayShape
type DisplayShape
= Rectangular
| RoundDisplay shape for the currently simulated or connected watch model.
launchReasonFromTag
launchReasonFromTag : Int -> LaunchReasonDecode an integer launch tag into a LaunchReason.
launchReasonToInt
launchReasonToInt : LaunchReason -> IntEncode a LaunchReason into the integer tag used by the native runtime.
colorCapabilityIsColor
colorCapabilityIsColor : ColorCapability -> BoolWhether a color capability supports color rendering.
displayShapeIsRound
displayShapeIsRound : DisplayShape -> BoolWhether a display shape is round.
Program entrypoint
watchface
watchface : { init : LaunchContext -> ( model, Cmd msg )
, update : msg -> model -> ( model, Cmd msg )
, view : model -> view
, subscriptions : model -> Sub msg
}
-> Program Decode.Value model msgStart a Pebble watchface.
config.init receives a typed launch context. view is retained as the watch rendering contract, while init/update/subscriptions are forwarded to Elm's headless Platform.worker.
application
application : { init : LaunchContext -> ( model, Cmd msg )
, update : msg -> model -> ( model, Cmd msg )
, view : model -> view
, subscriptions : model -> Sub msg
}
-> Program Decode.Value model msgStart a Pebble watch application.
Use this for apps rather than watchfaces. It currently has the same runtime shape as watchface, but keeps the app/watchface distinction explicit for build tooling.