WIP basic config. Add asub..
This commit is contained in:
2
dbd/ecmc_socketcan.dbd
Normal file
2
dbd/ecmc_socketcan.dbd
Normal file
@@ -0,0 +1,2 @@
|
||||
function(ecmcWriteArrayUint8ElementsInit)
|
||||
function(ecmcWriteArrayUint8Elements)
|
||||
@@ -57,6 +57,7 @@ SOURCES += $(APPSRC)/ecmcCANOpenSDO.cpp
|
||||
SOURCES += $(APPSRC)/ecmcCANOpenPDO.cpp
|
||||
SOURCES += $(APPSRC)/ecmcCANOpenDevice.cpp
|
||||
SOURCES += $(APPSRC)/ecmcCANOpenMaster.cpp
|
||||
SOURCES += $(APPSRC)/ecmcWriteArrayUint8Elements.cpp
|
||||
|
||||
DBDS += $(APPSRC)/ecmcSocketCAN.dbd
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ SOURCES += $(APPSRC)/ecmcCANOpenSDO.cpp
|
||||
SOURCES += $(APPSRC)/ecmcCANOpenPDO.cpp
|
||||
SOURCES += $(APPSRC)/ecmcCANOpenDevice.cpp
|
||||
SOURCES += $(APPSRC)/ecmcCANOpenMaster.cpp
|
||||
SOURCES += $(APPSRC)/ecmcWriteArrayUint8Elements.cpp
|
||||
|
||||
DBDS += $(APPSRC)/ecmcSocketCAN.dbd
|
||||
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
###########################################################################
|
||||
############## Byte 0
|
||||
record(bo,"$(P)CAN${CH_ID}-PowerOnCmd") {
|
||||
field(DESC, "Power on")
|
||||
field(VAL, "0")
|
||||
field(ONAM, "On")
|
||||
field(ZNAM, "Off")
|
||||
field(OUT, "$(P)CAN${CH_ID}-BasicConfigB0_.B0")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB0_.PROC")
|
||||
}
|
||||
|
||||
# Probably not valid for pmu905 (see note bottom in table)
|
||||
#record(bo,"$(P)CAN${CH_ID}-PEAK_AV") {
|
||||
# field(DESC, "PEAK/AV")
|
||||
# field(VAL, "0")
|
||||
# field(ONAM, "PEAK")
|
||||
# field(ZNAM, "AV")
|
||||
# field(OUT, "$(P)CAN${CH_ID}-BasicConfigB0_.B1")
|
||||
# field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB0_.PROC")
|
||||
#}
|
||||
|
||||
record(mbboDirect,"$(P)CAN${CH_ID}-BasicConfigB0_"){
|
||||
info(asyn:READBACK,"1")
|
||||
field(DESC, "Basic Config B0")
|
||||
field(PINI, "1")
|
||||
field(VAL, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[0] CA")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC")
|
||||
}
|
||||
|
||||
###########################################################################
|
||||
############## Byte 1..2 Vref 0..5000
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-VrefPwrCmd") {
|
||||
field(DESC, "Vref 0..5000")
|
||||
field(VAL, "0")
|
||||
field(OUT, "")
|
||||
field(EGU, "mV")
|
||||
field(PREC, "0")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB1_.PROC")
|
||||
}
|
||||
|
||||
# first byte
|
||||
record(calc, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB1_") {
|
||||
field(DESC, "Calc byte 1")
|
||||
field(CALC, "A & 0xFF")
|
||||
field(INPA, "$(P)CAN${CH_ID}-VrefPwrCmd.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB1_.PROC")
|
||||
}
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-BasicConfigB1_"){
|
||||
field(DESC, "Basic config B1")
|
||||
field(VAL, "0")
|
||||
field(PREC, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[1] CA")
|
||||
field(OMSL, "closed_loop")
|
||||
field(DOL, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB1_.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB2_.PROC")
|
||||
}
|
||||
|
||||
# second byte
|
||||
record(calc, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB2_") {
|
||||
field(DESC, "Calc byte 2")
|
||||
field(CALC, "(A >> 8) & 0xFF")
|
||||
field(INPA, "$(P)CAN${CH_ID}-VrefPwrCmd.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB2_.PROC")
|
||||
}
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-BasicConfigB2_"){
|
||||
field(DESC, "Basic config B2")
|
||||
field(VAL, "0")
|
||||
field(PREC, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[2] CA")
|
||||
field(OMSL, "closed_loop")
|
||||
field(DOL, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB2_.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC") # Process now!
|
||||
}
|
||||
|
||||
###########################################################################
|
||||
############## Byte 3..4 Vref 4800..10000
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-VdcCtrlCmd") {
|
||||
field(DESC, "Vref 4800..10000")
|
||||
field(VAL, "0")
|
||||
field(EGU, "mV")
|
||||
field(PREC, "0")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB3_.PROC")
|
||||
}
|
||||
|
||||
# third byte
|
||||
record(calc, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB3_") {
|
||||
field(DESC, "Calc byte 3")
|
||||
field(CALC, "A & 0xFF")
|
||||
field(INPA, "$(P)CAN${CH_ID}-VdcCtrlCmd.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB3_.PROC")
|
||||
}
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-BasicConfigB3_"){
|
||||
field(DESC, "Basic config B3")
|
||||
field(VAL, "0")
|
||||
field(PREC, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[3] CA")
|
||||
field(OMSL, "closed_loop")
|
||||
field(DOL, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB3_.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-SDO02-VrefPwrCmdCalcB4_.PROC") # Process next byte
|
||||
}
|
||||
|
||||
# fourth byte
|
||||
record(calc, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB4_") {
|
||||
field(DESC, "Calc byte 4")
|
||||
field(CALC, "(A >> 8) & 0xFF")
|
||||
field(INPA, "$(P)CAN${CH_ID}-VdcCtrlCmd.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB4_.PROC")
|
||||
}
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-BasicConfigB4_"){
|
||||
field(DESC, "Basic config B4")
|
||||
field(VAL, "0")
|
||||
field(PREC, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[4] CA")
|
||||
field(OMSL, "closed_loop")
|
||||
field(DOL, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB4_.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC") # Process now!
|
||||
}
|
||||
|
||||
# Byte 5..7 0
|
||||
@@ -24,11 +24,9 @@ record(mbboDirect,"$(P)CAN${CH_ID}-BasicConfigB0_"){
|
||||
field(DESC, "Basic Config B0")
|
||||
field(PINI, "1")
|
||||
field(VAL, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[0]")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigPackArray_.PROC")
|
||||
}
|
||||
|
||||
|
||||
###########################################################################
|
||||
############## Byte 1..2 Vref 0..5000
|
||||
|
||||
@@ -44,33 +42,17 @@ record(ao,"$(P)CAN${CH_ID}-VrefPwrCmd") {
|
||||
# first byte
|
||||
record(calc, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB1_") {
|
||||
field(DESC, "Calc byte 1")
|
||||
field(CALC, "A && 0xFF")
|
||||
field(CALC, "A & 0xFF")
|
||||
field(INPA, "$(P)CAN${CH_ID}-VrefPwrCmd.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB1_.PROC")
|
||||
}
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-BasicConfigB1_"){
|
||||
field(DESC, "Basic config B1")
|
||||
field(VAL, "0")
|
||||
field(PREC, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[1]")
|
||||
#field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC") # Only process when second byte is set
|
||||
field(FLNK, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB2_.PROC")
|
||||
}
|
||||
|
||||
# second byte
|
||||
record(calc, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB2_") {
|
||||
field(DESC, "Calc byte 2")
|
||||
field(CALC, "(A && 0xFF00) >> 8")
|
||||
field(CALC, "(A >> 8) & 0xFF")
|
||||
field(INPA, "$(P)CAN${CH_ID}-VrefPwrCmd.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB2_.PROC")
|
||||
}
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-BasicConfigB1_"){
|
||||
field(DESC, "Basic config B1")
|
||||
field(VAL, "0")
|
||||
field(PREC, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[2]")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC") # Process now!
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigPackArray_.PROC")
|
||||
}
|
||||
|
||||
###########################################################################
|
||||
@@ -81,39 +63,88 @@ record(ao,"$(P)CAN${CH_ID}-VdcCtrlCmd") {
|
||||
field(VAL, "0")
|
||||
field(EGU, "mV")
|
||||
field(PREC, "0")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB1_.PROC")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB3_.PROC")
|
||||
}
|
||||
|
||||
# third byte
|
||||
record(calc, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB3_") {
|
||||
field(DESC, "Calc byte 3")
|
||||
field(CALC, "A && 0xFF")
|
||||
field(CALC, "A & 0xFF")
|
||||
field(INPA, "$(P)CAN${CH_ID}-VdcCtrlCmd.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB3_.PROC")
|
||||
}
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-BasicConfigB3_"){
|
||||
field(DESC, "Basic config B3")
|
||||
field(VAL, "0")
|
||||
field(PREC, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[3]")
|
||||
#field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC") # Only process when second byte is set
|
||||
field(FLNK, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB4_.PROC")
|
||||
}
|
||||
|
||||
# fourth byte
|
||||
record(calc, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB4_") {
|
||||
record(calc, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB4_") {
|
||||
field(DESC, "Calc byte 4")
|
||||
field(CALC, "(A && 0xFF00) >> 8")
|
||||
field(CALC, "(A >> 8) & 0xFF")
|
||||
field(INPA, "$(P)CAN${CH_ID}-VdcCtrlCmd.VAL")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigB4_.PROC")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-BasicConfigPackArray_.PROC")
|
||||
}
|
||||
#
|
||||
### COLLECT all bytes
|
||||
#record(acalcout, "$(P)CAN${CH_ID}-BasicConfigCalc_") {
|
||||
# field(DESC, "Calc to gather data from other records")
|
||||
# field(NELM, "7")
|
||||
# #field(CALC, "A>>0;B>>1;C>>2;D>>3;E>>4;0>>5;0>>6;") # Fill to 7 bytes
|
||||
# #field(CALC, "AA+ARR([A,B,C,D,E,0,0]);") # Fill to 7 bytes
|
||||
# #field(CALC, "AA:=ARR(A,B,C,D,E,0,0)") # Fill to 7 bytes
|
||||
# #field(CALC, "CAT(AA[0,1],A);CAT(AA[0,2],B)") # Fill to 7 bytes
|
||||
# #field(CALC, "AA+ARR(A,B,C,D,E,0,0)") # Fill to 7 bytes
|
||||
# #field(CALC, "ARR(A,B,C,D,E,0,0);") # Fill to 7 bytes
|
||||
# #field(CALC, "ARR([A,B,C,D,E,0,0]);") # Fill to 7 bytes
|
||||
# #field(CALC, "AA[0]=A;AA[1]=B;AA[2]=C;AA[3]=D;AA[4]=E;AA[5]=0;AA[6]=0;AA*1;") # Fill to 7 bytes
|
||||
# #field(CALC, "AA[0]:=A;AA[1]:=B;AA[2]:=C;AA[3]:=D;AA[4]:=E;AA[5]:=0;AA[6]:=0;AA;") # Fill to 7 bytes
|
||||
# #field(CALC, "AA[0]:=A;AA[1]:=B;AA[2]:=C;AA[3]:=D;") # Fill to 7 bytes
|
||||
# #field(CALC, "AA:=IX;AA;") # Fill to 7 bytes
|
||||
# field(INPA, "$(P)CAN${CH_ID}-BasicConfigB0_.VAL") # Byte 0
|
||||
# field(INPB, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB1_.VAL") # Byte 1
|
||||
# field(INPC, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB2_.VAL") # Byte 2
|
||||
# field(INPD, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB3_.VAL") # Byte 3
|
||||
# field(INPE, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB4_.VAL") # Byte 4
|
||||
# #field(INAA, "$(P)CAN${CH_ID}-SDO02-BasicConfig") # Whole array
|
||||
# field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig") # Send the data
|
||||
# field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC") # Send the data
|
||||
#}
|
||||
#
|
||||
# Dummy 0 array
|
||||
#record(waveform,"$(P)CAN${CH_ID}-BasicConfigDummy_"){
|
||||
# field(DESC, "DUMMY ARRAY")
|
||||
# field(NELM, "7")
|
||||
# field(PINI, "YES")
|
||||
# field(VAL, "0")
|
||||
#}
|
||||
#
|
||||
|
||||
record(ao,"$(P)CAN${CH_ID}-BasicConfigB4_"){
|
||||
field(DESC, "Basic config B4")
|
||||
field(VAL, "0")
|
||||
field(PREC, "0")
|
||||
field(OUT, "$(P)CAN${CH_ID}-SDO02-BasicConfig.[4]")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC") # Process now!
|
||||
record(aSub, "$(P)CAN${CH_ID}-BasicConfigPackArray_") {
|
||||
field(INAM, "ecmcWriteArrayUint8ElementsInit")
|
||||
field(SNAM, "ecmcWriteArrayUint8Elements")
|
||||
field(FTA, "UCHAR")
|
||||
field(NOA, "1")
|
||||
field(INPA, "7")
|
||||
field(FTB, "UCHAR")
|
||||
field(NOB, "1")
|
||||
field(INPB, "$(P)CAN${CH_ID}-BasicConfigB0_.VAL") # Byte 0
|
||||
field(FTC, "UCHAR")
|
||||
field(NOC, "1")
|
||||
field(INPC, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB1_.VAL") # Byte 1
|
||||
field(FTD, "UCHAR")
|
||||
field(NOD, "1")
|
||||
field(INPD, "$(P)CAN${CH_ID}-VrefPwrCmdCalcB2_.VAL") # Byte 2
|
||||
field(FTE, "UCHAR")
|
||||
field(NOE, "1")
|
||||
field(INPE, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB3_.VAL") # Byte 3
|
||||
field(FTF, "UCHAR")
|
||||
field(NOF, "1")
|
||||
field(INPF, "$(P)CAN${CH_ID}-VdcCtrlCmdCalcB4_.VAL") # Byte 4
|
||||
field(FTG, "UCHAR")
|
||||
field(NOG, "1")
|
||||
field(INPG, "0") # Byte 5
|
||||
field(FTH, "UCHAR")
|
||||
field(NOH, "1")
|
||||
field(INPH, "0") # Byte 6
|
||||
field(FTVA, "UCHAR")
|
||||
field(OUTA, "$(P)CAN${CH_ID}-SDO02-BasicConfig")
|
||||
field(NOVA, "7")
|
||||
field(FLNK, "$(P)CAN${CH_ID}-SDO02-BasicConfig.PROC") # Send the data
|
||||
}
|
||||
|
||||
# Byte 5..7 0
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
|
||||
record(acalcout,"$(P)LeftMoveData_"){
|
||||
field(DESC, "Move data from EL3702 to EL4732")
|
||||
field(INAA, "$(P)ec$(MASTER_ID)-s$(SLAVE_AI)-EL3702_s$(NELM)-AI1-Array.VAL")
|
||||
field(INPA, "$(P)LeftGain.VAL")
|
||||
field(INPB, "$(P)LeftOffset.VAL")
|
||||
field(INPC, "$(P)Volume.VAL")
|
||||
field(CALC, "(C/200*A/100*AA+(B*3276.8))")
|
||||
field(OUT, "$(P)ec$(MASTER_ID)-s$(SLAVE_AO)-EL4732_s$(NELM)-AO1-Array.VAL")
|
||||
field(FLNK, "$(P)ec$(MASTER_ID)-s$(SLAVE_AO)-EL4732_s$(NELM)-AO1-Array.PROC")
|
||||
field(NELM, "$(NELM)")
|
||||
}
|
||||
@@ -1 +1,4 @@
|
||||
registrar("ecmcCANPluginDriverRegister")
|
||||
function(ecmcWriteArrayUint8ElementsInit)
|
||||
function(ecmcWriteArrayUint8Elements)
|
||||
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
// aSub, EPICS related headers
|
||||
#include <aSubRecord.h>
|
||||
#include <registryFunction.h>
|
||||
#include <epicsExport.h>
|
||||
// std::cout
|
||||
#include <iostream>
|
||||
// split double into fractional and integer
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
// declare init function
|
||||
static long ecmcWriteArrayUint8ElementsInit(struct aSubRecord *rec);
|
||||
epicsRegisterFunction(ecmcWriteArrayUint8ElementsInit);
|
||||
|
||||
// declare worker function
|
||||
static long ecmcWriteArrayUint8Elements(struct aSubRecord *rec);
|
||||
epicsRegisterFunction(ecmcWriteArrayUint8Elements);
|
||||
|
||||
// init (INAM)
|
||||
static long ecmcWriteArrayUint8ElementsInit(struct aSubRecord *rec){
|
||||
std::cout << "ecmcWriteArrayUint8ElementsInit aSubRecord: "<< rec->name << std::endl;
|
||||
printf("ecmcWriteArrayUint8ElementsInit aSubRecord: %d\n",rec->noa);
|
||||
return 0;
|
||||
}
|
||||
|
||||
////noa elements in A
|
||||
////Note that the subroutine code must always handle the value fields (A-U, VALA-VALU) as arrays, even if they contain only a single element.
|
||||
// /*memcpy(pwfData, (double *)precord->a, precord->noa *
|
||||
//sizeof(double));
|
||||
////data processing on pwfData: std, max, min, fft,...
|
||||
// ...
|
||||
//
|
||||
// /* put the calculated results into ai records*/
|
||||
// *(double *)precord->vala = ave;*/
|
||||
//
|
||||
//// work (SNAM)
|
||||
// NEVA output filed size
|
||||
static long ecmcWriteArrayUint8Elements(struct aSubRecord *rec){
|
||||
printf("EXECUTING!!!!!\n");
|
||||
|
||||
// input A must be size of output array
|
||||
if(rec->noa !=1){
|
||||
printf("Input A not scalar\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
epicsUInt8 sizeOfBuffer=*(epicsUInt8*)rec->a;
|
||||
|
||||
// Max 20 byte in a row
|
||||
if(sizeOfBuffer <=0 || sizeOfBuffer>18){
|
||||
printf("Input A out of range\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if(sizeOfBuffer != rec->nova){
|
||||
printf("Size missmatch\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
printf("EXECUTING!!!!!\n");
|
||||
epicsUInt8 *buffer;
|
||||
buffer=new epicsUInt8[rec->noa];
|
||||
memset(buffer,0,sizeOfBuffer);
|
||||
|
||||
if(sizeOfBuffer >= 1 && rec->nob ==1) {
|
||||
buffer[1]=*(epicsUInt8 *)rec->b;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 2 && rec->noc ==1) {
|
||||
buffer[2]=*(epicsUInt8 *)rec->c;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 3 && rec->nod ==1) {
|
||||
buffer[3]=*(epicsUInt8 *)rec->d;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 4 && rec->noe ==1) {
|
||||
buffer[4]=*(epicsUInt8 *)rec->e;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 5 && rec->nof ==1) {
|
||||
buffer[5]=*(epicsUInt8 *)rec->f;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 6 && rec->nog ==1) {
|
||||
buffer[6]=*(epicsUInt8 *)rec->g;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 7 && rec->noh ==1) {
|
||||
buffer[7]=*(epicsUInt8 *)rec->h;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 8 && rec->noi ==1) {
|
||||
buffer[8]=*(epicsUInt8 *)rec->i;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 9 && rec->noj ==1) {
|
||||
buffer[9]=*(epicsUInt8 *)rec->j;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 10 && rec->nok ==1) {
|
||||
buffer[10]=*(epicsUInt8 *)rec->k;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 11 && rec->nol ==1) {
|
||||
buffer[11]=*(epicsUInt8 *)rec->l;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 12 && rec->nom ==1) {
|
||||
buffer[12]=*(epicsUInt8 *)rec->m;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 13 && rec->non ==1) {
|
||||
buffer[13]=*(epicsUInt8 *)rec->n;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 14 && rec->noo ==1) {
|
||||
buffer[14]=*(epicsUInt8 *)rec->o;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 15 && rec->nop ==1) {
|
||||
buffer[15]=*(epicsUInt8 *)rec->p;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 16 && rec->noq ==1) {
|
||||
buffer[16]=*(epicsUInt8 *)rec->q;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 17 && rec->nor ==1) {
|
||||
buffer[17]=*(epicsUInt8 *)rec->r;
|
||||
}
|
||||
|
||||
if(sizeOfBuffer >= 18 && rec->nos ==1) {
|
||||
buffer[18]=*(epicsUInt8 *)rec->s;
|
||||
}
|
||||
|
||||
// if(sizeOfBuffer >= 19 && rec->not ==1) {
|
||||
// buffer[19]=*(epicsUInt8 *)rec->t;
|
||||
// }
|
||||
//
|
||||
// if(sizeOfBuffer >= 20 && rec->nou ==1) {
|
||||
// buffer[20]=*(epicsUInt8 *)rec->u;
|
||||
// }
|
||||
|
||||
// better to use vala direct instead of buffer... hmm
|
||||
epicsUInt8 *vala;
|
||||
vala = (epicsUInt8 *)rec->vala;
|
||||
for(int i = 0; i<sizeOfBuffer; i++) {
|
||||
vala[i] = buffer[i];
|
||||
}
|
||||
|
||||
printf("EXECUTED!!!!!\n");
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
--------------------------------------------------------------------------------
|
||||
EPICS database example
|
||||
record(aSub, "${SYS}:ECATtimestamp") {
|
||||
field(DESC, "ECAT timestamp")
|
||||
field(INAM, "ECATtimestampInit")
|
||||
field(SNAM, "ECATtimestamp")
|
||||
field(FTA, "DOUBLE")
|
||||
field(NOA, 1)
|
||||
field(TSE, -2)
|
||||
}
|
||||
--------------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -11,7 +11,7 @@ epicsEnvSet("ECMCCFG_INIT" ,"") #Only run startup once (auto at PSI, need call
|
||||
epicsEnvSet("SCRIPTEXEC" ,"$(SCRIPTEXEC="iocshLoad")")
|
||||
|
||||
require ecmccfg 6.3.0
|
||||
|
||||
require calc 3.7.3
|
||||
# run module startup.cmd (only needed at ESS PSI auto call at require)
|
||||
$(ECMCCFG_INIT)$(SCRIPTEXEC) ${ecmccfg_DIR}startup.cmd, "IOC=$(IOC),ECMC_VER=6.3.0,MASTER_ID=-1"
|
||||
|
||||
|
||||
@@ -4,13 +4,11 @@ IOC_TEST:CAN03-AIR_OUTLET_
|
||||
IOC_TEST:CAN03-VrefPwrCmdCalcB1_
|
||||
IOC_TEST:CAN03-VrefPwrCmdCalcB2_
|
||||
IOC_TEST:CAN03-VdcCtrlCmdCalcB3_
|
||||
IOC_TEST:CAN03-VrefPwrCmdCalcB4_
|
||||
IOC_TEST:CAN03-VdcCtrlCmdCalcB4_
|
||||
IOC_TEST:CAN03-VrefPwrCmd
|
||||
IOC_TEST:CAN03-BasicConfigB1_
|
||||
IOC_TEST:CAN03-VdcCtrlCmd
|
||||
IOC_TEST:CAN03-BasicConfigB3_
|
||||
IOC_TEST:CAN03-BasicConfigB4_
|
||||
REQMOD:raspberrypi-20820:exit
|
||||
IOC_TEST:CAN03-BasicConfigPackArray_
|
||||
REQMOD:raspberrypi-21050:exit
|
||||
IOC_TEST:PLC-0-scantime
|
||||
IOC_TEST:PLC-0-error
|
||||
IOC_TEST:CAN03-PWR_A
|
||||
@@ -35,20 +33,23 @@ IOC_TEST:CAN03-V_5V_ACB
|
||||
IOC_TEST:CAN03-V_3V5
|
||||
IOC_TEST:CAN03-AIR_INLET
|
||||
IOC_TEST:CAN03-AIR_OUTLET
|
||||
REQMOD:raspberrypi-20820:BaseVersion
|
||||
REQMOD:raspberrypi-20820:require_VER
|
||||
REQMOD:raspberrypi-20820:ecmccfg_VER
|
||||
REQMOD:raspberrypi-20820:asyn_VER
|
||||
REQMOD:raspberrypi-20820:exprtk_VER
|
||||
REQMOD:raspberrypi-20820:motor_VER
|
||||
REQMOD:raspberrypi-20820:ecmc_VER
|
||||
REQMOD:raspberrypi-20820:ecmc_plugin_socketcan_VER
|
||||
REQMOD:raspberrypi-21050:BaseVersion
|
||||
REQMOD:raspberrypi-21050:require_VER
|
||||
REQMOD:raspberrypi-21050:ecmccfg_VER
|
||||
REQMOD:raspberrypi-21050:sequencer_VER
|
||||
REQMOD:raspberrypi-21050:sscan_VER
|
||||
REQMOD:raspberrypi-21050:calc_VER
|
||||
REQMOD:raspberrypi-21050:asyn_VER
|
||||
REQMOD:raspberrypi-21050:exprtk_VER
|
||||
REQMOD:raspberrypi-21050:motor_VER
|
||||
REQMOD:raspberrypi-21050:ecmc_VER
|
||||
REQMOD:raspberrypi-21050:ecmc_plugin_socketcan_VER
|
||||
IOC_TEST:CAN03-BasicConfigB0_
|
||||
IOC_TEST:PLC-0-enable
|
||||
IOC_TEST:CAN03-PowerOnCmd
|
||||
REQMOD:raspberrypi-20820:MODULES
|
||||
REQMOD:raspberrypi-20820:VERSIONS
|
||||
REQMOD:raspberrypi-20820:MOD_VER
|
||||
REQMOD:raspberrypi-21050:MODULES
|
||||
REQMOD:raspberrypi-21050:VERSIONS
|
||||
REQMOD:raspberrypi-21050:MOD_VER
|
||||
IOC_TEST:CAN03-PDO01-Array
|
||||
IOC_TEST:CAN03-SDO01-Array
|
||||
IOC_TEST:CAN03-SDO02-BasicConfig
|
||||
|
||||
Reference in New Issue
Block a user