epics/trunk/epics_example/myexampleApp/Db
--- epics/trunk/epics_example/myexampleApp/Db/dbHybLV.db 2014-07-16 00:16:27 UTC (rev 776)
+++ epics/trunk/epics_example/myexampleApp/Db/dbHybLV.db 2014-07-16 00:16:41 UTC (rev 777)
@@ -1,37 +1,407 @@
-record(sub,SVT:lv:hyb:bot:0:dvdd:vn_sub)
+
+
+
+
+####### DVDD I_RD BOT
+
+
+record(sub,SVT:lv:hyb:bot:0:dvdd:i_rd_sub)
{
field(INAM,"subLVInit")
field(SNAM,"subLVProcess")
field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:1:dvdd:i_rd")
}
-record(ai, SVT:lv:hyb:bot:0:dvdd:vn) {
+record(ai, SVT:lv:hyb:bot:0:dvdd:i_rd) {
#field(SCAN, "5 second")
- #field(FLNK,"SVT:lv:hyb:bot:0:dvdd:vn_sub PP")
- field(INP, "SVT:lv:hyb:bot:0:dvdd:vn_sub CPP")
+ field(FLNK,"SVT:lv:hyb:bot:0:dvdd:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:0:dvdd:i_rd_sub CPP")
field(DTYP,"Soft Channel")
}
+record(sub,SVT:lv:hyb:bot:1:dvdd:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:2:dvdd:i_rd")
+}
+record(ai, SVT:lv:hyb:bot:1:dvdd:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:1:dvdd:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:1:dvdd:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
record(sub,SVT:lv:hyb:bot:2:dvdd:i_rd_sub)
{
field(INAM,"subLVInit")
field(SNAM,"subLVProcess")
field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:3:dvdd:i_rd")
}
record(ai, SVT:lv:hyb:bot:2:dvdd:i_rd) {
- field(SCAN, "5 second")
+ #field(SCAN, "5 second")
field(FLNK,"SVT:lv:hyb:bot:2:dvdd:i_rd_sub PP")
field(INP, "SVT:lv:hyb:bot:2:dvdd:i_rd_sub CPP")
field(DTYP,"Soft Channel")
}
+record(sub,SVT:lv:hyb:bot:3:dvdd:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:0:avdd:i_rd")
+}
+record(ai, SVT:lv:hyb:bot:3:dvdd:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:3:dvdd:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:3:dvdd:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+####### AVDD I_RD BOT
+
+
+record(sub,SVT:lv:hyb:bot:0:avdd:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:1:avdd:i_rd")
+}
+
+record(ai, SVT:lv:hyb:bot:0:avdd:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:0:avdd:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:0:avdd:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:1:avdd:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:2:avdd:i_rd")
+}
+
+record(ai, SVT:lv:hyb:bot:1:avdd:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:1:avdd:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:1:avdd:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:2:avdd:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:3:avdd:i_rd")
+}
+
+record(ai, SVT:lv:hyb:bot:2:avdd:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:2:avdd:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:2:avdd:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:3:avdd:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:0:v125:i_rd")
+}
+
+record(ai, SVT:lv:hyb:bot:3:avdd:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:3:avdd:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:3:avdd:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+
+
+####### V125 I_RD BOT
+
+
+record(sub,SVT:lv:hyb:bot:0:v125:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:1:v125:i_rd")
+}
+
+record(ai, SVT:lv:hyb:bot:0:v125:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:0:v125:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:0:v125:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:1:v125:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:2:v125:i_rd")
+}
+
+record(ai, SVT:lv:hyb:bot:1:v125:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:1:v125:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:1:v125:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:2:v125:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:3:v125:i_rd")
+}
+
+record(ai, SVT:lv:hyb:bot:2:v125:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:2:v125:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:2:v125:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:3:v125:i_rd_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:0:dvdd:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:3:v125:i_rd) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:3:v125:i_rd_sub PP")
+ field(INP, "SVT:lv:hyb:bot:3:v125:i_rd_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+
+
+
+
+####### DVDD VN BOT
+
+
+record(sub,SVT:lv:hyb:bot:0:dvdd:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:1:dvdd:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:0:dvdd:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:0:dvdd:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:0:dvdd:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:1:dvdd:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:2:dvdd:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:1:dvdd:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:1:dvdd:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:1:dvdd:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:2:dvdd:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:3:dvdd:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:2:dvdd:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:2:dvdd:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:2:dvdd:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:3:dvdd:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:0:avdd:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:3:dvdd:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:3:dvdd:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:3:dvdd:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+
+
+
+####### AVDD VN BOT
+
+
+record(sub,SVT:lv:hyb:bot:0:avdd:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:1:avdd:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:0:avdd:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:0:avdd:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:0:avdd:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:1:avdd:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:2:avdd:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:1:avdd:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:1:avdd:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:1:avdd:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:2:avdd:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:3:avdd:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:2:avdd:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:2:avdd:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:2:avdd:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:3:avdd:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:0:v125:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:3:avdd:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:3:avdd:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:3:avdd:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+
+
+
+
+####### V125 VN BOT
+
+
+record(sub,SVT:lv:hyb:bot:0:v125:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:1:v125:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:0:v125:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:0:v125:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:0:v125:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:1:v125:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:2:v125:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:1:v125:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:1:v125:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:1:v125:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:2:v125:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+ field(FLNK,"SVT:lv:hyb:bot:3:v125:vn")
+}
+
+record(ai, SVT:lv:hyb:bot:2:v125:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:2:v125:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:2:v125:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+record(sub,SVT:lv:hyb:bot:3:v125:vn_sub)
+{
+ field(INAM,"subLVInit")
+ field(SNAM,"subLVProcess")
+ field(SCAN,"Passive")
+}
+
+record(ai, SVT:lv:hyb:bot:3:v125:vn) {
+ #field(SCAN, "5 second")
+ field(FLNK,"SVT:lv:hyb:bot:3:v125:vn_sub PP")
+ field(INP, "SVT:lv:hyb:bot:3:v125:vn_sub CPP")
+ field(DTYP,"Soft Channel")
+}
+
+
+
+
+
+
+
+
record(sub,SVT:lv:hyb:bot:0:dvdd:v_set_sub)
{
field(INAM,"subLVInit")
epics/trunk/epics_example/myexampleApp/src
--- epics/trunk/epics_example/myexampleApp/src/client_util.c 2014-07-16 00:16:27 UTC (rev 776)
+++ epics/trunk/epics_example/myexampleApp/src/client_util.c 2014-07-16 00:16:41 UTC (rev 777)
@@ -10,8 +10,13 @@
xmlDoc* doc = NULL;
xmlNode* xml_root = NULL;
+char* strToUpper( char* s )
+ {
+ char* p = s;
+ while (*p = toupper( *p )) p++;
+ return s;
+ }
-
double extractTempValFromString(char value[]) {
double t = 0.0;
char* p_start = strstr(value,"C (");
@@ -301,9 +306,9 @@
xmlCleanupParser();
}
-void readXadcT(int feb_id, char value[],const unsigned int MAX) {
- char tag[] = "system:status:FrontEndTestFpga:FebCore:AxiXadc:Temperature";
- if(client_util_debug!=0) printf("readAxiXadcT: get DOM\n");
+
+void getXMLValue(char tag[], char value[],const unsigned int MAX) {
+ if(client_util_debug!=0) printf("getXMLValue for tag: %s\n",tag);
if(doc==NULL) {
printf("couldn't get xml document %p\n",doc);
return;
@@ -314,38 +319,35 @@
}
if(client_util_debug!=0) printf("retrieve value\n");
retrieveValue(doc,xml_root,tag,value,MAX);
- if(client_util_debug!=0) printf("free the xml\n");
- //xmlFreeDoc(document);
- //xmlCleanupParser();
+ if(client_util_debug!=0) printf("retrieve value done\n");
}
-void readHybridI(int sockfd,int feb_id, int hyb_id,char ch_name[], char value[],const unsigned int MAX) {
+
+void readFebT(int feb_id, char value[],const unsigned int MAX) {
+ char tag[] = "system:status:FrontEndTestFpga:FebCore:AxiXadc:Temperature";
+ getXMLValue(tag,value,MAX);
+}
+
+void readHybridI(int feb_id, int hyb_id,char ch_name[], char value[],const unsigned int MAX) {
char tag[256];
- sprintf(tag,"system:status:FrontEndTestFpga:FebCore:PowerMonitor:Hybrid%d_%s_Current",hyb_id,ch_name);
- xmlDoc* document = NULL;
- xmlNode* root = NULL;
- int* p_sockfd = &sockfd;
- if(client_util_debug!=0) printf("readHybridCurrent: get DOM\n");
- getSystemDOM(p_sockfd,&document,&root);
- if(document==NULL) {
- printf("couldn't get xml document %p\n",document);
- return;
- }
- if(root==NULL) {
- printf("couldn't get root from document\n");
- document=NULL;
- return;
- }
- if(client_util_debug!=0) printf("retrieve value\n");
- retrieveValue(document,root,tag,value,MAX);
- if(client_util_debug!=0) printf("free the xml\n");
- xmlFreeDoc(document);
- xmlCleanupParser();
+ sprintf(tag,"system:status:FrontEndTestFpga:FebCore:PowerMonitor:Hybrid%d_%s_Current",hyb_id,strToUpper(ch_name));
+ getXMLValue(tag,value,MAX);
}
+void readHybridT(int feb_id, int hyb_id,char ch_name[], char value[],const unsigned int MAX) {
+ char tag[256];
+ sprintf(tag,"system:status:FrontEndTestFpga:FebCore:PowerMonitor:Hybrid%d_%s_Current",hyb_id,strToUpper(ch_name));
+ getXMLValue(tag,value,MAX);
+}
+void readHybridV(int feb_id, int hyb_id,char ch_name[], char ch_pos[], char value[],const unsigned int MAX) {
+ char tag[256];
+ sprintf(tag,"system:status:FrontEndTestFpga:FebCore:PowerMonitor:Hybrid%d_%s_%s",hyb_id,ch_name,strToUpper(ch_pos));
+ getXMLValue(tag,value,MAX);
+}
+
xmlNode* retrieveElement(xmlDoc* doc, xmlNode* node, char* tag) {
xmlNode* cur_node = NULL;
xmlNode* found_it = NULL;
@@ -559,7 +561,7 @@
void read_system_xml_string4(int socketfd) {
- const float wait_interval_usec = 100000;
+ //const float wait_interval_usec = 100000;
char* buf = NULL;
char* buf_more = NULL;
int buf_len = 0;
epics/trunk/epics_example/myexampleApp/src
--- epics/trunk/epics_example/myexampleApp/src/dbSubExample.c 2014-07-16 00:16:27 UTC (rev 776)
+++ epics/trunk/epics_example/myexampleApp/src/dbSubExample.c 2014-07-16 00:16:41 UTC (rev 777)
@@ -10,7 +10,7 @@
int mySubDebug = 0;
char *hostName = "localhost";// "134.79.229.141";
-int port = 8090;
+int port = 8091;
int sockfd = -1;
int counter = 0;
const int BUF_SIZE = 256;
@@ -46,175 +46,75 @@
-static void readAxiXadcTemp(subRecord* precord, int fpga_id)
-{
- if(mySubDebug) {
- printf("Record %s called readAxiXadcTemp for fgpa_id=%d\n",precord->name,fpga_id);
- }
- //set to default
- precord->val = def_AxiXadcTemp;
- sockfd = open_socket(hostName,port);
- if(sockfd<0) {
- printf("ERROR could not open socket %d for host %s in readAxiXadcTemp\n",port,hostName);
- return;
- }
- if (mySubDebug) {
- printf("Opened TCP/IP socket %d\n",sockfd);
- }
- char value[BUF_SIZE];
- memset(value,0,BUF_SIZE);
- if (mySubDebug) {
- printf("Read Config\n");
- }
- writeReadConfig(sockfd);
- readAxiXadcT(sockfd,fpga_id,value,BUF_SIZE);
- if (mySubDebug) {
- printf("Got value=\"%s\"\n",value);
- }
- if(strlen(value)>0) {
- precord->val = atof(value);
- if (mySubDebug) {
- printf("precord-val is now %f \n",precord->val);
- }
- }
- if (mySubDebug) {
- printf("close socket\n");
- }
- close_socket(sockfd);
-}
-static void readFebTemp(subRecord *precord,char id[],char ch_name[]) {
-
- if(mySubDebug) {
- printf("Record %s called readFebTemp %s for id=%s\n",precord->name,ch_name,id);
- }
-
- precord->val=def_AxiXadcTemp;
- char* p_end = id;
- long int li_id = strtol(id,&p_end,0);
- if(p_end!=id) {
- if(li_id>=0 && li_id<10) {
- if(strcmp(ch_name,"axixadc")==0) {
- //readAxiXadcTemp(precord,(int)li_id);
- char value[BUF_SIZE];
- memset(value,0,BUF_SIZE);
- readXadcT((int)li_id,value,BUF_SIZE);
- if (mySubDebug) {
- printf("Got value=\"%s\"\n",value);
- }
- if(strlen(value)>0) {
- precord->val = atof(value);
- if (mySubDebug) {
- printf("precord-val is now %f \n",precord->val);
- }
- }
- } else {
- printf("Invalid FEB ch_name %s \n",ch_name);
- }
- } else {
- printf("Invalid FEB id %s (%ld) \n",id,li_id);
- }
- } else {
- printf("Invalid conversion of FEB id %s \n",id);
- }
-}
-
-
-
-
-
-static void readHybridVoltageNear(subRecord* precord, char half[],char id[],char ch_name[])
+ static void readHybrid(subRecord* precord,char action[], char half[],int id, int feb_id, char ch_name[])
{
+ double constant;
if(mySubDebug) {
- printf("Record %s called readHybridVoltageNear for half=%s id=%s ch_name=%s\n",precord->name,half,id,ch_name);
+ printf("Record %s called readHybrid %s for half=%s id=%d ch_name=%s\n",precord->name,action,half,id,ch_name);
}
//set to default
- precord->val = def_hyb_v;
-
- //sockfd = open_socket("134.79.229.141",8090);
- sockfd = open_socket(hostName,port);
- if(sockfd<0) {
- printf("ERROR could not open socket %s:%d in readHybridVoltage\n",hostName,port);
- return;
- }
- if (mySubDebug) {
- printf("Opened TCP/IP socket %d\n",sockfd);
- }
+ precord->val = def_hyb_i;
+
char value[BUF_SIZE];
memset(value,0,BUF_SIZE);
- if (mySubDebug) {
- printf("Read CalDelay\n");
+ constant = 1.;
+ if(strcmp(action,"i_rd_sub")==0) {
+ readHybridI(feb_id, id, ch_name, value, BUF_SIZE);
+ constant = 1e3;
+ }
+ else if(strcmp(action,"t_rd_sub")==0) {
+ readHybridT(feb_id, id, ch_name, value, BUF_SIZE);
+ }
+ else if(strcmp(action,"vn_sub")==0) {
+ readHybridV(feb_id, id, ch_name, "NEAR", value, BUF_SIZE);
+ }
+ else if(strcmp(action,"v_set_sub")==0) {
+ // need to move this to a write function?
+ printf("ERROR: need to move the set voltage function!\n");
+ exit(1);
}
- writeReadConfig(sockfd);
- readCalDelay(&sockfd,value,BUF_SIZE);
if (mySubDebug) {
printf("Got value=\"%s\"\n",value);
}
if(strlen(value)>0) {
- precord->val = atof(value);
+ precord->val = atof(value)*constant;
if (mySubDebug) {
printf("precord-val is now %f \n",precord->val);
}
}
- if (mySubDebug) {
- printf("close socket\n");
- }
- close_socket(sockfd);
}
-
-
-static void readHybridCurrent(subRecord* precord, char half[],char id[],char ch_name[])
+ static void readFeb(subRecord* precord,char action[], int feb_id, char ch_name[])
{
if(mySubDebug) {
- printf("Record %s called readHybridCurrent for half=%s id=%s ch_name=%s\n",precord->name,half,id,ch_name);
+ printf("Record %s called readFeb %s feb_id=%d ch_name=%s\n",precord->name,action,feb_id,ch_name);
}
- // use default value until the DAQ map can be added
- int feb_id;
- feb_id = 0;
-
//set to default
- precord->val = def_hyb_i;
-
- //sockfd = open_socket("134.79.229.141",8090);
- sockfd = open_socket(hostName,port);
- if(sockfd<0) {
- printf("ERROR could not open socket %s:%d in readHybridCurrent\n",hostName,port);
- return;
- }
- if (mySubDebug) {
- printf("Opened TCP/IP socket %d\n",sockfd);
- }
+ precord->val=def_AxiXadcTemp;
+
char value[BUF_SIZE];
memset(value,0,BUF_SIZE);
- writeReadConfig(sockfd);
- char* p_end = id;
- long int li_id = strtol(id,&p_end,0);
- if(p_end!=id) {
- if(feb_id==0) {
- if(li_id>=0 && li_id<18) {
- if(strcmp(ch_name,"dvdd")==0) {
- readHybridI(sockfd,feb_id, (int)li_id, "DVDD", value, BUF_SIZE);
- } else {
- printf("Invalid hybrid ch_name %s \n",ch_name);
- }
- } else {
- printf("Invalid Hyb id %s (%ld) \n",id,li_id);
- }
+ if(strcmp(action,"t_rd_sub")==0) {
+ if(strcmp(ch_name,"axixadc") ==0 ) {
+ readFebT(feb_id, value, BUF_SIZE);
} else {
- printf("Invalid FEB id %d \n",feb_id);
+ printf("No such ch_name %s implemented for readFeb!\n",ch_name);
+ return;
}
- } else {
- printf("Invalid conversion of hyb id %s \n",id);
- }
+ }
+ else {
+ printf("No such action %s implemented for readFeb!\n",action);
+ return;
+ }
if (mySubDebug) {
printf("Got value=\"%s\"\n",value);
}
@@ -224,10 +124,6 @@
printf("precord-val is now %f \n",precord->val);
}
}
- if (mySubDebug) {
- printf("close socket\n");
- }
- close_socket(sockfd);
}
@@ -238,8 +134,8 @@
if(mySubDebug) {
printf("Record %s called writeHybridVoltage to val=%f for half=%s id=%s ch_name=%s\n",precord->name,precord->val,half,id,ch_name);
}
-
-
+
+
sockfd = open_socket(hostName,port);
if(sockfd<0) {
printf("ERROR could not open socket in readHybridVoltageNear\n");
@@ -279,6 +175,7 @@
printf("Record %s called subLVProcess(%p)\n", precord->name, (void*) precord);
}
//SVT:lv:hyb:bot:0:dvdd:vn_sub
+ int feb_id;
char type[BUF_SIZE];
char board_type[BUF_SIZE];
char half[BUF_SIZE];
@@ -300,91 +197,144 @@
printf("ERROR this type is not valid \"%s\"\n",type);
return 0;
}
-
+
+
+ // use default value until the DAQ map can be added
+ if(strcmp(half,"bot")==0) {
+ feb_id = 0;
+ } else {
+ printf("ERROR only bot half can be used. Need to implement DAQ map!\n");
+ return 0;
+ }
+
if(strcmp(board_type,"hyb")==0) {
- if(strcmp(action,"vn_sub")==0) {
- readHybridVoltageNear(precord,half,id,ch_name);
+ if(strcmp(ch_name,"dvdd")!=0 && strcmp(ch_name,"avdd")!=0 && strcmp(ch_name,"v125")!=0) {
+ printf("ERROR wrong option for hybrid ch: %s\n",ch_name);
+ return 0;
}
- else if(strcmp(action,"v_set_sub")==0) {
- writeHybridVoltage(precord,half,id,ch_name);
+ if(strcmp(action,"vn_sub")!=0 || strcmp(action,"i_rd_sub")!=0 || strcmp(action,"v_set_sub")!=0) {
+ printf("ERROR this hybrid action type is not valid \"%s\"\n",action);
+ return 0;
}
- else if(strcmp(action,"i_rd_sub")==0) {
- readHybridCurrent(precord,half,id,ch_name);
+ char* p_end = id;
+ long int li_id = strtol(id,&p_end,0);
+ if(p_end!=id) {
+ if(li_id<0 && li_id>17) {
+ printf("ERROR this hybrid id %ld is not valid\n",li_id);
+ return 0;
+ }
} else {
- printf("ERROR this action \"%s\" is not defined yet\n",action);
+ printf("ERROR converting this hybrid id %s is not valid\n",id);
+ return 0;
}
+ readHybrid(precord,action,half,(int)li_id,feb_id,ch_name);
}
else if(strcmp(board_type,"feb")==0) {
- printf("ERROR this board type \"%s\" is not implemented yet\n",board_type);
- }
+ printf("No LV implementation exists for feb\n");
+ return 0;
+ }
else {
printf("ERROR this board type is not valid \"%s\"\n",board_type);
+ return 0;
}
+
+
return 0;
}
+
static long subTempProcess(subRecord *precord) {
if (mySubDebug) {
printf("Record %s called subTempProcess(%p)\n", precord->name, (void*) precord);
}
-
- //record(sub,SVT:lv:fe:0:axixadc:t_rd_sub)
+ //SVT:temp:hyb:bot:0:temp1:t_rd_sub
+ //SVT:temp:hyb:bot:0:temp2:t_rd_sub
+ //SVT:temp:fe:0:axixadc:t_rd_sub)
+ int feb_id;
char type[BUF_SIZE];
char board_type[BUF_SIZE];
+ char half[BUF_SIZE];
+ char id[BUF_SIZE];
+ char ch_name[BUF_SIZE];
+ char action[BUF_SIZE];
getType(precord->name,type,BUF_SIZE);
getBoardType(precord->name,board_type,BUF_SIZE);
+ getHalf(precord->name,half,BUF_SIZE);
+ getId(precord->name,id,BUF_SIZE);
+ getChName(precord->name,ch_name,BUF_SIZE);
+ getAction(precord->name,action,BUF_SIZE);
if (mySubDebug) {
printf("Record %s has type %s board type \"%s\"\n", precord->name, type,board_type);
}
- if(strcmp(type,"lv")!=0) {
+ if(strcmp(type,"temp")!=0) {
printf("ERROR this type is not valid \"%s\"\n",type);
return 0;
}
- char id[BUF_SIZE];
- char ch_name[BUF_SIZE];
- char action[BUF_SIZE];
+ if(strcmp(action,"t_rd_sub")!=0) {
+ printf("ERROR this action type is not valid \"%s\"\n",action);
+ return 0;
+ }
+
+ // use default value until the DAQ map can be added
+ if(strcmp(half,"bot")==0) {
+ feb_id = 0;
+ } else {
+ printf("ERROR only bot half can be used. Need to implement DAQ map!\n");
+ return 0;
+ }
+
if(strcmp(board_type,"hyb")==0) {
-
- char half[BUF_SIZE];
- getHalf(precord->name,half,BUF_SIZE);
- getId(precord->name,id,BUF_SIZE);
- getChName(precord->name,ch_name,BUF_SIZE);
- getAction(precord->name,action,BUF_SIZE);
-
- if(strcmp(action,"t_rd_sub")==0) {
- //readHybridVoltageNear(precord,half,id,ch_name);
+ if(strcmp(ch_name,"temp1")!=0 && strcmp(ch_name,"temp2")!=0) {
+ printf("ERROR wrong option for hybrid ch: %s\n",ch_name);
+ return 0;
+ }
+ char* p_end = id;
+ long int li_id = strtol(id,&p_end,0);
+ if(p_end!=id) {
+ if(li_id<0 && li_id>17) {
+ printf("ERROR this hybrid id %ld is not valid\n",li_id);
+ return 0;
+ }
} else {
- printf("ERROR this action \"%s\" is not defined yet\n",action);
+ printf("ERROR converting this hybrid id %s is not valid\n",id);
+ return 0;
}
- }
- else if(strcmp(board_type,"fe")==0) {
- getFebId(precord->name,id,BUF_SIZE);
- getFebChName(precord->name,ch_name,BUF_SIZE);
- getFebAction(precord->name,action,BUF_SIZE);
+ readHybrid(precord,action,half,(int)li_id,feb_id,ch_name);
- if(strcmp(action,"t_rd_sub")==0) {
- readFebTemp(precord,id,ch_name);
- } else {
- printf("ERROR this action \"%s\" is not defined yet\n",action);
- }
}
+ else if(strcmp(board_type,"feb")==0) {
+ if(strcmp(ch_name,"axixadc") ) {
+ printf("ERROR wrong option for hybrid ch: %s\n",ch_name);
+ return 0;
+ }
+
+ readFeb(precord,action,feb_id,ch_name);
+
+ //SVT:temp:fe:0:axixadc:t_rd_sub)
+
+ }
else {
printf("ERROR this board type is not valid \"%s\"\n",board_type);
+ return 0;
}
+
+
return 0;
}
+
+
static long subPollProcess(subRecord *precord) {
if (mySubDebug) {
printf("Record %s called subPollProcess(%p)\n", precord->name, (void*) precord);