patch-2.1.132 linux/net/irda/timer.c
Next file: linux/net/irda/wrapper.c
Previous file: linux/net/irda/qos.c
Back to the patch index
Back to the overall index
- Lines: 217
- Date:
Thu Dec 17 09:01:03 1998
- Orig file:
v2.1.131/linux/net/irda/timer.c
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.1.131/linux/net/irda/timer.c linux/net/irda/timer.c
@@ -0,0 +1,216 @@
+/*********************************************************************
+ *
+ * Filename: timer.c
+ * Version:
+ * Description:
+ * Status: Experimental.
+ * Author: Dag Brattli <dagb@cs.uit.no>
+ * Created at: Sat Aug 16 00:59:29 1997
+ * Modified at: Wed Dec 9 01:34:59 1998
+ * Modified by: Dag Brattli <dagb@cs.uit.no>
+ *
+ * Copyright (c) 1997 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * Neither Dag Brattli nor University of Tromsų admit liability nor
+ * provide warranty for any of this software. This material is
+ * provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#include <asm/system.h>
+#include <linux/delay.h>
+
+#include <net/irda/timer.h>
+#include <net/irda/irda.h>
+#include <net/irda/irtty.h>
+#include <net/irda/irlap.h>
+#include <net/irda/irlmp_event.h>
+
+static void irlap_slot_timer_expired( unsigned long data);
+static void irlap_query_timer_expired( unsigned long data);
+static void irlap_final_timer_expired( unsigned long data);
+static void irlap_wd_timer_expired( unsigned long data);
+static void irlap_backoff_timer_expired( unsigned long data);
+
+static void irda_device_media_busy_expired( unsigned long data);
+/*
+ * Function irda_start_timer (timer, timeout)
+ *
+ * Start an IrDA timer
+ *
+ */
+void irda_start_timer( struct timer_list *ptimer, int timeout, int data,
+ TIMER_CALLBACK callback)
+{
+ del_timer( ptimer);
+
+ ptimer->data = (unsigned long) data;
+ ptimer->function = callback;
+ ptimer->expires = jiffies + timeout;
+
+ add_timer( ptimer);
+}
+
+inline void irlap_start_slot_timer( struct irlap_cb *self, int timeout)
+{
+ irda_start_timer( &self->slot_timer, timeout, (unsigned long) self,
+ irlap_slot_timer_expired);
+}
+
+inline void irlap_start_query_timer( struct irlap_cb *self, int timeout)
+{
+ irda_start_timer( &self->query_timer, timeout, (unsigned long) self,
+ irlap_query_timer_expired);
+}
+
+inline void irlap_start_final_timer( struct irlap_cb *self, int timeout)
+{
+ irda_start_timer( &self->final_timer, timeout, (unsigned long) self,
+ irlap_final_timer_expired);
+}
+
+inline void irlap_start_wd_timer( struct irlap_cb *self, int timeout)
+{
+ irda_start_timer( &self->wd_timer, timeout, (unsigned long) self,
+ irlap_wd_timer_expired);
+}
+
+inline void irlap_start_backoff_timer( struct irlap_cb *self, int timeout)
+{
+ irda_start_timer( &self->backoff_timer, timeout, (unsigned long) self,
+ irlap_backoff_timer_expired);
+}
+
+inline void irda_device_start_mbusy_timer( struct irda_device *self)
+{
+ irda_start_timer( &self->media_busy_timer, MEDIABUSY_TIMEOUT,
+ (unsigned long) self,
+ irda_device_media_busy_expired);
+
+}
+
+inline void irlmp_start_watchdog_timer( struct lsap_cb *self, int timeout)
+{
+ irda_start_timer( &self->watchdog_timer, timeout, (unsigned long) self,
+ irlmp_watchdog_timer_expired);
+}
+
+inline void irlmp_start_discovery_timer( struct irlmp_cb *self, int timeout)
+{
+ irda_start_timer( &self->discovery_timer, timeout,
+ (unsigned long) self,
+ irlmp_discovery_timer_expired);
+}
+
+/*
+ * Function irlap_slot_timer_expired (data)
+ *
+ * IrLAP slot timer has expired
+ *
+ */
+static void irlap_slot_timer_expired( unsigned long data)
+{
+ struct irlap_cb *self = (struct irlap_cb *) data;
+
+ DEBUG( 4, "Slot timer expired!\n");
+
+ ASSERT( self != NULL, return;);
+ ASSERT( self->magic == LAP_MAGIC, return;);
+
+ irlap_do_event( self, SLOT_TIMER_EXPIRED, NULL, NULL);
+}
+
+/*
+ * Function irlap_query_timer_expired (data)
+ *
+ * IrLAP query timer has expired
+ *
+ */
+static void irlap_query_timer_expired( unsigned long data)
+{
+ struct irlap_cb *self = (struct irlap_cb *) data;
+
+ DEBUG( 4, "Query timer expired!\n");
+
+ ASSERT( self != NULL, return;);
+ ASSERT( self->magic == LAP_MAGIC, return;);
+
+ irlap_do_event( self, QUERY_TIMER_EXPIRED, NULL, NULL);
+}
+
+/*
+ * Function irda_final_timer_expired (data)
+ *
+ *
+ *
+ */
+static void irlap_final_timer_expired( unsigned long data)
+{
+ struct irlap_cb *self = (struct irlap_cb *) data;
+
+ DEBUG( 4, "Final timer expired!\n");
+
+ ASSERT( self != NULL, return;);
+ ASSERT( self->magic == LAP_MAGIC, return;);
+
+ irlap_do_event( self, FINAL_TIMER_EXPIRED, NULL, NULL);
+}
+
+/*
+ * Function irda_wd_timer_expired (data)
+ *
+ *
+ *
+ */
+static void irlap_wd_timer_expired( unsigned long data)
+{
+ struct irlap_cb *self = (struct irlap_cb *) data;
+
+ DEBUG( 4, "WD timer expired!\n");
+
+ ASSERT( self != NULL, return;);
+ ASSERT( self->magic == LAP_MAGIC, return;);
+
+ irlap_do_event( self, WD_TIMER_EXPIRED, NULL, NULL);
+}
+
+/*
+ * Function irda_backoff_timer_expired (data)
+ *
+ *
+ *
+ */
+static void irlap_backoff_timer_expired( unsigned long data)
+{
+ struct irlap_cb *self = (struct irlap_cb *) data;
+
+ DEBUG( 0, "Backoff timer expired!\n");
+
+ ASSERT( self != NULL, return;);
+ ASSERT( self->magic == LAP_MAGIC, return;);
+
+ irlap_do_event( self, BACKOFF_TIMER_EXPIRED, NULL, NULL);
+}
+
+
+/*
+ * Function irtty_media_busy_expired (data)
+ *
+ *
+ */
+void irda_device_media_busy_expired( unsigned long data)
+{
+ struct irda_device *self = ( struct irda_device *) data;
+
+ DEBUG( 4, "Mediabusy timer expired!\n");
+
+ ASSERT( self != NULL, return;);
+ ASSERT( self->magic == IRDA_DEVICE_MAGIC, return;);
+
+ irda_device_set_media_busy( self, FALSE);
+}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov