Top Banner
Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia [email protected]
55

Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia [email protected].

Dec 27, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Sown Code Report:Aggregation

TrackingGroup Management

Pascal A. VicaireUniversity of [email protected]

Page 2: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

SensingC

SensingStd

Control

BottomSensingC

BottomSensing

AttributeSensing

StdControl

GroupManagement

LocalM

AggregationC

BackboneC

TripWireM

ReceiveC

BaseStation

AggregationStd

Control

GroupManagementC

StaticLeader

TripWire

TimerC

TrackingTimer

LedsC

Leds

ReportCommC

ReportComm

StdControl

TrackingC

ConfigurationProvided Interface

Used Interface

Module

Page 3: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

SensingC

SensingStd

Control

BottomSensingC

BottomSensing

AttributeSensing

StdControl

GroupManagement

LocalM

AggregationC

BackboneC

TripWireM

ReceiveC

BaseStation

AggregationStd

Control

GroupManagementC

StaticLeader

TripWire

TimerC

TrackingTimer

LedsC

Leds

ReportCommC

ReportComm

StdControl

TrackingC

StudiedModules &

Configurations

ConfigurationProvided Interface

Used Interface

Module

Page 4: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

setParameters

setParameters setParameters

Page 5: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

Initialize: Sensing module. Group management module. ReportComm module. Aggregation module. Leader identifier. TripWire information.

init

init

ET_POSITION_Sense

init init init

whoIsMyLeader isTripWireBase

Page 6: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

Start: Sensing module. Group management module. Tracking timer. Report module. Aggregation module. Localization module.

start

start getX startstart startstartgetY

Page 7: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

Stop: Sensing module. Group management module. Tracking module. Report module. Aggregation module.

stop

stop stopstop stopstop

Page 8: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

post GMTask(); if (!_isBaseLeader) { _senseCounter++; if (_senseCounter >=

SENSE_CNT_THRESHOLD/ENVIRO_WORKING_CLOCK) { _senseCounter = 0; post SenseTask(); } }

if (_newSensing) { ET_sendCount ++; if (ET_sendCount >=

(REFRESH_INTERVAL/ENVIRO_WORKING_CLOCK)) { ET_sendCount = 0; post sendTask(); } }

firedGMTask

senseTask

sendTask

aggrTask

if (_isLeader) { ET_aggrCount ++; if (ET_aggrCount >=

(REFRESH_INTERVAL/ENVIRO_WORKING_CLOCK)) { ET_aggrCount = 0; post aggrTask(); } }

Periodically

Post group management task for this

Tracking phase

Post sense taskIf not a base

Send Sensing Report(Only non base motes)

Aggregate received Data if leader

Page 9: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

Post sensing done task.

SensingDone

SenseDoneTask

Page 10: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

The mote is a group leader if on_off is true. If it is a leader: green LED off, red LED on. If it is not a leader: green LED off, red LED off. Update variables.

Leader greenOff redOn

redOff

Page 11: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

The mote is a group member if on_off is true. If it is a member: green LED on, red LED off. It it is not a member: green LED off, red LED off. Update variables.

Member greenOff redOff

greenOn

Page 12: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

event result_t RC.receiveReport(RCReport *rcReport) { dbg(DBG_TRACKING, "TrackingM.RC.receiveReport\n"); if (_isBaseLeader) { baseStation_reportPosition_struct *temp; temp = (baseStation_reportPosition_struct*)(rcReport->data); call baseStation.reportPosition(temp);

} else { baseStation_reportPosition_struct *temp; temp = (baseStation_reportPosition_struct*)(rcReport->data); call GM.receiveMessage(1, temp->GMInformation); } return SUCCESS; }

receiveReport reportPositionreceiveMessage

Base mote reports to base station

Other motes (only leaders canReceive reports) call the group

Management module

Page 13: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

This function does nothing.

aggrSendDone

Page 14: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

ET_Position_senseDone

ET_ATTRIBUTES.ET_POSITION=value.

Page 15: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

Start group management heart beat.

GMTask

fireHeartBeart

Page 16: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

Initiate sensor reading

SenseTask

conditionSense

Page 17: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

SenseDoneTask

