This commit is contained in:
Gerolf Ziegenhain 2016-10-05 20:29:08 +02:00
parent 8e7ce33e3b
commit c33910cdbd
3 changed files with 62 additions and 18 deletions

View File

@ -68,7 +68,7 @@ int send_latch (void)
tx_data_packet.code[0] = -1; tx_data_packet.code[0] = -1;
tx_data_packet.code[1] = 1; tx_data_packet.code[1] = 1;
tx_data_packet.n = 2; tx_data_packet.n = 2;
for(i = 0; i < 5; i++) send(fd_socket, &tx_data_packet, SIZE_DATA_PACKET, 0); for(i = 0; i < TX_RETRIES; i++) send(fd_socket, &tx_data_packet, SIZE_DATA_PACKET, 0);
tx_data_packet.n = 0; tx_data_packet.n = 0;
return 0; return 0;
} }
@ -81,7 +81,7 @@ int send_unlatch (void)
tx_data_packet.code[0] = -1; tx_data_packet.code[0] = -1;
tx_data_packet.code[1] = 2; tx_data_packet.code[1] = 2;
tx_data_packet.n = 2; tx_data_packet.n = 2;
for(i = 0; i < 5; i++) send(fd_socket, &tx_data_packet, SIZE_DATA_PACKET, 0); for(i = 0; i < TX_RETRIES; i++) send(fd_socket, &tx_data_packet, SIZE_DATA_PACKET, 0);
tx_data_packet.n = 0; tx_data_packet.n = 0;
return 0; return 0;
} }
@ -97,15 +97,58 @@ int prepare_text2morse (int wpm)
return 0; return 0;
} }
int char2morse(void) int clean_pkg ()
{ {
char c='c', d; int i;
// why? because!!! for (i=0; i<SIZE_CODE; i++)
// http://stackoverflow.com/questions/1352587/convert-a-string-into-morse-code/1355594^
for(;c= c?c:(c=toupper(getchar())-32)?c<0?1:"\x95#\x8CKa`^ZRBCEIQiw#S#nx(37+$6-2&@/4)'18=,*%.:0;?5" [c-12]-34:-3;c/=2)
{ {
d=(c/2?46-c%2:32); tx_data_packet.code[i] = 0;
putchar (d);
} }
tx_data_packet.n = 0;
return 0;
}
int char2morse(int ff)
{
//send_unlatch();
clean_pkg();
int c, d, e;
int i=0;
c=ff;
tx_sequence++;
tx_data_packet.sequence = tx_sequence;
// why? because!!!
// http://stackoverflow.com/questions/1352587/convert-a-string-into-morse-code/1355594^
for(;c= c?c:(c=toupper(getchar())-32)?c<0?1:"\x95#\x8CKa`^ZRBCEIQiw#S#nx(37+$6-2&@/4)'18=,*%.:0;?5" [c-12]-34:-3;c/=2) {
// for(;c= c?c:(c=43-32)?c<0?1:"\x95#\x8CKa`^ZRBCEIQiw#S#nx(37+$6-2&@/4)'18=,*%.:0;?5" [c-12]-34:-3;c/=2) {
e=d;
d=(c/2?46-c%2:32);
putchar (d);
if (d == ' ' && e == ' ') break;
tx_data_packet.code[i] = -1*morse_timing.dot_len;
i++;
int j;
if (d == '.')
j=1;
if (d == '-')
j=3;
if (d == ' ')
j=-3;
tx_data_packet.code[i] = j*morse_timing.dot_len;
i++;
//printf ("(%d %d) ",tx_data_packet.code[i-2],tx_data_packet.code[i-1] );
}
tx_data_packet.code[i] = -1*morse_timing.dot_len;
i++;
tx_data_packet.n = i;//-2;
for(i = 0; i < TX_RETRIES; i++)
send(fd_socket, &tx_data_packet, SIZE_DATA_PACKET, 0);
tx_data_packet.n = 0;
// send_latch();
return 0; return 0;
} }

View File

@ -9,7 +9,9 @@
#define SIZE_COMMAND_PACKET 4 #define SIZE_COMMAND_PACKET 4
#define SIZE_DATA_PACKET 496 #define SIZE_DATA_PACKET 496
#define SIZE_DATA_PACKET_PAYLOAD 492 // = SIZE_DATA_PACKET - SIZE_COMMAND_PACKET #define SIZE_DATA_PACKET_PAYLOAD 492 // = SIZE_DATA_PACKET - SIZE_COMMAND_PACKET
#define TX_RETRIES 3 // how often will the udp packet be sent?
#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_ID 128
#define SIZE_STATUS 128 #define SIZE_STATUS 128
@ -61,7 +63,7 @@ extern int tx_sequence, rx_sequence;
extern int fd_socket; extern int fd_socket;
// Morse Code Sender - Timings // Morse Code Sender - Timings
#define WPM_DEFAULT 20 #define WPM_DEFAULT 40
struct morse_timig_format { struct morse_timig_format {
int wpm; int wpm;
int dot_len, dash_len; int dot_len, dash_len;
@ -69,6 +71,6 @@ struct morse_timig_format {
}; };
int prepare_text2morse (int wpm); int prepare_text2morse (int wpm);
int char2morse(void); int char2morse(int ff);

View File

@ -35,7 +35,7 @@ double tx_timeout = 0;
long tx_timer = 0; long tx_timer = 0;
#define TX_WAIT 5000 #define TX_WAIT 5000
#define TX_TIMEOUT 240.0 #define TX_TIMEOUT 240.0
#define KEEPALIVE_CYCLE 100 #define BEEP_FREQUENCY 1000.
/* TX Methods */ /* TX Methods */
#define TX_NONE 0 #define TX_NONE 0
@ -320,7 +320,7 @@ int main(int argc, char *argv[])
} }
else else
{ {
beep(1000.0, length/1000.); beep(BEEP_FREQUENCY, length/1000.);
} }
} }
} }
@ -369,10 +369,9 @@ int main(int argc, char *argv[])
keepalive_t--; keepalive_t--;
usleep(50); usleep(50);
} }
#ifdef TX_KEYBOARD
#ifdef TX_SERIAL
if(kbhit() && tx_timer == 0){ if(kbhit() && tx_timer == 0){
char2morse(); char2morse(0);
} }
#endif #endif
} /* End of mainloop */ } /* End of mainloop */