From 99bc79d44e029cc9b86d3bd3289e9901f0e3f60b Mon Sep 17 00:00:00 2001 From: Eddy Date: Wed, 19 Mar 2014 00:00:06 +0400 Subject: [PATCH] copy --- daemon.c | 140 +++++ jsonbta/Makefile | 16 + jsonbta/bta_json.c | 211 +++++++ jsonbta/bta_json.h | 92 +++ jsonbta/bta_print.c | 380 ++++++++++++ jsonbta/bta_shdata.h | 1159 ++++++++++++++++++++++++++++++++++++ jsonbta/client.c | 61 ++ jsonbta/client_streaming.c | 337 +++++++++++ jsonbta/makefile_from_tb | 16 + jsonbta/manual.pdf | Bin 0 -> 242917 bytes jsonbta/manual.tex | 268 +++++++++ 11 files changed, 2680 insertions(+) create mode 100644 daemon.c create mode 100644 jsonbta/Makefile create mode 100644 jsonbta/bta_json.c create mode 100644 jsonbta/bta_json.h create mode 100644 jsonbta/bta_print.c create mode 100644 jsonbta/bta_shdata.h create mode 100644 jsonbta/client.c create mode 100644 jsonbta/client_streaming.c create mode 100644 jsonbta/makefile_from_tb create mode 100644 jsonbta/manual.pdf create mode 100644 jsonbta/manual.tex diff --git a/daemon.c b/daemon.c new file mode 100644 index 0000000..d21209e --- /dev/null +++ b/daemon.c @@ -0,0 +1,140 @@ +/* + * daemon.c - functions for running in background like a daemon + * + * Copyright 2013 Edward V. Emelianoff + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#define PROC_BASE "/proc" + +#include // printf, fopen, ... +#include // getpid +#include // perror +#include // opendir +#include // opendir +#include // stat +#include // fcntl +#include // exit +#include // memset + +/** + * read process name from /proc/PID/cmdline + * @param pid - PID of interesting process + * @return filename or NULL if not found + * don't use this function twice for different names without copying + * its returning by strdup, because `name` contains in static array + */ +char *readname(pid_t pid){ + static char name[256]; + char *pp = name, byte, path[256]; + FILE *file; + int cntr = 0; + size_t sz; + snprintf (path, 255, PROC_BASE "/%d/cmdline", pid); + file = fopen(path, "r"); + if(!file) return NULL; // there's no such file + do{ // read basename + sz = fread(&byte, 1, 1, file); + if(sz != 1) break; + if(byte != '/') *pp++ = byte; + else{ + pp = name; + cntr = 0; + } + }while(byte && cntr++ < 255); + name[cntr] = 0; + fclose(file); + return name; +} + +void iffound_default(pid_t pid){ + fprintf(stderr, "\nFound running process (pid=%d), exit.\n", pid); + exit(0); +} + +/** + * check wether there is a same running process + * exit if there is a running process or error + * Checking have 3 steps: + * 1) lock executable file + * 2) check pidfile (if you run a copy?) + * 3) check /proc for executables with the same name (no/wrong pidfile) + * @param argv - argument of main() or NULL for non-locking, call this function before getopt() + * @param pidfilename - name of pidfile or NULL if none + * @param iffound - action to run if file found or NULL for exit(0) + */ +void check4running(char **argv, char *pidfilename, void (*iffound)(pid_t pid)){ + DIR *dir; + FILE *pidfile, *fself; + struct dirent *de; + struct stat s_buf; + pid_t pid = 0, self; + struct flock fl; + char *name, *myname; + if(!iffound) iffound = iffound_default; + if(argv){ // block self + fself = fopen(argv[0], "r"); // open self binary to lock + memset(&fl, 0, sizeof(struct flock)); + fl.l_type = F_WRLCK; + if(fcntl(fileno(fself), F_GETLK, &fl) == -1){ // check locking + perror("fcntl"); + exit(1); + } + if(fl.l_type != F_UNLCK){ // file is locking - exit + printf("Found locker, PID = %d!\n", fl.l_pid); + exit(1); + } + fl.l_type = F_RDLCK; + if(fcntl(fileno(fself), F_SETLKW, &fl) == -1){ + perror("fcntl"); + exit(1); + } + } + self = getpid(); // get self PID + if(!(dir = opendir(PROC_BASE))){ // open /proc directory + perror(PROC_BASE); + exit(1); + } + if(!(name = readname(self))){ // error reading self name + perror("Can't read self name"); + exit(1); + } + myname = strdup(name); + if(pidfilename && stat(pidfilename, &s_buf) == 0){ // pidfile exists + pidfile = fopen(pidfilename, "r"); + if(pidfile){ + fscanf(pidfile, "%d", &pid); // read PID of (possibly) running process + fclose(pidfile); + if((name = readname(pid)) && strncmp(name, myname, 255) == 0) + iffound(pid); + } + } + // There is no pidfile or it consists a wrong record + while((de = readdir(dir))){ // scan /proc + if(!(pid = (pid_t)atoi(de->d_name)) || pid == self) // pass non-PID files and self + continue; + if((name = readname(pid)) && strncmp(name, myname, 255) == 0) + iffound(pid); + } + closedir(dir); + if(pidfilename){ + pidfile = fopen(pidfilename, "w"); + fprintf(pidfile, "%d\n", self); // write self PID to pidfile + fclose(pidfile); + } + free(myname); +} diff --git a/jsonbta/Makefile b/jsonbta/Makefile new file mode 100644 index 0000000..2fb1875 --- /dev/null +++ b/jsonbta/Makefile @@ -0,0 +1,16 @@ +LOADLIBES = -lm -lcrypt +SRCS = bta_json.c bta_print.c ../daemon.c +CC = gcc +DEFINES = +CXX = gcc +CPPFLAGS = -Wall -Werror $(DEFINES) +OBJS = $(SRCS:.c=.o) +all : bta_json client_streaming +$(OBJS): bta_json.h bta_shdata.h +bta_json : $(OBJS) + $(CC) $(CPPFLAGS) $(OBJS) $(LOADLIBES) -o bta_json +client_streaming: client_streaming.o + $(CC) $(CPPFLAGS) -lm -ljson client_streaming.o -o client_streaming +clean: + /bin/rm -f *.o *~ + diff --git a/jsonbta/bta_json.c b/jsonbta/bta_json.c new file mode 100644 index 0000000..4cb1482 --- /dev/null +++ b/jsonbta/bta_json.c @@ -0,0 +1,211 @@ +/* + * bta_json.c - create socket and reply bta data + * + * Copyright 2013 Edward V. Emelianoff + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include +#include "bta_json.h" + +// wait for child to avoid zombies +static void wait_for_child(int sig){ + pid_t child; + while((child = waitpid(-1, NULL, WNOHANG)) > 0); +} + +// search a first word after needle without spaces +char* stringscan(char *str, char *needle){ + char *a, *e; + char *end = str + strlen(str); + a = strstr(str, needle); + if(!a) return NULL; + a += strlen(needle); + while (a < end && (*a == ' ' || *a == '\r' || *a == '\t' || *a == '\r')) a++; + if(a >= end) return NULL; + e = strchr(a, ' '); + if(e) *e = 0; + return a; +} + +/** + * Parce data received from client + * In case of http request we send all avaiable data + * In case of request from client socket, parce it + * Socket's request have structure like "par1par2..." + * where "pars" are names of bta_pars fields + * is delimeter: one of symbols " &\t\n" + * @param buf - incoming data + * @param L - length of buf + * @param par - returned parameters structure + */ +void parce_incoming_buf(char *buf, size_t L, bta_pars *par){ + char *tok, *got; + memset(par, 0, sizeof(bta_pars)); + DBG("got data: %s", buf); + // http request - send all if get == "bta_par" + // if get == "bta_par?a&b&c...", change buf to pars + if((got = stringscan(buf, "GET"))){ + size_t LR = strlen(RESOURCE); + if(strcmp(got, RESOURCE) == 0){ + par->ALL = true; + return; + }else if(strncmp(got, RESOURCE, LR) == 0) buf = &got[LR+1]; + else exit(-1); // wrong request + } + // request from socket -> check all parameters + tok = strtok(buf, " &\t\n"); + if(!tok) return; + do{ + #define checkpar(val) if(strcasecmp(tok, val) == 0){par->val = true; continue;} + checkpar(vel); + checkpar(diff); + checkpar(corr); + checkpar(mtime); + checkpar(meteo); + checkpar(target); + checkpar(p2mode); + checkpar(eqcoor); + checkpar(telmode); + checkpar(sidtime); + checkpar(horcoor); + checkpar(valsens); + checkpar(telfocus); + #undef checkpar + }while((tok = strtok(NULL, " &\t\n"))); +} + +void handle(int newsock){ + size_t buflen = 4095; + char buffer[buflen + 1]; + bta_pars par; + do{ + ssize_t readed = recv(newsock, buffer, buflen, 0); + if(readed < 1) break; // client closed or error + parce_incoming_buf(buffer, readed, &par); + #ifdef EBUG + #define checkpar(val) if(par.val){ fprintf(stderr, "par: %s\n", val); } + if(par.ALL){ fprintf(stderr, "par: ALL\n"); } + checkpar(vel); + checkpar(diff); + checkpar(corr); + checkpar(mtime); + checkpar(sidtime); + checkpar(meteo); + checkpar(target); + checkpar(p2mode); + checkpar(eqcoor); + checkpar(telmode); + checkpar(horcoor); + checkpar(valsens); + checkpar(telfocus); + #undef checkpar + #endif // EBUG + make_JSON(newsock, &par); + }while(!par.ALL); + close(newsock); +} + +int main(int argc, char **argv){ + int sock; + struct sigaction sa; + struct addrinfo hints, *res, *p; + int reuseaddr = 1; + check4running(argv, PIDFILE, NULL); + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_PASSIVE; + if(getaddrinfo(NULL, PORT, &hints, &res) != 0){ + perror("getaddrinfo"); + return 1; + } + struct sockaddr_in *ia = (struct sockaddr_in*)res->ai_addr; + char str[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, &(ia->sin_addr), str, INET_ADDRSTRLEN); + printf("port: %u, addr: %s\n", ntohs(ia->sin_port), str); + // loop through all the results and bind to the first we can + for(p = res; p != NULL; p = p->ai_next){ + if((sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1){ + perror("socket"); + continue; + } + if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &reuseaddr, sizeof(int)) == -1){ + perror("setsockopt"); + return -1; + } + if(bind(sock, p->ai_addr, p->ai_addrlen) == -1){ + close(sock); + perror("bind"); + continue; + } + break; // if we get here, we must have connected successfully + } + if(p == NULL){ + // looped off the end of the list with no successful bind + fprintf(stderr, "failed to bind socket\n"); + exit(2); + } + // Listen + if(listen(sock, BACKLOG) == -1) { + perror("listen"); + return 1; + } + freeaddrinfo(res); + // Set up the signal handler + sa.sa_handler = wait_for_child; + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + if (sigaction(SIGCHLD, &sa, NULL) == -1) { + perror("sigaction"); + return 1; + } + // OK, all done, now we can daemonize + #ifndef EBUG // daemonize only in release mode + if(daemon(1, 0)){ + perror("daemon()"); + exit(1); + } + #endif // EBUG + // Main loop + while(1){ + struct sockaddr_in their_addr; + socklen_t size = sizeof(struct sockaddr_in); + int newsock = accept(sock, (struct sockaddr*)&their_addr, &size); + int pid; + if(newsock == -1) return 0; + pid = fork(); + if(pid == 0){ + // Child process + close(sock); + handle(newsock); + return 0; + }else{ + // Parent process + if(pid == -1) return 1; + else{ + close(newsock); + DBG("Create child: %d", pid); + } + } + } + close(sock); + return 0; +} + + +// конец файла diff --git a/jsonbta/bta_json.h b/jsonbta/bta_json.h new file mode 100644 index 0000000..99b34f4 --- /dev/null +++ b/jsonbta/bta_json.h @@ -0,0 +1,92 @@ +/* + * bta_json.h + * + * Copyright 2013 Edward V. Emelianoff + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#pragma once +#ifndef __BTA_JSON_H__ +#define __BTA_JSON_H__ + +#include +#include +#include // exit +#include +#include +#include +#include +#include +#include +#include +#include + +#define RESOURCE "/bta_par" // resource to request in http +#define PORT "12345" // Port to listen on +#define BACKLOG 10 // Passed to listen() +#define PIDFILE "/tmp/btajson.pid" // PID file + +#ifdef EBUG // debug mode + #define DBG(...) do{fprintf(stderr, __VA_ARGS__); fprintf(stderr,"\n");}while(0) +#else + #define DBG(...) +#endif + +typedef struct{ + bool ALL; + bool corr; + bool diff; + bool eqcoor; + bool horcoor; + bool meteo; + bool mtime; + bool p2mode; + bool sidtime; + bool target; + bool telfocus; + bool telmode; + bool valsens; + bool vel; +} bta_pars; + +// named parameters +#ifndef BTA_PRINT_C + #define defpar(val) const char* val = #val +#else + #define defpar(val) extern const char* val +#endif +defpar(mtime); +defpar(sidtime); +defpar(telmode); +defpar(telfocus); +defpar(target); +defpar(p2mode); +defpar(eqcoor); +defpar(horcoor); +defpar(valsens); +defpar(diff); +defpar(vel); +defpar(corr); +defpar(meteo); +#undef defpar + +void make_JSON(int sock, bta_pars *par); // bta_print.c +void check4running(char **argv, char *pidfilename, void (*iffound)(pid_t pid)); // daemon.h + +#endif // __BTA_JSON_H__ + +// конец файла diff --git a/jsonbta/bta_print.c b/jsonbta/bta_print.c new file mode 100644 index 0000000..5920b16 --- /dev/null +++ b/jsonbta/bta_print.c @@ -0,0 +1,380 @@ +/* + * bta_print.c + * + * Copyright Vladimir S. Shergin + * + * some changes (2013) Edward V. Emelianoff + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bta_shdata.h" +#define BTA_PRINT_C +#include "bta_json.h" + +#define BUFSZ 255 +static char buf[BUFSZ+1]; + +char *double_asc(double d, char *fmt){ + if(!fmt) snprintf(buf, BUFSZ, "%.6f", d); + else snprintf(buf, BUFSZ, fmt, d); + return buf; +} + +char *time_asc(double t){ + int h, min; + double sec; + h = (int)(t/3600.); + min = (int)((t - (double)h*3600.)/60.); + sec = t - (double)h*3600. - (double)min*60.; + h %= 24; + if(sec>59.99) sec=59.99; + snprintf(buf, BUFSZ, "\"%02d:%02d:%05.2f\"", h,min,sec); + return buf; +} + +char *angle_asc(double a){ + char s; + int d, min; + double sec; + if (a >= 0.) + s = '+'; + else { + s = '-'; a = -a; + } + d = (int)(a/3600.); + min = (int)((a - (double)d*3600.)/60.); + sec = a - (double)d*3600. - (double)min*60.; + d %= 360; + if(sec>59.9) sec=59.9; + snprintf (buf, BUFSZ, "\"%c%02d:%02d:%04.1f\"", s,d,min,sec); + return buf; +} + +char *angle_fmt(double a, char *format){ + char s, *p; + int d, min, n; + double sec, msec; + char *newformat = calloc(strlen(format) + 3, 1); + assert(newformat); + sprintf(newformat, "\"%s\"", format); + if (a >= 0.) + s = '+'; + else { + s = '-'; a = -a; + } + d = (int)(a/3600.); + min = (int)((a - (double)d*3600.)/60.); + sec = a - (double)d*3600. - (double)min*60.; + d %= 360; + if ((p = strchr(format,'.')) == NULL) + msec=59.; + else if (*(p+2) == 'f' ) { + n = *(p+1) - '0'; + msec = 60. - pow(10.,(double)(-n)); + } else + msec=60.; + if(sec>msec) sec=msec; + if (strstr(format,"%c")) + snprintf(buf, BUFSZ, newformat, s,d,min,sec); + else + snprintf(buf, BUFSZ, newformat, d,min,sec); + free(newformat); + return buf; +} + +#ifndef PI +#define PI 3.14159265358979323846 /* pi */ +#endif + +#define R2D 180./PI /* rad. to degr. */ +#define D2R PI/180. /* degr. to rad. */ +#define R2S 648000./PI /* rad. to sec */ +#define S2R PI/648000. /* sec. to rad. */ +#define S360 1296000. /* sec in 360degr */ + +const double longitude=149189.175; /* SAO longitude 41 26 29.175 (-2:45:45.945)*/ +const double Fi=157152.7; /* SAO latitude 43 39 12.7 */ +const double cos_fi=0.7235272793; /* Cos of SAO latitude */ +const double sin_fi=0.6902957888; /* Sin --- "" ----- */ + +static void calc_AZ(double alpha, double delta, double stime, double *az, double *zd){ + double sin_t,cos_t, sin_d,cos_d, cos_z; + double t, d, z, a, x, y; + + t = (stime - alpha) * 15.; + if (t < 0.) + t += S360; // +360degr + t *= S2R; // -> rad + d = delta * S2R; + sin_t = sin(t); + cos_t = cos(t); + sin_d = sin(d); + cos_d = cos(d); + + cos_z = cos_fi * cos_d * cos_t + sin_fi * sin_d; + z = acos(cos_z); + + y = cos_d * sin_t; + x = cos_d * sin_fi * cos_t - cos_fi * sin_d; + a = atan2(y, x); + + *zd = z * R2S; + *az = a * R2S; +} + +static double calc_PA(double alpha, double delta, double stime){ + double sin_t,cos_t, sin_d,cos_d; + double t, d, p, sp, cp; + + t = (stime - alpha) * 15.; + if (t < 0.) + t += S360; // +360degr + t *= S2R; // -> rad + d = delta * S2R; + sin_t = sin(t); + cos_t = cos(t); + sin_d = sin(d); + cos_d = cos(d); + + sp = sin_t * cos_fi; + cp = sin_fi * cos_d - sin_d * cos_fi * cos_t; + p = atan2(sp, cp); + if (p < 0.0) + p += 2.0*PI; + + return(p * R2S); +} + +/* +static void calc_AD(double az, double zd, double stime, double *alpha, double *delta){ + double sin_d, sin_a,cos_a, sin_z,cos_z; + double t, d, z, a, p , x, y, s; + a = az * S2R; + z = zd * S2R; + sin_a = sin(a); + cos_a = cos(a); + sin_z = sin(z); + cos_z = cos(z); + + y = sin_z * sin_a; + x = cos_a * sin_fi * sin_z + cos_fi * cos_z; + t = atan2(y, x); + if (t < 0.0) + t += 2.0*PI; + + sin_d = sin_fi * cos_z - cos_fi * cos_a * sin_z; + d = asin(sin_d); + + *delta = d * R2S; + *alpha = (stime - t * R2S / 15.); + if (*alpha < 0.0) + *alpha += S360/15.; // +24h +}*/ + +void make_JSON(int sock, bta_pars *par){ + bool ALL = par->ALL; + // print next JSON pair; par, val - strings + void sendstr(char *str){ + size_t L = strlen(str); + if(send(sock, str, L, 0) != L) exit(-1); + } + int json_send(char *par, char *val){ + char buf[256]; + int L = snprintf(buf, 255, ",\n\"%s\": %s", par, val); + if(send(sock, buf, L, 0) != L) return -1; + return 0; + } + int json_send_s(char *par, char *val){ + char buf[256]; + int L = snprintf(buf, 255, ",\n\"%s\": \"%s\"", par, val); + if(send(sock, buf, L, 0) != L) return -1; + return 0; + } + #define JSON(p, val) do{if(json_send(p, val)) exit(-1);} while(0) + #define JSONSTR(p, val) do{if(json_send_s(p, val)) exit(-1);} while(0) + get_shm_block( &sdat, ClientSide); + char *str; + if(!check_shm_block(&sdat)) exit(-1); + // beginning of json object + sendstr("{\n\"ACS_BTA\": true"); + + // mean local time + if(ALL || par->mtime) + JSON("M_time", time_asc(M_time+DUT1)); + // Mean Sidereal Time + if(ALL || par->sidtime){ + #ifdef EE_time + JSON("JDate", double_asc(JDate, NULL)); + str = time_asc(S_time-EE_time); + #else + str = time_asc(S_time); + #endif + JSON("S_time", str); + } + // Telecope mode + if(ALL || par->telmode){ + if(Tel_Hardware == Hard_Off) str = "Off"; + else if(Tel_Mode != Automatic) str = "Manual"; + else{ + switch (Sys_Mode){ + default: + case SysStop : str = "Stopping"; break; + case SysWait : str = "Waiting"; break; + case SysPointAZ : + case SysPointAD : str = "Pointing"; break; + case SysTrkStop : + case SysTrkStart: + case SysTrkMove : + case SysTrkSeek : str = "Seeking"; break; + case SysTrkOk : str = "Tracking"; break; + case SysTrkCorr : str = "Correction";break; + case SysTest : str = "Testing"; break; + } + } + JSONSTR("Tel_Mode", str); + } + // Telescope focus + if(ALL || par->telfocus){ + switch (Tel_Focus){ + default: + case Prime : str = "Prime"; break; + case Nasmyth1 : str = "Nasmyth1"; break; + case Nasmyth2 : str = "Nasmyth2"; break; + } + JSONSTR("Tel_Focus", str); + JSON("ValFoc", double_asc(val_F, "%0.2f")); + } + // Telescope target + if(ALL || par->target){ + switch (Sys_Target) { + default: + case TagObject : str = "Object"; break; + case TagPosition : str = "A/Z-Pos."; break; + case TagNest : str = "Nest"; break; + case TagZenith : str = "Zenith"; break; + case TagHorizon : str = "Horizon"; break; + } + JSONSTR("Tel_Taget", str); + } + // Mode of P2 + if(ALL || par->p2mode){ + if(Tel_Hardware == Hard_On){ + switch (P2_State) { + default: + case P2_Off : str = "Stop"; break; + case P2_On : str = "Track"; break; + case P2_Plus : str = "Move+"; break; + case P2_Minus : str = "Move-"; break; + } + } else str = "Off"; + JSONSTR("P2_Mode", str); + } + // Equatorial coordinates + if(ALL || par->eqcoor){ + JSON("CurAlpha", time_asc(CurAlpha)); + JSON("CurDelta", angle_asc(CurDelta)); + JSON("SrcAlpha", time_asc(SrcAlpha)); + JSON("SrcDelta", angle_asc(SrcDelta)); + JSON("InpAlpha", time_asc(InpAlpha)); + JSON("InpDelta", angle_asc(InpDelta)); + JSON("TelAlpha", time_asc(val_Alp)); + JSON("TelDelta", angle_asc(val_Del)); + } + // Horizontal coordinates + if(ALL || par->horcoor){ + JSON("InpAzim", angle_fmt(InpAzim,"%c%03d:%02d:%04.1f")); + JSON("InpZenD", angle_fmt(InpZdist,"%02d:%02d:%04.1f")); + JSON("CurAzim", angle_fmt(tag_A,"%c%03d:%02d:%04.1f")); + JSON("CurZenD", angle_fmt(tag_Z,"%02d:%02d:%04.1f")); + JSON("CurPA", angle_fmt(tag_P,"%03d:%02d:%04.1f")); + JSON("SrcPA", angle_fmt(calc_PA(SrcAlpha,SrcDelta,S_time),"%03d:%02d:%04.1f")); + JSON("InpPA", angle_fmt(calc_PA(InpAlpha,InpDelta,S_time),"%03d:%02d:%04.1f")); + JSON("TelPA", angle_fmt(calc_PA(val_Alp, val_Del, S_time),"%03d:%02d:%04.1f")); + } + // Values from sensors + if(ALL || par->valsens){ + JSON("ValAzim", angle_fmt(val_A,"%c%03d:%02d:%04.1f")); + JSON("ValZenD", angle_fmt(val_Z,"%02d:%02d:%04.1f")); + JSON("ValP2", angle_fmt(val_P,"%03d:%02d:%04.1f")); + JSON("ValDome", angle_fmt(val_D,"%c%03d:%02d:%04.1f")); + } + // Differences + if(ALL || par->diff){ + JSON("DiffAzim", angle_fmt(Diff_A,"%c%03d:%02d:%04.1f")); + JSON("DiffZenD", angle_fmt(Diff_Z,"%c%02d:%02d:%04.1f")); + JSON("DiffP2", angle_fmt(Diff_P,"%c%03d:%02d:%04.1f")); + JSON("DiffDome", angle_fmt(val_A-val_D,"%c%03d:%02d:%04.1f")); + } + // Velocities + if(ALL || par->vel){ + JSON("VelAzim", angle_fmt(vel_A,"%c%02d:%02d:%04.1f")); + JSON("VelZenD", angle_fmt(vel_Z,"%c%02d:%02d:%04.1f")); + JSON("VelP2", angle_fmt(vel_P,"%c%02d:%02d:%04.1f")); + JSON("VelPA", angle_fmt(vel_objP,"%c%02d:%02d:%04.1f")); + JSON("VelDome", angle_fmt(vel_D,"%c%02d:%02d:%04.1f")); + } + // Correction + if(ALL || par->corr){ + double curA,curZ,srcA,srcZ; + double corAlp,corDel,corA,corZ; + if(Sys_Mode==SysTrkSeek||Sys_Mode==SysTrkOk||Sys_Mode==SysTrkCorr){ + corAlp = CurAlpha-SrcAlpha; + corDel = CurDelta-SrcDelta; + if(corAlp > 23*3600.) corAlp -= 24*3600.; + if(corAlp < -23*3600.) corAlp += 24*3600.; + calc_AZ(SrcAlpha, SrcDelta, S_time, &srcA, &srcZ); + calc_AZ(CurAlpha, CurDelta, S_time, &curA, &curZ); + corA=curA-srcA; + corZ=curZ-srcZ; + }else{ + corAlp = corDel = corA = corZ = 0.; + } + JSON("CorrAlpha", angle_fmt(corAlp,"%c%01d:%02d:%05.2f")); + JSON("CorrDelta", angle_fmt(corDel,"%c%01d:%02d:%04.1f")); + JSON("CorrAzim", angle_fmt(corA,"%c%01d:%02d:%04.1f")); + JSON("CorrZenD", angle_fmt(corZ,"%c%01d:%02d:%04.1f")); + } + // meteo + if(ALL || par->meteo){ + JSON("ValTind", double_asc(val_T2, "%05.1f")); + JSON("ValTmir", double_asc(val_T3, "%05.1f")); + JSON("ValPres", double_asc(val_B, "%05.1f")); + JSON("ValWind", double_asc(val_Wnd, "%04.1f")); + if(Wnd10_time>0.1 && Wnd10_time<=M_time) { + JSON("Blast10", double_asc((M_time-Wnd10_time)/60, "%.1f")); + JSON("Blast15", double_asc((M_time-Wnd15_time)/60, "%.1f")); + } + JSON("ValHumd", double_asc(val_Hmd, "%04.1f")); + if(Precip_time>0.1 && Precip_time<=M_time) + JSON("Precipt", double_asc((M_time-Precip_time)/60, "%.1f")); + } + // end of json onject + sendstr("\n}\n"); +} + + +// конец файла diff --git a/jsonbta/bta_shdata.h b/jsonbta/bta_shdata.h new file mode 100644 index 0000000..2aec738 --- /dev/null +++ b/jsonbta/bta_shdata.h @@ -0,0 +1,1159 @@ +#pragma once +#ifndef __BTA_SHDATA_H__ +#define __BTA_SHDATA_H__ + +#define _XOPEN_SOURCE 501 +/* Основные определения и функции поддержки межпрограммного интерфейса */ +/* Возможные внешние определения: */ +/* BTA_MODULE - при исп-и в доп. C-модулях (не в главн.программе) */ +/* SHM_OLD_SIZE - для генерации предыдущей весии структуры БТА-данных */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __GNUC_PREREQ(4,2) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-braces" +#pragma GCC diagnostic ignored "-Wsequence-point" +#pragma GCC diagnostic ignored "-Wpointer-to-int-cast" +#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" +#endif + +#define uint __uint32_t + +struct SHM_Block { /* описание блока разделяемой памяти */ + union { + char name[5]; /* ключ идентефикации сегмента памяти */ + key_t code; + } key; + int size; /* размер используемой части в байтах */ + int maxsize; /* размер при создании ("с запасом" для будущих версий) */ + int mode; /* режим доступа (rwxrwxrwx) */ + int atflag; /* режим подсоединения (SHM_RDONLY или 0) */ + void (*init)(); /* процедура инициализации */ + int (*check)(); /* процедура проверки */ + void (*close)(); /* процедура отсоединения */ + int side; /* тип подсоединения: Клиент/Сервер */ + int id; /* дескриптор подсоединения */ + unsigned char *addr; /* адрес подсоединения */ +}; + +struct CMD_Queue { /* описание очереди (канала) команд */ + union { + char name[5]; /* ключ идентефикации очереди */ + key_t code; + } key; + int mode; /* режим доступа (rwxrwxrwx) */ + int side; /* тип подсоединения: Клиент/Сервер (Sender/Receiver)*/ + int id; /* дескриптор подсоединения */ + uint acckey; /* ключ доступа (для передачи Клиент->Сервер) */ +}; + +#ifndef BTA_MODULE +/* канал команд главного операторского интерфейса (Level5)*/ +struct CMD_Queue mcmd = {{'M','c','m','d',0},0200,0,-1,0}; +/* канал передачи операторских (привелегированных) команд (Level4)*/ +struct CMD_Queue ocmd = {{'O','c','m','d',0},0200,0,-1,0}; +/* канал передачи пользовательских (непривелегированных) команд (Level2/3)*/ +struct CMD_Queue ucmd = {{'U','c','m','d',0},0200,0,-1,0}; +#else +extern struct CMD_Queue mcmd; +extern struct CMD_Queue ocmd; +extern struct CMD_Queue ucmd; +#endif + +static void send_cmd_noarg(int); +static void send_cmd_str(int, char *); +static void send_cmd_i1(int, int); +static void send_cmd_i2(int, int, int); +static void send_cmd_i3(int, int, int, int); +static void send_cmd_i4(int, int, int, int, int); +static void send_cmd_d1(int, double); +static void send_cmd_d2(int, double, double); +static void send_cmd_i1d1(int, int, double); +static void send_cmd_i2d1(int, int, int, double); +static void send_cmd_i3d1(int, int, int, int, double); + +/* список команд */ +/* имя код аргументы тип */ +#define StopTel 1 /* останов телескопа */ +#define StopTeleskope() send_cmd_noarg( 1 ) /* опер. */ +#define StartHS 2 /* старт привода наведения */ +#define StartHightSpeed() send_cmd_noarg( 2 ) /* опер/тст*/ +#define StartLS 3 /* старт привода ведения */ +#define StartLowSpeed() send_cmd_noarg( 3 ) /* опер/тст*/ +#define SetTmr 4 /* уст. Ch7_15 или SysTimer */ +#define SetTimerMode(T) send_cmd_i1 ( 4, (int)(T)) /* М.опер. */ +#define SetModMod 5 /* уст. режим моделирования */ +#define SetModelMode(M) send_cmd_i1 ( 5, (int)(M)) /* М.опер. */ +#define SetCodA 6 /* код скорости по A */ +#define SetPKN_A(iA,sA) send_cmd_i2 ( 6, (int)(iA),(int)(sA)) /* опер/тст*/ +#define SetCodZ 7 /* код скорости по Z */ +#define SetPKN_Z(iZ) send_cmd_i1 ( 7, (int)(iZ)) /* опер/тст*/ +#define SetCodP 8 /* код скорости по P */ +#define SetPKN_P(iP) send_cmd_i1 ( 8, (int)(iP)) /* опер/тст*/ +#define SetVA 9 /* уст. скорость по A */ +#define SetSpeedA(vA) send_cmd_d1 ( 9, (double)(vA)) /* опер/тст*/ +#define SetVZ 10 /* уст. скорость по Z */ +#define SetSpeedZ(vZ) send_cmd_d1 (10, (double)(vZ)) /* опер/тст*/ +#define SetVP 11 /* уст. скорость по P */ +#define SetSpeedP(vP) send_cmd_d1 (11, (double)(vP)) /* опер/тст*/ +#define SetAD 12 /* зап.новые координаты R.A.и Decl */ +#define SetRADec(Alp,Del) send_cmd_d2 (12, (double)(Alp),(double)(Del))/* польз.*/ +#define SetAZ 13 /* зап.координаты азимут и зен.расст.*/ +#define SetAzimZ(A,Z) send_cmd_d2 (13, (double)(A),(double)(Z))/* польз.*/ +#define GoToAD 14 /* старт наведения на объект (по R.A.и Decl)*/ +#define GoToObject() send_cmd_noarg(14 ) /* опер. */ +#define MoveToAD 15 /* переезд на объект (по R.A.и Decl)*/ +#define MoveToObject() send_cmd_noarg(15 ) /* польз.*/ +#define GoToAZ 16 /* наведение по положению (по A Z)*/ +#define GoToAzimZ() send_cmd_noarg(16 ) /* опер. */ +#define WriteAZ 17 /* установка A и Z для FullModel*/ +#define WriteModelAZ() send_cmd_noarg(17 ) /* опер. */ +#define SetModP 18 /* уст. режим использования P2 */ +#define SetPMode(pmod) send_cmd_i1 (18, (int)(pmod)) /* польз.*/ +#define P2Move 19 /* вкл./выкл. (+-1,0) движение P2 */ +#define MoveP2(dir) send_cmd_i1 (19, (int)(dir)) /* польз.*/ +#define FocMove 20 /* вкл./выкл. (+-2,+-1,0) движение фокуса */ +#define MoveFocus(speed,time) send_cmd_i1d1(20,(int)(speed),(double)(time)) /* польз.*/ +#define UsePCorr 21 /* режим учета поправок положения (СКН) */ +#define SwitchPosCorr(pc_flag) send_cmd_i1 (21, (int)(pc_flag)) /* опер. */ +#define SetTrkFlags 22 /* уст. флагов режима слежения */ +#define SetTrkOkMode(trk_flags) send_cmd_i1 (22, (int)(trk_flags)) /* опер.*/ +#define SetTFoc 23 /* уст.фокуса: 0-ПФ, 1-Н1, 2-Н2 */ +#define SetTelFocus(N) send_cmd_i1 ( 23, (int)(N)) /* опер. */ +#define SetVAD 24 /* уст.ск.собсв.дв-я объекта по R.A.и Decl */ +#define SetVelAD(VAlp,VDel) send_cmd_d2 (24, (double)(VAlp),(double)(VDel))/* опер.*/ +#define SetRevA 25 /* уст. режим "обхода" азимута */ +#define SetAzRevers(amod) send_cmd_i1 (25, (int)(amod)) /* польз.*/ +#define SetVP2 26 /* уст.скор..дв-я P2 (для ДБУ) */ +#define SetVelP2(vP2) send_cmd_d1 (26, (double)(vP2)) /* польз.*/ +#define SetTarg 27 /* уст. цели наведения */ +#define SetSysTarg(Targ) send_cmd_i1 (27, (int)(Targ)) /* опер.*/ +#define SendMsg 28 /* размещение сообщения (всем клиентам и в протокол) */ +#define SendMessage(Mesg) send_cmd_str (28, (char *)(Mesg)) /* польз.*/ +#define CorrAD 29 /* коррекция координат R.A.и Decl */ +#define DoADcorr(dAlp,dDel) send_cmd_d2 (29, (double)(dAlp),(double)(dDel))/* польз.*/ +#define CorrAZ 30 /* коррекция координат A и Z*/ +#define DoAZcorr(dA,dZ) send_cmd_d2 (30, (double)(dA),(double)(dZ))/* польз.*/ +#define SetVCAZ 31 /* уст.скор.коррекции по A и Z*/ +#define SetVCorr(vA,vZ) send_cmd_d2 (31, (double)(vA),(double)(vZ))/* польз.*/ +#define P2MoveTo 32 /* переезд P2 по времени */ +#define MoveP2To(vP2,time) send_cmd_d2 (32, (double)(vP2),(double)(time))/* польз.*/ +#define GoToTD 33 /* старт наведения на стационар (по t и Decl)*/ +#define GoToSat() send_cmd_noarg (33 ) /* опер..*/ +#define MoveToTD 34 /* переезд на стационар (по t и Decl)*/ +#define MoveToSat() send_cmd_noarg (34 ) /* польз.*/ +#define NullCom 35 /* пустая команда (для синхронизаций?) */ +#define SyncCom() send_cmd_noarg (35 ) /* опер. */ +#define StartTel 36 /* кнопка "Пуск" телескопа */ +#define StartTeleskope() send_cmd_noarg(36 ) /* опер. */ +#define SetTMod 37 /* уст. режимы работы телескопа */ +#define SetTelMode(M) send_cmd_i1 ( 37, (int)(M)) /* М.опер. */ +#define TelOn 38 /* кнопка Вкл. Масло, ЭМУ и т.д.*/ +#define TeleskopeOn() send_cmd_noarg(38 ) /* М.опер. */ +#define SetModD 39 /* уст. режим использования купола */ +#define SetDomeMode(dmod) send_cmd_i1 (39, (int)(dmod)) /* М.опер.*/ +#define DomeMove 40 /* вкл./выкл. (+-1+-2,+-3,0) движение купола */ +#define MoveDome(speed,time) send_cmd_i1d1(40,(int)(speed),(double)(time)) /* опер.*/ +#define SetPass 41 /* уст. пароль уровня доступа */ +#define SetPasswd(LPass) send_cmd_str (41, (char *)(LPass)) /* М.опер.*/ +#define SetLevC 42 /* уст. код уровня доступа */ +#define SetLevCode(Nlev,Cod) send_cmd_i2(42, (int)(Nlev),(int)(Cod)) /* М.опер.*/ +#define SetLevK 43 /* уст. ключ уровня доступа */ +#define SetLevKey(Nlev,Key) send_cmd_i2(43, (int)(Nlev),(int)(Key)) /* М.опер.*/ +#define SetNet 44 /* уст. маску и адрес подсети */ +#define SetNetAcc(Mask,Addr) send_cmd_i2(44, (int)(Mask),(int)(Addr)) /* М.опер.*/ +#define SetMet 45 /* ввод метео данных */ +#define SetMeteo(m_id,m_val) send_cmd_i1d1(45,(int)(m_id),(double)(m_val)) /* опер.*/ +#define TurnMetOff 46 /* отмена исп. метео данных */ +#define TurnMeteoOff(m_id) send_cmd_i1 (46, (int)(m_id)) /* опер.*/ +#define SetDUT1 47 /* уст.попр.времени(IERS DUT1=UT1-UTC) */ +#define SetDtime(dT) send_cmd_d1 (47, (double)(dT)) /* М.опер.*/ +#define SetPM 48 /* уст.полож.полюса(IERS polar motion)*/ +#define SetPolMot(Xp,Yp) send_cmd_d2 (48, (double)(Xp),(double)(Yp)) /* М.опер.*/ +#define GetSEW 49 /* прочитать SEW параметр */ +#define GetSEWparam(Ndrv,Indx,Cnt) send_cmd_i3(49,(int)(Ndrv),(int)(Indx),(int)(Cnt)) /* M.опер.*/ +#define PutSEW 50 /* записать SEW параметр */ +#define PutSEWparam(Ndrv,Indx,Key,Val) send_cmd_i4(50,(int)(Ndrv),(int)(Indx),(int)(Key),(int)(Val)) /* M.опер.*/ +#define SetLocks 51 /* установка блокировок управления узлами */ +#define SetLockFlags(f) send_cmd_i1 (SetLocks, (int)(f)) /* M.опер.*/ +#define ClearLocks 52 /* отмена блокировок управления узлами */ +#define ClearLockFlags(f) send_cmd_i1 (ClearLocks, (int)(f)) /* M.опер.*/ +#define SetRKbits 53 /* Установка доп.битов PEP-RK */ +#define AddRKbits(f) send_cmd_i1 (SetRKbits, (int)(f)) /* M.опер.*/ +#define ClrRKbits 54 /* Очистка доп.битов PEP-RK */ +#define ClearRKbits(f) send_cmd_i1 (ClrRKbits, (int)(f)) /* M.опер.*/ +#define SetSEWnd 55 /* уст.номер SEW-движка купола (для индикации)*/ +#define SetDomeDrive(ND) send_cmd_i1 (SetSEWnd, (int)(ND)) /* М.опер.*/ +#define SEWsDome 56 /* Вкл./Выкл. SEW-движков купола */ +#define DomeSEW(OnOff) send_cmd_i1 (SEWsDome, (int)(OnOff)) /* М.опер.*/ + + +/* структура данных алгоритма управления (распределение "глобальной области") */ +#define BTA_Data_Ver 2 +#pragma pack(4) +//struct __attribute__((packed)) BTA_Data { +struct BTA_Data { + int magic; /* код опознания структуры */ + int version; /* номер версии структуры = BTA_Data_Ver*/ + int size; /* размер структуры = sizeof(struct BTA_Data)*/ + int pid; +#define ServPID (sdt->pid) /*номер процесса гл.упр.программы */ + + /* режимы работы */ + int model; +#define UseModel (sdt->model) /* вариант использования моделирования */ +#define NoModel 0 /* отключено */ +#define CheckModel 1 /* привода контролируются по модели */ +#define DriveModel 2 /* моделирование приводов и "слепое" управление без реальных датчиков */ +#define FullModel 3 /* полное моделирование без телескопа */ + int timer; +#define ClockType (sdt->timer) /* какие часы используются */ +#define Ch7_15 0 /* Внутр.часы упр.программы с синхронизацией по Ч7-15 */ +#define SysTimer 1 /* Таймер системы (неизвестно синхронизированный или нет) */ +#define ExtSynchro 2 /* Работает синхронизация таймера системы внешней программой (bta_time или xntpd)*/ + int system; +#define Sys_Mode (sdt->system) /* режим работы системы */ +#define SysStop 0 /* Останов */ +#define SysWait 1 /* Ожидание старта (наведения) */ +#define SysPointAZ 2 /* Наведение по положению (по A Z)*/ +#define SysPointAD 3 /* Наведение на объект (по R.A.и Decl)*/ +#define SysTrkStop 4 /* Ведение: ожидание старта */ +#define SysTrkStart 5 /* Ведение: разгон до номин.скорости (объекта)*/ +#define SysTrkMove 6 /* Ведение: переезд на объект */ +#define SysTrkSeek 7 /* Ведение: слежение за объектом */ +#define SysTrkOk 8 /* Ведение: рассогласования в допуске */ +#define SysTrkCorr 9 /* Ведение: коррекция положения */ +#define SysTest 10 /* Тестирование */ + int sys_target; +#define Sys_Target (sdt->sys_target) /* цель наведения */ +#define TagPosition 0 /* Положение A/Z */ +#define TagObject 1 /* Объект Alpha/Delta */ +#define TagNest 2 /* Положение "Гнездо" */ +#define TagZenith 3 /* Положение "Зенит" */ +#define TagHorizon 4 /* Положение "Горизонт" */ +#define TagStatObj 5 /* "Стационар" t/Delta */ + + int tel_focus; +#define Tel_Focus (sdt->tel_focus) /* тип фокуса телескопа: 0-ПФ, 1-Н1, 2-Н2 */ +#define Prime 0 +#define Nasmyth1 1 +#define Nasmyth2 2 + double pc_coeff[8]; +#define PosCor_Coeff (sdt->pc_coeff) /* коэф-ты СКН для тек.фокуса */ + + /* состояние телескопа */ +#define Stopping 0 /* Останов */ +#define Pointing 1 /* Наведение */ +#define Tracking 2 /* Ведение */ + int tel_state; +#define Tel_State (sdt->tel_state) /* реально отрабатываемое */ + int req_state; +#define Req_State (sdt->req_state) /* затребованное программой */ + int tel_hard_state; +#define Tel_Hardware (sdt->tel_hard_state) /* состояние УСО */ +#define Hard_Off 0 /* питание выключено */ +#define Hard_On 1 /* включено */ + + /* режимы работы телескопа */ + int tel_mode; +#define Tel_Mode (sdt->tel_mode) +#define Automatic 0 /* "Автомат" - нормальный режим*/ +#define Manual 1 /* "П/авт.упр." - пультовой режим и в нем:*/ +#define ZenHor 2 /* "Зенит-Горизонт" - работа при Z<5 и Z>80*/ +#define A_Move 4 /* ручное движение A */ +#define Z_Move 8 /* --- "" --- Z */ +#define Balance 0x10 /* балансировка трубы */ + + /* вкл./выкл. режим "обхода" азимута */ + int az_mode; +#define Az_Mode (sdt->az_mode) +#define Rev_Off 0 /* нормальное наведение на ближайшее положение по азимуту */ +#define Rev_On 1 /* наведение с перегоном на 360град. */ + + /* работа P2 */ + int p2_state; +#define P2_State (sdt->p2_state) /* реальное состояние привода P2 */ +#define P2_Off 0 /* Стоит */ +#define P2_On 1 /* Ведет */ +#define P2_Plus 2 /* быстро едет в + */ +#define P2_Minus -2 /* быстро едет в - */ + int p2_req_mode; +#define P2_Mode (sdt->p2_req_mode) /* режим использования P2 (пока: Вкл/Выкл)*/ + + /* состояние привода фокуса */ + int focus_state; +#define Foc_State (sdt->focus_state) +#define Foc_Off 0 /* Стоит */ +#define Foc_Lplus 1 /* медл. едет в + */ +#define Foc_Lminus -1 /* медл. едет в - */ +#define Foc_Hplus 2 /* быстро едет в + */ +#define Foc_Hminus -2 /* быстро едет в - */ + + /* состояние привода купола */ + int dome_state; +#define Dome_State (sdt->dome_state) +#define D_On 7 /* Автоматическое согласование с телескопом */ +#define D_Off 0 /* Стоит */ +#define D_Lplus 1 /* медл. едет в + */ +#define D_Lminus -1 /* медл. едет в - */ +#define D_Mplus 2 /* сред.скор. в + */ +#define D_Mminus -2 /* сред.скор. в - */ +#define D_Hplus 3 /* быстро едет в + */ +#define D_Hminus -3 /* быстро едет в - */ + +/* учет поправок положения (СКН) */ + int pcor_mode; +#define Pos_Corr (sdt->pcor_mode) /* коррекция положения объекта по A/Z: Вкл/Выкл*/ +#define PC_Off 0 /* Выкл. */ +#define PC_On 1 /* Вкл. */ + +/* флаги вкл/выкл. вариантов режима слежения */ + int trkok_mode; +#define TrkOk_Mode (sdt->trkok_mode) +#define UseDiffVel 1 /* определение&учет поправок реальной скорости приводов (~изодором)*/ +#define UseDiffAZ 2 /* слежение по рассогласованию (иначе уст.рассчетн.скоростей) */ +#define UseDFlt 4 /* вкл. цифрового фильтра рассогласований */ + + /* введенные значения */ + double i_alpha, i_delta; +#define InpAlpha (sdt->i_alpha) /* введенная координата R.A. (sec) */ +#define InpDelta (sdt->i_delta) /* -- " -- Decl. (") */ + double s_alpha, s_delta; +#define SrcAlpha (sdt->s_alpha) /* исходная координата R.A. (sec) */ +#define SrcDelta (sdt->s_delta) /* -- " -- Decl. (") */ + double v_alpha, v_delta; +#define VelAlpha (sdt->v_alpha) /* ск.собсв.дв-я объекта по R.A. (sec/сек) */ +#define VelDelta (sdt->v_delta) /* -- " -- Decl. ("/сек) */ + double i_azim, i_zdist; +#define InpAzim (sdt->i_azim) /* для наведения по азимуту (") */ +#define InpZdist (sdt->i_zdist) /* -- " -- зен.расст. (") */ + + /* рассчетные значения */ + double c_alpha, c_delta; +#define CurAlpha (sdt->c_alpha) /* текущая координата R.A. (sec) */ +#define CurDelta (sdt->c_delta) /* -- " -- Decl. (") */ + double tag_a, tag_z, tag_p; +#define tag_A (sdt->tag_a) /* текущий A (") объекта */ +#define tag_Z (sdt->tag_z) /* - " - Z (") - " - */ +#define tag_P (sdt->tag_p) /* - " - P (") - " - */ + double pcor_a, pcor_z, refr_z; +#define pos_cor_A (sdt->pcor_a) /* поправка положения объекта по A (") */ +#define pos_cor_Z (sdt->pcor_z) /* - " - - " - по Z (") */ +#define refract_Z (sdt->refr_z) /* поправка за рефракцию для объекта (") */ + double tcor_a, tcor_z, tref_z; +#define tel_cor_A (sdt->tcor_a) /* поправка обр.пересчета положения телескопа по A (") */ +#define tel_cor_Z (sdt->tcor_z) /* - " - - " - - " - по Z (") */ +#define tel_ref_Z (sdt->tref_z) /* поправка обр.пересчета за рефракцию (") */ + double diff_a, diff_z, diff_p; +#define Diff_A (sdt->diff_a) /* рассогл-е(осталось ехать) по A (") */ +#define Diff_Z (sdt->diff_z) /* - " - - " - Z (") */ +#define Diff_P (sdt->diff_p) /* - " - - " - P (") */ + double vbasea,vbasez,vbasep; +#define vel_objA (sdt->vbasea) /* базовая скорость объекта по A ("/сек) */ +#define vel_objZ (sdt->vbasez) /* - " - - " - Z - " - */ +#define vel_objP (sdt->vbasep) /* - " - - " - P - " - */ + double diffva,diffvz,diffvp; +#define diff_vA (sdt->diffva) /* поправка реальной скорости привода по азимуту */ +#define diff_vZ (sdt->diffvz) /* -- "" -- -- "" -- по Z */ +#define diff_vP (sdt->diffvp) /* -- "" -- -- "" -- по P */ + double speeda,speedz,speedp; +#define speedA (sdt->speeda) /* скорость по A ("/сек) для управления приводом */ +#define speedZ (sdt->speedz) /* - " - Z - " - */ +#define speedP (sdt->speedp) /* - " - P - " - */ + double m_time_precip; +#define Precip_time (sdt->m_time_precip)/* момент времени появления осадков (precipitations)*/ + unsigned char reserve[16]; +#define Reserve (sdt->reserve) /* свободное место */ + double rspeeda, rspeedz, rspeedp; +#define req_speedA (sdt->rspeeda) /* скорость ("/сек) выданная на привод A */ +#define req_speedZ (sdt->rspeedz) /* - " - Z */ +#define req_speedP (sdt->rspeedp) /* - " - P */ + double simvela, simvelz, simvelp, simvelf, simveld; +#define mod_vel_A (sdt->simvela) /* скорость по A ("/сек) модельная */ +#define mod_vel_Z (sdt->simvelz) /* - " - Z - " - */ +#define mod_vel_P (sdt->simvelp) /* - " - P - " - */ +#define mod_vel_F (sdt->simvelf) /* - " - F - " - */ +#define mod_vel_D (sdt->simvelf) /* - " - D - " - */ + + + /* результаты измерения датчиков и рассчитанные по ним значения */ + uint kost; +#define code_KOST (sdt->kost) /* сост. телескопа и ручной коррекции */ + /* 0x8000 - азимут положительный */ + /* 0x4000 - отработка вкл. */ + /* 0x2000 - режим ведения */ + /* 0x1000 - отработка P2 вкл.*/ + /* 0x01F0 - ск.корр. 0.2 0.4 1.0 2.0 5.0("/сек) */ + /* 0x000F - напр.корр. +Z -Z +A -A */ + double m_time, s_time, l_time; +#define M_time (sdt->m_time) /* текущее московское время (теперь UTC!)*/ +#define S_time (sdt->s_time) /* текущее звездное время */ +#define L_time (sdt->l_time) /* время работы программы */ + uint ppndd_a, ppndd_z, ppndd_p, ppndd_b; +#define ppndd_A (sdt->ppndd_a) /* код датчика ППНДД (грубого отсчета) A */ +#define ppndd_Z (sdt->ppndd_z) /* - "" - Z */ +#define ppndd_P (sdt->ppndd_p) /* - "" - P */ +#define ppndd_B (sdt->ppndd_b) /* код датчика ППНДД давления */ + uint dup_a, dup_z, dup_p, dup_f, dup_d; +#define dup_A (sdt->dup_a) /* код Грея датчика ДУП (точного отсчета) A */ +#define dup_Z (sdt->dup_z) /* - "" - Z */ +#define dup_P (sdt->dup_p) /* - "" - P */ +#define dup_F (sdt->dup_f) /* код Грея датчика ДУП фокуса телескопа */ +#define dup_D (sdt->dup_d) /* код Грея датчика ДУП положения купола */ + uint low_a, low_z, low_p, low_f, low_d; +#define low_A (sdt->low_a) /* 14р-в дв.кода точного отсчета A */ +#define low_Z (sdt->low_z) /* - "" - Z */ +#define low_P (sdt->low_p) /* - "" - P */ +#define low_F (sdt->low_f) /* код отсчета фокуса телескопа */ +#define low_D (sdt->low_d) /* код отсчета положения купола */ + uint code_a, code_z, code_p, code_b, code_f, code_d; +#define code_A (sdt->code_a) /* 23р-в дв.кода отсчета A */ +#define code_Z (sdt->code_z) /* - "" - Z */ +#define code_P (sdt->code_p) /* - "" - P */ +#define code_B (sdt->code_b) /* код давления */ +#define code_F (sdt->code_f) /* код отсчета фокуса телескопа */ +#define code_D (sdt->code_d) /* код отсчета положения купола */ + uint adc[8]; +#define ADC(N) (sdt->adc[(N)]) /* коды 8-ми каналов АЦП PCL818 */ +#define code_T1 ADC(0) /* код датчика наруж. температуры*/ +#define code_T2 ADC(1) /* код датчика температуры под куп.*/ +#define code_T3 ADC(2) /* код датчика температуры зеркала */ +#define code_Wnd ADC(3) /* код датчика ветра */ + double val_a, val_z, val_p, val_b, val_f, val_d; + double val_t1, val_t2, val_t3, val_wnd; +#define val_A (sdt->val_a) /* отсчет A (") */ +#define val_Z (sdt->val_z) /* - " - Z (") */ +#define val_P (sdt->val_p) /* - " - P (") */ +#define val_B (sdt->val_b) /* давлениe (мм.рт.ст.)*/ +#define val_F (sdt->val_f) /* фокус телескопа (мм) */ +#define val_D (sdt->val_d) /* положение купола (") */ +#define val_T1 (sdt->val_t1) /* наруж. температура (гр.)*/ +#define val_T2 (sdt->val_t2) /* температура под куп.(гр.)*/ +#define val_T3 (sdt->val_t3) /* температура зеркала (гр.)*/ +#define val_Wnd (sdt->val_wnd) /* ветер (м/сек)*/ + double val_alp, val_del; +#define val_Alp (sdt->val_alp) /* обратный пересчет R.A. (sec) */ +#define val_Del (sdt->val_del) /* -- " -- Decl. (") */ + + double vel_a, vel_z, vel_p, vel_f, vel_d; +#define vel_A (sdt->vel_a) /* скорость по A ("/сек) измеренная */ +#define vel_Z (sdt->vel_z) /* - " - Z - " - */ +#define vel_P (sdt->vel_p) /* - " - P - " - */ +#define vel_F (sdt->vel_f) /* - " - F - " - */ +#define vel_D (sdt->vel_d) /* - " - D - " - */ + + /* очередь последних системных сообщений */ +#define MesgNum 3 +#define MesgLen 39 + //struct __attribute__((packed)) SysMesg { + struct SysMesg { + int seq_num; + char type; +#define MesgEmpty 0 +#define MesgInfor 1 +#define MesgWarn 2 +#define MesgFault 3 +#define MesgLog 4 + char text[MesgLen]; + } sys_msg_buf[MesgNum]; +#define Sys_Mesg(N) (sdt->sys_msg_buf[N]) + + /* управление доступом */ + /* коды установки уровней доступа для клиентов */ + uint code_lev1,code_lev2,code_lev3,code_lev4,code_lev5; +#define code_Lev1 (sdt->code_lev1) /* "удаленный наблюдатель" - только информация */ +#define code_Lev2 (sdt->code_lev2) /* "местный наблюдатель" - + ввод координат */ +#define code_Lev3 (sdt->code_lev3) /* "главный наблюдатель" - + A/Z-корр-я, упр.P2/F */ +#define code_Lev4 (sdt->code_lev4) /* "оператор" - + пуск/стоп телеск., тестирование */ +#define code_Lev5 (sdt->code_lev5) /* "главный оператор" - все операции */ + /* ограничение сетевого доступа */ + uint netmask, netaddr, acsmask, acsaddr; +#define NetMask (sdt->netmask) /* маска подсети (обычно: 255.255.255.0) */ +#define NetWork (sdt->netaddr) /* адрес подсети (например: 192.168.3.0) */ +#define ACSMask (sdt->acsmask) /* маска АСУ-сети (например: 255.255.255.0) */ +#define ACSNet (sdt->acsaddr) /* адрес АСУ-сети (например: 192.168.13.0) */ + + /* ввод метео-данных */ + int meteo_stat; +#define MeteoMode (sdt->meteo_stat) /* флаги датчиков и ввода данных*/ +#define INPUT_B 1 /* давление *//* флаги ручного ввода метео данных */ +#define INPUT_T1 2 /* T-наружная */ +#define INPUT_T2 4 /* T-подкупольная */ +#define INPUT_T3 8 /* T-зеркала */ +#define INPUT_WND 0x10 /* ветер */ +#define INPUT_HMD 0x20 /* влажность */ +#define SENSOR_B (INPUT_B <<8) /* флаги внешних метео-датчиков (e.g.по CAN-шине)*/ +#define SENSOR_T1 (INPUT_T1 <<8) +#define SENSOR_T2 (INPUT_T2 <<8) +#define SENSOR_T3 (INPUT_T3 <<8) +#define SENSOR_WND (INPUT_WND<<8) +#define SENSOR_HMD (INPUT_HMD<<8) +#define ADC_B (INPUT_B <<16) /* флаги считывания с АЦП упр.компутера */ +#define ADC_T1 (INPUT_T1 <<16) +#define ADC_T2 (INPUT_T2 <<16) +#define ADC_T3 (INPUT_T3 <<16) +#define ADC_WND (INPUT_WND<<16) +#define ADC_HMD (INPUT_HMD<<16) +#define NET_B (INPUT_B <<24) /* флаги получения данных с метеостанции по сети */ +#define NET_T1 (INPUT_T1 <<24) +#define NET_WND (INPUT_WND<<24) +#define NET_HMD (INPUT_HMD<<24) + double inp_b, inp_t1, inp_t2, inp_t3, inp_wnd; +#define inp_B (sdt->inp_b) /* давлениe (мм.рт.ст.)*/ +#define inp_T1 (sdt->inp_t1) /* наруж. температура (гр.)*/ +#define inp_T2 (sdt->inp_t2) /* температура под куп.(гр.)*/ +#define inp_T3 (sdt->inp_t3) /* температура зеркала (гр.)*/ +#define inp_Wnd (sdt->inp_wnd) /* ветер (м/сек)*/ + + double temper, press; +#define Temper (sdt->temper) /* темрература используемая для рефракции */ +#define Pressure (sdt->press) /* давление используемое для рефракции */ + double m_time10, m_time15; +#define Wnd10_time (sdt->m_time10) /* момент времени порыва >=10м/сек*/ +#define Wnd15_time (sdt->m_time15) /* - " - - " - - " - >=15м/сек*/ + + /* IERS DUT1 (источник: ftp://maia.usno.navy.mil/ser7/ser7.dat) */ + double dut1; +#define DUT1 (sdt->dut1) /* поправка ср.солнечного времени: DUT1 = UT1-UTC */ + + double a_time, z_time, p_time; +#define A_time (sdt->a_time) /* момент считывания датчика A */ +#define Z_time (sdt->z_time) /* - " - - " - - " - Z */ +#define P_time (sdt->p_time) /* - " - - " - - " - P */ + + double speedain, speedzin, speedpin; +#define speedAin (sdt->speedain) /* постоянная скорость уст-я по A */ +#define speedZin (sdt->speedzin) /* постоянная скорость уст-я по Z */ +#define speedPin (sdt->speedpin) /* постоянная скорость уст-я по P2*/ + + double acc_a, acc_z, acc_p, acc_f, acc_d; +#define acc_A (sdt->acc_a) /* ускорение по A ("/сек^2) */ +#define acc_Z (sdt->acc_z) /* - " - Z - " - */ +#define acc_P (sdt->acc_p) /* - " - P - " - */ +#define acc_F (sdt->acc_f) /* - " - F - " - */ +#define acc_D (sdt->acc_d) /* - " - D - " - */ + + uint code_sew; +#define code_SEW (sdt->code_sew) /* код спец.доступа к SEW-контроллерам */ + +/* параметры SEW-контроллеров */ +//struct __attribute__((packed)) SEWdata { +struct SEWdata { + int status; + double set_speed; + double mes_speed; + double current; + int index; + union { + unsigned char b[4]; + __uint32_t l; + } value; +} sewdrv[3]; +#define statusSEW(Drv) (sdt->sewdrv[(Drv)-1].status) /*состояние контроллера*/ +#define statusSEW1 (sdt->sewdrv[0].status) +#define statusSEW2 (sdt->sewdrv[1].status) +#define statusSEW3 (sdt->sewdrv[2].status) +#define speedSEW(Drv) (sdt->sewdrv[(Drv)-1].set_speed) /*установленная скорость*/ +#define speedSEW1 (sdt->sewdrv[0].set_speed) /* об/мин (rpm)*/ +#define speedSEW2 (sdt->sewdrv[1].set_speed) +#define speedSEW3 (sdt->sewdrv[2].set_speed) +#define vel_SEW(Drv) (sdt->sewdrv[(Drv)-1].mes_speed) /*измеренная скорость */ +#define vel_SEW1 (sdt->sewdrv[0].mes_speed) /* об/мин (rpm)*/ +#define vel_SEW2 (sdt->sewdrv[1].mes_speed) +#define vel_SEW3 (sdt->sewdrv[2].mes_speed) +#define currentSEW(Drv) (sdt->sewdrv[(Drv)-1].current) /*ток (А)*/ +#define currentSEW1 (sdt->sewdrv[0].current) +#define currentSEW2 (sdt->sewdrv[1].current) +#define currentSEW3 (sdt->sewdrv[2].current) +#define indexSEW(Drv) (sdt->sewdrv[(Drv)-1].index) /*номер параметра*/ +#define indexSEW1 (sdt->sewdrv[0].index) +#define indexSEW2 (sdt->sewdrv[1].index) +#define indexSEW3 (sdt->sewdrv[2].index) +#define valueSEW(Drv) (sdt->sewdrv[(Drv)-1].value.l) /*код значения параметра*/ +#define valueSEW1 (sdt->sewdrv[0].value.l) +#define valueSEW2 (sdt->sewdrv[1].value.l) +#define valueSEW3 (sdt->sewdrv[2].value.l) +#define bvalSEW(Drv,Nb) (sdt->sewdrv[(Drv)-1].value.b[Nb]) /*байт кода значения параметра*/ + +/* информация от PEP-контроллеров */ + uint pep_code_a, pep_code_z, pep_code_p; +#define PEP_code_A (sdt->pep_code_a) /* 23р-в дв.кода отсчета A */ +#define PEP_code_Z (sdt->pep_code_z) /* - "" - Z */ +#define PEP_code_P (sdt->pep_code_p) /* - "" - P */ + uint pep_sw_a, pep_sw_z, pep_sw_p; +#define switch_A (sdt->pep_sw_a) /* код концевиков азимута */ +#define Sw_minus_A 1 /* азимут отрицательный (см. code_KOST&0x8000)*/ +#define Sw_plus240_A 2 /* концевик "+240град" */ +#define Sw_minus240_A 4 /* концевик "-240град" */ +#define Sw_minus45_A 8 /* положение "в горизонт" (~-46град)*/ +#define switch_Z (sdt->pep_sw_z) /* код концевиков Z */ +#define Sw_0_Z 0x01 /* концевик "0град" */ +#define Sw_5_Z 0x02 /* концевик "5град" */ +#define Sw_20_Z 0x04 /* концевик "20град" */ +#define Sw_60_Z 0x08 /* концевик "60град" */ +#define Sw_80_Z 0x10 /* концевик "80град" */ +#define Sw_90_Z 0x20 /* концевик "90град" */ +#define switch_P (sdt->pep_sw_p) /* - "" - СПФ */ +#define Sw_No_P 0x00 /* "Нет концевиков" */ +#define Sw_22_P 0x01 /* концевик "22град" */ +#define Sw_89_P 0x02 /* концевик "89град" */ +#define Sw_Sm_P 0x80 /* датчик дыма СПФ */ + uint pep_code_f, pep_code_d, pep_code_ri, pep_code_ro; +#define PEP_code_F (sdt->pep_code_f) /* код отсчета фокуса телескопа */ +#define PEP_code_D (sdt->pep_code_d) /* код отсчета положения купола */ +#define PEP_code_Rin (sdt->pep_code_ri)/* код принятый из РК */ +#define PEP_code_Rout (sdt->pep_code_ro)/* код выдаваемый в РК */ + unsigned char pep_on[10]; /* флаги работы PEP-контроллеров */ +#define PEP_A_On (sdt->pep_on[0]) +#define PEP_A_Off (PEP_A_On==0) +#define PEP_Z_On (sdt->pep_on[1]) +#define PEP_Z_Off (PEP_Z_On==0) +#define PEP_P_On (sdt->pep_on[2]) +#define PEP_P_Off (PEP_P_On==0) +#define PEP_F_On (sdt->pep_on[3]) +#define PEP_F_Off (PEP_F_On==0) +#define PEP_D_On (sdt->pep_on[4]) +#define PEP_D_Off (PEP_D_On==0) +#define PEP_R_On (sdt->pep_on[5]) +#define PEP_R_Off ((PEP_R_On&1)==0) +#define PEP_R_Inp ((PEP_R_On&2)!=0) +#define PEP_K_On (sdt->pep_on[6]) +#define PEP_K_Off ((PEP_K_On&1)==0) +#define PEP_K_Inp ((PEP_K_On&2)!=0) + + /* IERS polar motion (источник: ftp://maia.usno.navy.mil/ser7/ser7.dat) */ + double xpol, ypol; +#define polarX (sdt->xpol) /* X-поправкa полож.полюса */ +#define polarY (sdt->ypol) /* Y-поправкa полож.полюса */ + + double jdate, eetime; +#define JDate (sdt->jdate) /* текущая юлианская дата */ +#define EE_time (sdt->eetime) /* поправ.зв.вр. за "Equation of the Equinoxes" */ + + /* еще ввод метео-данных */ + double val_hmd, inp_hmd; +#define val_Hmd (sdt->val_hmd) /* значение влажности (%) */ +#define inp_Hmd (sdt->val_hmd) /* ручной ввод */ + + /* положение червяка (подвеска) */ + double worm_a, worm_z; +#define worm_A (sdt->worm_a) /* положение подвески A (мкм) */ +#define worm_Z (sdt->worm_z) /* положение подвески Z (мкм) */ + + /* флаги блокировки управления узлами */ + __uint32_t lock_flags; +#define LockFlags (sdt->lock_flags) +#define Lock_A 0x01 +#define Lock_Z 0x02 +#define Lock_P 0x04 +#define Lock_F 0x08 +#define Lock_D 0x10 +#define A_Locked (LockFlags&Lock_A) +#define Z_Locked (LockFlags&Lock_Z) +#define P_Locked (LockFlags&Lock_P) +#define F_Locked (LockFlags&Lock_F) +#define D_Locked (LockFlags&Lock_D) + + /* требуемая скорость привода купола (для упр-я SEW-приводами)*/ + int sew_dome_speed; /* пока тоже что и Dome_State */ +#define Dome_Speed (sdt->sew_dome_speed) /* т.е. D_Lplus,D_Lminus,.... */ + +/* номер SEW-движка купола (для индикации)*/ + int sew_dome_num; +#define DomeSEW_N (sdt->sew_dome_num) + +/* параметры выбранного(DomeSEW_N) SEW-контроллера купола*/ +struct SEWdata sewdomedrv; +#define statusSEWD (sdt->sewdomedrv.status) /*состояние контроллера*/ +#define speedSEWD (sdt->sewdomedrv.set_speed) /*установленная скорость об/мин (rpm)*/ +#define vel_SEWD (sdt->sewdomedrv.mes_speed) /*измеренная скорость об/мин (rpm)*/ +#define currentSEWD (sdt->sewdomedrv.current) /*ток (А)*/ +#define indexSEWD (sdt->sewdomedrv.index) /*номер параметра*/ +#define valueSEWD (sdt->sewdomedrv.value.l) /*код значения параметра*/ + +/* информация PEP-контроллера купола */ + uint pep_code_di, pep_code_do; +#define PEP_code_Din (sdt->pep_code_di) /* код принятый из PEP-купола */ +#define PEP_Dome_SEW_Ok 0x200 +#define PEP_Dome_Cable_Ok 0x100 +#define PEP_code_Dout (sdt->pep_code_do) /* код выдаваемый в PEP-купола */ +#define PEP_Dome_SEW_On 0x10 +#define PEP_Dome_SEW_Off 0x20 + +}; + +#ifndef BTA_MODULE +struct BTA_Data *sdt; +#else +extern struct BTA_Data *sdt; +#endif + +struct BTA_Local { /* структура локальных данных */ + unsigned char reserve[120]; /* свободное место для расширения глобальной области */ + /* (на глобальную область резервируем 1500 байт) */ + double pr_oil_a,pr_oil_z,pr_oil_t; +#define PressOilA (sdtl->pr_oil_a) /* Давление в маслопроводе A (МПа) */ +#define PressOilZ (sdtl->pr_oil_z) /* Давление в маслопроводе Z (МПа) */ +#define PressOilTank (sdtl->pr_oil_t) /* Датчик уровня масла в баке(КПа) */ + double t_oil_1,t_oil_2; +#define OilTemper1 (sdtl->t_oil_1) /* Температура масла */ +#define OilTemper2 (sdtl->t_oil_2) /* Температура охлаждающей воды */ +}; + +#ifndef BTA_MODULE +struct BTA_Local *sdtl; /* конец глобальных, начало локальных данных */ +#else +extern struct BTA_Local *sdtl; +#endif + +#define ClientSide 0 +#define ServerSide 1 + +#ifndef BTA_MODULE +static void bta_data_init(); +static int bta_data_check(); +static void bta_data_close(); + +/* описание блока данных алгоритма управления ("глобальная область") */ +struct SHM_Block sdat = { +{'S','d','a','t',0},sizeof(struct BTA_Data),2048,0444,SHM_RDONLY,bta_data_init,bta_data_check,bta_data_close,0,-1,NULL +}; +#else +extern struct SHM_Block sdat; +#endif + +#ifndef BTA_MODULE +/* инициализация данных алгоритма управления (обнуление "глобальной области") */ +static void bta_data_init() { + int i; + sdt = (struct BTA_Data *)sdat.addr; + sdtl = (struct BTA_Local *)(sdat.addr+sizeof(struct BTA_Data)); + if(sdat.side == ClientSide) { + if(sdt->magic != sdat.key.code) { + fprintf(stderr,"Wrong shared data (maybe server turned off)\n"); + /*exit(1);*/ + } + if(sdt->version == 0) { + fprintf(stderr,"Null shared data version (maybe server turned off)\n"); + /*exit(1);*/ + } + else if(sdt->version != BTA_Data_Ver) { + fprintf(stderr,"Wrong shared data version: I'am - %d, but server - %d ...\n", + BTA_Data_Ver, sdt->version ); + /*exit(1);*/ + } + if(sdt->size != sdat.size) { + if(sdt->size > sdat.size) { + /* но клиент имеет право использовать начальную часть данных */ + fprintf(stderr,"Wrong shared area size: I needs - %d, but server - %d ...\n", + sdat.size, sdt->size ); + } else { + /* "залезание" в пустую резервную часть теперь тоже */ + /* будем оставлять на совести автора клиента! */ + fprintf(stderr,"Attention! Too little shared data structure!\n"); + sleep(1); + fprintf(stderr,"I needs - %d, but server gives only %d ...\n", + sdat.size, sdt->size ); + sleep(1); + fprintf(stderr,"May be server's version too old!?\n"); + /* exit(1); */ + + } + } + return; + } + /* ServerSide */ + if(sdt->magic != sdat.key.code || + sdt->version != BTA_Data_Ver || + sdt->size != sdat.size) { + + for(i=0; imagic = sdat.key.code; + sdt->version = BTA_Data_Ver; + sdt->size = sdat.size; + ServPID = 0; + UseModel = NoModel; + ClockType = Ch7_15; + Sys_Mode = SysStop; + Sys_Target = TagPosition; + Tel_Focus = Prime; + Tel_Hardware = Hard_On; + Tel_Mode = Automatic; + Az_Mode = Rev_Off; + P2_State = P2_Mode = P2_Off; + Foc_State = Foc_Off; + Dome_State = D_Off; + Pos_Corr = PC_On; + TrkOk_Mode = UseDiffVel | UseDiffAZ ; + InpAlpha=InpDelta= 0.; + SrcAlpha=SrcDelta= 0.; + VelAlpha=VelDelta= 0.; + CurAlpha=CurDelta= 0.; + InpAzim=InpZdist = 0.; + Diff_A=Diff_Z=Diff_P=0.0; + pos_cor_A=pos_cor_Z=refract_Z = 0.; + tel_cor_A=tel_cor_Z=tel_ref_Z = 0.; + vel_objA=vel_objZ=vel_objP = 0.; + diff_vA=diff_vZ=diff_vP=0.; + speedA = speedZ = speedP = 0.; + req_speedA = req_speedZ = req_speedP = 0.; + mod_vel_A=mod_vel_Z=mod_vel_P=mod_vel_F=mod_vel_D=0.; + code_KOST = 0; + M_time = S_time = L_time = 0.; + ppndd_A=ppndd_Z=ppndd_P=ppndd_B=0; + dup_A=dup_Z=dup_P=dup_F=dup_D=0; + low_A=low_Z=low_P=low_F=low_D=0; + code_A=code_Z=code_P=code_B=code_F=code_D=code_T1=code_T2=code_T3=code_Wnd=0; + val_A=val_Z=val_P=val_B=val_F=val_D=val_T1=val_T2=val_T3=val_Wnd=val_Alp=val_Del=0.; + vel_A=vel_Z=vel_P=vel_F=vel_D=0.; + for(i=0; imagic == sdat.key.code) && (sdt->version == BTA_Data_Ver) ); +} +static void bta_data_close() { + if(sdat.side == ServerSide) { + sdt->magic = 0; + sdt->version = 0; + } +} + +/* блок информационных сообщений ??? */ +/*struct SHM_Block info = {{'I','n','f','o',0},1024,1024,0444,SHM_RDONLY,NULL,NULL,NULL,0,-1,NULL};*/ + +/* Allocate shared memory segment */ +static void get_shm_block( struct SHM_Block *sb, int server) { + int getsize = (server)? sb->maxsize : sb->size; + + /* first try to find existing one */ + sb->id = shmget(sb->key.code, getsize, sb->mode); + + if (sb->id<0 && errno==ENOENT && server) { + /* if no - try to create a new one */ + int cresize = sb->maxsize; + if(sb->size > cresize) { + fprintf(stderr,"Wrong shm maxsize(%d) < realsize(%d)\n",sb->maxsize,sb->size); + cresize = sb->size; + } + sb->id = shmget(sb->key.code, cresize, IPC_CREAT|IPC_EXCL|sb->mode); + } + if (sb->id<0) { + char msg[80]; + if(server) + sprintf(msg,"Can't create shared memory segment '%s'",sb->key.name); + else + sprintf(msg,"Can't find shared segment '%s' (maybe no server process) ",sb->key.name); + perror(msg); + exit(errno); + } + /* attach it to our memory space */ + sb->addr = (unsigned char *)shmat ( sb->id, NULL, sb->atflag ); + + if ((int)(sb->addr) == -1) { + char msg[80]; + sprintf(msg,"Can't attach shared memory segment '%s'",sb->key.name); + perror(msg); + exit(errno); + } + if(server) { + if((shmctl(sb->id, SHM_LOCK, NULL) < 0) < 0) { + char msg[80]; + sprintf(msg,"Can't prevents swapping of shared memory segment '%s'",sb->key.name); + perror(msg); + exit(errno); + } + } + fprintf(stderr,"Create&attach shared memory segment '%s' %dbytes at %x \n", + sb->key.name, sb->size, (uint)sb->addr); + + sb->side = server; + + if(sb->init!=NULL) + sb->init(); +} +static int close_shm_block( struct SHM_Block *sb) { + int ret; + if(sb->close != NULL) + sb->close(); + if(sb->side == ServerSide) { +// ret = shmctl(sb->id, SHM_UNLOCK, NULL); + ret = shmctl(sb->id, IPC_RMID, NULL); + } + ret = shmdt (sb->addr); + return(ret); +} +#endif + +static int check_shm_block( struct SHM_Block *sb) { + if(sb->check != NULL) + return(sb->check()); + else return(1); +} + +#ifndef BTA_MODULE +int snd_id=-1; /* текущий (и единственный?) канал отсылки команд клиента */ +int cmd_src_pid=0; /* номер процесса источника для ОДНОЙ след.команды */ +__uint32_t cmd_src_ip=0; /* IP-адр. источника для ОДНОЙ след.команды */ +#else +extern int snd_id; +extern int cmd_src_pid; +extern __uint32_t cmd_src_ip; +#endif + +#ifndef BTA_MODULE +/* Create|Find command queue */ +static void get_cmd_queue( struct CMD_Queue *cq, int server) { + if (!server && cq->id>=0) { /* if already in use */ + snd_id = cq->id; /* set current... */ + return; + } + /* first try to find existing one */ + cq->id = msgget(cq->key.code, cq->mode); + if (cq->id<0 && errno==ENOENT && server) + /* if no - try to create a new one */ + cq->id = msgget(cq->key.code, IPC_CREAT|IPC_EXCL|cq->mode); + if (cq->id<0) { + char msg[80]; + if(server) + sprintf(msg,"Can't create comand queue '%s'",cq->key.name); + else + sprintf(msg,"Can't find comand queue '%s' (maybe no server process) ",cq->key.name); + perror(msg); + exit(errno); + } + cq->side = server; + if (server) { + char buf[120]; /* выбросить все команды из очереди */ + while(msgrcv(cq->id, (struct msgbuf *)buf, 112, 0, IPC_NOWAIT)>0); + } else + snd_id = cq->id; + cq->acckey = 0; +} +#endif + +/* установка ключа доступа в тек. канале */ +static void set_acckey(uint newkey) { + if (snd_id<0) return; + if(ucmd.id==snd_id) ucmd.acckey=newkey; + else if(ocmd.id==snd_id) ocmd.acckey=newkey; + else if(mcmd.id==snd_id) mcmd.acckey=newkey; +} + +/* установка данных источника для ОДНОЙ след.команды */ +/* если не подходят умолчания: IP=0(локальная команда) и PID текущ.процесса */ +static void set_cmd_src(__uint32_t ip, int pid) { + cmd_src_pid = pid; + cmd_src_ip = ip; +} + +/* структура сообщения */ +struct my_msgbuf { + __int32_t mtype; /* type of message */ + __uint32_t acckey; /* ключ доступа клиента */ + __uint32_t src_pid; /* номер процесса источника */ + __uint32_t src_ip; /* IP-адр. источника, =0 - локальная команда */ + char mtext[100]; /* message text */ +}; +/* отсылка команд клиента к серверу */ +static void send_cmd(int cmd_code, char *buf, int size) { + struct my_msgbuf mbuf; + + if (snd_id<0) return; + if (size>100) size=100; + if (cmd_code>0) + mbuf.mtype = cmd_code; + else + return; + if(ucmd.id==snd_id) mbuf.acckey=ucmd.acckey; + else if(ocmd.id==snd_id) mbuf.acckey=ocmd.acckey; + else if(mcmd.id==snd_id) mbuf.acckey=mcmd.acckey; + + mbuf.src_pid = cmd_src_pid? cmd_src_pid : getpid(); + mbuf.src_ip = cmd_src_ip; + cmd_src_pid = cmd_src_ip = 0; + + if(size>0) + memcpy( mbuf.mtext, buf, size); + else { + mbuf.mtext[0] = 0; + size = 1; + } + msgsnd( snd_id, (struct msgbuf *)&mbuf, size+12, IPC_NOWAIT); +} +static void send_cmd_noarg(int cmd_code) { + send_cmd(cmd_code, NULL, 0); +} +static void send_cmd_str(int cmd_code, char *arg) { + send_cmd(cmd_code, arg, strlen(arg)+1); +} +static void send_cmd_i1(int cmd_code, int arg1) { + send_cmd(cmd_code, (char *)&arg1, sizeof(int)); +} +static void send_cmd_i2(int cmd_code, int arg1, int arg2) { + int ibuf[2]; + ibuf[0] = arg1; + ibuf[1] = arg2; + send_cmd(cmd_code, (char *)ibuf, 2*sizeof(int)); +} +static void send_cmd_i3(int cmd_code, int arg1, int arg2, int arg3) { + int ibuf[3]; + ibuf[0] = arg1; + ibuf[1] = arg2; + ibuf[2] = arg3; + send_cmd(cmd_code, (char *)ibuf, 3*sizeof(int)); +} +static void send_cmd_i4(int cmd_code, int arg1, int arg2, int arg3, int arg4) { + int ibuf[4]; + ibuf[0] = arg1; + ibuf[1] = arg2; + ibuf[2] = arg3; + ibuf[3] = arg4; + send_cmd(cmd_code, (char *)ibuf, 4*sizeof(int)); +} +static void send_cmd_d1(int cmd_code, double arg1) { + send_cmd(cmd_code, (char *)&arg1, sizeof(double)); +} +static void send_cmd_d2(int cmd_code, double arg1, double arg2) { + double dbuf[2]; + dbuf[0] = arg1; + dbuf[1] = arg2; + send_cmd(cmd_code, (char *)dbuf, 2*sizeof(double)); +} +static void send_cmd_i1d1(int cmd_code, int arg1, double arg2) { + struct { + int ival; + double dval; + } buf; + buf.ival = arg1; + buf.dval = arg2; + send_cmd(cmd_code, (char *)&buf, sizeof(buf)); +} +static void send_cmd_i2d1(int cmd_code, int arg1, int arg2, double arg3) { + struct { + int ival[2]; + double dval; + } buf; + buf.ival[0] = arg1; + buf.ival[1] = arg2; + buf.dval = arg3; + send_cmd(cmd_code, (char *)&buf, sizeof(buf)); +} +static void send_cmd_i3d1(int cmd_code, int arg1, int arg2, int arg3, double arg4) { + struct { + int ival[3]; + double dval; + } buf; + buf.ival[0] = arg1; + buf.ival[1] = arg2; + buf.ival[2] = arg3; + buf.dval = arg4; + send_cmd(cmd_code, (char *)&buf, sizeof(buf)); +} + +static void encode_lev_passwd(char *passwd, int nlev, uint *keylev, uint *codlev) { + char salt[4]; + char *encr; + union { + uint ui; + char c[4]; + } key,cod; + sprintf(salt,"L%1d",nlev); + encr = (char *)crypt(passwd, salt); + cod.c[0] = encr[2]; + key.c[0] = encr[3]; + cod.c[1] = encr[4]; + key.c[1] = encr[5]; + cod.c[2] = encr[6]; + key.c[2] = encr[7]; + cod.c[3] = encr[8]; + key.c[3] = encr[9]; + *keylev = key.ui; + *codlev = cod.ui; +} + +static int find_lev_passwd(char *passwd, uint *keylev, uint *codlev) { + int nlev; + for(nlev=5; nlev>0; nlev--) { + encode_lev_passwd(passwd, nlev, keylev, codlev); + if(nlev == 1 && code_Lev1 == *codlev) break; + if(nlev == 2 && code_Lev2 == *codlev) break; + if(nlev == 3 && code_Lev3 == *codlev) break; + if(nlev == 4 && code_Lev4 == *codlev) break; + if(nlev == 5 && code_Lev5 == *codlev) break; + } + return(nlev); +} + +static int check_lev_passwd(char *passwd) { + uint keylev,codlev; + int nlev; + nlev = find_lev_passwd(passwd, &keylev, &codlev); + if(nlev>0) set_acckey(keylev); + return(nlev); +} + +#pragma GCC diagnostic pop + +#endif // __BTA_SHDATA_H__ diff --git a/jsonbta/client.c b/jsonbta/client.c new file mode 100644 index 0000000..a787509 --- /dev/null +++ b/jsonbta/client.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bta_json.h" + +int main(int argc, char *argv[]){ + int sockfd = 0, n = 0; + char recvBuff[1024]; + memset(recvBuff, '0',sizeof(recvBuff)); + struct addrinfo h, *r, *p; + memset(&h, 0, sizeof(h)); + h.ai_family = AF_INET; + h.ai_socktype = SOCK_STREAM; + h.ai_flags = AI_CANONNAME; + char *host = "localhost"; + if(argc > 1) host = argv[1]; + char *port = PORT; + if(argc > 2) port = argv[2]; + if(getaddrinfo(host, port, &h, &r)){perror("getaddrinfo"); return -1;} + struct sockaddr_in *ia = (struct sockaddr_in*)r->ai_addr; + char str[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, &(ia->sin_addr), str, INET_ADDRSTRLEN); + printf("canonname: %s, port: %u, addr: %s\n", r->ai_canonname, ntohs(ia->sin_port), str); + for(p = r; p; p = p->ai_next) { + if ((sockfd = socket(p->ai_family, p->ai_socktype, + p->ai_protocol)) == -1) { + perror("socket"); + continue; + } + if (connect(sockfd, p->ai_addr, p->ai_addrlen) == -1) { + close(sockfd); + perror("connect"); + continue; + } + break; // if we get here, we must have connected successfully + } + if (p == NULL) { + // looped off the end of the list with no connection + fprintf(stderr, "failed to connect\n"); + return -1; + } + freeaddrinfo(r); + char *msg = malloc(2048); + char *res = RESOURCE; + if(argc == 4) res = argv[3]; + snprintf(msg, 2047, "GET %s HTTP/1.1\r\n", res); + if(send(sockfd, msg, strlen(msg), 0) != strlen(msg)){perror("send");} + while((n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0){ + recvBuff[n] = 0; + if(fputs(recvBuff, stdout) == EOF) printf("\n Error : Fputs error\n"); + } + if(n < 0) printf("\n Read error \n"); + return 0; +} diff --git a/jsonbta/client_streaming.c b/jsonbta/client_streaming.c new file mode 100644 index 0000000..77c839a --- /dev/null +++ b/jsonbta/client_streaming.c @@ -0,0 +1,337 @@ +/* + * client_streaming.c - example of streaming client + * + * Copyright 2013 Edward V. Emelianoff + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include // addrinfo +#include // printf etc +#include // memset, strdup, strlen +#include // exit +#include // close, read, sleep +#include // fcntl +#include // inet_ntop +#include +#include +#include + +#define PORT "12345" +#define RESOURSE "GET /bta_par HTTP/1.1\r\n" + +typedef enum{ + T_STRING, // string + T_DMS, // degrees:minutes:seconds + T_HMS, // hours:minutes:seconds + T_DOUBLE // double +} otype; + +/* +#define defpar(val) const char* val = #val +defpar(mtime); +defpar(sidtime); +defpar(telmode); +defpar(telfocus); +defpar(target); +defpar(p2mode); +defpar(eqcoor); +defpar(horcoor); +defpar(valsens); +defpar(diff); +defpar(vel); +defpar(corr); +defpar(meteo); +#undef defpar +*/ +/* +{ +"M_time": "22:49:13.61", +"JDate": 2456367.284184, +"S_time": "09:09:07.34", +"Tel_Mode": "Stopping", +"Tel_Focus": "Prime", +"ValFoc": 43.54, +"Tel_Taget": "Nest", +"P2_Mode": "Stop", +"CurAlpha": "00:26:06.78", +"CurDelta": "+25:34:34.0", +"SrcAlpha": "06:03:08.53", +"SrcDelta": "+30:00:00.0", +"InpAlpha": "06:03:08.53", +"InpDelta": "+30:00:00.0", +"TelAlpha": "04:23:09.30", +"TelDelta": "+25:34:41.3", +"InpAzim": "+085:27:36.4", +"InpZenD": "39:01:06.5", +"CurAzim": "+136:27:11.0", +"CurZenD": "97:21:25.3", +"CurPA": "033:32:49.7", +"SrcPA": "056:23:33.0", +"InpPA": "056:23:33.0", +"TelPA": "052:39:24.3", +"ValAzim": "+097:37:52.4", +"ValZenD": "59:37:00.2", +"ValP2": "310:24:30.2", +"ValDome": "+180:16:47.0", +"DiffAzim": "+000:00:00.0", +"DiffZenD": "+00:00:00.0", +"DiffP2": "+000:00:00.6", +"DiffDome": "-082:38:54.6", +"VelAzim": "+00:00:00.0", +"VelZenD": "-00:00:00.0", +"VelP2": "+00:00:00.0", +"VelPA": "+00:00:00.0", +"VelDome": "+00:00:00.0", +"CorrAlpha": "+0:00:00.00", +"CorrDelta": "+0:00:00.0", +"CorrAzim": "+0:00:00.0", +"CorrZenD": "+0:00:00.0", +"ValTind": +02.5, +"ValTmir": +01.7, +"ValPres": 590.3, +"ValWind": 06.6, +"Blast10": 1.4, +"Blast15": 3.4, +"ValHumd": 50.0 +} +*/ + +/** + * Get double parameter + * @param jobj - json record with double parameter + * @return NULL in case of error or allocated double value (MUST BE FREE LATER) + */ +double* get_jdouble(json_object *jobj){ + enum json_type type = json_object_get_type(jobj); + double val, *ret; + switch(type){ + case json_type_double: + val = json_object_get_double(jobj); + break; + case json_type_int: + val = json_object_get_int(jobj); + break; + default: + fprintf(stderr, "Wrong value! Get non-number!\n"); + return NULL; + } + ret = malloc(sizeof(double)); + assert(ret); + memcpy(ret, &val, sizeof(double)); + return ret; +} +double strtod(const char *nptr, char **endptr); + +char *atodbl(char *str, double *d){ + char *eptr; + *d = strtod(str, &eptr); + if(eptr == str) return NULL; + return eptr; +} + +/** + * get string parameter + * @param jobj - json record + * @return string or NULL in case of error + */ + +char *get_jstr(json_object *jobj){ + enum json_type type = json_object_get_type(jobj); + if(type != json_type_string) return NULL; + return (char*)json_object_get_string(jobj); +} + +double *get_jdhms(json_object *jobj){ + char *jptr = get_jstr(jobj); + char *str = jptr, *endln = str + strlen(str); + double h,m,s, sgn; + #define GetVal(x) do{if(str >= endln) return NULL; str = atodbl(str, &x); if(!str)return NULL; str++;}while(0) + GetVal(h); + GetVal(m); + GetVal(s); + #undef GetVal + sgn = (h < 0.) ? -1. : 1.; + h = fabs(h); + double *ret = malloc(sizeof(double)); + assert(ret); + *ret = sgn * (h + m / 60. + s / 3600.); + return ret; +} + +/** + * get parameter from json object + * @param jobj - json records + * @param par - parameter to find + * @param type - type of par + * @return dinamycally allocated pointer to char (if T_STRING) or double (for other types); + * if type is angle or time, its value converts from DMS/HMS to double + * in case of parameter absense or error function returns NULL + */ +void *get_json_par(json_object *jobj, char *par, otype type){ + json_object *o = json_object_object_get(jobj, par); + void *ret; + if(!o) return NULL; + switch(type){ + case T_DOUBLE: + ret = (void*)get_jdouble(o); + break; + case T_DMS: + case T_HMS: + ret = (void*)get_jdhms(o); + break; + case T_STRING: + default: + ret = (void*)strdup(get_jstr(o)); + } + json_object_put(o); // free object's memory + return ret; +} + + +/** + * set non-blocking flag to socket + * @param sock - socket fd + * +void setnonblocking(int sock){ + int opts = fcntl(sock, F_GETFL); + if(opts < 0){ + perror("fcntl(F_GETFL)"); + exit(-1); + } + opts = (opts | O_NONBLOCK); + if (fcntl(sock,F_SETFL,opts) < 0) { + perror("fcntl(F_SETFL)"); + exit(-1); + } + return; +}*/ + +/** + * wait for answer from server + * @param sock - socket fd + * @return 0 in case of error or timeout, 1 in case of socket ready + */ +int waittoread(int sock){ + fd_set fds; + struct timeval timeout; + int rc; + timeout.tv_sec = 1; // wait not more than 1 second + timeout.tv_usec = 0; + FD_ZERO(&fds); + FD_SET(sock, &fds); + rc = select(sock+1, &fds, NULL, NULL, &timeout); + if(rc < 0){ + perror("select failed"); + return 0; + } + if(rc > 0 && FD_ISSET(sock, &fds)) return 1; + return 0; +} + +int main(int argc, char *argv[]){ + size_t BUFSZ = 1024; + int sockfd = 0; + char *recvBuff = calloc(BUFSZ, 1); + assert(recvBuff); + struct addrinfo h, *r, *p; + memset(&h, 0, sizeof(h)); + h.ai_family = AF_INET; + h.ai_socktype = SOCK_STREAM; + h.ai_flags = AI_CANONNAME; + char *host = "localhost"; + if(argc > 1) host = argv[1]; + char *port = PORT; + if(argc > 2) port = argv[2]; + if(getaddrinfo(host, port, &h, &r)){perror("getaddrinfo"); return -1;} + struct sockaddr_in *ia = (struct sockaddr_in*)r->ai_addr; + char str[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, &(ia->sin_addr), str, INET_ADDRSTRLEN); + printf("canonname: %s, port: %u, addr: %s\n", r->ai_canonname, ntohs(ia->sin_port), str); + for(p = r; p; p = p->ai_next) { + if ((sockfd = socket(p->ai_family, p->ai_socktype, + p->ai_protocol)) == -1) { + perror("socket"); + continue; + } + if (connect(sockfd, p->ai_addr, p->ai_addrlen) == -1) { + close(sockfd); + perror("connect"); + continue; + } + break; // if we get here, we must have connected successfully + } + if(p == NULL){ + // looped off the end of the list with no connection + fprintf(stderr, "failed to connect\n"); + return -1; + } + freeaddrinfo(r); + //setnonblocking(sockfd); + char *msg; + char *res = RESOURSE; + if(argc == 4) res = argv[3]; + msg = strdup(res); + do{ + if(send(sockfd, msg, strlen(msg), 0) != strlen(msg)){perror("send"); return -1;} + if(!waittoread(sockfd)) return -1; + int offset = 0, n = 0; + do{ + if(offset >= BUFSZ){ + BUFSZ += 1024; + recvBuff = realloc(recvBuff, BUFSZ); + assert(recvBuff); + fprintf(stderr, "Buffer reallocated, new size: %zd\n", BUFSZ); + } + n = read(sockfd, &recvBuff[offset], BUFSZ - offset); + if(!n) break; + if(n < 0){ + perror("read"); + return -1; + } + offset += n; + }while(waittoread(sockfd)); + if(!offset){ + fprintf(stderr, "Socket closed\n"); + return 0; + } + printf("read %d bytes\n", offset); + recvBuff[offset] = 0; + printf("Received data:\n-->%s<--\n", recvBuff); + fflush(stdout); + // here we do something with values we got + // for example - parce them & print + json_object *jobj = json_tokener_parse(recvBuff); + if(!jobj){ + fprintf(stderr, "Can't parse json!\n"); + return -1; + } + double *focval = (double*)get_json_par(jobj, "ValFoc", T_DOUBLE); + double *valaz = (double*)get_json_par(jobj, "ValAzim", T_DMS); + double *valzd = (double*)get_json_par(jobj, "ValZenD", T_DMS); + double *valdaz = (double*)get_json_par(jobj, "ValDome", T_DMS); + double *valP2 = (double*)get_json_par(jobj, "ValP2", T_DMS); + #define prntdbl(name, val) do{if(val) printf("%s = %g\n", name, *val); free(val);}while(0) + prntdbl("Focus value", focval); + prntdbl("Telescope azimuth", valaz); + prntdbl("Telescope zenith distance", valzd); + prntdbl("Dome azimuth", valdaz); + prntdbl("P2 angle", valP2); + #undef prntdbl + json_object_put(jobj); // destroy jobj + sleep(1); + }while(1); + return 0; +} diff --git a/jsonbta/makefile_from_tb b/jsonbta/makefile_from_tb new file mode 100644 index 0000000..5ce518c --- /dev/null +++ b/jsonbta/makefile_from_tb @@ -0,0 +1,16 @@ +LOADLIBES = -lm -lcrypt +SRCS = bta_json.c bta_print.c ../daemon.c +CC = gcc +DEFINES = +CXX = gcc +CPPFLAGS = -Wall $(DEFINES) -I/Users/eddy/include +OBJS = $(SRCS:.c=.o) +all : bta_json client_streaming +$(OBJS): bta_json.h bta_shdata.h +bta_json : $(OBJS) + $(CC) $(CPPFLAGS) $(OBJS) $(LOADLIBES) -o bta_json +client_streaming: client_streaming.o + $(CC) $(CPPFLAGS) client_streaming.o /Users/eddy/lib/libjson.a -lm -o client_streaming +clean: + /bin/rm -f *.o *~ + diff --git a/jsonbta/manual.pdf b/jsonbta/manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..65304624d87dfd728e789c8d5e4e5ee702538450 GIT binary patch literal 242917 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 gTwGo!kB596ZGgsMP1;Auk{e!+a0iSj zDn5@H@T3Qaya?PfyGZ6@WA~V*6Q6;lc0<8wa-ov9@gBO~IhcrhkP+ zh6_9_m09b@7Yse-�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%0DYo0yQ-X`;nBdKpd+-sC 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 yb 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\tt}r|p{0.46\textwidth}<{\hfil}|c|>{\tt}c|} +\caption{Поля объектов}\label{json_head}\\ +\hline\hline +\multicolumn{1}{|m{2cm}|}{\bf Название\par\hfil поля\hfil}& \CH{\bf +Описание} & \bf Тип данных &\bf Блок\\ +\hline +\CH{\bf 1}&\CH{\bf 2}& \bf 3 & \bf 4\\ +\hline\endfirsthead +\hline +\multicolumn{4}{r}{\small(продолжение см.~на следующей странице)}\\ +\endfoot +\hline\hline\endlastfoot +\caption{Продолжение}\\ +\hline +\CH{\bf 1}&\CH{\bf 2}& \bf 3& \bf 4\\ +\hline\endhead +ACS\_BTA& Унаследованное от \texttt{bta\_print} поле, всегда \texttt{true}& +--- & \bf---\\ +M\_time& Текущее московское время& время & mtime\\ +JDate& Текущая юлианская дата (сут.)& число & sidtime\\ +S\_time& Текущее звездное время& время & sidtime\\ +Tel\_Mode& Режим работы телескопа& строка & telmode\\ +Tel\_Focus& Активный фокус телескопа & строка & telfocus\\ +ValFoc& Отсчет датчика фокуса телескопа, мм& число & telfocus\\ +Tel\_Taget& Текущая цель телескопа& строка & target\\ +P2\_Mode& Режим работы поворотного стола& строка & p2mode\\ +CurAlpha& Текущие координаты предыдущей цели ($\alpha$~-- прямое восхождение) & +время & eqcoor\\ +CurDelta& Текущие координаты предыдущей цели ($\delta$~-- склонение)& угол & +eqcoor\\ +SrcAlpha& Текущие координаты цели ($\alpha$)& время & eqcoor\\ +SrcDelta& Текущие координаты цели ($\delta$)& угол & eqcoor\\ +InpAlpha& Введенные пользователем координаты ($\alpha$)& время & eqcoor\\ +InpDelta& Введенные пользователем координаты ($\delta$)& угол & eqcoor\\ +TelAlpha& Текущие координаты телескопа ($\alpha$)& время & eqcoor\\ +TelDelta& Текущие координаты телескопа ($\delta$)& угол & eqcoor\\ +InpAzim& Введенные горизонтальные координаты ($A$~-- азимут)& угол & horcoor\\ +InpZenD& Введенные горизонтальные координаты ($Z$~-- зенитное расстояние)& +угол & horcoor\\ +CurAzim& Текущие горизонтальные координаты предыдущей цели ($A$)& угол & +horcoor\\ +CurZenD& Текущие горизонтальные координаты предыдущей цели ($Z$)& угол & +horcoor\\ +CurPA& Текущий позиционный угол предыдущей цели& угол & horcoor\\ +SrcPA& Текущий позиционный угол цели& угол & horcoor\\ +InpPA& Введенный пользователем позиционный угол& угол & horcoor\\ +TelPA& Текущий позиционный угол телескопа& угол & horcoor\\ +ValAzim& Отсчет датчика азимута& угол & valsens\\ +ValZenD& Отсчет датчика зенитного расстояния& угол & valsens\\ +ValP2& Отсчет датчика положения поворотного стола& угол & valsens\\ +ValDome& Отсчет датчика азимута купола& угол & valsens\\ +DiffAzim& Рассогласование по азимуту& угол & diff\\ +DiffZenD& Рассогласование по зенитному расстоянию& угол & diff\\ +DiffP2& Рассогласование по углу вращения поворотного стола& угол & diff\\ +DiffDome& Рассогласование по азимуту купола& угол & diff\\ +VelAzim& Текущая скорость движения телескопа по азимуту& угол & vel\\ +VelZenD& Текущая скорость движения телескопа по зенитному расстоянию& угол & +vel\\ +VelP2& Текущая скорость движения поворотного стола & угол & vel\\ +VelPA& Текущая скорость <<вращения неба>>& угол & vel\\ +VelDome& Текущая скорость движения купола& угол & vel\\ +CorrAlpha& Введенная поправка по прямому восхождению& угол & corr\\ +CorrDelta& Введенная поправка по склонению& угол & corr\\ +CorrAzim& Введенная поправка по азимуту& угол & corr\\ +CorrZenD& Введенная поправка по зенитному расстоянию& угол & corr\\ +ValTind& Температура в подкупольном, $\degr$C& число & meteo\\ +ValTmir& Температура зеркала, $\degr$C& число & meteo\\ +ValPres& Атмосферное давление, мм.рт.ст.& число & meteo\\ +ValWind& Скорость ветра, м/с& число & meteo\\ +Blast10& Время от последнего порыва ветра, превышающего 10\,м/с, секунд& число & +meteo\\ +Blast15& Время от последнего порыва ветра, превышающего 15\,м/с, секунд& число & +meteo\\ +ValHumd& Влажность воздуха, \%& число & meteo\\ +Precipt& Время, прошедшее с момента последнего выпадения осадков, секунд& +число & meteo\\ +\end{longtable} + +\section{Осуществление постоянного подключения} +\label{coding} +Для осуществления постоянного удаленного подключения к демону для +периодического получения необходимых данных, необходимо создать сокет, +подключенный к хосту \verb'tb.sao.ru' по порту \verb'12345'. + +Для запроса конкретного блока данных во время постоянного подключения, в +качестве запроса необходимо отправлять текст, указанный в строке <<Блок>> +таблицы~\ref{json_head}. + +Формирование строки запроса можно сделать одним из следующих способов: +\begin{itemize} +\item посредством перечисления названий нужных блоков через разделитель +(разделителем является пробел, амперсанд, символ табуляции или символ новой +строки); +\item посредством формирования запроса вида \verb'GET /bta_par&blocks', где +\verb'blocks'~-- запрос аналогичный предыдущему пункту; +\item посредством формирования запроса вида \verb'GET /bta_par', в этом случае +демон формирует ответ с перечислением всех блоков, а затем отключается. +\end{itemize} + +Для обработки JSON--объекта можно использовать библиотеку \verb'libjson', либо +же обрабатывать его вручную (т.к. структура объекта элементарная и +однообразная). + +Учитывая то, что мультикаст-пакеты с данными по БТА распространяются не чаще +15~раз в~секунду, не стоит делать запросы чаще 10~раз в~секунду. + +\end{document}