2 * Copyright (c) 2011 Jiri Svoboda
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 #include <nic_iface.h>
43 /** Device address changed. */
44 errno_t
nic_ev_addr_changed(async_sess_t
*sess
, const nic_address_t
*addr
)
46 async_exch_t
*exch
= async_exchange_begin(sess
);
49 aid_t req
= async_send_0(exch
, NIC_EV_ADDR_CHANGED
, &answer
);
50 errno_t retval
= async_data_write_start(exch
, addr
,
51 sizeof(nic_address_t
));
53 async_exchange_end(exch
);
60 async_wait_for(req
, &retval
);
64 /** Device state changed. */
65 errno_t
nic_ev_device_state(async_sess_t
*sess
, sysarg_t state
)
69 async_exch_t
*exch
= async_exchange_begin(sess
);
70 rc
= async_req_1_0(exch
, NIC_EV_DEVICE_STATE
, state
);
71 async_exchange_end(exch
);
76 /** Frame received. */
77 errno_t
nic_ev_received(async_sess_t
*sess
, void *data
, size_t size
)
79 async_exch_t
*exch
= async_exchange_begin(sess
);
82 aid_t req
= async_send_0(exch
, NIC_EV_RECEIVED
, &answer
);
83 errno_t retval
= async_data_write_start(exch
, data
, size
);
85 async_exchange_end(exch
);
92 async_wait_for(req
, &retval
);