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

Sown Code Report: Aggregation Tracking Group Management

  • Upload
    liang

  • View
    54

  • Download
    0

Embed Size (px)

DESCRIPTION

Sown Code Report: Aggregation Tracking Group Management. Pascal A. Vicaire University of Virginia [email protected]. Sensing. Std Control. SensingC. Report Comm. Std Control. Report CommC. Leds. LedsC. Tracking Timer. TimerC. Tracking. TrackingM. Sens. Sens Control. - PowerPoint PPT Presentation

Citation preview

Page 1: Sown Code Report: Aggregation Tracking Group Management

Sown Code Report:Aggregation

TrackingGroup Management

Pascal A. VicaireUniversity of [email protected]

Page 2: Sown Code Report: Aggregation Tracking Group Management

Local

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

SensingCSensing Std

Control

BottomSensingC

BottomSensing

AttributeSensing

StdControl

GroupManagement

LocalM

AggregationC

BackboneC

TripWireM

ReceiveC

BaseStation

Aggregation StdControl

GroupManagementC

StaticLeader

TripWire

TimerC

TrackingTimer

LedsCLeds

ReportCommC

ReportComm

StdControl

TrackingC

ConfigurationProvided Interface

Used Interface

Module

Page 3: Sown Code Report: Aggregation Tracking Group Management

Local

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

SensingCSensing Std

Control

BottomSensingC

BottomSensing

AttributeSensing

StdControl

GroupManagement

LocalM

AggregationC

BackboneC

TripWireM

ReceiveC

BaseStation

Aggregation StdControl

GroupManagementC

StaticLeader

TripWire

TimerC

TrackingTimer

LedsCLeds

ReportCommC

ReportComm

StdControl

TrackingC

StudiedModules &

Configurations

ConfigurationProvided Interface

Used Interface

Module

Page 4: Sown Code Report: Aggregation Tracking Group Management

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

setParameters

setParameters setParameters

Page 5: Sown Code Report: Aggregation Tracking Group Management

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

Post sensing done task.

SensingDone

SenseDoneTask

Page 10: Sown Code Report: Aggregation Tracking Group Management

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

This function does nothing.

aggrSendDone

Page 14: Sown Code Report: Aggregation Tracking Group Management

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

ET_Position_senseDone

ET_ATTRIBUTES.ET_POSITION=value.

Page 15: Sown Code Report: Aggregation Tracking Group Management

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

Start group management heart beat.

GMTask

fireHeartBeart

Page 16: Sown Code Report: Aggregation Tracking Group Management

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

Initiate sensor reading

SenseTask

conditionSense

Page 17: Sown Code Report: Aggregation Tracking Group Management

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

Only non base motes. Call aggregation module.

SendTask

sendData

Page 19: Sown Code Report: Aggregation Tracking Group Management

Local

TrackingMTracking

Sens SensControl

BottomSensing GM GM

Control Leds TrackingTimer RC RC

ControlTripWire

StaticLeader

AggrControlAggrAttribute

SensingBase

Station

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 groupIf not sensing.

Page 20: Sown Code Report: Aggregation Tracking Group Management

ReportCommMSendMsgByID 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

ReportCommMSendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

Init some parameters

init

Page 22: Sown Code Report: Aggregation Tracking Group Management

ReportCommMSendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

Does nothing.

start

Page 23: Sown Code Report: Aggregation Tracking Group Management

ReportCommMSendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

Does nothing.

stop

Page 24: Sown Code Report: Aggregation Tracking Group Management

ReportCommMSendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

sendReport

currentParentsendsend getCurrentTripWireIDreceive

Page 25: Sown Code Report: Aggregation Tracking Group Management

ReportCommMSendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

sendDone

No message waiting to be sent.

Page 26: Sown Code Report: Aggregation Tracking Group Management

ReportCommMSendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

sendDone

No message waiting to be sent.

Page 27: Sown Code Report: Aggregation Tracking Group Management

ReportCommMSendMsgByID 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

ReportCommMSendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

If group leader, send report.

ProcessReceiveMessage

receiveReport sendReport

Page 29: Sown Code Report: Aggregation Tracking Group Management

ReportCommMSendMsgByID TLedsTripWireBackboneReceiveRoutingMsgSendMsgByBct

ReportComm StdControl

Does nothing.

GenericReceive

Page 30: Sown Code Report: Aggregation Tracking Group Management

ReceiveMSendToUART TLeds

baseStation

RoutingC

ReceiveC

RoutingSendByAddress[255]

Role: debugging messages?

Page 31: Sown Code Report: Aggregation Tracking Group Management

ReceiveMSendToUART TLeds

baseStation

Return leaderID

processReport

Page 32: Sown Code Report: Aggregation Tracking Group Management

ReceiveMSendToUART TLeds

baseStation

Does nothing.

reportPosition

Page 33: Sown Code Report: Aggregation Tracking Group Management

ReceiveMSendToUART TLeds

baseStation

Does nothing.

sendDone

Page 34: Sown Code Report: Aggregation Tracking Group Management

AggregationMSendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

RoutingC

RoutingSendByBroadcast[AGGR_ROUTING_PORT]

RoutingReceive[AGGR_ROUTING_PORT]

AggregationC

GroupManagementC

Page 35: Sown Code Report: Aggregation Tracking Group Management

AggregationMSendMsgByBctReceiveRoutingMsg

Aggregation

Does nothing.

GM

StdControl

start

Page 36: Sown Code Report: Aggregation Tracking Group Management

AggregationMSendMsgByBctReceiveRoutingMsg

Aggregation

Does nothing.

GM

StdControl

stop

Page 37: Sown Code Report: Aggregation Tracking Group Management

AggregationMSendMsgByBctReceiveRoutingMsg

Aggregation

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

GM

StdControl

aggregate

Page 38: Sown Code Report: Aggregation Tracking Group Management

AggregationMSendMsgByBctReceiveRoutingMsg

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

AggregationMSendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

aggregationSendDone

sendDone

Page 40: Sown Code Report: Aggregation Tracking Group Management

AggregationMSendMsgByBctReceiveRoutingMsg

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

AggregationMSendMsgByBctReceiveRoutingMsg

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

AggregationMSendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

leader

Does nothing.

Page 43: Sown Code Report: Aggregation Tracking Group Management

AggregationMSendMsgByBctReceiveRoutingMsg

Aggregation

GM

StdControl

member

Does nothing.

Page 44: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom Local

Group Management

StaticLeader

StdControl

RandomLFSR LocalM BackboneMGroupManagementC

Page 45: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom Local

Group Management

StaticLeader

StdControl

setParameters

Page 46: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom Local

Group Management

StaticLeader

StdControl

init

init

Page 47: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom Local

Group Management

StaticLeader

StdControl

start

getX getY

Page 48: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom Local

Group Management

StaticLeader

StdControl

stop

Page 49: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom Local

Group Management

Initiate group management timer.

StaticLeader

StdControl

fireHeartBeat

Page 50: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom 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

GroupManagementMRandom 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

GroupManagementMRandom Local

Group Management

StaticLeader

StdControl

setState

Page 53: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom Local

Group Management

StaticLeader

StdControl

getState

Page 54: Sown Code Report: Aggregation Tracking Group Management

GroupManagementMRandom 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

GroupManagementMRandom Local

Group Management

Check if already processing such a message.

StaticLeader

StdControl

ProcessRecuritMessage

receiveMessage