Is it possible to define a CAPL function returning a text string?
19,715
You have to do it as you would do with string-based functions :
void ErrorCodeToMsg(char buffer[], int code){
buffer = myListOfCodes[code];
}
The value will be stored in the buffer using its reference value. It is not possible to return string in Capl. This is why you can't access String System variables using the @
Selector.
Author by
Dmitry Grigoryev
Embedded SW Engineer, passionate about FPGA technology. Check out Arduino core library I have ported to Altera NIOS II core.
Updated on June 29, 2022Comments
-
Dmitry Grigoryev almost 2 years
I develop CAPL scripts in Vector CANoe, and I need to define several functions returning text strings. In C, I would write something like this:
char * ErrorCodeToMsg(int code)
or
char [] ErrorCodeToMsg(int code)
In CAPL, both definitions fail with a
parse error
. The only working solution I came up with so far is:variables { char retval[256]; } void ErrorCodeToMsg(int code) { char [] msg = "Hello word"; strncpy(retval, msg, 256); }
Of course this is very ugly, because each call to
ErrorCodeToMsg
requires two statements instead of one. Is there a better way? -
Dmitry Grigoryev almost 9 years+1 for avoiding a global variable. I would still prefer a real
char *
return value to be able towrite("Error: %s", ErrorCodeToMsg(errno))
, thanks for confirming it's not going to happen.