8
const char *szNORIG = "NONE";
9
const char *szNOMODES[] = {"LSB", "USB", NULL};
10
const char *szNOBWS[] = {"NONE", NULL};
11
const char *szDSPLO[] = {"NONE", NULL};
12
const char *szDSPHI[] = {"NONE", NULL};
13
const char *szdsptooltip = "dsp tooltip";
14
const char *szbtnlabel = " ";
15
const int ibw_val = -1;
17
static GUI basewidgets[] = { {NULL, 0, 0} };
23
bandwidths_ = szNOBWS;
25
lo_tooltip = szdsptooltip;
26
lo_label = szbtnlabel;
28
hi_tooltip = szdsptooltip;
29
hi_label = szbtnlabel;
32
widgets = basewidgets;
34
serloop_timing = 200; // msec, 5x / second
42
has_xcvr_auto_on_off =
51
has_bandwidth_control =
54
has_mic_line_control =
58
has_noise_reduction_control =
60
has_attenuator_control =
109
can_change_alt_vfo = false;
118
def_freq = 14070000L;
126
active_mode = 0; // wbx
128
if_shift_min = -1500;
134
string rigbase::to_bcd_be(long freq, int len)
137
int numchars = len / 2;
139
if (len & 1) numchars ++;
140
for (int i = 0; i < numchars; i++) {
151
string rigbase::to_bcd(long freq, int len)
153
string bcd_be = to_bcd_be(freq, len);
155
int bcdlen = bcd_be.size();
156
for (int i = bcdlen - 1; i >= 0; i--)
161
long rigbase::fm_bcd (char *bcd, int len)
165
int numchars = len/2;
166
if (len & 1) numchars ++;
167
for (i = 0; i < numchars; i++) {
169
f += (bcd[i] >> 4) & 0x0F;
177
long rigbase::fm_bcd_be(char *bcd, int len)
180
int numchars = len/2;
181
if (len & 1) numchars++;
182
for (int i = 0; i < numchars / 2; i++) {
184
bcd[i] = bcd[numchars -1 - i];
185
bcd[numchars -1 - i] = temp;
187
return fm_bcd(bcd, len);
190
string rigbase::to_binary_be(long freq, int len)
192
static string bin = "";
193
for (int i = 0; i < len; i++) {
200
string rigbase::to_binary(long freq, int len)
202
static string bin = "";
203
string bin_be = to_binary_be(freq, len);
204
int binlen = bin_be.size();
205
for (int i = binlen - 1; i >= 0; i--)
210
long rigbase::fm_binary(char *binary, int len)
214
for (i = 0; i < len; i++) {
216
f += (unsigned char)binary[i];
221
long rigbase::fm_binary_be(char *binary_be, int len)
224
int numchars = len/2;
225
if (len & 1) numchars++;
226
for (int i = 0; i < numchars / 2; i++) {
228
binary_be[i] = binary_be[numchars -1 - i];
229
binary_be[numchars -1 - i] = temp;
231
return fm_binary(binary_be, len);
234
string rigbase::to_decimal_be(long d, int len)
236
static string sdec_be;
238
for (int i = 0; i < len; i++) {
239
sdec_be += (char)((d % 10) + '0');
245
string rigbase::to_decimal(long d, int len)
249
string sdec_be = to_decimal_be(d, len);
250
int bcdlen = sdec_be.size();
251
for (int i = bcdlen - 1; i >= 0; i--)
256
long rigbase::fm_decimal(char *decimal, int len)
259
for (int i = 0; i < len; i++) {
261
d += decimal[i] - '0';
266
long rigbase::fm_decimal_be(char *decimal_be, int len)
269
int numchars = len/2;
270
if (len & 1) numchars++;
271
for (int i = 0; i < numchars / 2; i++) {
272
temp = decimal_be[i];
273
decimal_be[i] = decimal_be[numchars -1 - i];
274
decimal_be[numchars -1 - i] = temp;
276
return fm_decimal(decimal_be, len);
279
void rigbase::showresp(int level, int how, string s, string tx, string rx)
283
struct tm *local = localtime(&now);
285
strftime(sztm, sizeof(sztm), "%H:%M:%S", local);
287
string s1 = how == HEX ? str2hex(tx.c_str(), tx.length()) : tx;
288
string s2 = how == HEX ? str2hex(rx.c_str(), rx.length()) : rx;
291
while((p = s1.find('\r')) != string::npos)
292
s1.replace(p, 1, "<cr>");
293
while((p = s1.find('\n')) != string::npos)
294
s1.replace(p, 1, "<lf>");
295
while((p = s2.find('\r')) != string::npos)
296
s2.replace(p, 1, "<cr>");
297
while((p = s2.find('\n')) != string::npos)
298
s2.replace(p, 1, "<lf>");
303
SLOG_ERROR("%s: %10s\ncmd %s\nans %s", sztm, s.c_str(), s1.c_str(), s2.c_str());
306
SLOG_WARN("%s: %10s\ncmd %s\nans %s", sztm, s.c_str(), s1.c_str(), s2.c_str());
309
SLOG_INFO("%s: %10s\ncmd %s\nans %s", sztm, s.c_str(), s1.c_str(), s2.c_str());
312
SLOG_DEBUG("%s: %10s\ncmd %s\nans %s", sztm, s.c_str(), s1.c_str(), s2.c_str());
316
int rigbase::waitN(size_t n, int timeout, const char *sz, int pr)
319
string returned = "";
321
int cnt = 0, repeat = 0;
323
size_t num = n + cmd.length();
324
int delay = num * 11000.0 / RigSerial.Baud();
328
if (!RigSerial.IsOpen()) {
329
snprintf(sztemp, sizeof(sztemp), "TEST %s", sz);
330
showresp(WARN, pr, sztemp, tosend, replystr);
334
sendCommand(tosend, 0);
337
for ( cnt = 0; cnt < timeout / 10; cnt++) {
339
returned.append(replystr);
340
if (returned.length() >= n) {
342
waited = cnt * 10 * repeat + delay;
343
snprintf(sztemp, sizeof(sztemp), "%s OK %d ms", sz, waited);
344
showresp(WARN, pr, sztemp, cmd, returned);
345
return replystr.length();
352
waited = cnt * 10 * repeat + delay;
353
snprintf(sztemp, sizeof(sztemp), "%s failed %d ms", sz, waited);
354
showresp(WARN, pr, sztemp, cmd, returned);