+
+int queue_event(struct lcr_work *work, void *instance, int index)
+{
+ class Pss5 *ss5port = (class Pss5 *)instance;
+
+ if (ss5port->p_m_s_state == SS5_STATE_IDLE) {
+ /* if answer signal is queued */
+ if (ss5port->p_m_s_answer) {
+ ss5port->p_m_s_answer = 0;
+ /* start answer */
+ ss5_trace_header(ss5port->p_m_mISDNport, ss5port, SS5_ANSWER_REQ, ss5port->p_m_b_channel);
+ end_trace();
+ ss5port->start_signal(SS5_STATE_ANSWER);
+ }
+
+ /* if busy-flash signal is queued */
+ if (ss5port->p_m_s_busy_flash) {
+ ss5port->p_m_s_busy_flash = 0;
+ /* start busy-flash */
+ ss5_trace_header(ss5port->p_m_mISDNport, ss5port, SS5_BUSY_FLASH_REQ, ss5port->p_m_b_channel);
+ end_trace();
+ ss5port->start_signal(SS5_STATE_BUSY_FLASH);
+ }
+
+ /* if clear-back signal is queued */
+ if (ss5port->p_m_s_clear_back) {
+ ss5port->p_m_s_clear_back = 0;
+ /* start clear-back */
+ ss5_trace_header(ss5port->p_m_mISDNport, ss5port, SS5_CLEAR_BACK_REQ, ss5port->p_m_b_channel);
+ end_trace();
+ ss5port->start_signal(SS5_STATE_CLEAR_BACK);
+ }
+ }
+
+ return 0;
+}
+