LEGO Mindstorms EV3 |
Shared Memory
It is possible to get a pointer to the raw analogue values for use in userspace this pointer will point to a struct and the layout is following:
*/ typedef struct { DATA16 InPin1[INPUTS]; //!< Analog value at input port connection 1 DATA16 InPin6[INPUTS]; //!< Analog value at input port connection 6 DATA16 OutPin5[OUTPUTS]; //!< Analog value at output port connection 5 DATA16 BatteryTemp; //!< Battery temperature DATA16 MotorCurrent; //!< Current flowing to motors DATA16 BatteryCurrent; //!< Current flowing from the battery DATA16 Cell123456; //!< Voltage at battery cell 1, 2, 3,4, 5, and 6 #ifndef DISABLE_FAST_DATALOG_BUFFER DATA16 Pin1[INPUTS][DEVICE_LOGBUF_SIZE]; //!< Raw value from analog device DATA16 Pin6[INPUTS][DEVICE_LOGBUF_SIZE]; //!< Raw value from analog device UWORD Actual[INPUTS]; UWORD LogIn[INPUTS]; UWORD LogOut[INPUTS]; #endif #ifndef DISABLE_OLD_COLOR COLORSTRUCT NxtCol[INPUTS]; #endif DATA16 OutPin5Low[OUTPUTS]; //!< Analog value at output port connection 5 when connection 6 is low DATA8 Updated[INPUTS]; DATA8 InDcm[INPUTS]; //!< Input port device types DATA8 InConn[INPUTS]; DATA8 OutDcm[OUTPUTS]; //!< Output port device types DATA8 OutConn[OUTPUTS]; #ifndef DISABLE_PREEMPTED_VM UWORD PreemptMilliSeconds; #endif } ANALOG; /*
\n
Map physical ADC channels to logical channels in shared memory
The mapping is done by following array of physical channels
* */ static const UBYTE InputReadMap[INPUTADC] = { 6,8,10,12,5,7,9,11,1,0,13,14,2,15,3,4 }; /*