1 #ifndef genericcontrol_h
2 #define genericcontrol_h
4 #include "gcp/util/common/NetStruct.h"
5 #include "gcp/util/common/NetUnion.h"
6 #include "gcp/util/common/NewRtcNetMsg.h"
15 #define _POSIX_C_SOURCE 199506L
18 #if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 199506L
19 #error "Add -D_POSIX_C_SOURCE=199506L to the compile line"
27 #include "gcp/control/code/unix/libunix_src/common/list.h"
29 #include "gcp/util/common/PipeQueue.h"
35 #include "gcp/control/code/unix/libunix_src/specific/rtcnetcoms.h"
37 #include "gcp/util/common/AntNum.h"
38 #include "gcp/util/common/Directives.h"
40 #include "gcp/control/code/unix/libtransaction_src/TransactionManager.h"
46 #define CP_SHUTDOWN_TIMEOUT 5
55 #if FILENAME_MAX + 16 > PIPE_BUF
56 #define CP_FILENAME_MAX (PIPE_BUF - 16)
58 #define CP_FILENAME_MAX FILENAME_MAX
61 #define CP_REGNAME_MAX CP_FILENAME_MAX/2
79 #define CHAN_IO_FN(fn) void (fn)(ControlProg *cp, ComHeader *head)
95 #define SOCK_RCVD_FN(fn) int (fn)(ControlProg *cp, SockChan *sock)
112 #define SOCK_SENT_FN(fn) int (fn)(ControlProg *cp, SockChan *sock)
131 #define SOCK_COND_FN(fn) void (fn)(ControlProg *cp, SockChan *sock, \
179 SOCK_RCVD_FN(*rcvd_fn);
180 SOCK_SENT_FN(*sent_fn);
181 SOCK_COND_FN(*cond_fn);
203 void *cp_ThreadData(
ControlProg *cp, CpThreadId
id);
211 #define CP_NEW_FN(fn) void *(fn)(ControlProg *cp, gcp::util::Pipe *pipe)
215 #define CP_DEL_FN(fn) void *(fn)(void *obj)
219 #define CP_THREAD_FN(fn) void *(fn)(void *arg)
227 #define CP_STOP_FN(fn) int (fn)(ControlProg *cp)
236 CP_THREAD_FN(logger_thread);
237 CP_NEW_FN(new_Logger);
238 CP_DEL_FN(del_Logger);
239 CP_STOP_FN(stop_Logger);
268 LoggerMessageType type;
272 char dir[CP_FILENAME_MAX+1];
276 char dir[CP_FILENAME_MAX+1];
283 gcp::control::LogStream nature;
284 char text[LOG_MSGLEN+1];
292 char catalog[CP_FILENAME_MAX+1];
298 char device[gcp::control::TransactionManager::DEV_NAME_MAX+1];
300 char serial[gcp::control::TransactionManager::SERIAL_NAME_MAX+1];
302 char location[gcp::control::TransactionManager::LOCATION_NAME_MAX+1];
306 char who[gcp::control::TransactionManager::WHO_NAME_MAX+1];
308 char comment[LOG_MSGLEN-gcp::control::TransactionManager::PREFIX_LEN+1];
321 int pack_logger_message(
LoggerMessage *msg,
char *text, gcp::control::LogStream nature,
322 unsigned seq=0,
bool end=
true,
bool interactive=
false);
325 int pack_logger_transaction_catalog(
LoggerMessage *msg,
char *path,
bool clear);
326 int pack_logger_log_transaction(
LoggerMessage *msg,
char *device,
char* serial,
327 char* location,
double date,
char* who,
331 bool log_isValidDevice(
Logger* log,
char* device);
344 int log_thread_stream(
ControlProg *cp, FILE *stream);
352 CP_THREAD_FN(archiver_thread);
353 CP_NEW_FN(new_Archiver);
354 CP_DEL_FN(del_Archiver);
355 CP_STOP_FN(stop_Archiver);
387 } ArchiverMessageType;
395 ArchiverMessageType type;
398 char dir[CP_FILENAME_MAX+1];
401 char dir[CP_FILENAME_MAX+1];
460 enum {ARC_DEF_NFRAME=10};
470 CP_THREAD_FN(scheduler_thread);
471 CP_NEW_FN(new_Scheduler);
472 CP_DEL_FN(del_Scheduler);
473 CP_STOP_FN(stop_Scheduler);
478 enum SchedulerMessageType {
502 char string[gcp::control::CC_CMD_MAX+1];
506 NETSTRUCT_CHAR_ARR(
string, gcp::control::CC_CMD_MAX+1);
507 NETSTRUCT_UINT(client);
516 NETSTRUCT_UINT(pipe);
578 char dir[CP_FILENAME_MAX+1] ;
581 NETSTRUCT_CHAR_ARR(dir, CP_FILENAME_MAX+1);
590 NETSTRUCT_UINT(poll);
624 NETUNION_UINT(SCH_RTC_STATE, rtc_online);
634 addMember(SCH_SETREG_DONE, &setreg_done);
635 addMember(SCH_TV_OFFSET_DONE, &tv_offset_done);
648 SchedulerMessageType type;
654 NETSTRUCT_UINT(type);
660 void setTo(SchedulerMessageType msgType) {
665 unsigned int getType() {
670 static unsigned msgSize() {
719 CP_THREAD_FN(navigator_thread);
720 CP_NEW_FN(new_Navigator);
721 CP_DEL_FN(del_Navigator);
722 CP_STOP_FN(stop_Navigator);
734 } NavigatorMessageType;
751 NavigatorMessageType type;
754 char catalog[CP_FILENAME_MAX+1];
755 char scan_catalog[CP_FILENAME_MAX+1];
756 char ut1utc[CP_FILENAME_MAX+1];
770 double latitude,
double altitude);
784 CP_THREAD_FN(grabber_thread);
785 CP_NEW_FN(new_Grabber);
786 CP_DEL_FN(del_Grabber);
787 CP_STOP_FN(stop_Grabber);
805 } GrabberMessageType;
813 GrabberMessageType type;
816 char dir[CP_FILENAME_MAX+1];
819 char dir[CP_FILENAME_MAX+1];
846 int grabber_save_image(
ControlProg *cp,
unsigned short *image,
847 unsigned int utc[2],
unsigned short channel,
signed actual[3]);
855 CP_THREAD_FN(term_thread);
858 CP_STOP_FN(stop_Term);
888 TermMessageType type;
891 char ip[CP_FILENAME_MAX+1];
895 char address[CP_FILENAME_MAX+1];
902 char msg[CP_FILENAME_MAX+1];
920 int pack_term_reg_page(
TermMessage *msg,
char* reg=NULL);
921 int pack_term_msg_page(
TermMessage *msg, std::string txt);
922 int pack_pager_ip(
TermMessage *msg, PagerDev dev,
char *ip);
923 int pack_pager_email(
TermMessage *msg,
bool add,
char *email);
924 int pack_pager_enable(
TermMessage *msg,
bool enable);
927 MONITOR_CONDITION_HANDLER(sendRegPage);
938 std::vector<std::string>* getPagerEmailList(
ControlProg *cp);
974 gcp::control::CcNetMsgId id;
985 gcp::control::NetCmdId type);
1012 int sendPeakOffsets(
ControlProg* cp,
unsigned ipeak,
unsigned jpeak,
1018 ControlProg* new_ControlProg(
bool createScheduler=
false,
1019 bool createNavigator=
false);
1021 void configureCmdTimeout(
ControlProg* cp,
unsigned int seconds);
1022 void configureCmdTimeout(
ControlProg* cp,
bool activate);
1023 void configureDataTimeout(
ControlProg* cp,
unsigned int seconds);
1024 void configureDataTimeout(
ControlProg* cp,
bool activate);
1025 void allowTimeOutPaging(
ControlProg* cp,
bool allow);
1030 int sendEnablePagerMsg(
ControlProg* cp,
bool enable);
1032 int sendAddPagerRegisterMsg(
ControlProg* cp, std::string regName,
1033 double min,
double max,
bool delta,
unsigned nFrame,
1034 bool outOfRange, std::string script);
1035 int sendRemPagerRegisterMsg(
ControlProg* cp, std::string regName);
1040 unsigned mask=gcp::control::PAGE_ENABLE,
1043 int sendPagerCondition(
ControlProg* cp,
unsigned mode,
1046 int sendCmdTimeoutConfiguration(
ControlProg* cp,
unsigned seconds);
1047 int sendCmdTimeoutConfiguration(
ControlProg* cp,
bool active);
1049 int sendDataTimeoutConfiguration(
ControlProg* cp,
unsigned seconds);
1050 int sendDataTimeoutConfiguration(
ControlProg* cp,
bool active);
1054 LOG_DISPATCHER(lprintf_to_logger);
Definition: archiver.h:58
Definition: genericcontrol.h:605
NetDat()
Definition: NetDat.cc:15
Definition: genericcontrol.h:643
Definition: genericcontrol.h:540
Definition: genericcontrol.c:708
void setTo(unsigned id)
Definition: NetUnion.cc:184
Definition: genericcontrol.h:531
Definition: genericcontrol.h:585
Definition: NetStruct.h:21
Definition: control.h:230
Definition: genericscheduler.c:69
Definition: genericcontrol.h:500
Definition: genericcontrol.h:394
Definition: genericcontrol.h:520
Definition: NewRtcNetMsg.h:30
Definition: genericcontrol.h:739
Definition: navigator.c:82
Definition: genericcontrol.h:886
void addMember(unsigned id, NetDat *member=0, bool alloc=false)
Definition: NetUnion.cc:117
virtual void addMember(NetDat *netDat, bool alloc=false)
Definition: NetStruct.cc:93
unsigned getType()
Definition: NetUnion.cc:314
Definition: genericcontrol.h:973
Definition: rtcnetcoms.h:2462
Definition: genericcontrol.h:511
Definition: genericcontrol.h:549
Definition: genericcontrol.h:750
Definition: genericcontrol.h:812
Definition: genericcontrol.h:267
Definition: genericcontrol.h:177
Definition: genericcontrol.h:576
Definition: genericcontrol.h:558
Definition: genericcontrol.h:567
Definition: genericcontrol.h:140
Definition: terminal.c:50
Definition: NetUnion.h:23
Definition: genericcontrol.h:594
Definition: arraymap.h:177
unsigned maxSize()
Definition: NetDat.cc:87