sig
  type pin =
      P00
    | P01
    | P02
    | P03
    | P04
    | P05
    | P06
    | P07
    | P08
    | P09
    | P10
    | P11
    | P12
    | P13
    | P14
    | P15
    | P16
    | P17
    | P18
    | P19
    | P20
    | P21
    | P22
    | P23
    | P24
    | P25
    | P26
    | P27
    | P28
    | P29
    | P30
    | P31
    | P32
    | P33
    | P34
    | P35
    | P36
    | P37
    | P38
    | P39
    | P40
    | P41
    | P42
    | P43
    | P44
    | P45
    | P46
    | P47
    | P48
    | P49
    | P50
    | P51
    | P52
    | P53
  type func =
      F_IN
    | F_OUT
    | F_ALT5
    | F_ALT4
    | F_ALT0
    | F_ALT1
    | F_ALT2
    | F_ALT3
  val set_func : Rpi.Gpio.pin -> Rpi.Gpio.func -> unit
  type pull_state = PULL_OFF | PULL_DOWN | PULL_UP
  val set_pull_state : Rpi.Gpio.pin -> Rpi.Gpio.pull_state -> unit
  val get : Rpi.Gpio.pin -> bool
  val set : Rpi.Gpio.pin -> bool -> unit
end