From 0780f94a2bf8eb8ab3a64e8d8a916d243ada4d59 Mon Sep 17 00:00:00 2001 From: sfeakes Date: Sun, 4 Jun 2023 16:17:48 -0500 Subject: [PATCH] V 2.3.0f --- Makefile | 8 + README.md | 7 +- aq_serial.c | 74 ++++++++- aq_serial.h | 4 + aqualink.h | 16 +- aqualinkd.c | 331 +++++++++++++++++++-------------------- config.c | 23 ++- config.h | 9 +- extras/kill_aqualinkd.sh | 26 +++ extras/show_mem.sh | 3 + extras/show_realtime.sh | 13 ++ json_messages.c | 52 +++++- json_messages.h | 2 +- net_services.c | 260 +++++++++++++++++++++--------- net_services.h | 12 +- release/aqualinkd | Bin 424664 -> 429204 bytes release/aqualinkd.conf | 4 +- release/serial_logger | Bin 40548 -> 45432 bytes serial_logger.c | 100 +++++++++++- serialadapter.c | 8 +- utils.c | 12 +- utils.h | 2 + version.h | 2 +- 23 files changed, 693 insertions(+), 275 deletions(-) create mode 100755 extras/kill_aqualinkd.sh create mode 100755 extras/show_realtime.sh diff --git a/Makefile b/Makefile index 8ef02c1..6ab13f1 100755 --- a/Makefile +++ b/Makefile @@ -15,6 +15,9 @@ AQ_ONETOUCH = true AQ_IAQTOUCH = true #AQ_MEMCMP = true // Not implimented correctly yet. +# Turn off threadded net services +AQ_NO_THREAD_NETSERVICE = false + # Get some system information PI_OS_VERSION = $(shell cat /etc/os-release | grep VERSION= | cut -d\" -f2) $(info OS: $(PI_OS_VERSION) ) @@ -81,6 +84,11 @@ ifeq ($(AQ_MEMCMP), true) AQ_FLAGS := $(AQ_FLAGS) -D AQ_MEMCMP endif +ifeq ($(AQ_NO_THREAD_NETSERVICE), true) + AQ_FLAGS := $(AQ_FLAGS) -D AQ_NO_THREAD_NETSERVICE +endif + + # Put all flags together. CFLAGS = $(GCCFLAGS) $(AQ_FLAGS) $(MGFLAGS) DFLAGS = $(DGCCFLAGS) $(AQ_FLAGS) $(MGFLAGS) diff --git a/README.md b/README.md index d990bb0..32571c7 100644 --- a/README.md +++ b/README.md @@ -78,22 +78,25 @@ Designed to mimic AqualinkRS6 All Button keypad and (like the keypad) is used to * Allow selecting of pre-defined VSP programs (Aqualink Touch & OneTouch protocols.) * Add set time to OneTouch protocol. -# Update in Release 2.3.0e (pre release) +# Update in Release 2.3.0f (pre release) * This is pre-release, please treat it as such. * Proceed with caution on PDA panels I have not been able to test it fully on all variants and you may need to go back to your current (or previous) version of AqualinkD * Changed a lot of logic around different protocols. +* Added low latency support for ITDI usb driver. * AqualinkD will find out the fastest way to change something depending on the protocols available. * Added scheduler (click time in web ui). supports full calendar year (ie seasons), See wiki for details. * Added timers for devices (ie can turn on Pump for x minutes), Long press on device in WebUI. * Timers supported in MQTT/API. +* Support for external chem feeders can post to AqualinkD (pH & ORP shown in webUI / homekit etc) * Add support for dimmers. * Extended SWG status now in web UI. * Serial logging / error checking enhancements. * Added simulator back. (+ Improved UI). * Fix issue with incorrect device state after duplicate MQTT messages being sent in rapid succession ( < 0.5 second). -* Found workaround for panel firmware bug in iAqualink Touch protocol where VSP updates sometimes got lost. +* Found a workaround for panel firmware bug in iAqualink Touch protocol where VSP updates sometimes got lost. * Fix bug in IntelliBrite color lights * Install script checks for cron and it's config (needed for scheduler) +* serial-logger will now give recommended values for aqualinkd.conf # Update in Release 2.2.2 * Fixed some Web UI bugs diff --git a/aq_serial.c b/aq_serial.c index 068ac84..2cc7af2 100644 --- a/aq_serial.c +++ b/aq_serial.c @@ -23,12 +23,27 @@ #include #include #include +// Below is needed to set low latency. +#include #include "aq_serial.h" #include "utils.h" #include "config.h" #include "packetLogger.h" +/* +Notes for serial usb speed + +File should exist if using ftdi chip, ie ftdi_sio driver. +/sys/bus/usb-serial/devices/ttyUSB0/latency_timer +Set to 1 for fastest latency. + +Can also be set in code +ioctl(fd, TIOCGSERIAL, &serial); +serial.flags |= ASYNC_LOW_LATENCY; +ioctl(fd, TIOCSSERIAL, &serial); + +*/ //#define BLOCKING_MODE @@ -303,7 +318,20 @@ int _init_serial_port(const char* tty, bool blocking, bool readahead); int init_serial_port(const char* tty) { - return _init_serial_port(tty, false, false); +#ifdef AQ_NO_THREAD_NETSERVICE + if (_aqconfig_.rs_poll_speed < 0) + return init_blocking_serial_port(_aqconfig_.serial_port); + else if (_aqconfig_.readahead_b4_write) + return init_readahead_serial_port(_aqconfig_.serial_port); + else + return init_serial_port(_aqconfig_.serial_port); +#else + if (_aqconfig_.readahead_b4_write) + return init_readahead_serial_port(_aqconfig_.serial_port); + else + return init_blocking_serial_port(_aqconfig_.serial_port); +#endif + } int init_readahead_serial_port(const char* tty) { @@ -315,6 +343,31 @@ int init_blocking_serial_port(const char* tty) return _blocking_fds; } + + + +int set_port_low_latency(int fd, const char* tty) +{ + + struct serial_struct serial; + + if (ioctl (fd, TIOCGSERIAL, &serial) < 0) { + LOG(RSSD_LOG,LOG_WARNING, "Doesn't look like your USB2RS485 device (%s) supports low latency, this might cause problems on a busy RS485 bus (%d): %s\n ", tty,errno, strerror( errno )); + //LOG(RSSD_LOG,LOG_WARNING, "Error reading low latency mode for port %s (%d): %s\n", tty, errno, strerror( errno )); + return -1; + } + + LOG(RSSD_LOG,LOG_NOTICE, "Port %s low latency mode is %s\n", tty, (serial.flags & ASYNC_LOW_LATENCY) ? "set" : "NOT set, resetting to low latency!"); + serial.flags |= ASYNC_LOW_LATENCY; + + if (ioctl (fd, TIOCSSERIAL, &serial) < 0) { + LOG(RSSD_LOG,LOG_ERR, "Unable to set port %s to low latency mode (%d): %s\n", tty, errno, strerror( errno )); + return -1; + } + + return 0; +} + // https://www.cmrr.umn.edu/~strupp/serial.html#2_5_2 // http://unixwiz.net/techtips/termios-vmin-vtime.html //#define OLD_SERIAL_INIT @@ -343,6 +396,9 @@ int _init_serial_port(const char* tty, bool blocking, bool readahead) return -1; } + if (_aqconfig_.ftdi_low_latency) + set_port_low_latency(fd, tty); + memcpy(&_oldtio, &newtio, sizeof(struct termios)); cfsetospeed(&newtio, BAUD); @@ -360,8 +416,10 @@ int _init_serial_port(const char* tty, bool blocking, bool readahead) if (_blocking_mode) { fcntl(fd, F_SETFL, 0); //efficient blocking for the read //newtio.c_cc[VMIN] = 1; // read blocks for 1 character or timeout below - //newtio.c_cc[VTIME] = 5; // 0.5 seconds read timeout - newtio.c_cc[VTIME] = 255; // 25 seconds read timeout + //newtio.c_cc[VTIME] = 0; // 0.5 seconds read timeout + //newtio.c_cc[VTIME] = 255; // 25 seconds read timeout + //newtio.c_cc[VTIME] = 10; // (1 to 255) 1 = 0.1 sec, 255 = 25.5 sec + newtio.c_cc[VTIME] = SERIAL_BLOCKING_TIME; newtio.c_cc[VMIN] = 0; } else { newtio.c_cc[VMIN]= 0; // read doesn't block @@ -390,7 +448,7 @@ int _init_serial_port(const char* tty, bool blocking, bool readahead) return -1; } - LOG(RSSD_LOG,LOG_INFO, "Set serial port %s io %s attributes\n",tty,_blocking_mode?"blocking":"non blocking"); + LOG(RSSD_LOG,LOG_INFO, "Set serial port %s I/O %s attributes\n",tty,_blocking_mode?"blocking":"non blocking"); return fd; } @@ -467,6 +525,11 @@ void close_serial_port(int fd) LOG(RSSD_LOG,LOG_DEBUG_SERIAL, "Closed serial port\n"); } +bool serial_blockingmode() +{ + return _blocking_mode; +} + // Send an ack packet to the Aqualink RS8 master device. // fd: the file descriptor of the serial port connected to the device @@ -749,11 +812,12 @@ int get_packet(int fd, unsigned char* packet) while (!endOfPacket) { +//printf("READ SERIAL\n"); bytesRead = read(fd, &byte, 1); //printf("Read %d 0x%02hhx err=%d fd=%d\n",bytesRead,byte,errno,fd); //if (bytesRead < 0 && errno == EAGAIN && packetStarted == FALSE && lastByteDLE == FALSE) { //if (bytesRead < 0 && (errno == EAGAIN || errno == 0) && - if (bytesRead <= 0 && (errno == EAGAIN || errno == 0) ) { + if (bytesRead <= 0 && (errno == EAGAIN || errno == 0 || errno == ENOTTY) ) { // We also get ENOTTY on some non FTDI adapters if (_blocking_mode) { // Something is wrong wrong return AQSERR_TIMEOUT; diff --git a/aq_serial.h b/aq_serial.h index 1016670..0d1a62d 100644 --- a/aq_serial.h +++ b/aq_serial.h @@ -8,6 +8,8 @@ #define CONNECTION_ERROR "ERROR No connection to RS control panel" +#define SERIAL_BLOCKING_TIME 50 // (1 to 255) in 1/10th second so 1 = 0.1 sec, 255 = 25.5 sec + // Protocol types #define PCOL_JANDY 0xFF #define PCOL_PENTAIR 0xFE @@ -445,6 +447,8 @@ int init_readahead_serial_port(const char* tty); void close_serial_port(int file_descriptor); void close_blocking_serial_port(); +bool serial_blockingmode(); + //#ifdef AQ_PDA //void set_pda_mode(bool mode); //bool pda_mode(); diff --git a/aqualink.h b/aqualink.h index 4eba0b6..7de6031 100644 --- a/aqualink.h +++ b/aqualink.h @@ -9,8 +9,14 @@ #include "aq_programmer.h" //#include "aq_panel.h" // Moved to later in file to overcome circular dependancy. (crappy I know) -#define DEFAULT_POLL_SPEED -1 -#define DEFAULT_POLL_SPEED_NON_THREADDED 2 + +#define SIGRESTART SIGUSR1 + +#ifdef AQ_NO_THREAD_NETSERVICE + #define DEFAULT_POLL_SPEED -1 + #define DEFAULT_POLL_SPEED_NON_THREADDED 2 +#endif + #define TIME_CHECK_INTERVAL 3600 //#define TIME_CHECK_INTERVAL 100 // DEBUG ONLY @@ -20,7 +26,10 @@ //#define TIME_CHECK_INTERVAL 100 //#define ACCEPTABLE_TIME_DIFF 10 -#define MAX_ZERO_READ_BEFORE_RECONNECT 20000 // 2k normally +#define MAX_ZERO_READ_BEFORE_RECONNECT_NONBLOCKING 100000 // 10k normally +#define MAX_ZERO_READ_BEFORE_RECONNECT_BLOCKING (25 / (SERIAL_BLOCKING_TIME / 10) ) // Want this to be 25 seconds, so it's depdand on how long the serial blocking is +// Time in ms to delay between read requests in non blocking serial port. Have to set something to stop CPU spiking. +#define NONBLOCKING_SERIAL_DELAY 2 // The below will change state of devices before that are actually set on the control panel, this helps // with duplicate messages that come in quick succession that can catch the state before it happens. @@ -217,6 +226,7 @@ struct aqualinkdata unsigned char last_packet_type; int swg_delayed_percent; bool simulate_panel; + bool aqManagerActive; int open_websockets; struct programmingthread active_thread; struct action unactioned; diff --git a/aqualinkd.c b/aqualinkd.c index cb57918..4a159a6 100644 --- a/aqualinkd.c +++ b/aqualinkd.c @@ -60,9 +60,16 @@ //#define DEFAULT_CONFIG_FILE "./aqualinkd.conf" static volatile bool _keepRunning = true; +static volatile bool _restart = false; +//char** _argv; //static struct aqconfig _aqconfig_; static struct aqualinkdata _aqualink_data; +char *_self; +char *_cfgFile; +int _cmdln_loglevel = -1; +bool _cmdln_debugRS485 = false; +bool _cmdln_lograwRS485 = false; #ifdef AQ_TM_DEBUG //struct timespec _rs_packet_readitme; @@ -71,20 +78,34 @@ static struct aqualinkdata _aqualink_data; void main_loop(); +int startup(char *self, char *cfgFile); -void intHandler(int dummy) +void intHandler(int sig_num) { + LOG(AQUA_LOG,LOG_WARNING, "Stopping!\n"); + _keepRunning = false; - LOG(AQUA_LOG,LOG_NOTICE, "Stopping!\n"); + + if (sig_num == SIGRESTART) { + _restart = true; + } + //LOG(AQUA_LOG,LOG_NOTICE, "Stopping!\n"); //if (dummy){}// stop compile warnings // In blocking mode, die as cleanly as possible. +#ifdef AQ_NO_THREAD_NETSERVICE if (_aqconfig_.rs_poll_speed < 0) { stopPacketLogger(); // This should force port to close and do somewhat gracefull exit. close_blocking_serial_port(); //exit(-1); } +#else + stopPacketLogger(); + // This should force port to close and do somewhat gracefull exit. + if (serial_blockingmode()) + close_blocking_serial_port(); +#endif } void processLEDstate() @@ -1008,17 +1029,12 @@ void printHelp() printf("\t-rsrd (RS485 raw debug)\n"); } - int main(int argc, char *argv[]) { - int i, j; - //char *cfgFile = DEFAULT_CONFIG_FILE; + _restart = false; char defaultCfg[] = "./aqualinkd.conf"; char *cfgFile; - int cmdln_loglevel = -1; - bool cmdln_debugRS485 = false; - bool cmdln_lograwRS485 = false; - + //printf ("TIMER = %d\n",TIMR_LOG); @@ -1065,7 +1081,7 @@ int main(int argc, char *argv[]) init_config(); cfgFile = defaultCfg; - for (i = 1; i < argc; i++) + for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "-h") == 0) { @@ -1082,22 +1098,34 @@ int main(int argc, char *argv[]) } else if (strcmp(argv[i], "-vv") == 0) { - cmdln_loglevel = LOG_DEBUG_SERIAL; + _cmdln_loglevel = LOG_DEBUG_SERIAL; } else if (strcmp(argv[i], "-v") == 0) { - cmdln_loglevel = LOG_DEBUG; + _cmdln_loglevel = LOG_DEBUG; } else if (strcmp(argv[i], "-rsd") == 0) { - cmdln_debugRS485 = true; + _cmdln_debugRS485 = true; } else if (strcmp(argv[i], "-rsrd") == 0) { - cmdln_lograwRS485 = true; + _cmdln_lograwRS485 = true; } } + // Set this here, so it doesn;t get reset if the manager restarts the AqualinkD process. + _aqualink_data.aqManagerActive = false; + + return startup(argv[0], cfgFile); +} + +int startup(char *self, char *cfgFile) +{ + int i, j; + + _self = self; + _cfgFile = cfgFile; //initButtons(&_aqualink_data); read_config(&_aqualink_data, cfgFile); @@ -1152,16 +1180,19 @@ int main(int argc, char *argv[]) #endif _aqualink_data.total_buttons = 12; */ - if (cmdln_loglevel != -1) - _aqconfig_.log_level = cmdln_loglevel; - if (cmdln_debugRS485) + + if (_cmdln_loglevel != -1) + _aqconfig_.log_level = _cmdln_loglevel; + + if (_cmdln_debugRS485) _aqconfig_.log_protocol_packets = true; - if (cmdln_lograwRS485) + if (_cmdln_lograwRS485) _aqconfig_.log_raw_bytes = true; + if (_aqconfig_.display_warnings_web == true) setLoggingPrms(_aqconfig_.log_level, _aqconfig_.deamonize, _aqconfig_.log_file, _aqualink_data.last_display_message); else @@ -1224,6 +1255,7 @@ int main(int argc, char *argv[]) } #endif LOG(AQUA_LOG,LOG_NOTICE, "Config force SWG = %s\n", bool2text(_aqconfig_.force_swg)); + LOG(AQUA_LOG,LOG_NOTICE, "Config force PS setpoint = %s\n", bool2text(_aqconfig_.force_ps_setpoints)); /* removed until domoticz has a better virtual thermostat LOG(AQUA_LOG,LOG_NOTICE, "Config idx pool thermostat = %d\n", _aqconfig_.dzidx_pool_thermostat); LOG(AQUA_LOG,LOG_NOTICE, "Config idx spa thermostat = %d\n", _aqconfig_.dzidx_spa_thermostat); @@ -1236,13 +1268,7 @@ int main(int argc, char *argv[]) LOG(AQUA_LOG,LOG_NOTICE, "Debug RS485 protocol = %s\n", bool2text(_aqconfig_.log_protocol_packets)); LOG(AQUA_LOG,LOG_NOTICE, "Debug RS485 protocol raw = %s\n", bool2text(_aqconfig_.log_raw_bytes)); if ( _aqconfig_.RSSD_LOG_filter != NUL) - LOG(AQUA_LOG,LOG_NOTICE, "Log RS485 packets from = 0x%02hhx\n", _aqconfig_.RSSD_LOG_filter - - - - - - ); + LOG(AQUA_LOG,LOG_NOTICE, "Log RS485 packets from = 0x%02hhx\n", _aqconfig_.RSSD_LOG_filter); //LOG(AQUA_LOG,LOG_NOTICE, "Use PDA 4 auxiliary info = %s\n", bool2text(_aqconfig_.use_PDA_auxiliary)); //LOG(AQUA_LOG,LOG_NOTICE, "Read Pentair Packets = %s\n", bool2text(_aqconfig_.read_pentair_packets)); // logMessage (LOG_NOTICE, "Config serial_port = %s\n", config_parameters->serial_port); @@ -1259,6 +1285,13 @@ int main(int argc, char *argv[]) if (_aqconfig_.readahead_b4_write == true) LOG(AQUA_LOG,LOG_NOTICE, "Serial Read Ahead Write = %s\n", bool2text(_aqconfig_.readahead_b4_write)); + if (_aqconfig_.ftdi_low_latency == true) + LOG(AQUA_LOG,LOG_NOTICE, "Serial FTDI low latency = %s\n", bool2text(_aqconfig_.ftdi_low_latency)); + + if (_aqconfig_.prioritize_ack == true) + LOG(AQUA_LOG,LOG_NOTICE, "Serial Prioritize Ack = %s\n", bool2text(_aqconfig_.prioritize_ack)); + +#ifdef AQ_NO_THREAD_NETSERVICE if (_aqconfig_.thread_netservices) LOG(AQUA_LOG,LOG_NOTICE, "Thread Network Services = %s\n", bool2text(_aqconfig_.thread_netservices)); @@ -1273,6 +1306,7 @@ int main(int argc, char *argv[]) LOG(AQUA_LOG,LOG_WARNING, "Serial Read Ahead Write is not valid when using Negative RS Poll Speed, turning Serial Read Ahead Write off\n"); _aqconfig_.readahead_b4_write = false; } +#endif //for (i = 0; i < TOTAL_BUTONS; i++) for (i = 0; i < _aqualink_data.total_buttons; i++) @@ -1311,7 +1345,8 @@ int main(int argc, char *argv[]) { char pidfile[256]; // sprintf(pidfile, "%s/%s.pid",PIDLOCATION, basename(argv[0])); - sprintf(pidfile, "%s/%s.pid", "/run", basename(argv[0])); + //sprintf(pidfile, "%s/%s.pid", "/run", basename(argv[0])); + sprintf(pidfile, "%s/%s.pid", "/run", basename(self)); daemonise(pidfile, main_loop); } else @@ -1322,10 +1357,10 @@ int main(int argc, char *argv[]) exit(EXIT_SUCCESS); } - +/* #define MAX_BLOCK_ACK 12 #define MAX_BUSY_ACK (50 + MAX_BLOCK_ACK) - +*/ /* Point of this is to sent ack as quickly as possible, all checks should be done prior to calling this.*/ void caculate_ack_packet(int rs_fd, unsigned char *packet_buffer, emulation_type source) @@ -1391,73 +1426,7 @@ void caculate_ack_packet(int rs_fd, unsigned char *packet_buffer, emulation_type */ } -/* -void caculate_ack_packet_old(int rs_fd, unsigned char *packet_buffer) { - static int delayAckCnt = 0; - if (packet_buffer[PKT_DEST] == _aqconfig_.extended_device_id) { - if (onetouch_enabled()) - send_extended_ack(rs_fd, ACK_ONETOUCH, pop_ot_cmd(packet_buffer[PKT_CMD])); - else if (iaqtouch_enabled()) { - if (packet_buffer[PKT_CMD] != CMD_IAQ_CTRL_READY) - send_extended_ack(rs_fd, ACK_IAQ_TOUCH, pop_iaqt_cmd(packet_buffer[PKT_CMD])); - else { - unsigned char *cmd; - int size = ref_iaqt_control_cmd(&cmd); - send_jandy_command(rs_fd, cmd, size); - rem_iaqt_control_cmd(cmd); - } - } - - return; - } - - // if PDA mode, should we sleep? if not Can only send command to status message on PDA. -#ifdef AQ_PDA - if (_aqconfig_.pda_mode == true) { - //pda_programming_thread_check(&_aqualink_data); - if (_aqconfig_.pda_sleep_mode && pda_shouldSleep()) { - LOG(AQUA_LOG,LOG_DEBUG, "PDA Aqualink daemon in sleep mode\n"); - return; - } else { - send_extended_ack(rs_fd, ACK_PDA, pop_aq_cmd(&_aqualink_data)); - } - - } else -#endif - if (_aqualink_data.simulate_panel && in_programming_mode(&_aqualink_data) == false) { - // We are in simlator mode, ack get's complicated now. - // If have a command to send, send a normal ack. - // If we last message is waiting for an input "SELECT xxxxx", then sent a pause ack - // pause ack starts with around 12 ACK_SCREEN_BUSY_DISPLAY acks, then 50 ACK_SCREEN_BUSY acks - // if we send a command (ie keypress), the whole count needs to end and go back to sending normal ack. - // In code below, it jumps to sending ACK_SCREEN_BUSY, which still seems to work ok. - if (_aqualink_data.last_packet_type == CMD_MSG_LONG) { - send_extended_ack(rs_fd, ACK_SCREEN_BUSY, pop_aq_cmd(&_aqualink_data)); - } if (strncasecmp(_aqualink_data.last_display_message, "SELECT", 6) != 0) { // Nothing to wait for, send normal ack. - send_ack(rs_fd, pop_aq_cmd(&_aqualink_data)); - delayAckCnt = 0; - } else if (get_aq_cmd_length() > 0) { - // Send command and jump directly "busy but can receive message" - send_ack(rs_fd, pop_aq_cmd(&_aqualink_data)); - delayAckCnt = MAX_BUSY_ACK; // need to test jumping to MAX_BUSY_ACK here - } else { - LOG(AQUA_LOG,LOG_NOTICE, "Sending display busy due to Simulator mode \n"); - if (delayAckCnt < MAX_BLOCK_ACK) // block all incomming messages - send_extended_ack(rs_fd, ACK_SCREEN_BUSY_BLOCK, pop_aq_cmd(&_aqualink_data)); - else if (delayAckCnt < MAX_BUSY_ACK) // say we are pausing - send_extended_ack(rs_fd, ACK_SCREEN_BUSY, pop_aq_cmd(&_aqualink_data)); - else // We timed out pause, send normal ack (This should also reset the display message on next message received) - send_ack(rs_fd, pop_aq_cmd(&_aqualink_data)); - - delayAckCnt++; - } - } else { - // We are in simulate panel mode, but a thread is active, so ignore simulate panel - send_ack(rs_fd, pop_aq_cmd(&_aqualink_data)); - } -} -*/ unsigned char find_unused_address(unsigned char* packet) { static int ID[4] = {0,0,0,0}; // 0=0x08, 1=0x09, 2=0x0A, 3=0x0B static unsigned char lastID = 0x00; @@ -1484,24 +1453,17 @@ unsigned char find_unused_address(unsigned char* packet) { void main_loop() { - struct mg_mgr mgr; int rs_fd; int packet_length; unsigned char packet_buffer[AQ_MAXPKTLEN+1]; - //bool interestedInNextAck = false; - //rsDeviceType interestedInNextAck = DRS_NONE; - //bool changed = false; - //int swg_zero_cnt = 0; int i; //int delayAckCnt = 0; bool got_probe = false; bool got_probe_extended = false; bool got_probe_rssa = false; bool print_once = false; - //unsigned char previous_packet_to = NUL; // bad name, it's not previous, it's previous that we were interested in. + int blank_read_reconnect = MAX_ZERO_READ_BEFORE_RECONNECT_BLOCKING; // Will get reset if non blocking - // NSF need to find a better place to init this. - //_aqualink_data.aq_command = 0x00; sprintf(_aqualink_data.last_display_message, "%s", "Connecting to Control Panel"); _aqualink_data.simulate_panel = false; _aqualink_data.active_thread.thread_id = 0; @@ -1518,7 +1480,6 @@ void main_loop() _aqualink_data.swg_led_state = LED_S_UNKNOWN; _aqualink_data.swg_delayed_percent = TEMP_UNKNOWN; _aqualink_data.temp_units = UNKNOWN; - //_aqualink_data.single_device = false; _aqualink_data.service_mode_state = OFF; _aqualink_data.frz_protect_state = OFF; _aqualink_data.battery = OK; @@ -1542,7 +1503,12 @@ void main_loop() _aqualink_data.swg_ppm = 0; } - if (!start_net_services(&mgr, &_aqualink_data)) + signal(SIGINT, intHandler); + signal(SIGTERM, intHandler); + signal(SIGQUIT, intHandler); + signal(SIGRESTART, intHandler); + + if (!start_net_services(&_aqualink_data)) { LOG(AQUA_LOG,LOG_ERR, "Can not start webserver on port %s.\n", _aqconfig_.socket_port); exit(EXIT_FAILURE); @@ -1550,17 +1516,9 @@ void main_loop() startPacketLogger(); - signal(SIGINT, intHandler); - signal(SIGTERM, intHandler); - signal(SIGQUIT, intHandler); - int blank_read = 0; - if (_aqconfig_.rs_poll_speed < 0) - rs_fd = init_blocking_serial_port(_aqconfig_.serial_port); - else if (_aqconfig_.readahead_b4_write) - rs_fd = init_readahead_serial_port(_aqconfig_.serial_port); - else - rs_fd = init_serial_port(_aqconfig_.serial_port); + + rs_fd = init_serial_port(_aqconfig_.serial_port); if (rs_fd == -1) { LOG(AQUA_LOG,LOG_ERR, "Error Aqualink setting serial port: %s\n", _aqconfig_.serial_port); @@ -1568,6 +1526,9 @@ void main_loop() } LOG(AQUA_LOG,LOG_NOTICE, "Listening to Aqualink RS8 on serial port: %s\n", _aqconfig_.serial_port); + if (!serial_blockingmode()) + blank_read_reconnect = MAX_ZERO_READ_BEFORE_RECONNECT_NONBLOCKING; + #ifdef AQ_PDA if (isPDA_PANEL) { init_pda(&_aqualink_data); @@ -1638,12 +1599,13 @@ void main_loop() // Loop until we get the probe messages, that means we didn;t start too soon after last shutdown. while ( (got_probe == false || got_probe_rssa == false || got_probe_extended == false ) && _keepRunning == true) { - if (blank_read == MAX_ZERO_READ_BEFORE_RECONNECT) { + if (blank_read == blank_read_reconnect) { LOG(AQUA_LOG,LOG_ERR, "Nothing read on '%s', are you sure that's right?\n",_aqconfig_.serial_port); - } else if (blank_read == MAX_ZERO_READ_BEFORE_RECONNECT*2) { - LOG(AQUA_LOG,LOG_ERR, "Nothing read on '%s', are you sure that's right?\n",_aqconfig_.serial_port); - } else if (blank_read == MAX_ZERO_READ_BEFORE_RECONNECT*3) { + } else if (blank_read == blank_read_reconnect*2) { LOG(AQUA_LOG,LOG_ERR, "I'm done, exiting, please check '%s'\n",_aqconfig_.serial_port); + stopPacketLogger(); + close_serial_port(rs_fd); + stop_net_services(); return; } /* @@ -1702,11 +1664,15 @@ void main_loop() #endif else if (packet_length <= 0) { blank_read++; - //printf("Blank Reads %d\n",blank_read); +#ifdef AQ_NO_THREAD_NETSERVICE if (_aqconfig_.rs_poll_speed < 0) LOG(AQUA_LOG,LOG_DEBUG, "Blank RS485 read\n"); else delay(2); +#else + if (serial_blockingmode()) + LOG(AQUA_LOG,LOG_DEBUG, "Blank RS485 read\n"); +#endif } else if (packet_length > 0) { blank_read = 0; @@ -1724,8 +1690,7 @@ void main_loop() #endif stopPacketLogger(); close_serial_port(rs_fd); - //mg_mgr_free(&mgr); - stop_net_services(&mgr); + stop_net_services(); return; } } @@ -1747,10 +1712,12 @@ void main_loop() LOG(AQUA_LOG,LOG_NOTICE, "Starting communication with Control Panel\n"); - int blank_read_reconnect = MAX_ZERO_READ_BEFORE_RECONNECT; + // Not the best way to do this, but ok for moment +#ifdef AQ_NO_THREAD_NETSERVICE if (_aqconfig_.rs_poll_speed == 0) blank_read_reconnect = blank_read_reconnect * 50; +#endif blank_read = 0; // OK, Now go into infinate loop @@ -1765,55 +1732,45 @@ void main_loop() // sleep(1); sprintf(_aqualink_data.last_display_message, CONNECTION_ERROR); LOG(AQUA_LOG,LOG_ERR, "Aqualink daemon waiting to connect to master device...\n"); - broadcast_aqualinkstate_error(mgr.active_connections, CONNECTION_ERROR); - //mg_mgr_poll(&mgr, 1000); // Sevice messages - //mg_mgr_poll(&mgr, 3000); // should do nothing for 3 seconds. - poll_net_services(&mgr, 1000); - poll_net_services(&mgr, 3000); + _aqualink_data.updated = true; + broadcast_aqualinkstate_error(CONNECTION_ERROR); +#ifdef AQ_NO_THREAD_NETSERVICE + poll_net_services(1000); + poll_net_services(3000); +#endif // broadcast_aqualinkstate_error(mgr.active_connections, "No connection to RS control panel"); } else { + sprintf(_aqualink_data.last_display_message, CONNECTION_ERROR); LOG(AQUA_LOG,LOG_ERR, "Aqualink daemon looks like serial error, resetting.\n"); + _aqualink_data.updated = true; + broadcast_aqualinkstate_error(CONNECTION_ERROR); close_serial_port(rs_fd); - - if (_aqconfig_.rs_poll_speed < 0) - rs_fd = init_blocking_serial_port(_aqconfig_.serial_port); - else if (_aqconfig_.readahead_b4_write) - rs_fd = init_readahead_serial_port(_aqconfig_.serial_port); - else - rs_fd = init_serial_port(_aqconfig_.serial_port); + rs_fd = init_serial_port(_aqconfig_.serial_port); } blank_read = 0; } packet_length = get_packet(rs_fd, packet_buffer); - /* - if (_aqconfig_.log_raw_RS_bytes) - packet_length = get_packet_lograw(rs_fd, packet_buffer); - else - packet_length = get_packet(rs_fd, packet_buffer); - */ - /* - if (packet_length == AQSERR_READ || packet_length == AQSERR_TIMEOUT) - { - // Unrecoverable read error. Force an attempt to reconnect. - if (_aqconfig_.rs_poll_speed < 0) { - LOG(AQUA_LOG,LOG_ERR, "Bad serial read or connection\n"); - blank_read = blank_read_reconnect; - } else { - blank_read++; - } - } - else*/ + if (packet_length <= 0) { +#ifdef AQ_NO_THREAD_NETSERVICE if (_aqconfig_.rs_poll_speed < 0) { +#else + //if (!_aqconfig_.readahead_b4_write) { + if (serial_blockingmode()) { +#endif LOG(AQUA_LOG,LOG_ERR, "Nothing read on blocking serial port\n"); blank_read = blank_read_reconnect; - } else if (packet_length == AQSERR_READ) + } else if (packet_length == AQSERR_READ) { blank_read = blank_read_reconnect; + } else { + // In non blocking, so sleep for 2 milliseconds + delay(NONBLOCKING_SERIAL_DELAY); + } //if (blank_read > max_blank_read) { // LOG(AQUA_LOG,LOG_NOTICE, "Nothing read on serial %d\n",blank_read); // max_blank_read = blank_read; @@ -1834,32 +1791,51 @@ void main_loop() logPacketRead(packet_buffer, packet_length); } - _aqualink_data.updated = process_packet(packet_buffer, packet_length); + if (!_aqconfig_.prioritize_ack) + _aqualink_data.updated = process_packet(packet_buffer, packet_length); #ifdef AQ_PDA if (isPDA_PANEL) caculate_ack_packet(rs_fd, packet_buffer, AQUAPDA); else #endif caculate_ack_packet(rs_fd, packet_buffer, ALLBUTTON); + + if (_aqconfig_.prioritize_ack) + _aqualink_data.updated = process_packet(packet_buffer, packet_length); DEBUG_TIMER_STOP(_rs_packet_timer,AQUA_LOG,"AllButton Emulation Processed packet in"); } else if (packet_length > 0 && isRSSA_ENABLED && packet_buffer[PKT_DEST] == _aqconfig_.rssa_device_id && getProtocolType(packet_buffer) == JANDY) { - _aqualink_data.updated = process_rssadapter_packet(packet_buffer, packet_length, &_aqualink_data); - caculate_ack_packet(rs_fd, packet_buffer, RSSADAPTER); + if (_aqconfig_.prioritize_ack) { + _aqualink_data.updated = process_rssadapter_packet(packet_buffer, packet_length, &_aqualink_data); + caculate_ack_packet(rs_fd, packet_buffer, RSSADAPTER); + } else { + caculate_ack_packet(rs_fd, packet_buffer, RSSADAPTER); + _aqualink_data.updated = process_rssadapter_packet(packet_buffer, packet_length, &_aqualink_data); + } DEBUG_TIMER_STOP(_rs_packet_timer,AQUA_LOG,"SerialAdapter Emulation Processed packet in"); } #ifdef AQ_ONETOUCH else if (packet_length > 0 && isONET_ENABLED && packet_buffer[PKT_DEST] == _aqconfig_.extended_device_id && getProtocolType(packet_buffer) == JANDY) { - _aqualink_data.updated = process_onetouch_packet(packet_buffer, packet_length, &_aqualink_data); - caculate_ack_packet(rs_fd, packet_buffer, ONETOUCH); + if (_aqconfig_.prioritize_ack) { + caculate_ack_packet(rs_fd, packet_buffer, ONETOUCH); + _aqualink_data.updated = process_onetouch_packet(packet_buffer, packet_length, &_aqualink_data); + } else { + _aqualink_data.updated = process_onetouch_packet(packet_buffer, packet_length, &_aqualink_data); + caculate_ack_packet(rs_fd, packet_buffer, ONETOUCH); + } DEBUG_TIMER_STOP(_rs_packet_timer,AQUA_LOG,"OneTouch Emulation Processed packet in"); } #endif #ifdef AQ_IAQTOUCH else if (packet_length > 0 && isIAQT_ENABLED && packet_buffer[PKT_DEST] == _aqconfig_.extended_device_id && getProtocolType(packet_buffer) == JANDY) { - _aqualink_data.updated = process_iaqtouch_packet(packet_buffer, packet_length, &_aqualink_data); - caculate_ack_packet(rs_fd, packet_buffer, IAQTOUCH); + if (_aqconfig_.prioritize_ack) { + caculate_ack_packet(rs_fd, packet_buffer, IAQTOUCH); + _aqualink_data.updated = process_iaqtouch_packet(packet_buffer, packet_length, &_aqualink_data); + } else { + _aqualink_data.updated = process_iaqtouch_packet(packet_buffer, packet_length, &_aqualink_data); + caculate_ack_packet(rs_fd, packet_buffer, IAQTOUCH); + } DEBUG_TIMER_STOP(_rs_packet_timer,AQUA_LOG,"AquaTouch Emulation Processed packet in"); } #endif @@ -1880,19 +1856,17 @@ void main_loop() DEBUG_TIMER_CLEAR(_rs_packet_timer); // Clear timer, no need to print anything } +#ifdef AQ_NO_THREAD_NETSERVICE if (_aqualink_data.updated) { - broadcast_aqualinkstate(mgr.active_connections); - //_aqualink_data.updated = false; + broadcast_aqualinkstate(); } +#endif } - //mg_mgr_poll(&mgr, 10); - //mg_mgr_poll(&mgr, 5); - //mg_mgr_poll(&mgr, packet_length>0?0:_aqconfig_.net_poll_wait); // Don;t wait if we read something. - poll_net_services(&mgr, packet_length>0?0:_aqconfig_.rs_poll_speed); // Don;t wait if we read something. - - //tcdrain(rs_fd); // Make sure buffer has been sent. - //mg_mgr_poll(&mgr, 0); +#ifdef AQ_NO_THREAD_NETSERVICE + poll_net_services(packet_length>0?0:_aqconfig_.rs_poll_speed); // Don;t wait if we read something. +#endif + // NSF might want to wait if we are on a non blocking serial port. // Any unactioned commands if (_aqualink_data.unactioned.type != NO_ACTION) @@ -1913,17 +1887,28 @@ void main_loop() //if (_aqconfig_.debug_RSProtocol_packets) stopPacketLogger(); stopPacketLogger(); - // Stop network - stop_net_services(&mgr); + if (! _restart) { // Stop network if we are not restarting + stop_net_services(); + } // Reset and close the port. close_serial_port(rs_fd); // Clear webbrowser //mg_mgr_free(&mgr); + if (! _restart) { // NSF need to run through config memory and clean up. - LOG(AQUA_LOG,LOG_NOTICE, "Exit!\n"); - exit(EXIT_FAILURE); + LOG(AQUA_LOG,LOG_NOTICE, "Exit!\n"); + exit(EXIT_FAILURE); + } else { + LOG(AQUA_LOG,LOG_WARNING, "Waiting for process to fininish!\n"); + delay(5 * 1000); + LOG(AQUA_LOG,LOG_WARNING, "Restarting!\n"); + _keepRunning = true; + _restart = false; + startup(_self, _cfgFile); + } + } diff --git a/config.c b/config.c index 83d9394..25bcc69 100644 --- a/config.c +++ b/config.c @@ -123,6 +123,7 @@ void init_parameters (struct aqconfig * parms) parms->use_panel_aux_labels = false; parms->force_swg = false; + parms->force_ps_setpoints = false; //parms->swg_pool_and_spa = false; parms->swg_zero_ignore = DEFAULT_SWG_ZERO_IGNORE_COUNT; parms->display_warnings_web = false; @@ -134,10 +135,15 @@ void init_parameters (struct aqconfig * parms) // Default parameters for threading and USB blocking parms->readahead_b4_write = false; + +#ifdef AQ_NO_THREAD_NETSERVICE parms->rs_poll_speed = DEFAULT_POLL_SPEED; parms->thread_netservices = true; +#endif parms->enable_scheduler = true; + parms->ftdi_low_latency = true; + parms->prioritize_ack = true; generate_mqtt_id(parms->mqtt_ID, MQTT_ID_LEN); } @@ -545,9 +551,12 @@ bool setConfigValue(struct aqualinkdata *aqdata, char *param, char *value) { } else if (strncasecmp (param, "use_panel_aux_labels", 20) == 0) { _aqconfig_.use_panel_aux_labels = text2bool(value); rtn=true; - } else if (strncasecmp (param, "force_SWG", 9) == 0) { + } else if (strncasecmp (param, "force_SWG", 9) == 0) { _aqconfig_.force_swg = text2bool(value); rtn=true; + } else if (strncasecmp (param, "force_ps_setpoints", 18) == 0) { + _aqconfig_.force_ps_setpoints = text2bool(value); + rtn=true; } else if (strncasecmp (param, "debug_RSProtocol_bytes", 22) == 0) { _aqconfig_.log_raw_bytes = text2bool(value); rtn=true; @@ -569,6 +578,7 @@ bool setConfigValue(struct aqualinkdata *aqdata, char *param, char *value) { } else if (strncasecmp (param, "keep_paneltime_synced", 21) == 0) { _aqconfig_.sync_panel_time = text2bool(value); rtn=true; +#ifdef AQ_NO_THREAD_NETSERVICE } else if (strncasecmp (param, "network_poll_speed", 18) == 0) { LOG(AQUA_LOG,LOG_WARNING, "Config error, 'network_poll_speed' is no longer supported, using value for 'rs_poll_speed'\n"); _aqconfig_.rs_poll_speed = strtoul(value, NULL, 10); @@ -579,12 +589,17 @@ bool setConfigValue(struct aqualinkdata *aqdata, char *param, char *value) { } else if (strncasecmp (param, "thread_netservices", 18) == 0) { _aqconfig_.thread_netservices = text2bool(value); rtn=true; +#endif } else if (strncasecmp (param, "enable_scheduler", 16) == 0) { _aqconfig_.enable_scheduler = text2bool(value); rtn=true; - } - - + } else if (strncasecmp (param, "ftdi_low_latency", 16) == 0) { + _aqconfig_.ftdi_low_latency = text2bool(value); + rtn=true; + } else if (strncasecmp (param, "prioritize_ack", 14) == 0) { + _aqconfig_.prioritize_ack = text2bool(value); + rtn=true; + } else if (strncasecmp(param, "button_", 7) == 0) { // Check we have inichalized panel information, if not use any settings we may have if (_aqconfig_.paneltype_mask == 0) diff --git a/config.h b/config.h index a4b4eb1..4fc6a42 100644 --- a/config.h +++ b/config.h @@ -73,6 +73,7 @@ struct aqconfig uint8_t read_RS485_devmask; bool use_panel_aux_labels; bool force_swg; + bool force_ps_setpoints; int swg_zero_ignore; bool display_warnings_web; bool log_protocol_packets; // Read & Write as packets @@ -82,9 +83,13 @@ struct aqconfig bool readahead_b4_write; bool mqtt_timed_update; bool sync_panel_time; - int rs_poll_speed; - bool thread_netservices; bool enable_scheduler; + bool ftdi_low_latency; + bool prioritize_ack; +#ifdef AQ_NO_THREAD_NETSERVICE + int rs_poll_speed; // Need to remove + bool thread_netservices; // Need to remove +#endif }; #ifndef CONFIG_C diff --git a/extras/kill_aqualinkd.sh b/extras/kill_aqualinkd.sh new file mode 100755 index 0000000..947b618 --- /dev/null +++ b/extras/kill_aqualinkd.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# +# /* +# * Copyright (c) 2017 Shaun Feakes - All rights reserved +# * +# * You may use redistribute and/or modify this code under the terms of +# * the GNU General Public License version 2 as published by the +# * Free Software Foundation. For the terms of this license, +# * see . +# * +# * You are free to use this software under the terms of the GNU General +# * Public License, but WITHOUT ANY WARRANTY; without even the implied +# * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# * See the GNU General Public License for more details. +# * +# * https://github.com/sfeakes/aqualinkd +# */ + + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" + exit 1 +fi + + +kill -9 `ps -ef | grep aqualinkd | awk '{printf "%s ",$2}'` \ No newline at end of file diff --git a/extras/show_mem.sh b/extras/show_mem.sh index ab7e091..62f57cc 100755 --- a/extras/show_mem.sh +++ b/extras/show_mem.sh @@ -29,3 +29,6 @@ echo "Pss " $Pss echo "==================="; echo "Mem " $Mem echo "==================="; + +ps -p $MYPID -o %cpu,%mem,cmd +echo "==================="; diff --git a/extras/show_realtime.sh b/extras/show_realtime.sh new file mode 100755 index 0000000..18f378f --- /dev/null +++ b/extras/show_realtime.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# + +PROCESSNAME=aqualinkd +MYPID=`pidof $PROCESSNAME` + +#if [[ $EUID -ne 0 ]]; then +# echo "This script must be run as root" +# exit 1 +#fi + +top -H -p $MYPID + diff --git a/json_messages.c b/json_messages.c index ea8865d..9383f76 100644 --- a/json_messages.c +++ b/json_messages.c @@ -31,7 +31,7 @@ #include "devices_jandy.h" #include "version.h" #include "aq_timer.h" - +#include "aq_programmer.h" //#define test_message "{\"type\": \"status\",\"version\": \"8157 REV MMM\",\"date\": \"09/01/16 THU\",\"time\": \"1:16 PM\",\"temp_units\": \"F\",\"air_temp\": \"96\",\"pool_temp\": \"86\",\"spa_temp\": \" \",\"battery\": \"ok\",\"pool_htr_set_pnt\": \"85\",\"spa_htr_set_pnt\": \"99\",\"freeze_protection\": \"off\",\"frz_protect_set_pnt\": \"0\",\"leds\": {\"pump\": \"on\",\"spa\": \"off\",\"aux1\": \"off\",\"aux2\": \"off\",\"aux3\": \"off\",\"aux4\": \"off\",\"aux5\": \"off\",\"aux6\": \"off\",\"aux7\": \"off\",\"pool_heater\": \"off\",\"spa_heater\": \"off\",\"solar_heater\": \"off\"}}" //#define test_labels "{\"type\": \"aux_labels\",\"aux1_label\": \"Cleaner\",\"aux2_label\": \"Waterfall\",\"aux3_label\": \"Spa Blower\",\"aux4_label\": \"Pool Light\",\"aux5_label\": \"Spa Light\",\"aux6_label\": \"Unassigned\",\"aux7_label\": \"Unassigned\"}" @@ -41,7 +41,50 @@ //{"type": "aux_labels","Pool Pump": "Pool Pump","Spa Mode": "Spa Mode","Cleaner": "Aux 1","Waterfall": "Aux 2","Spa Blower": "Aux 2","Pool Light": "Aux 4","Spa Light ": "Aux 5","Aux 6": "Aux 6","Aux 7": "Aux 7","Heater": "Heater","Heater": "Heater","Solar Heater": "Solar Heater","(null)": "(null)"} //SPA WILL TURN OFF AFTER COOL DOWN CYCLE -#include "aq_programmer.h" + + + + +int json_chars(char *dest, const char *src, int dest_len, int src_len) +{ + int i; + int end = dest_len < src_len ? dest_len:src_len; + for(i=0; i < end; i++) { + if ( (src[i] < 32 || src[i] > 126) || + src[i] == 123 || // { + src[i] == 125 || // } + src[i] == 34 || // " + src[i] == 92 // backslash + ) // only printable chars + dest[i] = ' '; + else + dest[i] = src[i]; + } + + i--; + while (dest[i] == ' ') + i--; + + if (dest[i] != '\0') { + if (i < (dest_len-1)) + i++; + + dest[i] = '\0'; + } + + return i; +} + +int build_logmsg_JSON(char *dest, const char *src, int dest_len, int src_len) +{ + int length = sprintf(dest, "{\"logmsg\":\""); + length += json_chars(dest+length, src, (dest_len-20), src_len); + length += sprintf(dest+length, "\"}"); + dest[length] = '\n'; + dest[length+1] = '\0'; + + return length; +} const char* _getStatus(struct aqualinkdata *aqdata, const char *blankmsg) { @@ -57,6 +100,7 @@ const char* _getStatus(struct aqualinkdata *aqdata, const char *blankmsg) return JSON_TIMEOUT; } + // NSF should probably use json_chars here. if (aqdata->last_display_message[0] != '\0') { int i; for(i=0; i < strlen(aqdata->last_display_message); i++ ) { @@ -239,7 +283,7 @@ int build_device_JSON(struct aqualinkdata *aqdata, char* buffer, int size, bool for (i=0; i < aqdata->total_buttons; i++) { - if ( strcmp(BTN_POOL_HTR,aqdata->aqbuttons[i].name) == 0 && aqdata->pool_htr_set_point != TEMP_UNKNOWN) { + if ( strcmp(BTN_POOL_HTR,aqdata->aqbuttons[i].name) == 0 && (_aqconfig_.force_ps_setpoints || aqdata->pool_htr_set_point != TEMP_UNKNOWN)) { length += sprintf(buffer+length, "{\"type\": \"setpoint_thermo\", \"id\": \"%s\", \"name\": \"%s\", \"state\": \"%s\", \"status\": \"%s\", \"spvalue\": \"%.*f\", \"value\": \"%.*f\", \"int_status\": \"%d\", \"timer_active\":\"%s\" },", aqdata->aqbuttons[i].name, aqdata->aqbuttons[i].label, @@ -252,7 +296,7 @@ int build_device_JSON(struct aqualinkdata *aqdata, char* buffer, int size, bool LED2int(aqdata->aqbuttons[i].led->state), ((aqdata->aqbuttons[i].special_mask & TIMER_ACTIVE) == TIMER_ACTIVE?JSON_ON:JSON_OFF) ); - } else if ( strcmp(BTN_SPA_HTR,aqdata->aqbuttons[i].name)==0 && aqdata->spa_htr_set_point != TEMP_UNKNOWN) { + } else if ( strcmp(BTN_SPA_HTR,aqdata->aqbuttons[i].name)==0 && (_aqconfig_.force_ps_setpoints || aqdata->spa_htr_set_point != TEMP_UNKNOWN)) { length += sprintf(buffer+length, "{\"type\": \"setpoint_thermo\", \"id\": \"%s\", \"name\": \"%s\", \"state\": \"%s\", \"status\": \"%s\", \"spvalue\": \"%.*f\", \"value\": \"%.*f\", \"int_status\": \"%d\", \"timer_active\":\"%s\" },", aqdata->aqbuttons[i].name, aqdata->aqbuttons[i].label, diff --git a/json_messages.h b/json_messages.h index f3445c2..36af262 100644 --- a/json_messages.h +++ b/json_messages.h @@ -48,7 +48,7 @@ int build_aqualink_status_JSON(struct aqualinkdata *aqdata, char* buffer, int si int build_aux_labels_JSON(struct aqualinkdata *aqdata, char* buffer, int size); bool parseJSONwebrequest(char *buffer, struct JSONwebrequest *request); bool parseJSONrequest(char *buffer, struct JSONkvptr *request); - +int build_logmsg_JSON(char *dest, const char *src, int dest_len, int src_len); int build_mqtt_status_JSON(char* buffer, int size, int idx, int nvalue, float setpoint/*char *svalue*/); bool parseJSONmqttrequest(const char *str, size_t len, int *idx, int *nvalue, char *svalue); int build_aqualink_error_status_JSON(char* buffer, int size, char *msg); diff --git a/net_services.c b/net_services.c index a0f04e3..571fe7e 100644 --- a/net_services.c +++ b/net_services.c @@ -54,6 +54,9 @@ static struct aqualinkdata *_aqualink_data; //static char *_web_root; +static pthread_t _net_thread_id = 0; +static bool _keepNetServicesRunning = false; +static struct mg_mgr _mgr; static int _mqtt_exit_flag = false; @@ -71,21 +74,26 @@ void mqtt_broadcast_aqualinkstate(struct mg_connection *nc); void reset_last_mqtt_status(); - - - -static sig_atomic_t s_signal_received = 0; //static const char *s_http_port = "8080"; static struct mg_serve_http_opts _http_server_opts; -static void net_signal_handler(int sig_num) { +#ifdef AQ_NO_THREAD_NETSERVICE + static sig_atomic_t s_signal_received = 0; +#endif + +static void net_signal_handler(int sig_num) { + //printf("** net_signal_handler **\n"); +#ifdef AQ_NO_THREAD_NETSERVICE if (!_aqconfig_.thread_netservices) { signal(sig_num, net_signal_handler); // Reinstantiate signal handler to aqualinkd.c s_signal_received = sig_num; } else { intHandler(sig_num); // Force signal handler to aqualinkd.c } +#else + intHandler(sig_num); // Force signal handler to aqualinkd.c +#endif } @@ -99,7 +107,12 @@ static void set_websocket_simulator(struct mg_connection *nc) { static int is_websocket_simulator(const struct mg_connection *nc) { return nc->flags & MG_F_USER_2; } - +static void set_websocket_aqmanager(struct mg_connection *nc) { + nc->flags |= MG_F_USER_3; +} +static int is_websocket_aqmanager(const struct mg_connection *nc) { + return nc->flags & MG_F_USER_3; +} static int is_mqtt(const struct mg_connection *nc) { return nc->flags & MG_F_USER_1; } @@ -129,6 +142,32 @@ void _broadcast_aqualinkstate_error(struct mg_connection *nc, char *msg) // Maybe enhacment in future to sent error messages to MQTT } +// Send log message to any aqManager websocket. +void _broadcast_logs(struct mg_connection *nc, char *msg) { + + char message[LOGBUFFER]; + struct mg_connection *c; + + for (c = mg_next(nc->mgr, NULL); c != NULL; c = mg_next(nc->mgr, c)) { + if (is_websocket(c) && is_websocket_aqmanager(c)) { + build_logmsg_JSON(message, msg, LOGBUFFER, strlen(msg)); + ws_send(c, message); + } + } +} + +void broadcast_logs(char *msg) { + // NSF This causes mongoose to core dump after a period of time due to number of messages + // so remove until get time to update to new mongoose version. + return; + + // See if we have and manager runnig first so we return ASAP. + // Since this get's galled long before net_Services is started, also check we are running. + if (_keepNetServicesRunning && _net_thread_id != 0 && _aqualink_data->aqManagerActive) + _broadcast_logs(_mgr.active_connections, msg); + +} + void _broadcast_aqualinkstate(struct mg_connection *nc) { static int mqtt_count=0; @@ -661,7 +700,7 @@ void set_light_mode(char *value, int button) } */ -typedef enum {uActioned, uBad, uDevices, uStatus, uHomebridge, uDynamicconf, uDebugStatus, uDebugDownload, uSimulator, uSchedules, uSetSchedules} uriAtype; +typedef enum {uActioned, uBad, uDevices, uStatus, uHomebridge, uDynamicconf, uDebugStatus, uDebugDownload, uSimulator, uSchedules, uSetSchedules, uAQmanager} uriAtype; //typedef enum {NET_MQTT=0, NET_API, NET_WS, DZ_MQTT} netRequest; const char actionName[][5] = {"MQTT", "API", "WS", "DZ"}; @@ -817,6 +856,7 @@ uriAtype action_URI(request_source from, const char *URI, int uri_length, float char *ri1 = (char *)URI; char *ri2 = NULL; char *ri3 = NULL; + //char *ri4 = NULL; LOG(NET_LOG,LOG_DEBUG, "%s: URI Request '%.*s': value %.2f\n", actionName[from], uri_length, URI, value); @@ -828,7 +868,10 @@ uriAtype action_URI(request_source from, const char *URI, int uri_length, float } else if (ri3 == NULL) { ri3 = (char *)&URI[++i]; break; - } + } /*else if (ri4 == NULL) { + ri4 = (char *)&URI[++i]; + break; + }*/ } } @@ -848,6 +891,8 @@ uriAtype action_URI(request_source from, const char *URI, int uri_length, float return uSchedules; } else if (strncmp(ri1, "simulator", 9) == 0 && from == NET_WS) { // Only valid from websocket. return uSimulator; + } else if (strncmp(ri1, "aqmanager", 9) == 0 && from == NET_WS) { // Only valid from websocket. + return uAQmanager; } else if (strncmp(ri1, "rawcommand", 10) == 0 && from == NET_WS) { // Only valid from websocket. aq_send_cmd((unsigned char)value); return uActioned; @@ -868,6 +913,10 @@ uriAtype action_URI(request_source from, const char *URI, int uri_length, float } return uDebugStatus; // couple of debug items for testing + } else if (strncmp(ri1, "restart", 13) == 0) { + LOG(NET_LOG,LOG_NOTICE, "Received restart request!\n"); + raise(SIGRESTART); + return uActioned; } else if (strncmp(ri1, "set_date_time", 13) == 0) { //aq_programmer(AQ_SET_TIME, NULL, _aqualink_data); panel_device_request(_aqualink_data, DATE_TIME, 0, 0, from); @@ -1052,6 +1101,21 @@ uriAtype action_URI(request_source from, const char *URI, int uri_length, float } else { rtn = uActioned; } + } else if ((ri3 != NULL && (strncmp(ri1, "CHEM", 4) == 0) && (strncasecmp(ri3, "set", 3) == 0))) { + //aqualinkd/CHEM/pH/set + //aqualinkd/CHEM/ORP/set + if ( strncasecmp(ri2, "ORP", 3) == 0 ) { + _aqualink_data->orp = round(value); + rtn = uActioned; + LOG(NET_LOG,LOG_NOTICE, "%s: request to set ORP to %d\n",actionName[from],_aqualink_data->orp); + } else if ( strncasecmp(ri2, "Ph", 2) == 0 ) { + _aqualink_data->ph = value; + rtn = uActioned; + LOG(NET_LOG,LOG_NOTICE, "%s: request to set Ph to %.2f\n",actionName[from],_aqualink_data->ph); + } else { + LOG(NET_LOG,LOG_WARNING,"%s: ignoring, unknown URI %.*s\n",actionName[from],uri_length,URI); + rtn = uBad; + } // Action a Turn on / off message } else if ( (ri2 != NULL && (strncasecmp(ri2, "set", 3) == 0) && (strncasecmp(ri2, "setpoint", 8) != 0)) || (ri2 != NULL && ri3 != NULL && (strncasecmp(ri2, "timer", 5) == 0) && (strncasecmp(ri3, "set", 3) == 0)) ) { @@ -1417,6 +1481,18 @@ void action_websocket_request(struct mg_connection *nc, struct websocket_message ws_send(nc, message); } break; + case uAQmanager: + { + LOG(NET_LOG,LOG_DEBUG, "Started AqualinkD Manager\n"); + set_websocket_aqmanager(nc); + _aqualink_data->aqManagerActive = true; + DEBUG_TIMER_START(&tid); + char message[JSON_BUFFER_SIZE]; + build_aqualink_status_JSON(_aqualink_data, message, JSON_BUFFER_SIZE); // Should change this to simulator. + DEBUG_TIMER_STOP(tid, NET_LOG, "action_websocket_request() build_aqualink_status_JSON took"); + ws_send(nc, message); + } + break; case uSchedules: { DEBUG_TIMER_START(&tid); @@ -1537,6 +1613,9 @@ static void ev_handler(struct mg_connection *nc, int ev, void *ev_data) { if (is_websocket_simulator(nc)) { _aqualink_data->simulate_panel = false; LOG(NET_LOG,LOG_DEBUG, "Stoped Simulator Mode\n"); + } else if (is_websocket_aqmanager(nc)) { + _aqualink_data->aqManagerActive = false; + LOG(NET_LOG,LOG_DEBUG, "Stoped Aqualink Manager\n"); } } else if (is_mqtt(nc)) { LOG(NET_LOG,LOG_WARNING, "MQTT Connection closed\n"); @@ -1649,9 +1728,15 @@ void reset_last_mqtt_status() //_last_mqtt_aqualinkdata.sw .ar_swg_device_status = SWG_STATUS_UNKNOWN; _last_mqtt_aqualinkdata.battery = -1; _last_mqtt_aqualinkdata.frz_protect_state = -1; - _last_mqtt_aqualinkdata.boost = -1; _last_mqtt_aqualinkdata.service_mode_state = -1; - + _last_mqtt_aqualinkdata.pool_htr_set_point = TEMP_REFRESH; + _last_mqtt_aqualinkdata.spa_htr_set_point = TEMP_REFRESH; + _last_mqtt_aqualinkdata.ph = -1; + _last_mqtt_aqualinkdata.orp = -1; + _last_mqtt_aqualinkdata.boost = -1; + _last_mqtt_aqualinkdata.swg_percent = -1; + _last_mqtt_aqualinkdata.swg_ppm = -1; + } void start_mqtt(struct mg_mgr *mgr) { @@ -1681,6 +1766,7 @@ bool _start_net_services(struct mg_mgr *mgr, struct aqualinkdata *aqdata) { signal(SIGTERM, net_signal_handler); signal(SIGINT, net_signal_handler); + signal(SIGRESTART, net_signal_handler); setvbuf(stdout, NULL, _IOLBF, 0); setvbuf(stderr, NULL, _IOLBF, 0); @@ -1722,17 +1808,14 @@ bool _start_net_services(struct mg_mgr *mgr, struct aqualinkdata *aqdata) { * */ - -pthread_t _net_thread_id; -bool _keepNetServicesRunning = true; //volatile bool _broadcast = false; // This is redundent when most the fully threadded rather than option. void *net_services_thread( void *ptr ) { struct aqualinkdata *aqdata = (struct aqualinkdata *) ptr; - struct mg_mgr mgr; + //struct mg_mgr mgr; - if (!_start_net_services(&mgr, aqdata)) { + if (!_start_net_services(&_mgr, aqdata)) { //LOG(NET_LOG,LOG_ERR, "Failed to start network services\n"); // Not the best way to do this (have thread exit process), but forks for the moment. _keepNetServicesRunning = false; @@ -1743,12 +1826,12 @@ void *net_services_thread( void *ptr ) while (_keepNetServicesRunning == true) { - //poll_net_services(&mgr, 10); - mg_mgr_poll(&mgr, 100); + //poll_net_services(&_mgr, 10); + mg_mgr_poll(&_mgr, 100); if (aqdata->updated == true /*|| _broadcast == true*/) { //LOG(NET_LOG,LOG_DEBUG, "********** Broadcast ************\n"); - _broadcast_aqualinkstate(mgr.active_connections); + _broadcast_aqualinkstate(_mgr.active_connections); aqdata->updated = false; //_broadcast = false; } @@ -1756,15 +1839,100 @@ void *net_services_thread( void *ptr ) f_end: LOG(NET_LOG,LOG_NOTICE, "Stopping network services thread\n"); - mg_mgr_free(&mgr); + mg_mgr_free(&_mgr); pthread_exit(0); } -bool start_net_services(struct mg_mgr *mgr, struct aqualinkdata *aqdata) + + + +#ifndef AQ_NO_THREAD_NETSERVICE + + +void broadcast_aqualinkstate() { + _aqualink_data->updated = true; +} +void broadcast_aqualinkstate_error(char *msg) { + _broadcast_aqualinkstate_error(_mgr.active_connections, msg); +} + +void stop_net_services() { + _keepNetServicesRunning = false; + return; +} + +bool start_net_services(struct aqualinkdata *aqdata) +{ + // Not the best way to see if we are running, but works for now. + if (_net_thread_id != 0 && _keepNetServicesRunning) { + LOG(NET_LOG,LOG_NOTICE, "Network services thread is already running, not starting\n"); + return true; + } + + _keepNetServicesRunning = true; + + LOG(NET_LOG,LOG_NOTICE, "Starting network services thread\n"); + + if( pthread_create( &_net_thread_id , NULL , net_services_thread, (void*)aqdata) < 0) { + LOG(NET_LOG, LOG_ERR, "could not create network thread\n"); + return false; + } + + pthread_detach(_net_thread_id); + + return true; +} + +#else // DON'T THREAD NET SERVICES + +void stop_net_services() { + if ( ! _aqconfig_.thread_netservices) { + mg_mgr_free(&_mgr); + return; + } +} +void broadcast_aqualinkstate(/*struct mg_connection *nc*/) { if ( ! _aqconfig_.thread_netservices) { - return _start_net_services(mgr, aqdata); + _broadcast_aqualinkstate(_mgr.active_connections); + _aqualink_data->updated = false; + return; + } +} +void broadcast_aqualinkstate_error(/*struct mg_connection *nc,*/ char *msg) +{ + if ( ! _aqconfig_.thread_netservices) { + return _broadcast_aqualinkstate_error(_mgr.active_connections, msg); + } + LOG(NET_LOG,LOG_NOTICE, "Broadcast error to network\n"); +} +time_t poll_net_services(/*struct mg_mgr *mgr,*/ int timeout_ms) +{ + if (timeout_ms < 0) + timeout_ms = 0; + + if ( ! _aqconfig_.thread_netservices) { + //return mg_mgr_poll(mgr, timeout_ms); + return mg_mgr_poll(&_mgr, timeout_ms); + } + + if (timeout_ms > 5) + delay(5); + else if (timeout_ms > 0) + delay(timeout_ms); + + //LOG(NET_LOG,LOG_NOTICE, "Poll network services\n"); + + return 0; +} +bool start_net_services(/*struct mg_mgr *mgr, */struct aqualinkdata *aqdata) +{ + _keepNetServicesRunning = true; + + if ( ! _aqconfig_.thread_netservices) { + //return _start_net_services(mgr, aqdata); + return _start_net_services(&_mgr, aqdata); } LOG(NET_LOG,LOG_NOTICE, "Starting network services thread\n"); @@ -1779,56 +1947,8 @@ bool start_net_services(struct mg_mgr *mgr, struct aqualinkdata *aqdata) return true; } -time_t poll_net_services(struct mg_mgr *mgr, int timeout_ms) -{ - if (timeout_ms < 0) - timeout_ms = 0; +#endif - if ( ! _aqconfig_.thread_netservices) { - return mg_mgr_poll(mgr, timeout_ms); - } - - if (timeout_ms > 5) - delay(5); - else if (timeout_ms > 0) - delay(timeout_ms); - - //LOG(NET_LOG,LOG_NOTICE, "Poll network services\n"); - - return 0; -} - -void broadcast_aqualinkstate(struct mg_connection *nc) -{ - if ( ! _aqconfig_.thread_netservices) { - _broadcast_aqualinkstate(nc); - _aqualink_data->updated = false; - return; - } - //_broadcast = true; - //LOG(NET_LOG,LOG_NOTICE, "Broadcast status to network\n"); -} - -void broadcast_aqualinkstate_error(struct mg_connection *nc, char *msg) -{ - if ( ! _aqconfig_.thread_netservices) { - return _broadcast_aqualinkstate_error(nc, msg); - } - - LOG(NET_LOG,LOG_NOTICE, "Broadcast error to network\n"); -} - -void stop_net_services(struct mg_mgr *mgr) { - - if ( ! _aqconfig_.thread_netservices) { - mg_mgr_free(mgr); - return; - } - - _keepNetServicesRunning = false; - - return; -} diff --git a/net_services.h b/net_services.h index 104e311..b6315da 100644 --- a/net_services.h +++ b/net_services.h @@ -15,12 +15,22 @@ //void main_server_TEST(struct aqualinkdata *aqdata, char *s_http_port); //bool start_web_server(struct mg_mgr *mgr, struct aqualinkdata *aqdata, char *port, char* web_root); //bool start_net_services(struct mg_mgr *mgr, struct aqualinkdata *aqdata, struct aqconfig *aqconfig); + +/* +#ifdef AQ_NO_THREAD_NETSERVICE bool start_net_services(struct mg_mgr *mgr, struct aqualinkdata *aqdata); void stop_net_services(struct mg_mgr *mgr); time_t poll_net_services(struct mg_mgr *mgr, int timeout_ms); void broadcast_aqualinkstate(struct mg_connection *nc); void broadcast_aqualinkstate_error(struct mg_connection *nc, char *msg); - +#else*/ +bool start_net_services(struct aqualinkdata *aqdata); +void stop_net_services(); +time_t poll_net_services(int timeout_ms); +void broadcast_aqualinkstate(); +void broadcast_aqualinkstate_error(char *msg); +void broadcast_logs(char *msg); +//#endif #endif // WEB_SERVER_H_ \ No newline at end of file diff --git a/release/aqualinkd b/release/aqualinkd index dcb725af62b68494de05ba641cbb6c69388b5784..67b52121affe80e43caee85bc545e8ec974d4605 100755 GIT binary patch delta 148129 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 delta 145294 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 V;L_OVnghotX6}mJ)f_nD{{RLlDNq0a diff --git a/release/aqualinkd.conf b/release/aqualinkd.conf index 087c92c..9b729da 100755 --- a/release/aqualinkd.conf +++ b/release/aqualinkd.conf @@ -133,8 +133,8 @@ report_zero_pool_temp = no # Not documented. These will change how RS485 / Serial works, Only use if asked to for problem solving purposes. #serial_readahead_b4_write = yes -#thread_netservices = yes -#rs_poll_speed = -1 +#ftdi_low_latency = no +#prioritize_ack = yes #swg_zero_ignore_count = 20 diff --git a/release/serial_logger b/release/serial_logger index 62e9522cf3f1e63597d46f17a5df322749d83724..51c24702387d77644426488dcaa4e6914a4ce248 100755 GIT binary patch literal 45432 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 e^Pb&*&Y6}sxnz3yCXx2n`&$GJ@gIJ? 0) + printf("panel_type = %s\n",_panelType); + + if (mainID != 0x00) + printf("device_id = 0x%02hhx\n",mainID); + + if (rssaID != 0x00) + printf("rssa_device_id = 0x%02hhx\n",rssaID); + + if (extID != 0x00) + printf("extended_device_id = 0x%02hhx\n",extID); + + printf("-------------------------\n"); + return 0; } diff --git a/serialadapter.c b/serialadapter.c index 7992b68..2674aa6 100644 --- a/serialadapter.c +++ b/serialadapter.c @@ -220,7 +220,9 @@ bool process_rssadapter_packet(unsigned char *packet, int length, struct aqualin static int cnt=-5; cnt++; //char buff[1024]; + //LOG(RSSA_LOG,LOG_DEBUG, " Received message\n"); + //debuglogPacket(RSSA_LOG, packet, length, true); if (cnt == 0 || cnt >= 250) { LOG(RSSA_LOG,LOG_INFO, "Queue device update requests\n"); @@ -276,13 +278,13 @@ bool process_rssadapter_packet(unsigned char *packet, int length, struct aqualin LOG(RSSA_LOG,LOG_ERR,"Units are Unknown\n"); } } else if (packet[4] == RS_SA_POOLSP) { - LOG(RSSA_LOG,LOG_INFO,"Pool SP %d\n", packet[6]); + LOG(RSSA_LOG,LOG_INFO,"Pool SP is %d\n", packet[6]); aq_data->pool_htr_set_point = (int) packet[6]; } else if (packet[4] == RS_SA_SPASP) { - LOG(RSSA_LOG,LOG_INFO,"Spa SP %d\n", packet[6]); + LOG(RSSA_LOG,LOG_INFO,"Spa SP is %d\n", packet[6]); aq_data->spa_htr_set_point = (int) packet[6]; } else if (packet[4] == RS_SA_POOLSP2) { - LOG(RSSA_LOG,LOG_INFO,"Spa SP %d\n", packet[6]); + LOG(RSSA_LOG,LOG_INFO,"Pool SP2 is %d\n", packet[6]); aq_data->spa_htr_set_point = (int) packet[6]; } else if (packet[4] == 0x03) { // These are device status messages diff --git a/utils.c b/utils.c index 5cb8441..570980f 100644 --- a/utils.c +++ b/utils.c @@ -14,6 +14,7 @@ * https://github.com/sfeakes/aqualinkd */ + #include #include #include @@ -39,11 +40,13 @@ #include "utils.h" - #define DEFAULT_LOG_FILE "/tmp/aqualinkd-inline.log" //#define MAXCFGLINE 265 #define TIMESTAMP_LENGTH 30 +// Since this get's compiled without net_services for serial_logger +// pre-define this here rather than include netservices.h +void broadcast_logs(char *msg); static bool _daemonise = false; static bool _log2file = false; @@ -431,7 +434,7 @@ void logMessage(int msg_level, const char *format, ...) _LOG(AQUA_LOG, msg_level, buffer); } */ -#define LOGBUFFER 1024 + void LOG(int16_t from, int msg_level, const char * format, ...) { @@ -509,10 +512,13 @@ void _LOG(int16_t from, int msg_level, char *message) } */ + // Send logs to any websocket that's interested. + broadcast_logs(message); + // Sent the log to the UI if configured. if (msg_level <= LOG_ERR && _loq_display_message != NULL) { snprintf(_loq_display_message, 127, "%s\n",message); - } + } if (_log2file == TRUE && _log_filename != NULL) { char time[TIMESTAMP_LENGTH]; diff --git a/utils.h b/utils.h index da14e93..92b2a4c 100644 --- a/utils.h +++ b/utils.h @@ -17,6 +17,8 @@ #define FALSE 0 #endif +#define LOGBUFFER 1024 + #define MAXLEN 256 //#define round(a) (int) (a+0.5) // 0 decimal places (doesn't work for negative numbers) diff --git a/version.h b/version.h index 62e16da..be623b5 100644 --- a/version.h +++ b/version.h @@ -1,4 +1,4 @@ #define AQUALINKD_NAME "Aqualink Daemon" -#define AQUALINKD_VERSION "2.3.0e" +#define AQUALINKD_VERSION "2.3.0f"