Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
efeee5b0ee | ||
|
e01c86a248 | ||
|
6163a138ce | ||
|
5dad7c3f64 | ||
|
8622552f86 | ||
|
1d3b674ecc |
@@ -1,4 +1,4 @@
|
|||||||
SRC = irmc.c cwprotocol.c beep.c
|
SRC = irmc.c cwprotocol.c beep.c util.c
|
||||||
OBJ = ${SRC:.c=.o}
|
OBJ = ${SRC:.c=.o}
|
||||||
LDFLAGS = -lportaudio -lpthread -lm
|
LDFLAGS = -lportaudio -lpthread -lm
|
||||||
CFLAGS = -Wall -Wno-format-zero-length
|
CFLAGS = -Wall -Wno-format-zero-length
|
||||||
|
69
src/irmc.c
69
src/irmc.c
@@ -15,20 +15,6 @@
|
|||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <time.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#ifdef __MACH__
|
|
||||||
#include <mach/clock.h>
|
|
||||||
#include <mach/mach.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
#include <linux/ioctl.h>
|
|
||||||
#include <asm-generic/ioctl.h>
|
|
||||||
#include <asm-generic/termios.h>
|
|
||||||
*/
|
|
||||||
|
|
||||||
//#define DEBUG 1
|
//#define DEBUG 1
|
||||||
|
|
||||||
@@ -36,6 +22,7 @@
|
|||||||
|
|
||||||
#include "cwprotocol.h"
|
#include "cwprotocol.h"
|
||||||
#include "beep.h"
|
#include "beep.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
int serial_status = 0, fd_serial, numbytes;
|
int serial_status = 0, fd_serial, numbytes;
|
||||||
|
|
||||||
@@ -59,60 +46,6 @@ char last_sender[16];
|
|||||||
int translate = 1;
|
int translate = 1;
|
||||||
int audio_status = 1;
|
int audio_status = 1;
|
||||||
|
|
||||||
/* portable time, as listed in https://gist.github.com/jbenet/1087739 */
|
|
||||||
void current_utc_time(struct timespec *ts) {
|
|
||||||
#ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
|
|
||||||
clock_serv_t cclock;
|
|
||||||
mach_timespec_t mts;
|
|
||||||
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
|
|
||||||
clock_get_time(cclock, &mts);
|
|
||||||
mach_port_deallocate(mach_task_self(), cclock);
|
|
||||||
ts->tv_sec = mts.tv_sec;
|
|
||||||
ts->tv_nsec = mts.tv_nsec;
|
|
||||||
#else
|
|
||||||
clock_gettime(CLOCK_REALTIME, ts);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/* a better clock() in milliseconds */
|
|
||||||
long fastclock(void)
|
|
||||||
{
|
|
||||||
struct timespec t;
|
|
||||||
long r;
|
|
||||||
|
|
||||||
current_utc_time (&t);
|
|
||||||
r = t.tv_sec * 1000;
|
|
||||||
r = r + t.tv_nsec / 1000000;
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
int kbhit (void)
|
|
||||||
{
|
|
||||||
struct timeval tv;
|
|
||||||
fd_set rdfs;
|
|
||||||
|
|
||||||
tv.tv_sec = 0;
|
|
||||||
tv.tv_usec = 0;
|
|
||||||
|
|
||||||
FD_ZERO(&rdfs);
|
|
||||||
FD_SET (STDIN_FILENO, &rdfs);
|
|
||||||
|
|
||||||
select (STDIN_FILENO+1, &rdfs, NULL, NULL, &tv);
|
|
||||||
return FD_ISSET(STDIN_FILENO, &rdfs);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* get sockaddr, IPv4 or IPv6: */
|
|
||||||
void *get_in_addr(struct sockaddr *sa)
|
|
||||||
{
|
|
||||||
if (sa->sa_family == AF_INET) {
|
|
||||||
return &(((struct sockaddr_in*)sa)->sin_addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return &(((struct sockaddr_in6*)sa)->sin6_addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// disconnect from the server
|
// disconnect from the server
|
||||||
void inthandler(int sig)
|
void inthandler(int sig)
|
||||||
{
|
{
|
||||||
|
57
src/util.c
Normal file
57
src/util.c
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
/* portable time, as listed in https://gist.github.com/jbenet/1087739 */
|
||||||
|
void current_utc_time(struct timespec *ts) {
|
||||||
|
#ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
|
||||||
|
clock_serv_t cclock;
|
||||||
|
mach_timespec_t mts;
|
||||||
|
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
|
||||||
|
clock_get_time(cclock, &mts);
|
||||||
|
mach_port_deallocate(mach_task_self(), cclock);
|
||||||
|
ts->tv_sec = mts.tv_sec;
|
||||||
|
ts->tv_nsec = mts.tv_nsec;
|
||||||
|
#else
|
||||||
|
clock_gettime(CLOCK_REALTIME, ts);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* a better clock() in milliseconds */
|
||||||
|
long fastclock(void)
|
||||||
|
{
|
||||||
|
struct timespec t;
|
||||||
|
long r;
|
||||||
|
|
||||||
|
current_utc_time (&t);
|
||||||
|
r = t.tv_sec * 1000;
|
||||||
|
r = r + t.tv_nsec / 1000000;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
int kbhit (void)
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
fd_set rdfs;
|
||||||
|
|
||||||
|
tv.tv_sec = 0;
|
||||||
|
tv.tv_usec = 0;
|
||||||
|
|
||||||
|
FD_ZERO(&rdfs);
|
||||||
|
FD_SET (STDIN_FILENO, &rdfs);
|
||||||
|
|
||||||
|
select (STDIN_FILENO+1, &rdfs, NULL, NULL, &tv);
|
||||||
|
return FD_ISSET(STDIN_FILENO, &rdfs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get sockaddr, IPv4 or IPv6: */
|
||||||
|
void *get_in_addr(struct sockaddr *sa)
|
||||||
|
{
|
||||||
|
if (sa->sa_family == AF_INET) {
|
||||||
|
return &(((struct sockaddr_in*)sa)->sin_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return &(((struct sockaddr_in6*)sa)->sin6_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
30
src/util.h
Normal file
30
src/util.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#include <time.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __MACH__
|
||||||
|
#include <mach/clock.h>
|
||||||
|
#include <mach/mach.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void current_utc_time(struct timespec *ts);
|
||||||
|
long fastclock(void);
|
||||||
|
int kbhit (void);
|
||||||
|
void *get_in_addr(struct sockaddr *sa);
|
||||||
|
|
Reference in New Issue
Block a user