#define INTERFACE_VERSION "irmc v0.3.3" // Structures for the packets: unsigned short command #define DIS 0x0002 // disconnect #define DAT 0x0003 #define CON 0x0004 // connect #define ACK 0x0005 #define SIZE_COMMAND_PACKET 4 #define SIZE_DATA_PACKET 496 #define SIZE_DATA_PACKET_PAYLOAD 492 // = SIZE_DATA_PACKET - SIZE_COMMAND_PACKET #define TX_RETRIES 5 // how often will the udp packet be sent? #define KEEPALIVE_CYCLE 1000 // how often will the keepalive signals be sent? #define SIZE_ID 128 #define SIZE_STATUS 128 #define SIZE_CODE 51 // This structure will be used to (dis-)connect to KOB servers struct command_packet_format{ unsigned short command; // CON / DIS unsigned short channel; // Channel number }; // This structure will be used for id, rx and tx packets struct data_packet_format{ unsigned short command; unsigned short length; char id[SIZE_ID]; char a1[4]; unsigned int sequence; unsigned int a21; unsigned int a22; unsigned int a23; signed int code[SIZE_CODE]; unsigned int n; char status[SIZE_STATUS]; /* This is called version in MorseKob, in cwcom this transmits the sent character?! */ char a4[8]; }; // Define the packets used #define DEFAULT_CHANNEL 103 /* Define functions provided by cwprotocol */ int prepare_id (struct data_packet_format *id_packet, char *id); int prepare_tx (struct data_packet_format *tx_packet, char *id); int clean_tx (void); void identifyclient (void); int send_latch (void); int send_unlatch (void); /* Define external struct for global variables */ extern struct command_packet_format connect_packet; extern struct command_packet_format disconnect_packet; extern struct data_packet_format id_packet; extern struct data_packet_format rx_data_packet; extern struct data_packet_format tx_data_packet; extern int tx_sequence, rx_sequence; extern int fd_socket; // Morse Code Sender - Timings #define WPM_DEFAULT 40 struct morse_timig_format { int wpm; int dot_len, dash_len; int wordspace_len, charspace_len; }; int prepare_text2morse (int wpm); int char2morse(int ff);