abstracted GPIO device driver