X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=ss5.h;h=adedac74c93e9b69039fde721dfce6145cf391f2;hp=6897abd93a84c91cd73af74e1f18718f1afac469;hb=7f0d14c706328e1ff74fe8b8c16ae54407cc8055;hpb=323cbc387b1a068f8e2bcfd1034666406ba18c93 diff --git a/ss5.h b/ss5.h index 6897abd..adedac7 100644 --- a/ss5.h +++ b/ss5.h @@ -23,9 +23,8 @@ class Pss5 : public PmISDN { public: - Pss5(int type, struct mISDNport *mISDNport, char *portname, struct port_settings *settings, int channel, int exclusive, int mode); + Pss5(int type, struct mISDNport *mISDNport, char *portname, struct port_settings *settings, struct interface *interface, int channel, int exclusive, int mode); ~Pss5(); - int handler(void); int message_epoint(unsigned int epoint_id, int message, union parameter *param); void set_tone(const char *dir, const char *name); @@ -34,7 +33,8 @@ class Pss5 : public PmISDN char p_m_s_dial[64]; /* current dialing register */ int p_m_s_digit_i; /* current digit of register counter */ int p_m_s_pulsecount; /* counts pule dialing half cycles */ - char p_m_s_last_digit; /* stores last digit to fill short signal losses */ + char p_m_s_last_digit; /* stores last digit that was detected, to fill short signal losses */ + char p_m_s_last_digit_used; /* stores last digit that was used, to ignore short changes of signal due to noise */ int p_m_s_signal_loss; /* sample counter for loss of signal check */ int p_m_s_decoder_count; /* samples currently decoded */ unsigned char p_m_s_decoder_buffer[SS5_DECODER_NPOINTS]; /* buffer for storing one goertzel window */ @@ -42,8 +42,7 @@ class Pss5 : public PmISDN unsigned char p_m_s_delay_mute[400/SS5_DECODER_NPOINTS]; /* 40 ms delay on mute, so a 'chirp' can be heared */ int p_m_s_sample_nr; /* decoder's sample number, counter */ int p_m_s_recog; /* sample counter to wait for signal recognition time */ - double p_m_s_timer; - void (Pss5::*p_m_s_timer_fn)(void); + struct lcr_work p_m_s_queue; int p_m_s_answer; /* queued signal */ int p_m_s_busy_flash; /* queued signal */ int p_m_s_clear_back; /* queued signal */ @@ -57,7 +56,7 @@ class Pss5 : public PmISDN void start_signal(int); void start_outgoing(void); void do_release(int cause, int location); - void do_setup(char *digit); + void do_setup(char *digit, int complete); void seizing_ind(void); void digit_ind(char digit); @@ -76,6 +75,8 @@ class Pss5 : public PmISDN void message_disconnect(unsigned int epoint_id, int message_id, union parameter *param); void message_release(unsigned int epoint_id, int message_id, union parameter *param); + void register_timeout(void); + }; #define new_ss5_state(a) _new_ss5_state(a, __FUNCTION__, __LINE__)