1 // ----------------------------------------------------------------------------
2 //
3 //	data_io.h
4 //
5 // support for ARQ server/client system such as pskmail and fl_arq
6 // support for KISS server/client system such as BPQ and JNOS
7 //
8 // Copyright (C) 2014
9 //		Robert Stiles, KK5VD
10 //
11 // This file is part of fldigi.
12 //
13 // Fldigi is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // Fldigi is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 // GNU General Public License for more details.
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with fldigi.  If not, see <http://www.gnu.org/licenses/>.
25 // ----------------------------------------------------------------------------
26 
27 #ifndef fldigi_data_io_h
28 #define fldigi_data_io_h
29 
30 #include "gettext.h"
31 
32 #define IO_START_STR      _("Start")
33 #define IO_STOP_STR       _("Stop")
34 
35 #define DEFAULT_ARQ_IP_ADDRESS    "127.0.0.1"
36 #define DEFAULT_ARQ_IP_PORT       "7322"
37 
38 #define DEFAULT_KISS_IP_ADDRESS   "127.0.0.1"
39 #define DEFAULT_KISS_IP_IO_PORT   "7342"
40 #define DEFAULT_KISS_IP_OUT_PORT  "7343"
41 
42 #define DEFAULT_XMLPRC_IP_ADDRESS "127.0.0.1"
43 #define DEFAULT_XMLRPC_IP_PORT    "7362"
44 
45 #define DEFAULT_FLRIG_IP_ADDRESS  "127.0.0.1"
46 #define DEFAULT_FLRIG_IP_PORT     "12345"
47 
48 #define DEFAULT_FLLOG_IP_ADDRESS  "127.0.0.1"
49 #define DEFAULT_FLLOG_IP_PORT     "8421"
50 
51 enum {DISABLED_IO, ARQ_IO, KISS_IO, XMLRPC_IO, FLRIG_IO, FLLOG_IO};
52 
53 #define RSID_KISS_NOTIFY    0x01
54 #define RSID_KISS_ACTIVE    0x02
55 #define RSID_KISS_USER      0x03
56 
57 #define DATA_IO_NA  0x00
58 #define DATA_IO_TCP 0x01
59 #define DATA_IO_UDP 0x02
60 
61 // This variable indepent of progdefaults.data_io_enabled
62 // and progStatus.data_io_enabled
63 // Only on start do we assign this variable with progStatus.data_io_enabled.
64 // This is one way assignment as we dont want to save all of the available states
65 // this variable will have.
66 extern int data_io_enabled; // Located in kiss_io.cxx
67 extern int data_io_type;    // Located in kiss_io.cxx
68 
69 extern void disable_config_p2p_io_widgets(void);
70 extern void enable_config_p2p_io_widgets(void);
71 extern void set_ip_to_default(int which_io);
72 
73 // KISS implementation
74 extern void	kiss_init(bool connect_flag);
75 extern void	kiss_close(bool override_flag);
76 extern void	kiss_reset(void);
77 extern void WriteKISS(const char data);
78 extern void WriteKISS(const char *data);
79 extern void WriteKISS(const char *data, size_t size);
80 extern void WriteKISS(std::string data);
81 extern bool kiss_thread_running(void);
82 
83 extern bool kiss_auto_connect(void);
84 
85 extern void check_kiss_modem(void);
86 extern int  kiss_get_char(void);
87 extern bool kiss_text_available; // Located in kiss_io.cxx
88 
89 extern bool kiss_bcast_rsid_reception;
90 extern bool kiss_bcast_trx_toggle;
91 extern bool bcast_rsid_kiss_frame(int new_wf_pos, int new_mode, int old_wf_pos, int old_mode, int notify);
92 extern void bcast_trxc_kiss_frame(void);
93 extern void kiss_io_set_button_state(void *);
94 extern void connect_to_kiss_io(bool);
95 
96 // ARQ implementation
97 extern void	arq_init(void);
98 extern void	arq_close(void);
99 extern bool arq_state(void);
100 extern void	WriteARQ(unsigned char);
101 extern void	checkTLF(void);
102 extern int  arq_get_char(void);
103 extern bool	arq_text_available;
104 extern bool	gmfskmail;
105 extern std::string ArqFilename;
106 extern bool	mailclient;
107 extern bool	mailserver;
108 extern bool	tlfio;
109 extern time_t inhibit_tx_seconds;
110 
111 // Misc calls
112 extern void enable_disable_kpsql(void);
113 #endif
114