iPDC-suite/PMUSimulator/ServerFunction.h

117 lines
3.6 KiB
C
Raw Permalink Normal View History

2022-07-12 01:08:04 +05:30
/* -----------------------------------------------------------------------------
* ServerFunction.h
*
* PMU Simulator - Phasor Measurement Unit Simulator
*
* Copyright (C) 2011-2012 Nitesh Pandit
* Copyright (C) 2011-2012 Kedar V. Khandeparkar
*
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Authors:
* Nitesh Pandit <panditnitesh@gmail.com>
* Kedar V. Khandeparkar <kedar.khandeparkar@gmail.com>
*
* ----------------------------------------------------------------------------- */
#include <stdio.h>
#include <pthread.h>
#include <netinet/in.h>
#define BACKLOG 10 /* How many pending connections queue will hold */
#define MAX_STRING_SIZE 5000
/* ---------------------------------------------------------------- */
/* global variables */
/* ---------------------------------------------------------------- */
int dataFileVar, cfg_crc_error;
int temp_pahsor_type[50], temp_analog_type[50];
long int temp_PHUNIT_val[50], temp_ANUNIT_val[50];
char pmuFolderPath[200];
char pmuFilePath[200];
unsigned char cline[MAX_STRING_SIZE];
unsigned char hdrline[MAX_STRING_SIZE];
unsigned char data_frm[MAX_STRING_SIZE], df_temp[2], df_temp_1[4];
struct sockaddr_in UDP_my_addr,TCP_my_addr; /* my address information */
struct sockaddr_in UDP_addr,TCP_addr; /* connectors address information */
struct sigaction sa;
int UDP_sockfd,TCP_sockfd; /* socket descriptors */
int UDP_addr_len,TCP_sin_size, numbytes;
pthread_t UDP_thread,TCP_thread,DATA_thread;;
FILE *fp_DataFile;
uint16_t df_chk;
//pthread_mutex_t mutex_pdc_object; /* To lock cfg data objects */
/* ------------------------------------------------------------------ */
/* Global Datastructure */
/* ------------------------------------------------------------------ */
struct PDC_Details {
int port;
char ip[16];
char protocol[4];
int sockfd;
int tcpup;
int STAT_change; //0-no change, 1-changed
int pmu_cfgsent; //0- not sent, 1- sent
int data_transmission; //0 maens ON, 1 maeans OFF
int cmd_received; ////0 maens Not-received, 1 maeans received
int address_set;
pthread_t thread_id;
struct sockaddr_in pdc_addr;
struct PDC_Details *next;
struct PDC_Details *prev;
}*PDCfirst,*PDClast;
/* ------------------------------------------------------------------ */
/* Function prototypes */
/* ------------------------------------------------------------------ */
void frame_size();
void generate_data_frame();
void* SEND_DATA();
void PDC_MATCH(int proto, int newfd);
void* UDP_PMU();
void* TCP_CONNECTIONS(void * temp_pdc);
void remove_tcp_node(void * node);
void* TCP_PMU();
void start_server();
int get_header_frame();
void SIGUSR1_handler(int); /* Signal handler */
void SIGUSR2_handler(int); /* Signal handler */
/**************************************** End of File *******************************************************/