Skip to content
Snippets Groups Projects
Select Git revision
  • backward_ecal_cleanup
  • master default protected
  • drich-two-mirrors
  • 148-hcal-geometry-development
  • 144-irt-geometry
  • deathvalley-acts-dd4hep-plugin
  • canyonlands-acts-dd4hep-plugin
  • adjust-barrel-emcalo-geometry
  • 148-hcal-geometry-development-wdconinc-suggestion
  • WorkingGemTrd_MLmodel_andAnalysis
  • 144-test-small-sensor-overlap
  • 59-detailed-forward-gem-trd
  • vdesai-master-patch-09582
  • mriganka-branch02
  • zdemirog-master-patch-64142
  • weibin-master-patch-37475
  • vanekjan-master-patch-74522
  • lkosarzew-master-patch-25029
  • swapneshkhade-master-patch-16755
  • mlavinsky-master-patch-10431
  • niveditharam-master-patch-05822
  • deathvalley-v1.1
  • deathvalley-v1.0-1.5T
  • deathvalley-v1.0
  • canyonlands-v2.2
  • canyonlands-v2.1
  • canyonlands-v2.0
  • canyonlands-v1.2
  • canyonlands-v1.1
  • acadia-v2.1
  • canyonlands-v1.0
  • acadia-v2.0
  • acadia-v1.1
  • acadia-v1.0
  • acadia-v1.0-alpha
  • v0.2.0
  • v0.1.0
37 results

makeplot.C

Blame
  • fpga_io.c 2.68 KiB
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <netdb.h>
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <errno.h>
    #include <arpa/inet.h> 
    #include "fpga_io.h"
    
    int sockfd_reg = 0;
    int sockfd_event = 0;
    
    typedef struct
    {
    	int len;
    	int type;
    	int wrcnt;
    	int addr;
    	int flags;
    	int vals[1];
    } write_struct;
    
    typedef struct
    {
    	int len;
    	int type;
    	int rdcnt;
    	int addr;
    	int flags;
    } read_struct;
    
    typedef struct
    {
    	int len;
    	int type;
    	int rdcnt;
    	int data[1];
    } read_rsp_struct;
    
    void rich_write32(void *addr, int val)
    {
    	write_struct ws;
    
    	ws.len = 16;
    	ws.type = 4;
    	ws.wrcnt = 1;
    	ws.addr = (int)((long)addr);
    	ws.flags = 0;
    	ws.vals[0] = val;
    	write(sockfd_reg, &ws, sizeof(ws));
    }
    
    unsigned int rich_read32(void *addr)
    {
    	read_struct rs;
    	read_rsp_struct rs_rsp;
    	int len;
    	
    	rs.len = 12;
    	rs.type = 3;
    	rs.rdcnt = 1;
    	rs.addr = (int)((long)addr);
    	rs.flags = 0;
    	write(sockfd_reg, &rs, sizeof(rs));
    	
    	len = read(sockfd_reg, &rs_rsp, sizeof(rs_rsp));
    	if(len != sizeof(rs_rsp))
    		printf("Error in %s: socket read failed...\n", __FUNCTION__);
    	
    	return rs_rsp.data[0];
    }
    
    void rich_read32_n(int n, void *addr, unsigned int *buf)
    {
    	read_struct rs;
    	read_rsp_struct rs_rsp;
    	int len, i;
    	
    	for(i = 0; i < n; i++)
    	{
    		rs.len = 12;
    		rs.type = 3;
    		rs.rdcnt = 1;
    		rs.addr = (int)((long)addr);
    		rs.flags = 0;
    		write(sockfd_reg, &rs, sizeof(rs));
    	}
    	
    	for(i = 0; i < n; i++)
    	{
    		len = read(sockfd_reg, &rs_rsp, sizeof(rs_rsp));
    		if(len != sizeof(rs_rsp))
    			printf("Error in %s: socket read failed...\n", __FUNCTION__);
    		
    		buf[i] = rs_rsp.data[0];
    	}
    }
    
    int open_socket(int port)
    {
    	struct sockaddr_in serv_addr;
    	int sockfd = 0;
    	
    	if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
    	{
    		printf("\n Error : Could not create socket \n");
    		exit(1);
    	}
    	memset(&serv_addr, '0', sizeof(serv_addr)); 
    
    	serv_addr.sin_family = AF_INET;
    	serv_addr.sin_port = htons(port);
    
    	if(inet_pton(AF_INET, FPGA_IP_ADDR, &serv_addr.sin_addr)<=0)
    	{
    		printf("\n inet_pton error occured\n");
    		exit(1);
    	} 
    
    	if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
    	{
    		printf("\n Error : Connect Failed \n");
    		exit(1);
    	}
    	return sockfd;
    }
    
    void open_register_socket()
    {
    	int n, val;
    	
    	sockfd_reg = open_socket(6102);
    
    	/* Send endian test header */
    	val = 0x12345678;
    	write(sockfd_reg, &val, 4);
    	
    	val = 0;
    	n = read(sockfd_reg, &val, 4);
    	printf("n = %d, val = 0x%08X\n", n, val);
    }
    
    void open_event_socket()
    {
      sockfd_event = open_socket(6103);
    }
    
    void close_register_socket()
    {
      if(sockfd_reg)
      {
        close(sockfd_reg);
        sockfd_reg = 0;
      }
    }
    
    void close_event_socket()
    {
      if(sockfd_event)
      {
        close(sockfd_event);
        sockfd_event = 0;
      }
    }