join leave

if (_newSensing) { if (_sensing == FALSE) { _sensing = TRUE; call GM.join(); } } else { if (_sensing == TRUE) { _sensing = FALSE; if (!_isLeader || _sent) { call GM.leave(); } } }

If there is a new sensing report, and the mote was not currently sensing,

Seek to join group.

If there is no new sensing report,And the mote was currently sensing,

Seek to leave group.

Page 18: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

Only non base motes. Call aggregation module.

SendTask

sendData

Page 19: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

Local

TrackingM

Tracking

SensSens

ControlBottomSensing

GMGM

ControlLeds

TrackingTimer

RCRC

ControlTripWire

StaticLeader

AggrControl

AggrAttributeSensing

BaseStation

baseStation_reportPosition_struct temp; tos_time_t timeStamp; dbg(DBG_TRACKING, "TrackingM.aggrTask\n"); ET_AGGRATTRIBUTES = call Aggr.aggregate(); _GMInfo = call GM.getState(); if ((ET_AGGRATTRIBUTES.degreeA + _GMInfo.groupAge) <

DEGREE_OF_AGGREGATION) { if (!_sensing) { call GM.leave(); } return; }

aggrTask

aggregategetStateLeave sendReport

setState

_GMInfo.groupAge += ET_AGGRATTRIBUTES.degreeA; call GM.setState(_GMInfo); temp.GMInformation = _GMInfo; temp.position.x = (uint16_t)(ET_AGGRATTRIBUTES.A.x); temp.position.y = (uint16_t)(ET_AGGRATTRIBUTES.A.y); call GlobalAbsoluteTimer.getGlobalTime(&timeStamp); temp.timeStamp = timeStamp.low32/100; temp.leaderID = TOS_LOCAL_ADDRESS; temp.degreeOfAggregation = ET_AGGRATTRIBUTES.degreeA; temp.degreeOfMag = ET_AGGRATTRIBUTES.degreeA; temp.degreeOfPIR = 0; temp.degreeOfAccoustic = 0; if (_isLeader) { call RC.sendReport((char *)&temp, BROADCAST_TYPE); _sent = TRUE; if (!_sensing) { call GM.leave(); } }

Only Leader

Aggregate sensingData

If leader did not receive enough sensingData and is not currently sensing,

Leave group without sending report.

Otherwise, send Tracking report and leave group

If not sensing.

Page 20: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

ReportCommC

RoutingC

RoutingSendByBroadcast[RC_ROUTING_PORT]

RoutingSendByAddress[RC_ROUTING_PORT]

RoutingReceive[RC_ROUTING_PORT]

BackboneM TripWireM

Page 21: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

Init some parameters

init

Page 22: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

Does nothing.

start

Page 23: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

Does nothing.

stop

Page 24: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

sendReport

currentParentsendsend getCurrentTripWireIDreceive

Page 25: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

sendDone

No message waiting to be sent.

Page 26: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

sendDone

No message waiting to be sent.

Page 27: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

receive

Post process receive message if no other message is already waiting to be processed.

ProcessReceiveMessage

Page 28: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

If group leader, send report.

ProcessReceiveMessage

receiveReport sendReport

Page 29: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReportCommM

SendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

Does nothing.

GenericReceive

Page 30: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReceiveM

SendToUART TLeds

baseStation

RoutingC

ReceiveC

RoutingSendByAddress[255]

Role: debugging messages?

Page 31: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReceiveM

SendToUART TLeds

baseStation

Return leaderID

processReport

Page 32: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReceiveM

SendToUART TLeds

baseStation

Does nothing.

reportPosition

Page 33: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

ReceiveM

SendToUART TLeds

baseStation

Does nothing.

sendDone

Page 34: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

RoutingC

RoutingSendByBroadcast[AGGR_ROUTING_PORT]

RoutingReceive[AGGR_ROUTING_PORT]

AggregationC

GroupManagementC

Page 35: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

Does nothing.

GM

StdControl

start

Page 36: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

Does nothing.

GM

StdControl

stop

Page 37: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

Uses averaging functions to aggregate sensing data. Return aggregation degree.

GM

StdControl

aggregate

Page 38: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

