static int ircomm_state_conn(struct ircomm_cb *self, IRCOMM_EVENT event, struct sk_buff *skb, struct ircomm_info *info) { int ret = 0; switch (event) { case IRCOMM_DATA_REQUEST: ret = self->issue.data_request(self, skb, 0); break; case IRCOMM_TTP_DATA_INDICATION: ircomm_process_data(self, skb); break; case IRCOMM_LMP_DATA_INDICATION: ircomm_data_indication(self, skb); break; case IRCOMM_CONTROL_REQUEST: ret = self->issue.data_request(self, skb, skb->len); break; case IRCOMM_TTP_DISCONNECT_INDICATION: case IRCOMM_LMP_DISCONNECT_INDICATION: ircomm_next_state(self, IRCOMM_IDLE); ircomm_disconnect_indication(self, skb, info); break; case IRCOMM_DISCONNECT_REQUEST: ircomm_next_state(self, IRCOMM_IDLE); ret = self->issue.disconnect_request(self, skb, info); break; default: IRDA_DEBUG(0, "%s(), unknown event = %s\n", __func__ , ircomm_event[event]); ret = -EINVAL; } return ret; }
/* * Function ircomm_state_waitr (self, event, skb) * * IrCOMM has received an incoming connection request and is awaiting * response from the user */ static int ircomm_state_waitr(struct ircomm_cb *self, IRCOMM_EVENT event, struct sk_buff *skb, struct ircomm_info *info) { int ret = 0; switch (event) { case IRCOMM_CONNECT_RESPONSE: ircomm_next_state(self, IRCOMM_CONN); ret = self->issue.connect_response(self, skb); break; case IRCOMM_DISCONNECT_REQUEST: ircomm_next_state(self, IRCOMM_IDLE); ret = self->issue.disconnect_request(self, skb, info); break; case IRCOMM_TTP_DISCONNECT_INDICATION: case IRCOMM_LMP_DISCONNECT_INDICATION: ircomm_next_state(self, IRCOMM_IDLE); ircomm_disconnect_indication(self, skb, info); break; default: IRDA_DEBUG(0, "%s(), unknown event = %s\n", __FUNCTION__ , ircomm_event[event]); ret = -EINVAL; } return ret; }
static int ircomm_state_waiti(struct ircomm_cb *self, IRCOMM_EVENT event, struct sk_buff *skb, struct ircomm_info *info) { int ret = 0; switch (event) { case IRCOMM_TTP_CONNECT_CONFIRM: case IRCOMM_LMP_CONNECT_CONFIRM: ircomm_next_state(self, IRCOMM_CONN); ircomm_connect_confirm(self, skb, info); break; case IRCOMM_TTP_DISCONNECT_INDICATION: case IRCOMM_LMP_DISCONNECT_INDICATION: ircomm_next_state(self, IRCOMM_IDLE); ircomm_disconnect_indication(self, skb, info); break; default: IRDA_DEBUG(0, "%s(), unknown event: %s\n", __func__ , ircomm_event[event]); ret = -EINVAL; } return ret; }