i! Voting Feedback Problem with Roll Call
Table of Contents
Question:
When a voting body is chosen with only 4 members (total MSP count is ~13), and a Roll Call is requested, all MSP panels are flashing their Present button, instead of only the MSP panels in the Voting body. How do I change this?
Answer:
This is the correct operation for the i!-Vote system. It is working as designed. If it is desired to change this operation, then it can be accomplished in the i!-VotingMSPStationMod.AXS file, which is provided as part of the i!-Vote code that is included when it is installed on a PC. An explanation of these changes is described below.
Currently upon receiving a global attendance request signal, we simply loop the device array and trigger all devices to request attendance.
EXISTING CODE
//---------------------------------------------------------------------------------
//i!-Voting REQUEST ALL ATTENDANCE
//--------------------------------------------------------------------------------- BUTTON_EVENT[vdvVotingGlobalCOM,nStCh_GlobalRequestAttendance]
{
PUSH:
{
STACK_VAR INTEGER nLoop
FOR(nLoop=1;nLoop<=sStation.nLoopTotalStations;nLoop++)
{
//Reset Station Attendance
OFF[sStation.nPresent[nLoop]]
//Do Attendance
ON[sStation.nRequestAttendance[nLoop]]
}
//debug info
#IF_DEFINED dvDebug
SEND_STRING dvDebug, "'[MSP MODULE: ',sStation.cStationRange,'] Request All Attendance !'"
#END_IF
}
}There is no signal in the system from the voting engine as to what stations are actively used in a voting body. The voting engine does provide these two station specific details: StationVotingEnabled & StationRTSEnabled. The voting engine also provides a station member name and title. So, we could use some of these elements at the station level to determine if the station is enabled for attendance purposes. However, each of these modifications now impose a new rule in the i!-Voting system for taking a roll call.
This example would require the station to be enabled for either voting, RTS, or both for the attendance to be signaled.
MODIFIED CODE
//---------------------------------------------------------------------------------
//i!-Voting REQUEST ALL ATTENDANCE
//--------------------------------------------------------------------------------- BUTTON_EVENT[vdvVotingGlobalCOM,nStCh_GlobalRequestAttendance]
{
PUSH:
{
STACK_VAR INTEGER nLoop
FOR(nLoop=1;nLoop<=sStation.nLoopTotalStations;nLoop++)
{
//REQUIRE THE STATION TO BE ENABLED FOR //VOTING OR RTS IN ORDER TO SIGNAL ATTENDANCE REQUEST
IF((sStation.nStationVotingAllowed[nLoop]) OR (sStation.nRTSStationEnabled[nLoop]))
{
//Reset Station Attendance
OFF[sStation.nPresent[nLoop]]
//Do Attendance
ON[sStation.nRequestAttendance[nLoop]]
}
}
//debug info
#IF_DEFINED dvDebug
SEND_STRING dvDebug, "'[MSP MODULE: ',sStation.cStationRange,'] Request All Attendance !'"
#END_IF
}
}This example would also require the station to have a member name for the attendance to be signaled.
MODIFIED CODE
//---------------------------------------------------------------------------------
//i!-Voting REQUEST ALL ATTENDANCE
//--------------------------------------------------------------------------------- BUTTON_EVENT[vdvVotingGlobalCOM,nStCh_GlobalRequestAttendance]
{
PUSH:
{
STACK_VAR INTEGER nLoop
FOR(nLoop=1;nLoop<=sStation.nLoopTotalStations;nLoop++)
{
//REQUIRE THE STATION TO BE ENABLED FOR
//VOTING OR RTS IN ORDER TO SIGNAL ATTENDANCE REQUEST
IF(sStation.cStationMemberName[nLoop] <> "''")
{
//Reset Station Attendance
OFF[sStation.nPresent[nLoop]]
//Do Attendance
ON[sStation.nRequestAttendance[nLoop]]
}
}
//debug info
#IF_DEFINED dvDebug
SEND_STRING dvDebug, "'[MSP MODULE: ',sStation.cStationRange,'] Request All Attendance !'"
#END_IF
}
}Table of Contents