From 82aeba5cb2e42b9393405c24a706e0d3b70d85b6 Mon Sep 17 00:00:00 2001 From: David Freese Date: Fri, 29 Aug 2014 03:59:04 -0500 Subject: [PATCH] ARQ stx handshake * send STX, 0x02, signal when ARQ command to change modem is completed. --- src/misc/arq_io.cxx | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/misc/arq_io.cxx b/src/misc/arq_io.cxx index 6534fd3f..0794b180 100644 --- a/src/misc/arq_io.cxx +++ b/src/misc/arq_io.cxx @@ -192,12 +192,11 @@ void ParseMode(string src) for (size_t i = 0; i < NUM_MODES; ++i) { if (strlen(mode_info[i].pskmail_name) > 0) { if (src == mode_info[i].pskmail_name) { -// while (trx_state != STATE_RX) { -// MilliSleep(10); -// } - if (debug_pskmail) - LOG_INFO("Setting modem to %s", mode_info[i].pskmail_name); REQ_SYNC(init_modem_sync, mode_info[i].mode, 0); + AbortARQ(); + WriteARQ('\002'); + if (debug_pskmail) + LOG_INFO("Modem set to %s", mode_info[i].pskmail_name); break; } } @@ -627,9 +626,14 @@ void WriteARQsocket(unsigned char* data, size_t len) if (arqclient.empty()) return; static string instr; instr.clear(); + + string outs = ""; + for (unsigned int i = 0; i < len; i++) + outs += asc[data[i] & 0x7F]; + LOG_INFO("%s", outs.c_str()); + vector::iterator p; - p = arqclient.begin(); - while (p != arqclient.end()) { + for (p = arqclient.begin(); p < arqclient.end(); p++) { try { (*p).sock.wait(1); (*p).sock.send(data, len); @@ -647,11 +651,6 @@ void WriteARQsocket(unsigned char* data, size_t len) } } - string outs = ""; - for (unsigned int i = 0; i < len; i++) - outs += asc[data[i] & 0x7F]; - LOG_INFO("%s", outs.c_str()); - if (arqclient.empty()) arq_reset(); }