long epicsShareAPI dbtr(const char *pname) { DBADDR addr; long status; struct dbCommon *precord; if (!pname || !*pname) { printf("Usage: dbtr \"pv name\"\n"); return 1; } if (nameToAddr(pname, &addr)) return -1; precord = (struct dbCommon*)addr.precord; if (precord->pact) { printf("record active\n"); return 1; } dbScanLock(precord); status = dbProcess(precord); dbScanUnlock(precord); if (status) recGblRecordError(status, precord, "dbtr(dbProcess)"); dbpr(pname, 3); return 0; }
long dbpf(const char *pname,const char *pvalue) { DBADDR addr; long status; short dbrType; size_t n = 1; if (!pname || !*pname || !pvalue) { printf("Usage: dbpf \"pv name\", \"value\"\n"); return 1; } if (nameToAddr(pname, &addr)) return -1; if (addr.no_elements > 1 && (addr.dbr_field_type == DBR_CHAR || addr.dbr_field_type == DBR_UCHAR)) { dbrType = addr.dbr_field_type; n = strlen(pvalue) + 1; } else { dbrType = DBR_STRING; } status = dbPutField(&addr, dbrType, pvalue, (long) n); dbgf(pname); return status; }
long epicsShareAPI dbpr(const char *pname,int interest_level) { static TAB_BUFFER msg_Buff; TAB_BUFFER *pMsgBuff = &msg_Buff; DBADDR addr; char *pmsg; int tab_size = 20; if (!pname || !*pname) { printf("Usage: dbpr \"pv name\", level\n"); return 1; } if (nameToAddr(pname, &addr)) return -1; pmsg = pMsgBuff->message; if (dbpr_report(pname, &addr, interest_level, pMsgBuff, tab_size)) return 1; pmsg[0] = '\0'; dbpr_msgOut(pMsgBuff, tab_size); return 0; }
void sqResolverStartNameLookup(char *hostName, sqInt nameSize) { int len= (nameSize < MAXHOSTNAMELEN) ? nameSize : MAXHOSTNAMELEN; memcpy(lastName, hostName, len); lastName[len]= lastError= 0; FPRINTF((stderr, "name lookup %s\n", lastName)); lastAddr= nameToAddr(lastName); /* we're done before we even started */ interpreterProxy->signalSemaphoreWithIndex(resolverSema); }
sqInt sqNetworkInit(sqInt resolverSemaIndex) { if (0 != thisNetSession) return 0; /* already initialised */ gethostname(localHostName, MAXHOSTNAMELEN); localHostAddress= nameToAddr(localHostName); thisNetSession= clock() + time(0); if (0 == thisNetSession) thisNetSession= 1; /* 0 => uninitialised */ resolverSema= resolverSemaIndex; return 0; }
long epicsShareAPI dba(const char*pname) { DBADDR addr; if (!pname || !*pname) { printf("Usage: dba \"pv name\"\n"); return 1; } if (nameToAddr(pname, &addr)) return -1; printDbAddr(&addr); return 0; }
long epicsShareAPI dbgf(const char *pname) { /* declare buffer long just to ensure correct alignment */ long buffer[100]; long *pbuffer=&buffer[0]; DBADDR addr; long options = 0; long no_elements; static TAB_BUFFER msg_Buff; if (!pname || !*pname) { printf("Usage: dbgf \"pv name\"\n"); return 1; } if (nameToAddr(pname, &addr)) return -1; no_elements = MIN(addr.no_elements, sizeof(buffer)/addr.field_size); if (addr.dbr_field_type == DBR_ENUM) { long status = dbGetField(&addr, DBR_STRING, pbuffer, &options, &no_elements, NULL); printBuffer(status, DBR_STRING, pbuffer, 0L, 0L, no_elements, &msg_Buff, 10); } else { long status = dbGetField(&addr, addr.dbr_field_type, pbuffer, &options, &no_elements, NULL); printBuffer(status, addr.dbr_field_type, pbuffer, 0L, 0L, no_elements, &msg_Buff, 10); } msg_Buff.message[0] = '\0'; dbpr_msgOut(&msg_Buff, 10); return 0; }
long epicsShareAPI dbpf(const char *pname,const char *pvalue) { DBADDR addr; long status; short dbrType; long n = 1; if (!pname || !*pname || !pvalue) { printf("Usage: dbpf \"pv name\", \"value\"\n"); return 1; } if (nameToAddr(pname, &addr)) return -1; if (addr.no_elements > 1 && (addr.dbr_field_type == DBR_CHAR || addr.dbr_field_type == DBR_UCHAR)) { dbrType = addr.dbr_field_type; n = strlen(pvalue) + 1; } else { dbrType = DBR_STRING; } status = dbPutField(&addr, dbrType, pvalue, n); if (status) { if (status == -1) printf("dbpf: Value conversion from %s to %s failed\n", dbr[dbrType], dbf[addr.field_type]); else errMessage(status,"- dbPutField error\n"); return status; } return dbgf(pname); }
long epicsShareAPI dbtpf(const char *pname, const char *pvalue) { /* declare buffer long just to ensure correct alignment */ long buffer[100]; long *pbuffer = buffer; DBADDR addr; long status = 0; long options, no_elements; char *pend; long val_long; int validLong; unsigned long val_ulong; int validULong; int valid = 1; int put_type; epicsFloat32 fvalue; epicsFloat64 dvalue; static TAB_BUFFER msg_Buff; TAB_BUFFER *pMsgBuff = &msg_Buff; char *pmsg = pMsgBuff->message; int tab_size = 10; if (!pname || !*pname || !pvalue) { printf("Usage: dbtpf \"pv name\", \"value\"\n"); return 1; } if (nameToAddr(pname, &addr)) return -1; val_long = strtol(pvalue, &pend, 10); validLong = (*pend == 0); val_ulong = strtoul(pvalue, &pend, 10); validULong = (*pend == 0); for (put_type = DBR_STRING; put_type <= DBF_ENUM; put_type++) { switch (put_type) { case DBR_STRING: status = dbPutField(&addr, put_type, pvalue, 1L); break; case DBR_CHAR: if ((valid = validLong)) { epicsInt8 val_i8 = (epicsInt8)val_long; status = dbPutField(&addr, put_type, &val_i8, 1L); } break; case DBR_UCHAR: if ((valid = validULong)) { epicsUInt8 val_u8 = (epicsUInt8)val_ulong; status = dbPutField(&addr, put_type, &val_u8, 1L); } break; case DBR_SHORT: if ((valid = validLong)) { epicsInt16 val_i16 = val_long; status = dbPutField(&addr, put_type, &val_i16,1L); } break; case DBR_USHORT: if ((valid = validULong)) { epicsUInt16 val_u16 = val_ulong; status = dbPutField(&addr, put_type, &val_u16, 1L); } break; case DBR_LONG: if ((valid = validLong)) { epicsInt32 val_i32 = val_long; status = dbPutField(&addr, put_type,&val_i32,1L); } break; case DBR_ULONG: if ((valid = validULong)) { epicsUInt32 val_u32 = val_ulong; status = dbPutField(&addr, put_type, &val_u32, 1L); } break; case DBR_FLOAT: if ((valid = epicsScanFloat(pvalue, &fvalue) == 1)) status = dbPutField(&addr, put_type, &fvalue, 1L); break; case DBR_DOUBLE: if ((valid = epicsScanDouble(pvalue, &dvalue) == 1)) status = dbPutField(&addr, put_type, &dvalue, 1L); break; case DBR_ENUM: if ((valid = validULong)) { epicsEnum16 val_e16 = val_ulong; status = dbPutField(&addr, put_type, &val_e16, 1L); } break; } if (valid) { if (status) { printf("Put as DBR_%s Failed.\n", dbr[put_type]); } else { printf("Put as DBR_%-6s Ok, result as ", dbr[put_type]); no_elements = MIN(addr.no_elements, ((sizeof(buffer))/addr.field_size)); options = 0; status = dbGetField(&addr, addr.dbr_field_type, pbuffer, &options, &no_elements, NULL); printBuffer(status, addr.dbr_field_type, pbuffer, 0L, 0L, no_elements, pMsgBuff, tab_size); } } } pmsg[0] = '\0'; dbpr_msgOut(pMsgBuff, tab_size); return(0); }
long epicsShareAPI dbtgf(const char *pname) { /* declare buffer long just to ensure correct alignment */ long buffer[400]; long *pbuffer = &buffer[0]; DBADDR addr; long status; long req_options, ret_options, no_elements; short dbr_type; static TAB_BUFFER msg_Buff; TAB_BUFFER *pMsgBuff = &msg_Buff; char *pmsg = pMsgBuff->message; int tab_size = 10; if (pname==0 || *pname==0) { printf("Usage: dbtgf \"pv name\"\n"); return 1; } if (nameToAddr(pname, &addr)) return -1; /* try all options first */ req_options = 0xffffffff; ret_options = req_options; no_elements = 0; status = dbGetField(&addr, addr.dbr_field_type, pbuffer, &ret_options, &no_elements, NULL); printBuffer(status, addr.dbr_field_type, pbuffer, req_options, ret_options, no_elements, pMsgBuff, tab_size); /* Now try all request types */ ret_options=0; dbr_type = DBR_STRING; no_elements = MIN(addr.no_elements,((sizeof(buffer))/MAX_STRING_SIZE)); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_CHAR; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsInt8))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_UCHAR; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsUInt8))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_SHORT; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsInt16))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_USHORT; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsUInt16))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_LONG; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsInt32))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_ULONG; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsUInt32))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_FLOAT; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsFloat32))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_DOUBLE; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsFloat64))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); dbr_type = DBR_ENUM; no_elements = MIN(addr.no_elements,((sizeof(buffer))/sizeof(epicsEnum16))); status = dbGetField(&addr,dbr_type,pbuffer,&ret_options,&no_elements,NULL); printBuffer(status,dbr_type,pbuffer,0L,0L,no_elements,pMsgBuff,tab_size); pmsg[0] = '\0'; dbpr_msgOut(pMsgBuff, tab_size); return(0); }
sqInt sqResolverLocalAddress(void) { return nameToAddr(localHostName); }