**
** Copyright (c) 2003 Kevin Rosenberg
**
-** $Id: wdq2wav.cpp,v 1.10 2003/01/21 11:23:09 kevin Exp $
+** $Id: wdq2wav.cpp,v 1.11 2003/01/21 11:45:38 kevin Exp $
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
#include <wdq2wav.h>
-const char* g_szIdStr = "$Id: wdq2wav.cpp,v 1.10 2003/01/21 11:23:09 kevin Exp $";
+const char* g_szIdStr = "$Id: wdq2wav.cpp,v 1.11 2003/01/21 11:45:38 kevin Exp $";
bool g_quiet = false;
bool g_verbose = false;
int c;
bool play = false;
+ const char* progname = argv[0];
+
while ((c = getopt (argc, argv, "rqvdph")) != -1) {
switch (c) {
case 'r':
play = true;
break;
case 'h':
- usage (argv[0]);
+ usage (progname);
return (0);
case '?':
default:
- usage(argv[0]);
+ usage (progname);
return (1);
}
}
argv += optind;
if (argc > 3) {
std::cerr << "Too many parameters\n";
- usage (argv[0]);
+ usage (progname);
return (1);
}
char wdq_fname[MAX_INPUT_STR];
if (argc >= 1)
- strncpy (wdq_fname, argv [1], MAX_INPUT_STR);
+ strncpy (wdq_fname, argv [0], MAX_INPUT_STR);
else {
std::cout << "Enter input WinDAQ filename: ";
std::cin.getline (wdq_fname, MAX_INPUT_STR);
char channel_buf [MAX_INPUT_STR];
if (argc >= 2)
- strncpy (channel_buf, argv[2], MAX_INPUT_STR);
+ strncpy (channel_buf, argv[1], MAX_INPUT_STR);
else {
std::cout << "Enter channel number: ";
std::cin.getline (channel_buf, MAX_INPUT_STR);
std::ostringstream os;
os << "Error: Channel " << channel_buf << " is not an integer";
error_msg (os.str().c_str());
- usage (argv[0]);
+ usage (progname);
return (1);
}
char wav_fname[MAX_INPUT_STR];
if (argc >= 3)
- strncpy (wav_fname, argv[3], MAX_INPUT_STR);
+ strncpy (wav_fname, argv[2], MAX_INPUT_STR);
else {
std::cout << "Enter output wav filename: ";
std::cin.getline (wav_fname, MAX_INPUT_STR);
tmp2 = tmp1;
if (read (fd, &tmp1, 1) != 1)
return false;
+
n = tmp2 + (tmp1 * 256);
+ return true;
}
bool read_int4 (int fd, unsigned int& n)
tmp4 = tmp2;
if (! read_int2 (fd, tmp2))
return false;
+
n = tmp4 + (tmp2 * 65536);
+ return true;
}
bool
{
if (wdq.m_valid) {
if (channel >= 1 && channel <= wdq.m_nChannels) {
- m_valid = true;
- read_channel_data();
+ if (read_channel_data())
+ m_valid = true;
} else {
std::ostringstream os;
os << "Channel " << channel << " is invalid, valid range 1-" <<
if (read (fd, &buf, 8) != 8)
return false;
-#ifdef BIG_ENDIAN
+#if WORDS_BIG_ENDIAN
unsigned char c;
c = buf[0]; buf[0] = buf[7]; buf[7] = c;
c = buf[1]; buf[1] = buf[6]; buf[6] = c;
c = buf[3]; buf[3] = buf[4]; buf[4] = c;
#endif
- double* p = reinterpret_cast<double*>(buf);
- f = *p;
+ f = *(reinterpret_cast<double*>(buf));
+
+ return true;
}
bool
{
unsigned short int tmp2;
unsigned int tmp4;
- double float8;
int fd = r_wdq.m_fd;
- if (! m_valid)
- return false;
-
m_data = new signed short int [r_wdq.m_nSamples * 2];
lseek (fd, r_wdq.m_channel_offset + 8 +
if (! get_float8 (fd, m_slope))
return false;
- if (get_float8 (fd, m_intercept))
+ if (! get_float8 (fd, m_intercept))
return false;
char units[7];
}
signed short int v = *psample;
-#ifdef BIG_ENDIAN
+#if WORDS_BIG_ENDIAN
unsigned char* p = reinterpret_cast<unsigned char*>(&v);
unsigned char c = p[0]; p[0] = p[1]; p[1] = c;
#endif
value = (value + data_offset) * data_scale;
value += 0.5 - 32768;
signed short int v = static_cast<signed short int>(value);
-#ifdef BIG_ENDIAN
+#if WORDS_BIG_ENDIAN
unsigned char* p = reinterpret_cast<unsigned char*>(&v);
unsigned char c = p[0]; p[0] = p[1]; p[1] = c;
#endif