How stable are the offsets/sizes/bit in a particular module between hardware versions.
They seem very stable to me.
I mean in relative to the modules offset.
Up to now I've named them with module number and Var Name
000_RevPiStatus
000_RevPiIOCycle
000_RS485ErrorCnt
000_Core_Temperature
000_Core_Frequency
000_RevPiLED
000_RS485ErrorLimit1
000_RS485ErrorLimit2
Which is very fiddly.
Could i rely on something like this remaining constant.
var_t Core3Map[CORE3_VARIABLE_COUNT] =
{
{ // CORE3_VARIABLE_REVPISTATUS
.offset = 0,
.length = 0,
.bit = 8
},
{ // CORE3_VARIABLE_REVPIIOCYCLE
.offset = 1,
.length = 0,
.bit = 8
},
{ // CORE3_VARIABLE_RS485ERRORCNT
.offset = 2,
.length = 16,
.bit = 0
},
{ // CORE3_VARIABLE_CORE_TEMPERATURE
.offset = 4,
.length = 8,
.bit = 0
},
{ // CORE3_VARIABLE_CORE_FREQUENCY
.offset = 5,
.length = 8,
.bit = 0
},
{ // CORE3_VARIABLE_REVPILED
.offset = 6,
.length = 8
.bit = 0,
},
{ // CORE3_VARIABLE_RS485ERRORLIMIT1
.offset = 7,
.length = 16,
.bit = 0
},
{ // CORE3_VARIABLE_RS485ERRORLIMIT2
.offset = 9,
.length = 16,
.bit = 0
}
}
ABI Of Modules
Re: ABI Of Modules
If I offset with these bytes in SDeviceInfo will it be better.
uint16_t i16uInputOffset; // offset in process image of first input byte
uint16_t i16uOutputOffset; // offset in process image of first output byte
uint16_t i16uConfigOffset; // offset in process image of first config byte
uint16_t i16uInputOffset; // offset in process image of first input byte
uint16_t i16uOutputOffset; // offset in process image of first output byte
uint16_t i16uConfigOffset; // offset in process image of first config byte