mirror of https://github.com/sfeakes/AqualinkD.git
serial logger update
parent
ff8f1843be
commit
891c915af6
|
@ -41,7 +41,7 @@ override_freeze_protect = no
|
||||||
|
|
||||||
# The id of the Aqualink terminal device. Devices probed by RS8 master are:
|
# The id of the Aqualink terminal device. Devices probed by RS8 master are:
|
||||||
# 08-0b, 10-13, 18-1b, 20-23, 28-2b, 30-33, 38-3b, 40-43
|
# 08-0b, 10-13, 18-1b, 20-23, 28-2b, 30-33, 38-3b, 40-43
|
||||||
#
|
# Working RS ID's are 0x0a 0x0b 0x09 0x08 <- 0x08 is usually taken
|
||||||
device_id=0x0a
|
device_id=0x0a
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -5,11 +5,13 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "aq_serial.h"
|
#include "aq_serial.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
#define SLOG_MAX 40
|
#define SLOG_MAX 40
|
||||||
|
#define PACKET_MAX 1000
|
||||||
|
|
||||||
typedef struct serial_id_log {
|
typedef struct serial_id_log {
|
||||||
unsigned char ID;
|
unsigned char ID;
|
||||||
|
@ -18,13 +20,22 @@ typedef struct serial_id_log {
|
||||||
|
|
||||||
bool _keepRunning = true;
|
bool _keepRunning = true;
|
||||||
|
|
||||||
|
unsigned char _goodID[] = { 0x0a, 0x0b, 0x08, 0x09 };
|
||||||
|
|
||||||
void intHandler(int dummy) {
|
void intHandler(int dummy) {
|
||||||
_keepRunning = false;
|
_keepRunning = false;
|
||||||
logMessage(LOG_NOTICE, "Stopping!");
|
logMessage(LOG_NOTICE, "Stopping!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool canUse(unsigned char ID)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i=0; i < strlen((char*)_goodID); i++ ) {
|
||||||
|
if (ID == _goodID[i])
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
int rs_fd;
|
int rs_fd;
|
||||||
|
@ -35,6 +46,7 @@ int main(int argc, char *argv[]) {
|
||||||
bool found;
|
bool found;
|
||||||
serial_id_log slog[SLOG_MAX];
|
serial_id_log slog[SLOG_MAX];
|
||||||
int sindex = 0;
|
int sindex = 0;
|
||||||
|
int received_packets=0;
|
||||||
|
|
||||||
if (getuid() != 0) {
|
if (getuid() != 0) {
|
||||||
fprintf(stderr, "ERROR %s Can only be run as root\n", argv[0]);
|
fprintf(stderr, "ERROR %s Can only be run as root\n", argv[0]);
|
||||||
|
@ -59,6 +71,7 @@ int main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
packet_length = get_packet(rs_fd, packet_buffer);
|
packet_length = get_packet(rs_fd, packet_buffer);
|
||||||
|
|
||||||
if (packet_length == -1) {
|
if (packet_length == -1) {
|
||||||
// Unrecoverable read error. Force an attempt to reconnect.
|
// Unrecoverable read error. Force an attempt to reconnect.
|
||||||
logMessage(LOG_DEBUG_SERIAL, "ERROR, on serial port\n");
|
logMessage(LOG_DEBUG_SERIAL, "ERROR, on serial port\n");
|
||||||
|
@ -94,6 +107,11 @@ int main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
lastID = packet_buffer[PKT_DEST];
|
lastID = packet_buffer[PKT_DEST];
|
||||||
|
received_packets++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (received_packets >= PACKET_MAX) {
|
||||||
|
_keepRunning = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,18 +120,10 @@ int main(int argc, char *argv[]) {
|
||||||
logMessage(LOG_DEBUG_SERIAL, "Ran out of storage, some ID's were not captured, please increase SLOG_MAX and recompile\n");
|
logMessage(LOG_DEBUG_SERIAL, "Ran out of storage, some ID's were not captured, please increase SLOG_MAX and recompile\n");
|
||||||
logMessage(LOG_DEBUG_SERIAL, "ID's found\n");
|
logMessage(LOG_DEBUG_SERIAL, "ID's found\n");
|
||||||
for (i=0; i <= sindex; i++) {
|
for (i=0; i <= sindex; i++) {
|
||||||
logMessage(LOG_DEBUG_SERIAL, "ID 0x%02hhx is %s\n",slog[i].ID, slog[i].inuse==true?"in use":"not used");
|
logMessage(LOG_DEBUG_SERIAL, "ID 0x%02hhx is %s %s\n",slog[i].ID,
|
||||||
|
slog[i].inuse==true?"in use":"not used",
|
||||||
|
slog[i].inuse==false && canUse(slog[i].ID)==true?" <-- can use for Aqualinkd":"");
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
static serial_id_logger slog[SLOG_MAX];
|
|
||||||
static unsigned char lastID;
|
|
||||||
static int index = 0;
|
|
||||||
|
|
||||||
if (packet_buffer[PKT_DEST] == DEV_MASTER && packet_buffer[PKT_CMD] == CMD_ACK) {
|
|
||||||
logMessage(LOG_DEBUG_SERIAL, "ID is in use 0x%02hhx\n",lastID);
|
|
||||||
}
|
|
||||||
lastID = packet_buffer[PKT_DEST];
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
Loading…
Reference in New Issue