AqualinkD/aq_programmer.h

139 lines
4.0 KiB
C
Raw Normal View History

2017-12-30 20:12:01 +00:00
#ifndef AQ_PROGRAMMER_H_
#define AQ_PROGRAMMER_H_
2020-06-01 00:35:17 +00:00
#include <pthread.h>
//#include "aqualink.h"
2018-07-20 17:29:13 +00:00
2020-08-28 19:12:38 +00:00
#define PROGRAMMING_POLL_DELAY_TIME 10
#define PROGRAMMING_POLL_COUNTER 200
2018-07-20 17:29:13 +00:00
// need to get the C values from aqualink manual and add those just incase
// someone has the controller set to C.
2018-09-12 21:04:09 +00:00
#define HEATER_MAX_F 104
#define HEATER_MIN_F 36
#define FREEZE_PT_MAX_F 42
2019-05-25 16:52:36 +00:00
#define FREEZE_PT_MIN_F 34
2018-09-12 21:04:09 +00:00
#define HEATER_MAX_C 40
#define HEATER_MIN_C 0
#define FREEZE_PT_MAX_C 5
#define FREEZE_PT_MIN_C 1
2018-07-20 17:29:13 +00:00
#define SWG_PERCENT_MAX 101
#define SWG_PERCENT_MIN 0
2018-09-02 21:45:24 +00:00
#define PTHREAD_ARG 25
#define LIGHT_MODE_BUFER PTHREAD_ARG
2018-07-20 17:29:13 +00:00
2020-06-01 00:35:17 +00:00
typedef enum emulation_type{
ALLBUTTON,
2020-08-28 19:12:38 +00:00
RSSADAPTER,
2020-06-01 00:35:17 +00:00
ONETOUCH,
2020-07-18 16:37:19 +00:00
IAQTOUCH,
AQUAPDA, // AQUAPALM and PDA are taken as specific type.
JANDY_DEVICE // Very rarley used.
2020-06-01 00:35:17 +00:00
} emulation_type;
2017-12-30 20:12:01 +00:00
typedef enum {
AQP_NULL = -1,
AQ_GET_POOL_SPA_HEATER_TEMPS,
AQ_GET_FREEZE_PROTECT_TEMP,
AQ_SET_TIME,
AQ_SET_POOL_HEATER_TEMP,
AQ_SET_SPA_HEATER_TEMP,
AQ_SET_FRZ_PROTECTION_TEMP,
AQ_GET_DIAGNOSTICS_MODEL,
2019-06-05 16:41:38 +00:00
//AQ_SEND_CMD,
2017-12-30 20:12:01 +00:00
AQ_GET_PROGRAMS,
2020-06-06 16:36:04 +00:00
AQ_SET_LIGHTPROGRAM_MODE,
AQ_SET_LIGHTCOLOR_MODE,
2018-03-15 20:03:57 +00:00
AQ_PDA_INIT,
2018-09-02 21:45:24 +00:00
AQ_SET_SWG_PERCENT,
AQ_PDA_DEVICE_STATUS,
2019-05-25 16:52:36 +00:00
AQ_PDA_DEVICE_ON_OFF,
AQ_GET_AUX_LABELS,
2019-10-13 15:07:14 +00:00
AQ_PDA_WAKE_INIT,
2020-06-01 00:35:17 +00:00
AQ_SET_BOOST,
2020-07-18 16:37:19 +00:00
AQ_SET_PUMP_RPM,
AQ_SET_PUMP_VS_PROGRAM,
2020-06-01 00:35:17 +00:00
AQ_SET_ONETOUCH_PUMP_RPM,
AQ_SET_ONETOUCH_MACRO,
AQ_GET_ONETOUCH_SETPOINTS,
AQ_SET_ONETOUCH_POOL_HEATER_TEMP,
AQ_SET_ONETOUCH_SPA_HEATER_TEMP,
AQ_SET_ONETOUCH_FREEZEPROTECT,
AQ_SET_ONETOUCH_TIME,
AQ_SET_ONETOUCH_BOOST,
2020-07-18 16:37:19 +00:00
AQ_SET_ONETOUCH_SWG_PERCENT,
AQ_SET_IAQTOUCH_PUMP_RPM,
AQ_SET_IAQTOUCH_PUMP_VS_PROGRAM,
AQ_GET_IAQTOUCH_VSP_ASSIGNMENT,
AQ_GET_IAQTOUCH_SETPOINTS,
AQ_GET_IAQTOUCH_AUX_LABELS,
AQ_SET_IAQTOUCH_SWG_PERCENT,
AQ_SET_IAQTOUCH_SWG_BOOST,
AQ_SET_IAQTOUCH_POOL_HEATER_TEMP,
AQ_SET_IAQTOUCH_SPA_HEATER_TEMP,
2020-08-28 19:12:38 +00:00
AQ_SET_IAQTOUCH_SET_TIME,
AQ_GET_RSSADAPTER_SETPOINTS,
AQ_SET_RSSADAPTER_POOL_HEATER_TEMP,
AQ_SET_RSSADAPTER_SPA_HEATER_TEMP,
AQ_ADD_RSSADAPTER_POOL_HEATER_TEMP,
AQ_ADD_RSSADAPTER_SPA_HEATER_TEMP
2017-12-30 20:12:01 +00:00
} program_type;
2020-07-26 19:28:58 +00:00
2017-12-30 20:12:01 +00:00
struct programmingThreadCtrl {
pthread_t thread_id;
//void *thread_args;
2018-09-02 21:45:24 +00:00
char thread_args[PTHREAD_ARG];
2017-12-30 20:12:01 +00:00
struct aqualinkdata *aq_data;
};
2020-06-01 00:35:17 +00:00
typedef enum pump_type {
PT_UNKNOWN = -1,
EPUMP,
VSPUMP,
VFPUMP
} pump_type;
2018-07-20 17:29:13 +00:00
2018-07-15 19:36:19 +00:00
2017-12-30 20:12:01 +00:00
//void aq_programmer(program_type type, void *args, struct aqualinkdata *aq_data);
void aq_programmer(program_type type, char *args, struct aqualinkdata *aq_data);
2020-06-01 00:35:17 +00:00
//void kick_aq_program_thread(struct aqualinkdata *aq_data);
void kick_aq_program_thread(struct aqualinkdata *aq_data, emulation_type source_type);
2020-07-18 16:37:19 +00:00
bool in_programming_mode(struct aqualinkdata *aq_data);
2020-06-01 00:35:17 +00:00
bool in_ot_programming_mode(struct aqualinkdata *aq_data);
2020-07-18 16:37:19 +00:00
bool in_iaqt_programming_mode(struct aqualinkdata *aq_data);
bool in_swg_programming_mode(struct aqualinkdata *aq_data);
2019-06-05 16:41:38 +00:00
void aq_send_cmd(unsigned char cmd);
2020-06-01 00:35:17 +00:00
void queueGetProgramData(emulation_type source_type, struct aqualinkdata *aq_data);
2020-06-20 16:09:54 +00:00
//void queueGetExtendedProgramData(emulation_type source_type, struct aqualinkdata *aq_data, bool labels);
2018-03-14 17:29:52 +00:00
unsigned char pop_aq_cmd(struct aqualinkdata *aq_data);
2020-06-06 16:36:04 +00:00
2018-03-14 17:29:52 +00:00
//bool push_aq_cmd(unsigned char cmd);
2017-12-30 20:12:01 +00:00
//void send_cmd(unsigned char cmd, struct aqualinkdata *aq_data);
//void cancel_menu(struct aqualinkdata *aq_data);
//void *set_aqualink_time( void *ptr );
//void *get_aqualink_pool_spa_heater_temps( void *ptr );
2018-07-29 16:32:31 +00:00
int get_aq_cmd_length();
2018-09-12 21:04:09 +00:00
int setpoint_check(int type, int value, struct aqualinkdata *aqdata);
2020-06-01 00:35:17 +00:00
int RPM_check(pump_type type, int value, struct aqualinkdata *aqdata);
//int RPM_check(int type, int value, struct aqualinkdata *aqdata);
2019-06-27 22:18:44 +00:00
const char *ptypeName(program_type type);
2020-06-06 16:36:04 +00:00
const char *programtypeDisplayName(program_type type);
2019-05-25 16:52:36 +00:00
// These shouldn't be here, but just for the PDA AQ PROGRAMMER
2019-06-05 16:41:38 +00:00
void send_cmd(unsigned char cmd);
2019-05-25 16:52:36 +00:00
bool push_aq_cmd(unsigned char cmd);
void waitForSingleThreadOrTerminate(struct programmingThreadCtrl *threadCtrl, program_type type);
void cleanAndTerminateThread(struct programmingThreadCtrl *threadCtrl);
bool waitForMessage(struct aqualinkdata *aq_data, char* message, int numMessageReceived);
#endif