ose_erl_driver

Linked-in drivers in Enea OSE

Writing Linked-in drivers that also work on Enea OSE is very similar for
how you would do it for Unix. The difference from Unix is that
driver_select, ready_input and ready_output all work with signals
instead of file descriptors. This means that the driver_select is
used to specify which type of signal should trigger calls to
ready_input/ready_output. The functions described below are available
to driver programmers on Enea OSE to facilitate this.

DATA TYPES

union SIGNAL

See the Enea OSE SPI documentation for a description.

SIGSELECT

See the Enea OSE SPI documentation for a description.

ErlDrvEvent

The ErlDrvEvent is a handle to a signal number and id combination. It is passed to driver_select(3).

ErlDrvOseEventId

This is the id used to associate a specific signal to a
certain driver instance.

Fetch the next signal associated with drv_event.
Signals will be returned in the order which they were received and
when no more signals are available NULL will be returned.
Use this function in the ready_input/ready_output callbacks
to get signals.

Create a new ErlDrvEvent associated with signo,
id and uses the resolve_signal function to extract
the id from a signal with signo. The extra
parameter can be used for additional data. See
Signals in a Linked-in driver in the OSE User's Guide.

void erl_drv_ose_event_free(ErlDrvEvent drv_event)

Free a ErlDrvEvent. This should always be done in the
stop_select
callback when the event is no longer being used.