dbg(DBG_USR2, "AggregationM.sendData(leaderID:%d)\n", leaderID);

if ((leaderID == TOS_LOCAL_ADDRESS) && !_receivePending) { _receivePending = TRUE; RxBuffer = report; add(); _receivePending = FALSE; signal Aggregation.aggrSendDone(SUCCESS); return SUCCESS; } if (!_sendPending){ _sendPending = TRUE;

if ((TxBuffer = (AttrReport*)initRoutingMsg(&_TxMsg, sizeof(AttrReport))) == 0)

{

GM

StdControl

sendDataaggregationSendDone

send

dbg(DBG_USR2, "\t\tinitRoutingMsg fail\n");_sendPending = FALSE;return FAIL;

} *TxBuffer = *report; if (call SendMsgByBct.send(1, &_TxMsg) == FAIL) { dbg(DBG_USR2, "\t\tSendMsgByBct.sendto:%d fail\n", leaderID); _sendPending = FALSE; return FAIL; }dbg(DBG_TEMP, "RSEVENT: %i.%08i: SENDMSG: %d\n", (uint32_t)

(tos_state.tos_time / 4000000), (uint32_t) (tos_state.tos_time % 4000000 * 25), leaderID);

return SUCCESS; } else { dbg(DBG_USR2, "\t\t_sendPending fail\n"); return FAIL; }

If node is leader, do not send

Otherwise, send byBroadcast to leader

Page 39: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

aggregationSendDone

sendDone

Page 40: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

receive

ProcessReceiveAggr

dbg(DBG_USR2, "AggregationM.ReceiveRoutingMsg.receive\n");

if(!_receivePending) { TOS_MsgPtr p = _RxMsgP; _receivePending = TRUE; _RxMsgP = msg; if(!post ProcessReceiveAggr()) _receivePending = FALSE; return p; } else { return msg; }

Post processReceiveAggr taskIf no such task pending.

Page 41: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

receiveMessage

ProcessReceiveAggr

dbg(DBG_USR2, "AggregationM.ProcessReceiveAggr task\n"); if ((RxBuffer = (AttrReport*)popFromRoutingMsg(_RxMsgP,

sizeof(AttrReport))) == 0) { dbg(DBG_USR2, "\tpopFromRoutingMsg fail\n"); _receivePending = FALSE; return; } call GM.receiveMessage(2, RxBuffer->GMInformation); if (RxBuffer->GMInformation.leaderID == TOS_LOCAL_ADDRESS) { dbg(DBG_USR2, "add!\n"); add(); } else { dbg(DBG_USR2, "not add!\n"); } _receivePending = FALSE;

Call Group Management

Message contents added to message tableIf node is leader.

Page 42: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

leader

Does nothing.

Page 43: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

AggregationM

SendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

member

Does nothing.

Page 44: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

StaticLeader

StdControl

RandomLFSR LocalM BackboneM

GroupManagementC

Page 45: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

StaticLeader

StdControl

setParameters

Page 46: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

StaticLeader

StdControl

init

init

Page 47: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

StaticLeader

StdControl

start

getX getY

Page 48: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

StaticLeader

StdControl

stop

Page 49: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

Initiate group management timer.

StaticLeader

StdControl

fireHeartBeat

Page 50: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

No status: node becomes member. Follower: node becomes member. Leader Candidate: node becomes leader.

StaticLeader

StdControl

join

NodeNumberrand

memberleader

Page 51: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

Member: node becomes follower. Leader: node becomes leader candidate.

StaticLeader

StdControl

leave memberleader

Page 52: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

StaticLeader

StdControl

setState

Page 53: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

StaticLeader

StdControl

getState

Page 54: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

None: follower. Follower: check for group competition. Member: check for group competition. Leader candidate: check for group competition. Leader: check for group competition.

StaticLeader

StdControl

ProcessRecuritMessage

leader

Page 55: Sown Code Report: Aggregation Tracking Group Management Pascal A. Vicaire University of Virginia pv9f@cs.virginia.edu.

GroupManagementM

Random Local

Group Management

Check if already processing such a message.

StaticLeader

StdControl

ProcessRecuritMessage

receiveMessage